Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
576 commits
Select commit Hold shift + click to select a range
fe05e56
SMTP: stop tying the TLS toggle advice to port numbers (#276)
mtaanquist Jun 7, 2026
b8762f0
TODO: scene split/merge left the candidate list with v2.34.0
mtaanquist Jun 7, 2026
1737590
Add a Notes view and duplicate-scene (#277)
mtaanquist Jun 7, 2026
f871746
Release v2.36.0
mtaanquist Jun 7, 2026
e82956e
Back-merge main after v2.36.0 release
mtaanquist Jun 7, 2026
a219cd9
Add a self-hosting guide and fill the help-doc gaps (#279)
mtaanquist Jun 7, 2026
d56d9da
Release v2.37.0
mtaanquist Jun 7, 2026
78edeec
Back-merge main after v2.37.0 release
mtaanquist Jun 7, 2026
5826069
Rate-limit the write paths per user (#281)
mtaanquist Jun 7, 2026
8975cbf
Release v2.38.0
mtaanquist Jun 7, 2026
048541f
Back-merge main after v2.38.0 release
mtaanquist Jun 7, 2026
9748300
Add writing goals and deadlines (#283)
mtaanquist Jun 7, 2026
b48a5af
Release v2.39.0
mtaanquist Jun 7, 2026
1eae0e0
Back-merge main after v2.39.0 release
mtaanquist Jun 7, 2026
54da91e
fix: bold-then-italic and dismissable inline create forms (#289)
mtaanquist Jun 8, 2026
deb3737
Bump version to 2.39.1
mtaanquist Jun 8, 2026
6d8adfc
Back-merge main after v2.39.1 release
mtaanquist Jun 8, 2026
74f9683
TODO: record v2.39.1 and the #285-288 issue batch
mtaanquist Jun 8, 2026
d5f3df5
feat: story preview and a toolbar on the whole-story view (#287) (#291)
mtaanquist Jun 8, 2026
771ba9b
Bump version to 2.40.0
mtaanquist Jun 8, 2026
244794a
Back-merge main after v2.40.0 release
mtaanquist Jun 8, 2026
8c674c4
TODO: #287 shipped as v2.40.0
mtaanquist Jun 8, 2026
db04b37
feat: read-only entity card in the editor's right column (#293)
mtaanquist Jun 8, 2026
48ab8ac
Bump version to 2.41.0
mtaanquist Jun 8, 2026
6de597f
Back-merge main after v2.41.0 release
mtaanquist Jun 8, 2026
8ae738c
TODO: #288 shipped as v2.41.0; issue batch complete
mtaanquist Jun 8, 2026
fdb52a8
chore: move story-mode and focus controls into the formatting toolbar…
mtaanquist Jun 8, 2026
09492ee
Bump version to 2.41.1
mtaanquist Jun 8, 2026
89c988f
Back-merge main after v2.41.1 release
mtaanquist Jun 8, 2026
a6fa1a7
ci: harden two flaky core-flow interactions (#297)
mtaanquist Jun 8, 2026
dde9ae0
ci: retry e2e twice on CI (#298)
mtaanquist Jun 8, 2026
6ed6309
fix: center the Notes sidebar segment pills and drop the underline (#…
mtaanquist Jun 8, 2026
aff3945
Bump version to 2.41.2
mtaanquist Jun 8, 2026
89094e4
Back-merge main after v2.41.2 release
mtaanquist Jun 8, 2026
b73e5d3
docs(roadmap): separate asset-storage config from the deferred usage/…
mtaanquist Jun 8, 2026
09a3763
Quick-wins feedback batch: swatch, breadcrumb, self-publish, scene pr…
mtaanquist Jun 8, 2026
6335ad6
Bump version to 2.42.0
mtaanquist Jun 8, 2026
9f261a0
Back-merge main after v2.42.0 release
mtaanquist Jun 8, 2026
e398007
Editor legibility: Enter = paragraph + show/hide-marks toggles (#306,…
mtaanquist Jun 8, 2026
a9072c6
Bump version to 2.43.0
mtaanquist Jun 8, 2026
6ac7680
Back-merge main after v2.43.0 release
mtaanquist Jun 8, 2026
cfc7a71
Entity badges: per-entity colour and image with a badge menu (#305) (…
mtaanquist Jun 8, 2026
9af318d
Bump version to 2.44.0
mtaanquist Jun 8, 2026
72aca00
Back-merge main after v2.44.0 release
mtaanquist Jun 8, 2026
8e742a5
Page setup: line spacing and a binding gutter (#316)
mtaanquist Jun 8, 2026
68455c7
Bump version to 2.45.0
mtaanquist Jun 8, 2026
9482632
Back-merge main after v2.45.0 release
mtaanquist Jun 8, 2026
021928f
Per-paragraph increase/decrease indent (#309 resolved) (#318)
mtaanquist Jun 8, 2026
c77adcd
Bump version to 2.46.0
mtaanquist Jun 8, 2026
328eff7
Back-merge main after v2.46.0 release
mtaanquist Jun 8, 2026
ec49a6e
Author review mode (#301) + toolbar overflow menu + invert command ma…
mtaanquist Jun 8, 2026
9bcaff5
Bump version to 2.47.0
mtaanquist Jun 8, 2026
53d33b9
Back-merge main after v2.47.0 release
mtaanquist Jun 8, 2026
efb7690
Phase 9 Assistant design spec + design-doc reconciliation (#322)
mtaanquist Jun 9, 2026
9428a9c
Assistant (LLM) backend plumbing: gateway, context, tools, setup help…
mtaanquist Jun 9, 2026
595a832
Assistant: account settings UI at /account/assistant (#325)
mtaanquist Jun 9, 2026
03a7a6d
Assistant chat tab + layout gate + per-story mute (#326)
mtaanquist Jun 9, 2026
7499bbb
Admin egress policy panel (the SSRF control) (#327)
mtaanquist Jun 9, 2026
9297588
Single-scene Assistant review + entry point (#328)
mtaanquist Jun 9, 2026
0f88eec
Whole-story / chapter Assistant review (background job) (#329)
mtaanquist Jun 9, 2026
fe1bfdd
Inline Assistant continuation (ghost-text) (#330)
mtaanquist Jun 9, 2026
170a80e
Co-author panel: draft a passage with insert / edit / reject (#331)
mtaanquist Jun 9, 2026
6ed0d19
Help: document co-author and chapter/whole-story review (#332)
mtaanquist Jun 9, 2026
972bfe3
Assistant recap ("catch me up") in the chat tab (#333)
mtaanquist Jun 9, 2026
d96cfcb
Assistant summary maintenance (background job) (#334)
mtaanquist Jun 9, 2026
b178ba3
Assistant entity enrichment (suggested aliases, details, summary) (#335)
mtaanquist Jun 9, 2026
5543e1b
Help: correct per-story override scope and note the Assistant reviewe…
mtaanquist Jun 9, 2026
0777c76
Bump version to 3.0.0
mtaanquist Jun 9, 2026
f724bec
Back-merge main after v3.0.0 release
mtaanquist Jun 9, 2026
cfa3f31
Revive trashed standalone universe instead of swallowing new stories …
mtaanquist Jun 9, 2026
a548620
Scope export asset bundling to the export owner (#356)
mtaanquist Jun 9, 2026
adae25c
Throttle changePassword with reauthGuard like its siblings (#354)
mtaanquist Jun 9, 2026
e07b3fb
Require password re-auth to register a passkey (#355)
mtaanquist Jun 9, 2026
4845dc0
Flush NoteEditor and EntityEditor on page hide (#357)
mtaanquist Jun 9, 2026
b5148cf
Close stale-write races in prose replace and scene round-trip (#358)
mtaanquist Jun 9, 2026
3c51d59
Add btree indexes on hot foreign keys (#359)
mtaanquist Jun 9, 2026
74b51cb
Select the match on a freshly mounted scene jump (#360)
mtaanquist Jun 9, 2026
d022343
Guard non-uuid ids: session cookie, public and api id routes, query p…
mtaanquist Jun 9, 2026
a3ef03c
Give transactional email a real retry story and a dead-letter queue (…
mtaanquist Jun 9, 2026
3d49cdd
Make the backup dedupe hash real and reconcile restore config (#363)
mtaanquist Jun 9, 2026
2717d9f
Offload user exports to the worker, deliver via a download route (#364)
mtaanquist Jun 10, 2026
22548b6
Hardening sweep: rate limits, input caps, upload sniffing (#365)
mtaanquist Jun 10, 2026
d583f44
Client polish sweep: palette races, wedged button, menu a11y, upload …
mtaanquist Jun 10, 2026
09a787e
Consistency sweep: auth, data, and worker follow-ups (#367)
mtaanquist Jun 10, 2026
fb4ac46
Bump version to 3.1.1
mtaanquist Jun 10, 2026
fb3bda6
Back-merge main after v3.1.1 release
mtaanquist Jun 10, 2026
d14309f
Hash the session bearer token (#352) (#369)
mtaanquist Jun 10, 2026
77bd803
Bump version to 3.1.2
mtaanquist Jun 10, 2026
7cdc03b
Back-merge main after v3.1.2 release
mtaanquist Jun 10, 2026
2c119cd
Rebuild review as a three-column editor mode (#371)
mtaanquist Jun 10, 2026
ffa3063
Bump version to 3.2.0
mtaanquist Jun 10, 2026
983ae3e
Back-merge main after v3.2.0 release
mtaanquist Jun 10, 2026
ba1a0e9
Review: responsive guest page, Accept all, retract-your-own, polish (…
mtaanquist Jun 10, 2026
d51064e
Back-merge main after v3.2.1 release
mtaanquist Jun 10, 2026
b047785
Review: match review-build.html, author-editable review centre (#380)
mtaanquist Jun 10, 2026
7d44056
Bump version to 3.3.0
mtaanquist Jun 10, 2026
ab2a0cf
Back-merge main after v3.3.0 release
mtaanquist Jun 10, 2026
1c34f60
Review polish: Write-outline left rail, responsive shared toolbar, se…
mtaanquist Jun 10, 2026
beb3459
Bump version to 3.3.1
mtaanquist Jun 10, 2026
a7a15d0
Back-merge main after v3.3.1 release
mtaanquist Jun 10, 2026
ce9bfe5
Review polish 2: outline alignment+hover, card air, scene-pin on acce…
mtaanquist Jun 10, 2026
ebff974
Bump version to 3.3.2
mtaanquist Jun 10, 2026
ef7486b
Back-merge main after v3.3.2 release
mtaanquist Jun 10, 2026
2eaee4e
Show the faint resolved mark for decided suggestions, not just resolv…
mtaanquist Jun 10, 2026
6643b22
Bump version to 3.3.3
mtaanquist Jun 10, 2026
d0c95be
Back-merge main after v3.3.3 release
mtaanquist Jun 10, 2026
ced3291
Assistant feedback batch: submenus, references, split proposals, revi…
mtaanquist Jun 10, 2026
f5a3986
Bump version to 3.4.0
claude Jun 10, 2026
3d99549
Back-merge main after v3.4.0 release
claude Jun 10, 2026
a2ccf4d
Deflake the author-review spec: wait out the accept refresh before ty…
mtaanquist Jun 10, 2026
3a2663f
Fold accepted suggestions into the live review editor at once (#391)
mtaanquist Jun 10, 2026
a5ce5a8
Add a Release workflow so remote sessions can tag and publish (#392)
mtaanquist Jun 10, 2026
d5f0e89
Back-merge main after registering the Release workflow
claude Jun 10, 2026
b961cad
Split proposal follow-ups: follow the passage, name the cut side, dec…
mtaanquist Jun 10, 2026
32e9bd9
Bump version to 3.4.1
claude Jun 11, 2026
2f62a01
Back-merge main after v3.4.1 release
claude Jun 11, 2026
3fd1ba2
Bump the all-dependencies group across 1 directory with 10 updates (#…
dependabot[bot] Jun 11, 2026
d1db91f
Bump docker/metadata-action from 5 to 6 (#375)
dependabot[bot] Jun 11, 2026
8793a0d
Bump docker/setup-buildx-action from 3 to 4 (#376)
dependabot[bot] Jun 11, 2026
3e99605
Bump docker/build-push-action from 6 to 7 (#377)
dependabot[bot] Jun 11, 2026
6f07c15
Bump docker/login-action from 3 to 4 (#378)
dependabot[bot] Jun 11, 2026
d5e3efb
Drop the Node 24 override now the docker actions ship on it (#397)
mtaanquist Jun 11, 2026
dcf6706
Bump version to 3.4.2
claude Jun 11, 2026
9efb4ff
Back-merge main after v3.4.2 release
claude Jun 11, 2026
002dde2
Fix six reviewed bugs: export purge, merge markers, lore category doc…
mtaanquist Jun 11, 2026
fb5f0eb
Bump version to 3.5.0
claude Jun 11, 2026
ff3ea07
Correct version to 3.4.3; bug fixes warrant a patch, not a minor
claude Jun 11, 2026
7f8fd04
Back-merge main after v3.4.3
claude Jun 11, 2026
c16de30
Harden API input handling and consolidate duplicated server helpers (…
mtaanquist Jun 11, 2026
f100b73
Close review races, gate undeclared LLM tools, fence reviewer text, s…
mtaanquist Jun 11, 2026
50e0304
Consolidate the client-side dedup cluster: autosave, dismiss, mode sw…
mtaanquist Jun 11, 2026
35bedbb
Bump version to 3.4.4
claude Jun 11, 2026
f9490e0
Back-merge main after v3.4.4
claude Jun 11, 2026
1191ab3
Consolidate entity saves and assistant endpoints; sweep dead code and…
mtaanquist Jun 11, 2026
2f3d6fe
Deduplicate the review screens and split the story page (#432)
mtaanquist Jun 11, 2026
d56370d
Record the 2026-06-11 review round in TODO.md
claude Jun 11, 2026
1f5d5fa
Bump version to 3.4.5
claude Jun 11, 2026
259b0bd
Back-merge main after v3.4.5
claude Jun 11, 2026
5b54419
Add theme, font, line-spacing, and alignment personalization (#434)
mtaanquist Jun 11, 2026
895082f
Bump version to 3.5.0
claude Jun 11, 2026
4657d24
Merge remote-tracking branch 'origin/main' into develop
claude Jun 11, 2026
fc86a9a
Account settings: split into sections, decouple editor appearance, au…
mtaanquist Jun 11, 2026
18c47f8
Bump version to 3.6.0
claude Jun 11, 2026
ef80e66
Merge remote-tracking branch 'origin/main' into develop
claude Jun 11, 2026
6892591
Apply the editor writing appearance to the review centre (#438)
mtaanquist Jun 11, 2026
8ce9083
Bump version to 3.6.1
claude Jun 11, 2026
b3a57c7
Merge remote-tracking branch 'origin/main' into develop
claude Jun 11, 2026
758f5c0
Add a View dropdown and align the Write/Review toolbars (#440)
mtaanquist Jun 11, 2026
3a2180b
Bump version to 3.7.0
claude Jun 11, 2026
c9311a0
Merge remote-tracking branch 'origin/main' into develop
claude Jun 11, 2026
46e52f5
Give the print view a top bar to get back (#442)
mtaanquist Jun 12, 2026
eed96f6
Bump version to 3.7.1
claude Jun 12, 2026
4985395
Merge remote-tracking branch 'origin/main' into develop
claude Jun 12, 2026
7907ba4
fix: small UI bugs in the library, editor popup, and review outline (…
mtaanquist Jun 12, 2026
cf7287f
Bump version to 3.7.2
claude Jun 12, 2026
498f06d
Back-merge main after v3.7.2
claude Jun 12, 2026
1b682dd
fix: review panel scroll, assistant review duplicates, page-aware hel…
mtaanquist Jun 12, 2026
6add7d9
Bump version to 3.7.3
claude Jun 12, 2026
bce4eaf
Back-merge main after v3.7.3
claude Jun 12, 2026
bccc2a8
Assistant provider presets, native Claude adapter, and usage log (#448)
mtaanquist Jun 12, 2026
6af3f22
Bump version to 3.8.0
claude Jun 12, 2026
1b24a95
Back-merge main after v3.8.0
claude Jun 12, 2026
6314007
Genre and style notes on stories, established-setting toggle on unive…
mtaanquist Jun 12, 2026
04c3581
Fix extensionless imports that crashed the worker at startup (#451)
mtaanquist Jun 12, 2026
67236fd
Bump version to 3.9.0
claude Jun 12, 2026
04b79f9
Back-merge main after v3.9.0
claude Jun 12, 2026
1074405
Per-role thinking and effort for the Claude provider, with prompt cac…
mtaanquist Jun 12, 2026
d3e9f09
Tick shipped steps in TODO
claude Jun 12, 2026
da8ccbb
Bake stable codex-app and codex-worker launch commands into the image…
mtaanquist Jun 12, 2026
365dfcf
Bump version to 3.10.0
claude Jun 12, 2026
4f8a525
Back-merge main after v3.10.0
claude Jun 12, 2026
bd171ff
Back-merge main after v3.10.0; tick TODO
claude Jun 12, 2026
f7a8686
Raise the get_scene cap so long scenes reach the model whole (#456)
mtaanquist Jun 12, 2026
0635f82
Review focuses for scenes and a full story review with a cross-scene …
mtaanquist Jun 12, 2026
fbbcdb9
Bump version to 3.11.0
claude Jun 12, 2026
5056d12
Back-merge main after v3.11.0
claude Jun 12, 2026
b6ecbd7
Back-merge main after v3.11.0; tick TODO
claude Jun 12, 2026
b0d4f6e
Assistant review modal, activity center, and chat commands (#459)
mtaanquist Jun 13, 2026
3a17080
Bump version to 3.12.0
claude Jun 13, 2026
aca6e69
Back-merge main after v3.12.0
claude Jun 13, 2026
ea6df47
Unify the Write and Review sidebars (#462)
mtaanquist Jun 17, 2026
abfbdc0
Bump version to 3.13.0
mtaanquist Jun 17, 2026
252caf9
Back-merge main after v3.13.0
mtaanquist Jun 17, 2026
532f893
Front-end refactor, Tier 1: shared helpers and reuse cleanup (#464)
mtaanquist Jun 17, 2026
05b62e9
Extract badge picker and relationships from EntityEditor (#465)
mtaanquist Jun 17, 2026
855d8b1
perf: load the review page in one parallel wave (#466)
mtaanquist Jun 17, 2026
bdc4377
Extract testable stream/slash modules and proposal card from Assistan…
mtaanquist Jun 17, 2026
dfc03c5
Extract co-author panel and selection menu from SceneEditor (#468)
mtaanquist Jun 17, 2026
8ee97cb
Share the review reply form between comment and suggestion cards (#469)
mtaanquist Jun 17, 2026
41f4bdb
Share the alignment/indent command-marker view plugin (#470)
mtaanquist Jun 17, 2026
ef6224d
Share the rail marker type and whole-scene predicate in review-ui (#471)
mtaanquist Jun 17, 2026
4396e2b
Share the dropdown-menu skin in the design system (#472)
mtaanquist Jun 17, 2026
4d49201
Extract the account Assistant section and add FormStatus (#473)
mtaanquist Jun 17, 2026
1e63cd3
Extract the account Security section (#474)
mtaanquist Jun 17, 2026
471af59
Extract the remaining account sections into components (#475)
mtaanquist Jun 17, 2026
6c2f615
Bump version to 3.13.1; record the front-end refactor pass in TODO
mtaanquist Jun 17, 2026
7689c5f
Back-merge main after v3.13.1
mtaanquist Jun 17, 2026
4c158ef
Decompose the admin page into per-section components (#477)
mtaanquist Jun 17, 2026
993c9aa
Decompose the story settings page into per-section components (#478)
mtaanquist Jun 17, 2026
236fb9b
TODO: admin and settings pages decomposed (#477, #478)
mtaanquist Jun 17, 2026
c3c02cd
Share the settings-page shell scaffold via SettingsShell (#479)
mtaanquist Jun 17, 2026
3268cb7
Bump version to 3.13.2; record SettingsShell + page decompositions
mtaanquist Jun 17, 2026
e6f1afc
Back-merge main after v3.13.2
mtaanquist Jun 17, 2026
cb94f1e
Add an Assistant tab to the review page (#481)
mtaanquist Jun 19, 2026
54ffeb4
Bump version to 3.14.0
mtaanquist Jun 19, 2026
36751c6
Back-merge main after v3.14.0
mtaanquist Jun 19, 2026
29136b3
Universe-aware Assistant Part A: scope foundation + Plan-page tabs (#…
mtaanquist Jun 23, 2026
8497e98
Import a story from a DOCX or EPUB manuscript (#485)
mtaanquist Jun 23, 2026
efe1e61
Assistant Part B: Write action continues from the preceding scene's p…
mtaanquist Jun 23, 2026
ae4e8a6
Assistant Parts C+E: chat slash commands for write, rewrite, copyedit…
mtaanquist Jun 23, 2026
51e3dff
Assistant Part D: /continuity-review command (#489)
mtaanquist Jun 23, 2026
4f363c5
Bump version to 3.15.0
mtaanquist Jun 23, 2026
aa4e3f5
Merge remote-tracking branch 'origin/main' into develop
mtaanquist Jun 23, 2026
dc852ad
Make the local dev and test environment match CI
mtaanquist Jul 28, 2026
7b3d80d
Build(deps): Bump actions/checkout from 5 to 7
dependabot[bot] Jun 24, 2026
41e8b9f
Build(deps): Bump 28 dependencies, hold typescript at 6
mtaanquist Jul 28, 2026
81ddc8a
Build(deps): Bump actions/setup-node from 5 to 7
dependabot[bot] Jul 29, 2026
9b1291e
Remove the pre-hydration race from the end-to-end suite
mtaanquist Jul 28, 2026
4f9d1b6
Give the end-to-end suite its own database
mtaanquist Jul 29, 2026
482adab
Isolate test runs per checkout
mtaanquist Jul 29, 2026
faf6964
Note the per-checkout test databases and port in the README
mtaanquist Jul 29, 2026
682ca30
Keep test-only settings out of .env
mtaanquist Jul 29, 2026
c6077d2
Wrap the row-menu calls for the newer Prettier
mtaanquist Jul 29, 2026
a52b7ec
Diff each scene revision once when loading a review
mtaanquist Jul 28, 2026
0239757
Add the components sheet and the design pass briefs (#501)
mtaanquist Jul 29, 2026
27610d4
Add the design kit preview bundle (#503)
mtaanquist Jul 29, 2026
60710f4
Bundle the real fonts into the design kit (#504)
mtaanquist Jul 29, 2026
a43b61f
Rewrite the design pass briefs as paste-ready session prompts (#505)
mtaanquist Jul 29, 2026
aa7b101
Consolidate the UI onto one set of primitives
mtaanquist Jul 29, 2026
9e771cd
Anchor the command palette at the top of the overlay
mtaanquist Jul 29, 2026
41151fd
Land the accepted navigation model: one app bar for every page (#507)
mtaanquist Jul 30, 2026
6c0fb61
Land the surfaces model: one right-pane strip, tokened reading pages,…
mtaanquist Jul 30, 2026
f7c5b45
Port the public surfaces: one shell for the landing page and every si…
mtaanquist Jul 30, 2026
28c62f3
Bump version to 3.16.0
mtaanquist Jul 30, 2026
6a021ce
Back-merge main after v3.16.0
mtaanquist Jul 30, 2026
6664f12
Save account Profile and Assistant settings on field exit (#512)
mtaanquist Jul 30, 2026
5268cfe
Move story import into a modal with drag-and-drop (#513)
mtaanquist Jul 30, 2026
161b208
Show story covers on the library cards (#514)
mtaanquist Jul 30, 2026
f10c47b
Move Notes to the right rail, add quick note capture (#515)
mtaanquist Jul 30, 2026
49de699
Let users invite friends with admin-granted invite allowances (#516)
mtaanquist Jul 30, 2026
cd01a5d
Ask for a pen name at the first step into public (#517)
mtaanquist Jul 30, 2026
1abdce2
Let the owner preview their public page before it is listed (#518)
mtaanquist Jul 30, 2026
298ab2a
Cross off the UX pass: all seven items merged (#512-#518)
mtaanquist Jul 30, 2026
befd934
Bump version to 3.17.0
mtaanquist Jul 30, 2026
51ee5e3
Back-merge main after v3.17.0
mtaanquist Jul 30, 2026
7e61baa
Show Cmd and Option in shortcut hints on Apple platforms (#520)
mtaanquist Jul 30, 2026
b61880f
Bump version to 3.17.1
mtaanquist Jul 30, 2026
b8f5062
Back-merge main after v3.17.1
mtaanquist Jul 30, 2026
d440365
Render help shortcuts with the reader's own modifier labels (#522)
mtaanquist Jul 30, 2026
3cb50cd
Bump version to 3.17.2
mtaanquist Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "codex",
"private": true,
"version": "3.17.1",
"version": "3.17.2",
"type": "module",
"scripts": {
"dev": "vite dev",
Expand Down
8 changes: 4 additions & 4 deletions src/lib/docs/editor.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ Right-click a scene in the sidebar and choose "Delete scene". A deleted scene go

## Formatting

Write markdown and it styles in place: **bold** shows bold, # headings show large, > quotes show muted. The toolbar above the editor sets headings, bold, italic, quotes, and bullet lists on whatever is selected; Ctrl+B and Ctrl+I (Cmd on a Mac) do bold and italic from the keyboard.
Write markdown and it styles in place: **bold** shows bold, # headings show large, > quotes show muted. The toolbar above the editor sets headings, bold, italic, quotes, and bullet lists on whatever is selected; Ctrl+B and Ctrl+I do bold and italic from the keyboard.

The four alignment buttons set how the paragraphs under the selection sit on the page: left, centered, right, or justified. Alignment is written into the text as a small marker at the paragraph's start, like \center, so it travels with exports and shows correctly on reading pages, in EPUB, and in PDF. The marker dims in the editor; the left button removes it, so the paragraph follows the default alignment.

Paragraphs without a marker use the default text alignment from your page setup (left unless you change it), set under Page setup on your account page or per story in its settings. The writing area's own font and line spacing are separate: set those under Editor on your account page, so you can write in one font on screen and export in another. The review screen's editor uses the same writing appearance.

The two indent buttons beside them step the selected paragraphs in from the left and back out again (Ctrl+] and Ctrl+[, Cmd on a Mac). Like alignment, the indent is written as a marker (\indent) that rides with the text and shows everywhere, including exports.
The two indent buttons beside them step the selected paragraphs in from the left and back out again (Ctrl+] and Ctrl+[). Like alignment, the indent is written as a marker (\indent) that rides with the text and shows everywhere, including exports.

There are two ways to see your prose while you write, chosen under Editor behaviour on your account page (and per story in its settings):

Expand Down Expand Up @@ -66,7 +66,7 @@ For a clean read, select Preview. It is on the toolbar in both the single-scene

## Find and replace

Press Ctrl+F (Cmd+F on a Mac) in the editor to search the open scene. The panel finds as you type; Enter jumps to the next match, and the replace field swaps one match or all of them. Press Escape to close it. To search across every scene, use Ctrl+K instead.
Press Ctrl+F in the editor to search the open scene. The panel finds as you type; Enter jumps to the next match, and the replace field swaps one match or all of them. Press Escape to close it. To search across every scene, use Ctrl+K instead.

The field at the top of the sidebar filters the chapter and scene list by name as you type, which is the quick way to find a scene in a long story.

Expand Down Expand Up @@ -124,7 +124,7 @@ When you come back to a story after time away, select "Catch me up" from the men

Select "Update summaries" from the menu next to the send button to have the Assistant write a one or two line summary for each scene and chapter that does not have one yet, and refresh the ones it wrote earlier when you have changed the scene since. It works in the background and notifies you when it is done. A summary you wrote yourself is left untouched. These summaries feed the recap and help the Assistant keep track of your story.

While you are writing, press Ctrl+J (Cmd+J on a Mac) to ask the Assistant to continue the passage from where your cursor is. The suggestion appears in grey after the cursor: press Tab to accept it, or Esc (or just keep typing) to dismiss it. Nothing is added until you accept.
While you are writing, press Ctrl+J to ask the Assistant to continue the passage from where your cursor is. The suggestion appears in grey after the cursor: press Tab to accept it, or Esc (or just keep typing) to dismiss it. Nothing is added until you accept.

To have the Assistant write a passage for you, select "Write" on the formatting toolbar. Tell it what you want in a sentence or two, and it drafts a passage that fits the scene and your world. The panel shows where you are in the prose - the text you had selected, or the passage leading up to your cursor - so a brief like "continue from here" picks up in the right place; select the x on that quote if you do not want it sent. On a new or nearly empty scene that follows another, it reads the end of the previous scene, so a brief like "continue from the previous scene" picks up the events and voice where they left off. You can edit the draft right there, then select "Insert at cursor" to drop it into the scene, ask for another try, or discard it. Nothing goes into your scene until you insert it.

Expand Down
2 changes: 1 addition & 1 deletion src/lib/docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ You can bring in a manuscript written elsewhere the same way. Pick a Word docume

## Jumping around

Press Ctrl+K (Cmd+K on a Mac), or use the Search button in the top bar. Type to find any universe, story, scene, character, place, or lore entry you own, and press Enter to open it. The search also looks inside your prose: matches in scene text show a snippet, and opening one selects the match in the editor. The same box lists commands for where you are, such as creating a scene, switching focus mode on, or reading the whole story as one document.
Press Ctrl+K, or use the Search button in the top bar. Type to find any universe, story, scene, character, place, or lore entry you own, and press Enter to open it. The search also looks inside your prose: matches in scene text show a snippet, and opening one selects the match in the editor. The same box lists commands for where you are, such as creating a scene, switching focus mode on, or reading the whole story as one document.

Opening a story without picking a scene resumes the scene you edited last.

Expand Down
2 changes: 1 addition & 1 deletion src/lib/docs/planning.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ If you run a campaign, a note per sitting works well: keep the running log in a

A note can also be attached to one scene. In the editor, open the Notes panel on the right and select "New note on this scene": the note is made, attached, and opened in the Notes view for you to write. From then on it shows at the top of the Notes panel whenever the scene is open, and in the story's note list like any other note.

To jot something down without leaving the editor, press Ctrl+Alt+N (Cmd+Option+N on a Mac) or run "Quick note" from the command palette. A small card opens over the editor: write the thought, then Ctrl+Enter or "Save note" files it with the story's notes - attached to the open scene when there is one - and puts you back where you were. The first line becomes the note's title.
To jot something down without leaving the editor, press Ctrl+Alt+N or run "Quick note" from the command palette. A small card opens over the editor: write the thought, then Ctrl+Enter or "Save note" files it with the story's notes - attached to the open scene when there is one - and puts you back where you were. The first line becomes the note's title.

## History

Expand Down
2 changes: 1 addition & 1 deletion src/lib/docs/reviewing.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Open the review window and pick what to review and what to check. You can open i

- Right-click a scene or chapter in the sidebar, open the Assistant submenu, and choose **Review with the Assistant**.
- In Review mode, open the **Assistant** tab on the right and use the **Review with the Assistant** button at the top.
- From the command bar (Ctrl+K, or Cmd+K on a Mac), choose **Review with the Assistant**.
- From the command bar (Ctrl+K), choose **Review with the Assistant**.
- In the Assistant chat, type `/review`.

The window has two choices. First, **what to review**: this scene, this chapter, or the whole story. Second, **what to check**:
Expand Down
4 changes: 2 additions & 2 deletions src/lib/docs/shortcuts.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Keyboard shortcuts

Codex keeps to a small set of shortcuts. On a Mac, use Cmd where Ctrl is shown
and Option where Alt is shown.
Codex keeps to a small set of shortcuts, shown for your keyboard: Cmd and
Option on a Mac, Ctrl and Alt everywhere else.

## Anywhere

Expand Down
18 changes: 17 additions & 1 deletion src/lib/keys.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest';
import { isApplePlatform } from './keys';
import { appleShortcutLabels, isApplePlatform } from './keys';

describe('isApplePlatform', () => {
it('recognises Apple platform strings', () => {
Expand All @@ -16,3 +16,19 @@ describe('isApplePlatform', () => {
expect(isApplePlatform('')).toBe(false);
});
});

describe('appleShortcutLabels', () => {
it('rewrites combo labels and leaves bare key names alone', () => {
expect(appleShortcutLabels('press Ctrl+Alt+N, then Ctrl+Enter')).toBe(
'press Cmd+Option+N, then Cmd+Enter'
);
// Prose naming the keys without a combo stays as written, so the
// shortcuts article's own convention line survives the swap.
expect(appleShortcutLabels('Cmd and Option on a Mac, Ctrl and Alt everywhere else.')).toBe(
'Cmd and Option on a Mac, Ctrl and Alt everywhere else.'
);
expect(appleShortcutLabels('an image with alt+title text')).toBe(
'an image with alt+title text'
);
});
});
7 changes: 7 additions & 0 deletions src/lib/keys.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,10 @@ export function altLabel(): 'Option' | 'Alt' {
if (!browser) return 'Alt';
return isApplePlatform(currentPlatform()) ? 'Option' : 'Alt';
}

// Rewrites shortcut combos in help text for Apple keyboards: Ctrl+ becomes
// Cmd+ and Alt+ becomes Option+. Only the combo forms are touched, so prose
// that merely names the keys stays as written.
export function appleShortcutLabels(text: string): string {
return text.replace(/\bCtrl\+/g, 'Cmd+').replace(/\bAlt\+/g, 'Option+');
}
11 changes: 10 additions & 1 deletion src/routes/docs/[topic]/+page.svelte
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
<script lang="ts">
import { onMount } from 'svelte';
import { resolve } from '$app/paths';
import { renderMarkdown } from '$lib/markdown';
import { appleShortcutLabels, modLabel } from '$lib/keys';
import DocsShell from '$lib/components/DocsShell.svelte';
import type { PageData } from './$types';

let { data }: { data: PageData } = $props();

// The articles write shortcuts with the PC labels; an Apple reader sees
// Cmd and Option instead. The server cannot know the platform, so SSR
// serves the written form and the swap lands on mount.
let apple = $state(false);
onMount(() => (apple = modLabel() === 'Cmd'));
const body = $derived(apple ? appleShortcutLabels(data.article.body) : data.article.body);

// The next article in the registry order, so reading straight through works.
const next = $derived.by(() => {
const at = data.topics.findIndex((topic) => topic.slug === data.article.slug);
Expand All @@ -21,7 +30,7 @@
<div class="kicker">Help</div>
<!-- Trusted, committed markdown; renderMarkdown also escapes raw HTML. -->
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
<article class="prose">{@html renderMarkdown(data.article.body)}</article>
<article class="prose">{@html renderMarkdown(body)}</article>

{#if next}
<nav class="more">
Expand Down