Skip to content

v0.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Jul 12:03
· 8 commits to main since this release

Changelog

  • 1f73e17 release: binaries-only v0.1.0 (drop deprecated brews block; README leads with binary download + Gatekeeper note)
  • 63cc5da Merge: Terminal.app-safe outline keys (shift/ctrl+p) + positioning polish
  • 3d1777a adoption: address review — scope the Terminal.app claim to outline/corkboard; corkboard help shows shift
  • 7b2d9ed adoption(tier3): README value prop + who-it's-for, first-run tagline, clearer properties/heatmap footers
  • a7ed647 outline: Terminal.app-safe keys — shift+↑↓ move, ctrl+p promote (alt kept as alias); outline now works on any terminal
  • beb0855 Merge: adoption polish (Tier 1+2) — writer-friendly copy, responsive home, discoverability, terminal caveats
  • 69e72e3 adoption: address review — fit footers/primer to 80 cols; distinguish corrupt vs absent manifest; drop warning glyph
  • 032ceb5 adoption(tier2): sidebar action hint, alt-key terminal caveat (outline footer + README), corkboard footer alias
  • 94366ea adoption(tier1): writer-friendly copy, teach the model in the primer, responsive home columns
  • 968f903 Merge: full-screen outline mode + promote bridge; unify move chord (alt+↑/↓)
  • 6bb6f81 outline: address review — guard dirty on real edits; fix empty-beat title; more tests
  • 3e9bd6d corkboard: alt+↑/↓ reorder (unify move chord with the outline)
  • 0700647 docs: outline mode
  • 17ab111 outline: promote beat → chapter (seeds synopsis, marks [x])
  • e95c2f3 outline: move-beat keys (alt+up/down) integration test
  • ed3219a outline: full-screen screen scaffolding + ctrl+l entry
  • 1de92f1 outline: pure move-beat op
  • 129c109 outline: two-level beat parser
  • b4a8563 plan: outline mode
  • 794325c spec: full-screen outline mode + promote bridge
  • 0682d51 Merge: corkboard full-screen only (+ progress header, open-marker, first-line fallback)
  • c41e034 corkboard: restore firstProseLine test; self-heal first-line on synopsis clear; test wc total
  • 887a7a3 docs: corkboard is full-screen only
  • d856db8 corkboard: open-chapter marker + preloaded first-line synopsis fallback
  • 3b3f72b corkboard: progress header (chapters · words · target)
  • 0150738 corkboard: remove the in-pane corkboard mode
  • 51ec96d corkboard: ctrl+k opens the full-screen board (save-on-entry)
  • 7e9f0eb plan: corkboard full-screen only
  • c663625 demo: full-focus writing showing correct sentence dimming
  • f67ff18 textarea: focus-dim recognizes sentences ending in a closing quote/bracket
  • b80f0a9 demo: re-record the README GIF for the corkboard + help tour
  • 7965d39 docs: note the Demo/ sample + first-run primer in the README
  • bd486da Onboarding: seed the sample into Demo/ + a fresh-workspace model primer
  • 7b28269 Retire the dead binder + structure-mode code
  • 092f379 Navigator: fix adversarial-review findings
  • a6deb21 Navigator T6: docs — F1 help, README, CLAUDE.md for the corkboard navigator
  • b116ec3 Navigator T5a: repoint whole-manuscript export to the corkboard
  • 4bbf640 Navigator T4: ctrl+n chapter|resource prompt + resource-folder targeting
  • 237dae9 Navigator T3: full-screen corkboard absorbs structure mode (a/x/r/enter)
  • dff31ab Navigator T2: pane chapter actions — staged reorder, synopsis edit, toggles
  • 9515ae0 Navigator T1: corkboard-mode pane render + first-line synopsis fallback
  • 65ea61f Plan: corkboard/binder unification (6 tasks)
  • 7288064 Spec: corkboard/binder unification — resolve all three forks
  • 944bf3c Design spec: corkboard/binder unification (manuscript navigator)
  • 01f200a F1 help: organize shortcuts into functional categories
  • a70d425 Corkboard: hardening hygiene from robustness review (SHIP verdict)
  • b34e4c9 Demo: seed corkboard synopses for The Lighthouse sample
  • 902580c Margin notes: gate moveNotes to files (advisor-caught dir-rename hazard)
  • a45fb13 Margin notes v1: chapter-scoped revision notes (n from sidebar)
  • d78d06b Corkboard: per-chapter synopses + card view (c from binder)
  • 40d7919 Pace: fix stale-baseline history recording (advisor-caught)
  • db6109f Pace B2: writing-history heatmap + Goals-tab sparkline (g)
  • fd37a00 Pace B1: deadline burndown (ctrl+g 4th step + Goals-tab pace line)
  • 169701b Pace B0: daily word-count history + pace/streak helpers
  • 413eae5 Diff: exhaustive small-sequence reconstruct test (engine correctness)
  • f593a58 Diff A2/A3: diff screen + snapshot-screen entry (d / D)
  • f6bf310 Diff A1: pure-Go Myers line diff + word-level diff engine
  • 01ffd15 Design spec: snapshot diff + pace intelligence (features #1 and #2)
  • 8c28c39 docs: mark all staged specs complete (DOCX + Tier2/3 + Properties)
  • 3ca20a5 Stage 8 (8a): restore mouse when leaving select mode for the hub
  • 3c86e4f Stage 8 (8a): discoverable selection mode (ctrl+x)
  • 5160a69 Stage 8 (8c/8d/8e): UTF-8 guard, lock-in messaging, commitStructure ordering
  • 830823c Stage 7: cover the open-file restore reload branch (data-critical)
  • 34f462e Stage 7: snapshot history + restore screen (b)
  • e2b0942 Properties: fix review findings (edit-drop on save failure + minors)
  • f881298 Properties T5: docs (README Configuration + CLAUDE.md)
  • bfc8d1d Properties T4: hub 'i' entry + help hint
  • 7bed5fd Properties T3: Properties screen + model
  • b398f5e Properties T2: wire resolver into startup, project switch, title page
  • bdf5eca Properties T1: settings stores + resolver (config.json, .okashi.json)
  • e69a8d0 Plan: Project Properties implementation (5 tasks)
  • 6062c2b Design spec: Project Properties (in-app editable settings; absorbs Stage 8b)
  • d6c5619 Stage 6: readability stats in the Words tab
  • b841d3f Stage 5: Manuscript-format title page
  • 432b43e Stage 4: resume at last cursor position
  • 88ff338 feat(search): find & replace in the current chapter (ctrl+r)
  • 87acc6d feat(editor): ctrl+z undo (coarse per-file checkpoint ring)
  • 48fad92 docs: note DOCX export (README export section + tagline + shortcuts)
  • 98f4536 feat(export): emit .docx alongside .rtf + .pdf
  • 93036fd feat(export): DOCX (OOXML) writer from the export AST
  • 850de9d Staged specs (DOCX + Tier2/3) + DOCX export plan
  • 38d5b36 release: publish prebuilt binaries + Homebrew via GoReleaser
  • 9a79815 feat(onboarding): actionable empty-home affordance
  • 259fd63 feat(onboarding): seed the sample manuscript on first run
  • ce091d5 Spec + plan: first-run onboarding (seed sample + empty-home affordance)
  • 9fcd6ea fix(data-safety): abort load on flush failure; tighten backup prune match
  • 5e98504 feat(data-safety): guard against overwriting externally-changed files
  • 1d76193 feat(data-safety): per-session timestamped backup snapshot before save
  • 7387cdd fix(data-safety): flush the outgoing buffer when switching files
  • b6dcd02 fix(data-safety): flush unsaved work on ctrl+c quit
  • 1fa9a47 Spec update + plan: Tier-0 data safety (timestamped backup ring)
  • 8602dd6 Design spec: Tier-0 data safety + full-review roadmap (Tiers 1-3)
  • e137287 fix: confirm home source-removal; mover binds to the most-specific source
  • 2e91d05 feat: make the keybindings help discoverable + fix its content
  • 0c71977 docs: spec — drop persist-on-quit (1/min cadence is the single path)
  • ee51258 feat(timer): ring the terminal bell at pomodoro transitions
  • 5779daa feat(timer): Goals-tab TIME section (active session + daily accumulated)
  • 7faf2f1 feat(timer): daily-accumulated active time (per-dir, ~1/min persist)
  • 77f3f10 feat(timer): active-time stopwatch (pauses on idle)
  • ea69413 Plan: timer active-time + daily goal + pomodoro bell
  • 32c88be Design spec: timer active-time + daily goal + pomodoro bell
  • a350bab docs: mark time-goal scope resolved (per-session v1)
  • 2b6d10e docs: document ctrl+u sprint in the F1 cheatsheet
  • adb20ba feat(timer): pomodoro sprint (ctrl+u) with status-bar countdown
  • e1a3c41 feat(timer): per-session time goal in the Goals tab
  • 8973fbb feat(timer): session stopwatch in the status bar
  • 23c1e69 Plan: session timer (stopwatch + time goal + pomodoro)
  • 8a1d834 Design spec: session timer (stopwatch + time goal + pomodoro)
  • fd9e66a feat(mover): persistent move-error UX (stays open, sticky error)
  • 21da992 feat(mover): cross-source destinations via a Sources level
  • f52a120 feat(move): clear cross-volume message for folder moves
  • 000560c Plan: mover cross-source destinations + persistent error UX
  • cc0c7da Design spec: mover cross-source destinations + persistent error UX
  • 8154efb feat(preview): Tufte footnotes as bottom endnotes; reserve the margin
  • 348fb49 docs: genericize the private companion-app name for the public repo
  • 169bdce feat(preview): theme-aware Tufte palette — legible body, subdued sidenotes
  • 2dc1c36 docs: add VHS demo (tape + sample manuscript + generated GIF), wire into README
  • bac9e29 Plan: add Tasks 6-7 (auto-widen preview + README accuracy follow-up)
  • b9542e3 docs: correct sidenote trigger wording + ctrl+c grouping + autosave note
  • 954a615 feat(preview): auto-widen Tufte preview so sidenotes engage by terminal width
  • ca20b8d docs: rewrite README as a standalone product guide with a shortcuts table
  • cdf177d feat(preview): render Tufte sidenotes in renderPreview behind a width gate
  • fbbf558 feat(preview): layoutSidenotes — float footnotes into the right gutter
  • 8366dbf feat(preview): footnotesToSidenotes + shared maskCode helper
  • e4e8401 scrub: genericize companion-app name in status strings + comments
  • 42350ea Plan: Tufte sidenote preview + README + companion-name scrub
  • 071856b Design spec: Tufte sidenote preview + README rewrite + companion-name scrub
  • 72ba82c fix: guard regionPinned in the width-0 visibleRegions path (batch review minors)
  • 7d82ff5 feat: home PINNED strip (region, render, nav, hit-test)
  • ee4e712 feat: pin/unpin home projects & folders (p key, homePinned items)
  • cc6155d feat: pins.json store (load/toggle pinned containers)
  • a70d1ac docs: F1 help — native mouse selection (⌥/⇧+drag) + ctrl+a all-sources hint
  • 30ba387 feat: multi-source search — ctrl+a searches all library sources
  • 1a5487b plan: pinning + multi-source search + mouse-selection docs (5 tasks)
  • e244ef7 design: pinning + multi-source search + mouse-selection docs (batch)
  • b16f5c6 feat: 'Move files' home action + sidebar M hint (discoverable mover entry)
  • 9c4c53d feat: standalone mover — left pane picks the source file/folder (two-phase)
  • 88cdbe2 plan: standalone mover entry (left-pane source picker + home 'Move files' action)
  • 903804f fix: default mover confirm to 'chapter' each time it opens (review H-4)
  • 5df7b69 feat: file mover confirm + apply (chapter/resource radio; moveDocument/moveFolder)
  • dbd7e04 feat: file mover skeleton (enter from file pane, two-pane view, destination browser)
  • b526935 plan: structural-editing chunk 3 (file mover — screenMover, two-pane, confirm+apply)
  • 887ae0d fix: window structureView to the selection (O(visible)) — final-review I1
  • 22c4166 docs: structure mode ships — reorder/insert/remove confirm-gated (mirror in inkmere)
  • e96d718 feat: structure mode commit-on-exit (confirm; create pending + writeManifest, or discard)
  • 5c3bd03 feat: structure mode add (new blank chapter or promote a loose resource)
  • e415e41 feat: structure mode buffer edits (J/K reorder, x remove, r retitle)
  • 38a9949 feat: structure mode skeleton (enter from binder, render chapters, navigate, exit)
  • c31c2c2 plan: structural-editing chunk 2 (structure mode — screenStructure, staged commit-on-exit)
  • 3b08d3c feat: moveFolder (os.Rename with self/collision guards)
  • a08cb79 fix: propagate post-move source-manifest read error in moveDocument (Task 3 review)
  • 27780f7 feat: moveDocument (file move + manifest insert/remove on boundary crossings)
  • f14d5ce feat: safeMove (rename + cross-volume copy fallback)
  • fb04d4b feat: pure manifest transforms (insert/remove/reorder)
  • baef224 plan: structural-editing chunk 1 (foundation — transforms + moveDocument/moveFolder)
  • 7d2bc42 design: structural manifest editing + file mover (structure mode, mover, shared writers)
  • 8243ec6 fix: window the RECENT strip to the active item (final-review finding)
  • 21c4bee feat: cascading FILES column (drill into subfolders)
  • c6ce147 feat(3b): RECENT as a full-width strip above LIBRARY/FILES
  • dae1503 feat(3b): inline + on LIBRARY/FILES panels; Browse-only actions
  • 823dc87 feat: home polish — Notes under OTHER; actions row navigates left/right
  • 63f3ae1 feat: add/remove folder sources inline (a/d on home)
  • 67e84fa feat: '◦ Loose' library entry for the source root's unfiled docs
  • f19d865 feat: 's' cycles the active source; LIBRARY title shows it
  • a1b975e feat: active source drives the home library (sources in the model)
  • 3be5bcf docs: step-3a (source integration) plan + lock source-picker UX (cycle + inline add/remove)
  • c5689f5 feat: sources.json store (load/save/add/remove; primary synthesized)
  • 80a6cce feat: source value type (primary + folder, root/reachable)
  • 6720782 docs: step-2 (sources model) implementation plan
  • 62546a5 fix: disable HTML escaping in manifest writes (match Swift JSONEncoder)
  • 33284ed docs: okashi is a manifest writer (create/retitle) — reverse shared-contract authority
  • c5cb3e7 docs: step-1 implementation plan + align spec §8 to §0 authority
  • ecbadd1 fix: serialize manifests with sorted keys to match wicklight
  • ffef563 feat: file-pane header reads project/folder name or Files
  • 503373a feat: retitle manifest chapters via manifest items[].title
  • 52e9903 feat: New Project creates a manuscript and opens its first chapter
  • 9ad4b0c feat: manifest writers (writeManifest, createManuscript, renameChapterTitle)
  • dfe9167 spec: okashi is a manifest writer (confirm on structural edits) — bidirectional with wicklight; shared-contract gate
  • 1a1d1fe Design spec: okashi library — multi-source (mirror wicklight), okashi writes its own manifests (source-scoped), Recent-on-top + inline-+ home
  • 77ba80a search: fix panic on expanding case-folds (review) + ctrl+f exits preview
  • 92ae507 search: benchmark the per-keystroke project-search cost (400-page corpus)
  • 81427c0 preview: Tufte style toggle (t) + footnotes rendered as endnotes
  • dbef347 spell: global personal dictionary (add-to-dictionary)
  • ac00580 search: project-wide + in-document find (ctrl+f) with jump + highlight
  • 4d21736 Design specs: project+in-document search; global personal dictionary; Tufte preview style + footnotes
  • 93b613f home: address review — nav consults visible columns; filter snippet control bytes; classify ext-match
  • 00c165d home: three-framed-column Miller launcher (Recent · Library · Files) + drill + snippets
  • 13ea544 home: classify projects vs folders + recompute FILES (ordered chapters/loose, words + snippet)
  • 2b3d231 home: snippet cache — first ~400 bytes, markdown-stripped, mtime-cached
  • b04c55f Plan: home-screen Miller launcher (3 tasks — snippet cache, library/files data, framed columns)
  • 1909985 Design spec: home-screen Miller launcher (Recent · Library · Files, three framed columns)
  • 753186c grammar Phase-C: opt-in Auto-recheck — debounced Apple pass after edits settle
  • 725ef2b grammar: fix false positives from review — 'X of course'/dates + a/an sound exceptions
  • 4a328c9 grammar: Tier-1 heuristics get fixable suggestions + reasons, plus new rules
  • 620ddc2 home: two-column launch screen (Projects | Recent) + centered actions, 2-D navigation
  • aebde40 icons: auto-detect terminal — plain glyphs on Apple Terminal / Linux console (Nerd Font tofu fix)
  • f2492d3 grammar: passive cursor-over hint for Apple findings (fix + reason), like spellcheck
  • f298284 grammar Tier 2: fix FM findings not tagging — case-insensitive locate + skip echoes
  • 6e2dc54 docs: note the optional cgo Apple grammar backend + pure-Go default in CLAUDE.md
  • a78b22f grammar Tier 2: address review — invalidate findings on list-continuation; FM claimed-occurrence locate; minors
  • 7d03e46 Task 4: merge Apple findings into decorations + click-to-fix
  • b3e0282 Task 3: async Check grammar action + result plumbing (Analysis tab)
  • 0191425 grammar Tier 2: cgo/Swift Apple backend (NSSpellChecker + Foundation Models) + offset mapping
  • 116ea9b Plan: grammar Tier 2 Apple backend — 4 tasks (cgo/Swift bridges, offset mapping, async action, decoration merge)
  • d9470d4 grammar: green underline instead of magenta — distinct from the red spellcheck underline
  • b7b591a Design spec: grammar Tier 2 — optional on-device Apple backend (NSSpellChecker + Foundation Models, gated/opt-in)
  • 62047cd grammar: fix review findings — live cursor-line suppression, doubled-word whitelist, closing-quote rune
  • 3e09b27 textarea: fix splitStyledRuns run-grouping — group by style KEY not Style.String()
  • 2c21d5c grammar: Analysis-tab Grammar checkbox toggles the heuristic grammar decorator
  • 403d887 grammar: heuristic grammarDecorator (doubled words, spacing, a/an, missing terminal punctuation)
  • f71daf6 Plan: grammar Tier 1 — 2 tasks (grammarDecorator + Analysis toggle)
  • 9b69d18 Design spec: grammar Tier 1 (heuristic offline rules, Analysis 'Grammar' toggle)
  • 7f02055 filepane polish: delete keeps the adjacent selection; ignore clicks on blank rows below the list
  • 14e1d53 filepane: fix framedPanel action overflow on long titles + in-pane prompt invisible when sidebar hidden (review)
  • cfaaffe filepane: d duplicates the selected file; document the file-pane keys in F1 help
  • d5ed4bd filepane: Delete key removes the selected file/folder (with y confirm; manifest chapters blocked)
  • b08c924 filepane: clickable + in the title bar starts an in-place create (ctrl+n too)
  • 057f962 filepane: right-click + F2 start in-place rename
  • cd47d70 filepane: render rename/create input in the file row (not the bottom bar)
  • d4b96cd Plan: desktop file-pane set — 5 tasks (in-place rename/create, +, delete, duplicate)
  • 6a8b365 Design spec: desktop file-pane set (in-place rename/create, clickable +, delete, duplicate)
  • dc82a80 Design spec: in-place file rename (right-click + r/F2, field in the row)
  • 1237f0f home: banner wordmark — spaced 'o k a s h i' with an underline rule
  • 184c9b9 home: switch the okashi banner to figlet 'digital' font (clearer than 'small')
  • 3c50bd1 layout: status bar inside the editor column (blank line + editor width); side panels full height
  • 26d3db8 Design spec: status bar inside the editor column + full-height panels
  • 62b9905 spell/textarea: harden cursorSpellHint guard (creatingFile) + note ClickTo wide-rune limit (review polish)
  • 1dbdc27 spell: click a suggestion in the bottom bar to apply it
  • 35006f5 editor: click positions the cursor (so clicking a misspelled word shows its suggestions)
  • 8186b33 textarea: ClickTo — map an editor display cell to the cursor (for click-to-position)
  • 31eeb49 Plan: click-to-suggest spellcheck (ClickTo + clickable bar — 3 tasks)
  • f0de481 Design spec: click-to-suggest spellcheck (editor ClickTo + clickable bottom bar)
  • 150fd46 help: F1 toggles a keybind cheatsheet; drop the always-on hint from the status default
  • a025fb6 status: stats left + save/open right, aligned to the editor text column
  • b3c3bf7 panels: render the framed sidebar + inspector at full height (flush with the editor)
  • 904814c Plan: status bar + full-height panels + F1 help — 3 tasks
  • cf823b6 Design spec: status bar redesign + full-height panels + F1 keybind help
  • 434fd1e sidebar: framed-card panel (rounded border + folder title); drop breadcrumb (.. for up-nav); realign click geometry
  • ad24365 Plan: sidebar framed-card styling — 1 task
  • 778a8c4 Design spec: carry framed-card styling to the sidebar
  • e78406e inspector: framed-card panel (rounded border + tab title + rule headers); realign click geometry
  • 1c6eb9b Plan: clarify Task 2 geometry (widen column to keep inner width 29)
  • 6f30e99 inspector: framedPanel + sectionHeader chrome helpers
  • cf7932a Plan: inspector framed-card styling — 2 tasks
  • e875a1a Design spec: inspector framed-card styling (rounded border + title + rule headers)
  • 0a42436 spell: passive status-bar hint when the cursor is on a misspelled word
  • daaa3f6 spell: CurrentLine accessor + memoized spellSuggest + O(line) wordUnderCursor (passive-hint foundation)
  • e5919ee Plan: passive cursor-over spelling suggestions — 2 tasks
  • 2c94e9e Design spec: passive cursor-over spelling suggestions in the status bar
  • 689c4a5 spell: ctrl+r spelling-suggestions menu (replace cursor word, case-preserving)
  • 9b003cd textarea: CursorColumn + ReplaceRange (replace a rune range on the cursor line)
  • d7057df spell: swap wordlist for gospell (hunspell) engine — real morphological checking + suggestions
  • 36e1716 Plan: real spellcheck (gospell) + suggestions menu — 3 tasks
  • d62b615 Design spec: real spellcheck (gospell/hunspell) + spelling suggestions (ctrl+r menu)
  • fe1abf7 inspector: Analysis POS list (Adverb/Adjective/Passive) + one-row tab bar; wire POS toggles; drop markdown syntax
  • d48ff47 pos: prose-backed POS engine (adverb/adjective/passive decorator, memoized)
  • 9757d69 Plan: parts-of-speech highlighting (prose engine + Analysis redesign — 2 tasks)
  • fbcc19e Design spec: parts-of-speech highlighting (prose tagger, adverb/adjective/passive; replaces markdown syntax)
  • 7c78d91 syntax: compose with spellcheck + Analysis-tab Syntax checkbox toggle
  • 1c38231 syntax: per-line markdown syntaxDecorator (headings/emphasis/code/links/markers)
  • 6a43c15 Design + plan: live syntax highlighting (syntaxDecorator, compose with spellcheck — 2 tasks)
  • a1027f2 spell: Analysis-tab Spellcheck checkbox toggles the editor decorator
  • 390426c inspector: Analysis tab (Spellcheck/Syntax checkboxes) + row hit-test
  • a42f8a3 spell: embedded wordlist + spellDecorator (misspelled words → red underline)
  • e3e82ab textarea: per-line Decorator hook + styled-run render (decoration > dim > normal)
  • be9ca74 Plan: editor decorations + spellcheck (Decorator hook, wordlist, Analysis tab — 4 tasks)
  • da8f84d Design spec: editor decoration spans + spellcheck (per-line Decorator hook, embedded wordlist, Analysis tab)
  • b72463a inspector: click the tab bar to switch tabs (Words/Outline/Goals)
  • 84e07d9 test: TestMain isolates the user config dir (goals.json/recent.json never touch real config)
  • a115d92 goals: wire into writing screen — syncGoal, ctrl+g two-step prompt, inspector goalStats
  • e661aca inspector: Goals tab (daily + project progress bars) + tab hit-test helper
  • d6c87fd goals: per-project goals store + daily baseline/today-words logic
  • d5b2f37 Plan: Goals tab (store, progress bars, ctrl+g, click-to-switch — 4 tasks)
  • 56c97a0 Design spec: Goals tab (daily + project word goals, progress bars, ctrl+g, click-to-switch tabs)
  • 37dd9b3 inspector: Outline tab (read-only outline.md) + ctrl+y cycles tabs
  • 5d2a71e outline: ctrl+l edits outline.md (toggle); ctrl+k opens binder (renamed from outline)
  • 25bd633 Plan: outline document + inspector Outline tab (2 tasks)
  • 397bab7 Design spec: outline document + inspector Outline tab (ctrl+l outline, ctrl+k binder)
  • 16deca5 inspector: rebind toggle to ctrl+y (ctrl+i == Tab, was dead); route clicks via effectivePanels; real toggle test
  • 6a7a4bf inspector: wire into the writing screen (ctrl+i toggle, 3-column layout, auto-hide sidebar)
  • 4f051b3 inspector: component shell (tab bar + Words tab) + doc/project stat helpers
  • 620e46a Plan: inspector foundation (component + 3-column wiring — 2 tasks)
  • bc5b667 Design spec: inspector foundation (right-panel shell + Words tab)
  • 37653ce icons: drop dead renderIcon call in home selected branch (final-review minor)
  • 7b59db4 icons: render per-type colored glyphs in the file pane + home recents
  • 74556af icons: glyph+color model — curated yazi-style nerd set with per-type Dracula colors
  • da14363 Plan: yazi-style file-pane icons (glyph+color model, colored render — 2 tasks)
  • 5ba1e40 Design spec: yazi-style file-pane icons (glyph + per-type Dracula color)
  • ad81392 docs: CLAUDE.md — editor View() is now windowed (O(visible)); gap-buffer not needed
  • 81b6744 textarea: follow-up cleanups — drop vestigial newLines; absolute prompt index (no typewriter-pad shift) + test; document line-number padding limitation
  • 55e529f textarea: fix cursorSentenceSpan widen guard — rune count, not byte length
  • 4e3e389 textarea: window View() to O(visible) — render only the visible rows
  • b2cabc9 textarea: make cursorSentenceSpan exact by widening the window to sentence bounds
  • 023c65a textarea: compute dim sentence span cursor-locally (drop per-frame m.Value())
  • 9434857 textarea: size wrap cache to the buffer, not the MaxHeight default
  • a9c4c82 Plan: windowed editor render (cache, dim-span, O(visible) View — 4 tasks)
  • ae42103 Design spec: windowed editor render (O(visible) View, buffer untouched)
  • 58c5a29 test: editor View() benchmark — documents the O(buffer) render cliff
  • e76010a test: pager scroll benchmark on a ~400-page corpus
  • 6abf3f9 fix: editor MaxHeight=0 — was capped at the vendored default 99 lines
  • 021acd5 docs/refs: rename sibling app Inkmere -> Wicklight (paths preserved pending folder rename)
  • b2cd3ec Merge manifest-reconciliation: okashi reads inkmere's manifest contract
  • 4ba80ba fix(manifest): refuse to write/rename manifest.json; block rename in refuse-mode (corpus-safety guards)
  • 04f14f8 docs(claude): mark ordering/membership contract RESOLVED — manifest is the source, okashi reads it
  • 59174d7 feat(manifest): chapters are not renamable (manifest-owned titles); loose/Resource rename stays
  • 56cfdbc feat(manifest): resolve order/titles/membership from manifest.json; legacy prefix as read-only fallback
  • 89dfe8b refactor: drop outline reorder + new-section + dead backup.go — outline is a read-only navigator
  • c5e9291 refactor: drop convert (plain-folder numbering) — inkmere owns structure creation
  • b5a46a8 feat(manifest): read-only manifest.json reader with schemaVersion gate
  • 0549a05 docs(manifest): sync plan to O1/O3 decisions
  • ac29976 docs(manifest): record human-confirmed O1–O4 decisions
  • bffe85b docs(manifest): design spec + TDD plan to reconcile okashi to inkmere's manifest contract
  • 99455ea docs: CLAUDE.md §1 — ordering contract deferred to inkmere (not built yet; will likely define a manifest)
  • f7a12fb export: preserve autolink (URL/email) text — GFM Linkify dropped it
  • 7041e05 docs: CLAUDE.md — atomic writes shipped (drop stale 'pending' status)
  • 3525cf8 docs: CLAUDE.md — export now GFM+footnotes; preview footnote limitation noted
  • 14cc578 export: render the Endnotes block (Notes section) in RTF + PDF
  • f4803ec export: degrade GFM task lists ([ ]/[x]), tables (pipe rows), strikethrough
  • 2fd223b export: goldmark GFM+footnotes parser; footnotes -> per-chapter endnotes
  • 9ebff0a Plan: export GFM + footnotes (parser, endnotes, degrade, docs — 4 tasks)
  • 7d17106 Design spec: export GFM + footnotes (per-chapter endnotes, degrade GFM)
  • 8536d7d atomicwrite: route save, export, backup, new-section, and recents through atomicWrite
  • 984cac7 atomicwrite: temp-file + fsync + rename helper
  • d05b534 Plan: atomic writes (helper + route all writes, 2 tasks)
  • 0af3e6d Design spec: atomic writes (temp+fsync+rename for all writes)
  • 4c76a99 docs: reconcile CLAUDE.md to the shipped okashi (filename-prefix model, vendored textarea); flag manifest divergence + adopt atomic-writes/GFM-footnotes as pending
  • aabe28b export: render PDF emphasis per-run (fix literal HTML entities); recover in runExport
  • 8439e24 export: sanitize astral runes on the Tufte PDF path + recover so prose can't crash export
  • 187d051 docs: export (ctrl+e) keymap + ignore exported output
  • ea18125 export: ctrl+e chooser (manuscript/tufte), scope from screen, writes rtf+pdf
  • 5be02ec export: embed ET Book for the Tufte PDF style
  • c2499a3 export: go mod tidy — mark fpdf/x-text/goldmark as direct deps
  • 1b71a66 export: PDF writer — manuscript style (Courier, cp1252 transcode, fpdf)
  • 017add7 export: RTF writer (manuscript + tufte styles, verified escaping)
  • 2afc154 export: gather list-item runs per block child (no fused multi-paragraph items)
  • 6fba308 export: promote goldmark to direct require
  • a4b31c5 export: goldmark parse -> ManuscriptDoc AST (prose-block subset)
  • f358137 Plan D: export (RTF + PDF, 6 tasks)
  • d653d3c Design spec: Plan D export (RTF + PDF, Manuscript + Tufte)
  • bb5f56b pager: clamp measure to terminal width + re-wrap the map on resize
  • 67c10df docs: manuscript pager keymap + outline m hint
  • 6bcf431 pager: mouse — click moves the cursor, double-click jumps to edit
  • ef9bfdb pager: screen wiring — outline m enters, scroll, jump-to-edit, o/esc
  • 4362950 pager: derive the header spacer from pagerHeaderHeight (render/hit-test can't drift)
  • 58032cb pager: render (running header, dimmed markdown) + cursor/scroll navigation
  • ea34a5e pager: build — concatenate ordered sections into a wrapped line→source map
  • ec8ec4b textarea: MoveToLine — position the cursor on a given line
  • 536d578 Plan C: manuscript pager (6 tasks)
  • dd6b8d9 Design spec: Plan C manuscript pager (finalized)
  • 6a5207d convert: test open-file tracking; note outline rename-cancel skips refresh
  • 704f577 docs: r rename + ctrl+l convert-to-manuscript keymap Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
  • 9550504 convert: keep the outline nav hint after converting (drop clobbering status)
  • e1440bb convert: ctrl+l offers to number a plain folder into a manuscript (backup first)
  • 6337a37 rename: r retitles the selected section from the outline
  • e49f196 rename: r renames the selected sidebar file/folder/section (collision-safe, open-file tracking)
  • 7cc1f64 rename: pure section-retitle, loose-rename, and convert planners
  • eda4dbe Plan: rename + convert-to-manuscript (5 tasks)
  • 1fda763 Design spec: rename + convert-folder-to-manuscript
  • 6770d3d outline: open the selected section after apply/discard (capture before reload)
  • 386485a docs: outline view keymap + ctrl+l status hint
  • 2064d5e outline: mouse — click selects, double-click opens (shared hit-test)
  • 62054c5 outline: new section inserted after selection with renumber + backup
  • e8fe1c0 outline: stay on outline when a reorder commit fails; reset pendingOpen; gate-esc test
  • 05788ca outline: deferred reorder with confirm-on-exit commit + open-file tracking
  • 0f0e635 outline: handle WindowSizeMsg on the outline screen
  • b7c11fe outline: screen wiring — ctrl+l entry, select, open, back
  • d0ef528 outline: share allowed-extension filter between sidebar and readEntries
  • 361b757 outline: model state, selectable rows, and full-screen render
  • 8bc953b outline: preflight rename targets + roll back temps on failure
  • ced0575 outline: two-phase disk renumber + backup-first commit
  • 572ffc0 outline: pure renumber + project-title helpers
  • 5c4793d Plan B: simplify outlineLeave signature (drop unused param)
  • 6ce7327 Plan B: outline view implementation plan (8 tasks)
  • bba8869 Design spec: Plan B outline view (finalized decisions)
  • 88de777 docs: Plan A complete — progress note, deferred Minors, Plan B handoff
  • b104314 project: sectionTitle strips extension before separators (fixes 01.md -> "")
  • 8db79b1 Add backup helper: snapshot files into .backup//
  • bddd4bf Sidebar: ordered section titles + per-chapter word counts in manuscripts
  • dc32468 project: word-count cache (modtime-keyed) and project rollup
  • 18a4d1f project: section ordering, titles, manuscript detection
  • ee48524 docs: resume note on long-form Plan A (pre-execution)
  • 9927708 Plan A: long-form project model (ordering, word counts, sidebar, backups)
  • c5a71f7 Archive completed plans and specs; keep active long-form-projects design
  • adb20cd Design spec: long-form projects (outline, manuscript, export, backups)
  • 2047e69 Widen measure to 72, center word count over editor, preview header
  • 78de1d1 Docs: focus dimming
  • 8a20f6a Wire focus dimming (ctrl+d toggle, follows typewriter)
  • ae37243 Test: lock wrapped-line offset invariant for dim render
  • 5f61bd9 textarea: sentence-level dim render patch
  • 926f5af textarea: pure sentence-span + dim-run helpers
  • 646706d Implementation plan: focus dimming (sentence-level, iA-style)
  • 688dada Fix breadcrumb overflow: keep it to one row (no file-list shift)
  • 920136e Docs: clickable breadcrumb + scroll indicator
  • 1ce780b Clickable breadcrumb: click a segment to navigate
  • 7d0eefc Breadcrumb: head-truncation, scroll indicator, clickable ranges
  • a9d2215 File pane clean look: gutter, full-width bar, dim extensions
  • 55a0f14 Fix file-pane width accounting (selected rows no longer wrap)
  • a03cfd6 Implementation plan 2/2: file-pane clean look + clickable breadcrumb
  • 55aec74 Fix path-traversal in create + reset folder mode on cancel/ctrl+n
  • f74e098 Docs: launch hub (new document/project, mouse, folder creation)
  • c8e196c Launch hub mouse: click/double-click/wheel via shared homeRows
  • 617b537 Wire hub New document / New project to the create prompt
  • 5af4b69 confirmCreate: files + folders with a live prompt hint
  • 634de19 Launch hub: New document / New project action items
  • 09ee2f4 Implementation plan 1/2: launch hub + creation + launch mouse
  • c71a6e9 Design spec: file-pane polish (launch hub, creation, mouse, clean look)
  • 8024a15 Make workspace-root tests hermetic (OKASHI_DIR temp dir)
  • ccbc429 Docs: file-pane breadcrumb + workspace confinement
  • 2276f2e File pane breadcrumb header (mouse offset accounts for it)
  • dee8399 Keep workspace root constant in openHomeSelection
  • a11652e Confine file pane to the okashi workspace root
  • 10786ed Spec: empty-item list-end clears the line (no extra newline)
  • b938a2f Fix Tab-edits-during-preview; status string, comment, empty-list test
  • 60ee25b Docs: writing ergonomics (indent, lists, smart quotes, width)
  • ce9d93c Auto-continue Markdown lists on Enter
  • 289dd4b Smart curly quotes (default on, OKASHI_SMARTQUOTES=off)
  • 39ce3f4 esc pane-switch; Tab/Shift+Tab indent/outdent
  • 20c61dd Configurable column width (default 65, OKASHI_WIDTH)
  • 65380cd textarea: add editing helpers (indent/outdent/line/clear)
  • 51564c5 Implementation plans: editor ergonomics (A) + file-pane breadcrumb/confinement (B)
  • 788b901 Design spec: writing ergonomics + file-pane breadcrumb/confinement
  • fc38279 Fix Nerd Font icon glyphs (use \u escapes; were stripped to spaces)
  • 878c7a2 Fix dirty-reset on file switch + per-extension recent icons
  • b310fe7 Docs: launch screen, icons env, autosave
  • b90d3a6 Launch transitions, bannerless writing zone, recents wiring + autosave-tick-on-home fix
  • b4c9ebd Launch screen: home/writing state + home render & navigation
  • d6c897f home: launch-list builder (recents + projects + open-other)
  • 54f05ff recent-files store: load/add with dedup, cap, missing-path filter
  • 606c88f Render file-pane icons (folder tint, no slash suffix)
  • 831a155 icons: Nerd Font glyph set with plain fallback
  • dff0404 Autosave: debounced ~2s-idle flush with dirty indicator
  • dcdd5be Implementation plan 1/2: launch screen + icons + autosave
  • 44069cf Spec: add Section 5 focus dimming (sentence-level); defer settings pane + rope buffer
  • 4f61073 Design spec: launch screen + file-pane icons + autosave
  • 72b38d8 Test mouse click-selects / double-click-opens path
  • 13b37c4 Mouse wheel over editor/preview + sidebar refresh on new-file save
  • 349085f Remove dead applyTypewriterScroll; refresh stale README prose
  • cc346c2 Docs: typewriter + mouse file pane; mark roadmap #1, #4 done
  • fb45cd3 Mouse support on the file pane: wheel, click-select, double-click open
  • c5b08c7 Replace filepicker with owned filelist (keyboard parity)
  • 09f2781 filelist: navigation, scroll window, activate
  • f923121 filelist: directory read/filter/sort + render
  • 0b16a3b Add ctrl+t typewriter toggle (default on)
  • b1f8fa2 textarea: add Typewriter centered-scroll patch + tests
  • d5a8ba6 Vendor bubbles/textarea into internal/textarea (no behavior change)
  • 6fabbfc Ignore .superpowers SDD scratch
  • 60ed05a Implementation plan: typewriter scrolling + mouse file pane
  • b24599d Design spec: typewriter scrolling + mouse-driven file pane
  • 453f0cf Add live word-count / session stats to the status bar
  • f586bbc okashi: terminal writing app with iCloud-aware storage and Markdown preview