Skip to content

feat(desktop): keyboard nav, full TUI feature parity, notebook import polish - #82

Merged
sazardev merged 3 commits into
mainfrom
feat/desktop-tui-parity-and-notebook-import
Aug 27, 2026
Merged

feat(desktop): keyboard nav, full TUI feature parity, notebook import polish#82
sazardev merged 3 commits into
mainfrom
feat/desktop-tui-parity-and-notebook-import

Conversation

@sazardev

Copy link
Copy Markdown
Owner

Summary

  • Brings shiki-desktop to keyboard-driven feature parity with the TUI: mode/focus/overlay state machine, which-key, global search, outline, tags, tree, query DSL, git dashboard, tasks, links, history, logs, settings, theme picker, drawer — plus every previously-missing action (scratchpad, visual-mode batch ops, external editor, working-diff view, export/publish, notebook rename/delete/pull) and a mock backend so the whole UI is testable in a plain browser tab without the native shell.
  • Fixes theme selection not persisting: AppState.config/store were loaded once at process startup and never mutated in memory, so a webview reload that didn't restart the whole process kept showing stale data even though config.toml was written correctly. Both are now Mutex-wrapped with a single update_config/register_custom_path path that keeps memory and disk in sync.
  • New-notebook flow: pasting a git URL now auto-detects and clones (reuses whatever git credentials are already configured, no OAuth setup needed), and a new "Import an existing folder…" action opens the real native OS folder picker (tauri-plugin-dialog), confirming before initializing git if needed. The onboarding screen's previously-disconnected "Import" stub now uses this same real flow.

Test plan

  • cargo check -p shiki-desktop / cargo clippy -p shiki-desktop --all-targets clean
  • tsc --noEmit / npm run build clean
  • Every overlay/panel manually driven end-to-end in the browser mock (logs, query DSL, export, publish, settings incl. NOTEBOOKS/SNIPPETS drill-down, theme picker reopen-from-settings race)
  • Git-URL clone and folder-import flows verified in the browser mock (plain create, clone, adopt with/without git-init confirmation)
  • Native OS folder picker verified against the real Tauri binary under Xvfb — confirmed the actual GTK "Select Folder" dialog opens, not a browser fallback

🤖 Generated with Claude Code

sazardev and others added 3 commits August 27, 2026 14:07
…port polish

Brings shiki-desktop up to feature parity with the TUI: keyboard-driven
mode/focus/overlay state machine (which-key, global search, outline, tags,
tree, query, git dashboard, tasks, links, history, logs, settings, theme
picker, drawer), a mock backend so the whole UI is drivable in a plain
browser tab without the native shell, and every previously-missing action
(scratchpad, visual-mode batch ops, external editor, working-diff view,
export/publish, notebook rename/delete/pull).

Also fixes two real bugs and adds the notebook-creation improvements
requested this session:

- Theme selection didn't persist: `AppState.config` was loaded once at
  process startup and never mutated in memory, so `set_theme`/
  `save_full_config`/`toggle_favorite_editor` wrote config.toml correctly
  but any webview reload that didn't restart the whole process kept
  showing the stale in-memory theme. `config`/`store` are now
  `Mutex`-wrapped with `update_config`/`register_custom_path` as the one
  place a change touches memory and disk together.
- New-notebook flow: pasting a git URL now auto-detects and clones
  (mirrors the TUI's `create_notebook_from_url`, reusing whatever git
  credentials are already configured — no OAuth setup needed), and a new
  "Import an existing folder…" action opens the real native OS folder
  picker (`tauri-plugin-dialog`) and adopts it as a notebook, confirming
  before initializing git if the folder doesn't have a repo yet. The
  onboarding screen's previously-disconnected "Import" stub now uses this
  same real flow instead of a placeholder message.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CI's fmt+clippy check failed on the previous commit's formatting.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@sazardev
sazardev merged commit bda7c6a into main Aug 27, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant