Fixed
- Embedded table: cannot leave table downwards on last line — pressing
jat the last data row when the table is at the end of the document now inserts a newline and moves the cursor below the table instead of getting stuck. (#119)- Plugin:
src/vim/table-nav-controller.ts(exitTableAtBoundary— inserts\nwhen table is on last line instead of dispatching todoc.length)
- Plugin:
- Embedded table: unhandled keys swallowed in cell selection mode — the table-nav key handler previously consumed ALL keys with
preventDefault()/stopPropagation(). Now only consumes keys the handler actually processes; unhandled keys propagate to vim. Enables leader key sequences, which-key popups, and other vim key bindings during cell selection. (#120)- Plugin:
src/vim/table-nav-controller.ts(handleTableNavKey—handledflag gatespreventDefault/stopPropagation;pendingDdefault case propagates instead of consuming)
- Plugin:
- Embedded table: which-key popups in cell selection mode — a
WhichKeyOverlayinstance is now attached during table-nav mode using the main editor's vim adapter. Previously only available in cell-edit mode. (#120)- Plugin:
src/vim/table-nav-controller.ts(attachNavWhichKey/detachNavWhichKey,setTableNavWhichKeyConfig) - Plugin:
src/vim/table-embedded-editor.ts(re-exportssetTableNavWhichKeyConfig) - Plugin:
src/main.ts(wiresembeddedWhichKeyConfigto table-nav controller)
- Plugin:
- Embedded table: picker focus stays on table widget — the
setActiveLeafoverride inembeddable-editor.tsnow allows focus transfer when a modal is open by checking for.modal-containerin the DOM. (#120)- Plugin:
src/editors/embeddable-editor.ts(setActiveLeafoverride — modal container check)
- Plugin:
- Embedded table: clicking outside table does not exit table-nav — a capture-phase
mousedownlistener onactiveDocumentexits table-nav when clicks land outside the widget. (#121)- Plugin:
src/vim/table-nav-controller.ts(installClickOutsideHandler/removeClickOutsideHandler)
- Plugin:
- Embedded table: stale table-nav state after document replacement — the ViewPlugin's
update()now detects whendocChangedfires and the cursor is no longer in a table, exiting table-nav gracefully. (#119, #120)- Plugin:
src/vim/table-nav-controller.ts(update— stale state check ondocChanged)
- Plugin:
- Embedded table: cursor displacement when entering table-nav —
setActiveEditTableRange()is now called beforethis.view.dispatch()inenterTableNav(), preventing decoration rebuild from snapping the cursor to the header row. (#121)- Plugin:
src/vim/table-nav-controller.ts(enterTableNav— reorderedsetActiveEditTableRangebefore dispatch)
- Plugin:
- Embedded table: Escape in table-nav uses Obsidian Scope — table-nav mode now installs an Obsidian
Scopewith an Escape handler (matching the cell-editor pattern), in addition to the DOM capture-phase handler. (#120)- Plugin:
src/vim/table-nav-controller.ts(installNavScope/removeNavScope)
- Plugin:
Tests
- Unblocked 13 previously-skipped embedded table widget e2e tests in
test/specs/table-cell-vim-mode.e2e.ts— root cause: missingbrowser.reloadObsidian()and table-only document content preventing widget rendering. All cell editing tests (two-Escape, entry modes, register sharing,<br>round-trip, multi-table navigation) now pass. - 2 regression tests for #119 in
test/specs/table-cell-vim-mode.e2e.ts:jat last row exits table at end of document, cursor usable after exit - 2 regression tests for #120 in
test/specs/table-cell-vim-mode.e2e.ts: Escape in cell selection mode (skipped — WDIO DOM Escape routing limitation), unhandled keys not swallowed - 3 regression tests for #121 in
test/specs/table-cell-bridge.e2e.ts:jmoves through proper table rows, cursor not stuck on header, cursor not jumping back
Documentation
CHANGELOG.mdKNOWN_LIMITATIONS.md: Marked 7 table widget sub-issues as fixed (#119, #120, #121); updated embedded table e2e test coverage noteAGENTS.md: Updated table-nav-controller description with click-outside handler, Scope-based Escape, which-key in table-nav, stale state cleanupCONTRIBUTING.md: Updatedtable-nav-controller.tsdescription
Full Changelog: 0.106.0...0.107.0