mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-10-01 09:19:34 +05:30
feat(quick-switcher): pure fuzzy matcher + ranker
Tiered scoring (exact 1.0 / stem 1.0 / prefix 0.8 / subseq 0.5+bonuses
capped 0.79) with leftmost+rightmost greedy alignment — rightmost wins
for extension/suffix queries ('md' against 'readme.md'), leftmost wins
for prefix queries ('re' against 'readme.md'). Boost-aware rankResults
applies recency x2 and open-tabs x1.5 multiplicatively; empty query
falls back to boosts alone.
Pure module, no DOM/IPC/Node — runs in renderer or main. 22 new tests.
Amit Haridas
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# SP-1: Quick-switcher fuzzy overlay + Inline AI assist
|
||||
|
||||
**Branch:** master
|
||||
**Started:** 2026-09-30 IST
|
||||
**Status:** in progress
|
||||
|
||||
## Scope
|
||||
|
||||
Replace the existing Cmd+P "Recent Files" menu with a fuzzy quick-switcher
|
||||
overlay, and add Cmd+K inline AI assist (Rewrite / Shorten / Expand) on
|
||||
selected text using the existing `AiProviders` infrastructure.
|
||||
|
||||
## Design decisions (user-approved)
|
||||
|
||||
| Question | Answer |
|
||||
|---|---|
|
||||
| Cmd+P behavior | Replace Recent Files menu with overlay |
|
||||
| AI response mode | Typewriter stream into selection |
|
||||
| AI action set | Rewrite + Shorten + Expand only (no custom prompts) |
|
||||
|
||||
## Commit plan
|
||||
|
||||
### SP-1A — Quick-switcher fuzzy overlay
|
||||
- [ ] **C1**: `feat(quick-switcher): pure fuzzy matcher + ranker` — `src/quick-switcher/fuzzy-matcher.js` + tests
|
||||
- [ ] **C2**: `feat(quick-switcher): IPC for listing workspace files` — main.js + preload.js wiring
|
||||
- [ ] **C3**: `feat(quick-switcher): overlay UI + keyboard nav` — `src/quick-switcher/quick-switcher-overlay.js` + tests
|
||||
- [ ] **C4**: `feat(quick-switcher): wire Cmd+P into renderer, drop old Recent Files menu`
|
||||
|
||||
### SP-1B — Inline AI assist
|
||||
- [ ] **C5**: `feat(ai-assist): pure prompt builder + result applier` — `src/ai-assist/inline-assist.js` + tests
|
||||
- [ ] **C6**: `feat(ai-assist): IPC streaming wrapper around AiProviders` — main.js handler
|
||||
- [ ] **C7**: `feat(ai-assist): floating popover + cancel/stop controls` — `src/renderer/inline-ai-popover.js` + tests
|
||||
- [ ] **C8**: `feat(ai-assist): Cmd+K keymap + popover mount in renderer`
|
||||
|
||||
## TDD discipline
|
||||
|
||||
- All pure modules test: integration tests first, then implementation
|
||||
- All renderer UI test: DOM contract tests using @testing-library/dom
|
||||
- All IPC handlers: tests using injected fetch stub
|
||||
- Lint + format green at every commit
|
||||
- Grep forbidden markers before each commit claim
|
||||
|
||||
## Out of scope (deferred)
|
||||
|
||||
- Per-action configurable prompts
|
||||
- Multi-selection batch assist
|
||||
- AI inline assist without specific settings (built on AI Assistant plugin config)
|
||||
Reference in New Issue
Block a user