Added
@obsidian-typings/obsidian-public-latestdevDependency — added community-maintained type definitions for Obsidian's internal APIs. Replaces ~50 unsafeas unknown ascasts across 13 source files with properly typed access toeditor.cm,app.keymap,app.plugins,app.vault.getConfig(),app.metadataCache.resolvedLinks,WorkspaceLeaf.id/.pinned, and more. Build-only dependency — no runtime impact.- Plugin:
package.json(@obsidian-typings/obsidian-public-latestdevDependency) - Plugin:
tsconfig.json("types": ["@obsidian-typings/obsidian-public-latest"]) - Plugin:
src/util/editor.ts,src/util/keymap.ts,src/util/leaf.ts,src/util/metadata.ts,src/util/vault.ts,src/ui/global-ex-command.ts,src/ui/hint-mode.ts,src/workspace/commands.ts,src/lua/loader.ts,src/main.ts,src/vim/vim-api.ts,src/picker/sources/dataview.ts(cast removal)
- Plugin:
Fixed
- Obsidian native highlights not cleared on Escape — Obsidian's
is-flashinghighlights (shown after following an internal link to a heading like[[Note#heading]]) now clear when Escape is pressed in normal mode. Previously, these highlights persisted until the user clicked elsewhere. Uses the unofficialeditor.removeHighlights('is-flashing')API (documented in obsidian-typings, used by obsidian-quiet-outline and others). (#122)- Plugin:
src/vim/mode-tracker.ts(clearNativeHighlightsmethod;vim-keypresshandler clearsis-flashingon<Esc>in normal mode)
- Plugin:
- Chord display breaks during surround commands — the status bar chord display now correctly accumulates all pending keystrokes during multi-key surround commands like
ysiwb,cs"(,yss", and count-prefixed variants like2ysiw*. Previously, the chord disappeared after the surround sub-state was entered (e.g.,ysshowed correctly butysiwas blank). (#123)- Fork:
~/Repos/codemirror-vim/src/vim.js(processAction— saves and restoresvim.statusaroundclearInputStatewhenvim.surroundStateis pending;handleSurroundSubState— clearsvim.statuson surround completion) - Fork:
~/Repos/codemirror-vim/DIFFERENCES.md(added "Chord display preservation during surround sub-state" section)
- Fork:
- Embedded table: table-nav key handler suppressed during modals —
handleTableNavKeyandhandleCellEditKeynow check for.modal-containerin the DOM and return immediately when a modal (picker, command palette, settings) is open. Previously, keys typed into a picker input while in cell selection mode were consumed by the table handler (aentered cell edit,ssubstituted, etc.). (#120)- Plugin:
src/vim/table-nav-controller.ts(handleTableNavKeyandhandleCellEditKey— modal container check)
- Plugin:
- Cursor-aware table: cursor displacement guard for header-row jump — a
transactionFilter(tableCursorGuard) intercepts CM6 transactions that reposition the cursor to the table header row when the user was editing a data row. This prevents Obsidian's Live Preview from snapping the cursor to the header during table creation or editing. Only active in cursor-aware mode (not embedded mode). (#121)- Plugin:
src/vim/table-render-widget.ts(tableCursorGuardtransaction filter, separated fromPrec.highStateField)
- Plugin:
Tests
- 2 e2e tests in
test/specs/native-highlight-escape.e2e.ts(issue #122): Escape in normal mode clearsis-flashinghighlight, Escape without highlights does not error - 7 e2e tests in
test/specs/surround-chord-display.e2e.ts(issue #123):ysiwb/ysiw"/yse)chord accumulation at each keystroke,yss"chord accumulation,ds"chord (passing baseline),cs"(chord accumulation,2ysiw*count-prefixed chord accumulation
Documentation
CHANGELOG.mdKNOWN_LIMITATIONS.md: Added #122 native highlight clearing as fixed; updated chord display section with surround sub-state fix (#123)AGENTS.md: Added@obsidian-typings/obsidian-public-latestto environment & tooling; updated mode-tracker description withclearNativeHighlightsCONTRIBUTING.md: Updated utility function descriptions to reflect typed access via obsidian-typings; updated mode-tracker description
Full Changelog: 0.107.0...0.108.0