Adopt Obsidian-style settings navigation #192
Labels
No labels
abandoned
active
audit
blocked
data-safety
difficulty:easy
difficulty:hard
difficulty:high
difficulty:medium
docs
done
duplicate
notebook-v0
open
priority:high
ready
release-critical
safe-mode
spec
spec-backlog
subsystem:api
subsystem:backlog
subsystem:bases
subsystem:ci
subsystem:command
subsystem:configuration
subsystem:consolidate
subsystem:dependencies
subsystem:desktop-electron
subsystem:diffmerge
subsystem:docker
subsystem:docs
subsystem:fuzzy
subsystem:graph
subsystem:hotkeys
subsystem:lapis
subsystem:maint
subsystem:maintenance
subsystem:markdown
subsystem:markdown-lint
subsystem:md018
subsystem:notebook
subsystem:notifications
subsystem:opfs
subsystem:package
subsystem:plugin-markdown
subsystem:plugin-tasks
subsystem:plugins
subsystem:registry
subsystem:release
subsystem:renovate
subsystem:restore
subsystem:scripts
subsystem:search
subsystem:settings
subsystem:spec
subsystem:tasks
subsystem:testing
subsystem:ui
subsystem:web
subsystem:workspace
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lapis-notes/lapis#192
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The settings panel currently derives the left navigation from configuration schema
categories and also registers plugin setting tabs through
registerWebView().That creates duplicate settings routes and can surface plugin-owned settings
under misleading generated headers such as
Markdown.Problem
The settings sidebar exposes implementation details: app schemas, imperative
plugin setting tabs, and declarative plugin configuration all feed different
navigation paths. This makes it hard to know where a setting belongs and makes
plugin settings appear both under plugin management and under the schema-derived
preferences tree.
Goal
Adopt an Obsidian-style settings navigation model: curated app settings under
Options, individual plugin settings underCore pluginsandCommunity plugins, and search as the cross-surface shortcut. Each selected sidebar itemshould render only its own settings surface.
Scope
surface groups.
SettingTab,declarative configuration, or both.
Core plugins,Community plugins) availableunder
Options.Non-goals
appearence.*.changes needed for this issue.
Acceptance Criteria
Options,Core plugins, andCommunity plugins.OptionsincludesWorkspace,Editor,Files and Links,Appearance,Hotkeys,Plugin registry,Core plugins, andCommunity plugins.declarative configuration, or both in one surface.
categoryId: "extensions"entries fromregisterWebView()do notcreate visible app navigation sections.
metadata, and declarative plugin configuration.
applicable.
enablement controls, diagnostics, and gear buttons.
Implementation Notes
SettingsSurfacemodel withid,title,icon,group, andkind.workspace,editor,files, andappearence; displayappearenceasAppearance.setting items and valid declarative configuration contributions.
to the selected surface's
ConfigPropertyentries.SettingTabfirst whenpresent, then owned declarative schema sections.
scroll-driven selection, and ancestor-open logic from
configuration.svelte.SettingItem.iconand the existing icon rendering path where practical.Suggested Files or Specs To Inspect
packages/workspace/src/lib/components/configuration/configuration.sveltepackages/workspace/src/lib/components/configuration/configuration.tspackages/workspace/src/lib/components/configuration/settings-search.tspackages/workspace/src/lib/components/configuration/plugin-settings-target.tspackages/api/src/lib/plugin.tspackages/api/src/lib/configuration.svelte.tsspec/src/30-cross-package-contracts/configuration-and-settings.mdspec/src/20-packages/workspace/index.mdValidation Commands
pnpm --filter @lapis-notes/workspace check:allpnpm test:smokemake spec-lintmdbook build specpnpm backlog:verify-commit @-pnpm backlog:doctor --strictRelated Issues
Follow-up Tasks
Implementation Summary
Implemented Obsidian-style flat settings navigation with stable Options/Core plugins/Community plugins groups, sidebar icons, canonical plugin settings surfaces for imperative and declarative settings, duplicate plugin surface de-duping, search routing to canonical surfaces, and regression coverage for duplicate keys and schema-toggle remount flashing.