Releases
v0.1.0
Compare
Sorry, something went wrong.
No results found
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
You can’t perform that action at this time.