Stabilize frontmatter property autocomplete and input focus behavior #64
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#64
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?
Replace the current frontmatter property-name autocomplete with a stable,
accessible interaction model that does not steal focus, leak menu/listener
state, or leave users with partially applied names.
Context
Audit findings from the current implementation:
frontmatter.sveltecreates a new imperativeMenu().popover()for everyproperty key input and wires
keyup/clicklisteners from a Svelte actionwithout a destroy hook. Re-renders can leave stale listeners and popovers
alive.
does not commit or validate until blur, which makes suggestion selection and
rename behavior depend on fragile focus timing.
anchored to the input, so keyboard navigation and focus containment are weak.
md5("${key}:${value}"); value edits can recreatethe key input while the user is interacting with autocomplete.
properties side view, and reading/preview frontmatter blocks, so the instability
is visible across the app.
Acceptance Criteria
surface or a cleanup-safe helper with deterministic teardown.
do not close or commit unexpectedly while selecting an item.
keeps the input in a clearly pending state with validation feedback.
autocomplete state are not destroyed by unrelated value changes.
properties without focus loops.
properties side view, and rendered preview frontmatter.
Notes
Relevant files:
packages/plugins/plugin-markdown/src/lib/components/frontmatter/frontmatter.sveltepackages/plugins/plugin-markdown/src/lib/components/frontmatter/widgets.tspackages/plugins/plugin-markdown/src/lib/views/file-properties/file-properties.svelteImplementation Summary
Closed the frontmatter autocomplete/input stabilization work that now uses the dedicated property-name input flow with stable popover ownership, preserved focus behavior, and workspace regression coverage.