Commit Graph
29 Commits
Author SHA1 Message Date
pj 9eabef9041 feat(export): surface typst warnings and glyph-coverage notice
Typst compile warnings were discarded. Capture them via the Warned
result and emit a pdf-warnings event (only from the export path, not
the live preview) that App shows as a non-fatal toast; the export still
succeeds. Also scan book text before reporting success and warn when it
contains scripts the embedded Latin fonts cannot render (CJK, Arabic,
Hebrew, Devanagari, Thai, emoji).

Claude-Session: https://claude.ai/code/session_01RzTWrLiy4zGuw2hZSQGamk
2026-06-22 13:28:16 -04:00
pj 14eb3c4427 fix(persist): flush pending save on navigate-away and quit
Edits are saved on an 800ms debounce, so leaving a book within that
window lost the latest changes. Flush a dirty book before openBook /
closeBook swap state (covers All books, open-another, Cmd+N), and add a
window close-request handler that saves before destroying on quit.

Claude-Session: https://claude.ai/code/session_01RzTWrLiy4zGuw2hZSQGamk
2026-06-22 13:16:33 -04:00
pj 92941a2758 fix(persist): atomic+durable .margin writes
Route save_book, write_file, write_bytes through a shared atomic_write
helper: write to a temp file, fsync, then rename into place so a crash
mid-write can never leave a truncated or empty manuscript. Rotate the
prior copy to .bak for manuscripts (not exports) so one good copy
always survives.

Claude-Session: https://claude.ai/code/session_01RzTWrLiy4zGuw2hZSQGamk
2026-06-22 13:12:39 -04:00
github-actions[bot] b4097cc47f chore(release): v0.1.3 2026-06-22 16:50:04 +00:00
pj 72d698e427 changes 2026-06-22 12:40:29 -04:00
pj 39609fbd09 perf(proofing): run proof_text on a blocking thread
proof_text loaded the dictionary and ran spell/grammar checks
synchronously inside an async command, blocking an async-runtime worker
and holding the engine mutex for the whole call. Move the work to
spawn_blocking so IPC stays responsive under load.
2026-06-22 12:01:25 -04:00
github-actions[bot] 67f70473ea chore(release): v0.1.2 2026-06-22 15:49:12 +00:00
pj bd44c0ba7e changes 2026-06-22 11:42:48 -04:00
github-actions[bot] 3418d4c6bb chore(release): v0.1.1 2026-06-22 14:18:22 +00:00
pj a9a4245de5 changes 2026-06-22 10:12:35 -04:00
pj 7cc36e3e40 changes 2026-06-22 09:56:20 -04:00
pj 0e0d334f6a changes 2026-06-20 23:46:10 -04:00
pj be252c6b21 chore: remove in-code tests 2026-06-20 19:06:10 -04:00
pj 7464665d08 test(pdf): cover single-chapter preview compile 2026-06-20 19:03:46 -04:00
pj 3d3abd91f2 test(epub): cover unzip_epub reading a file from disk 2026-06-20 18:40:57 -04:00
pj 0d2d66ed6a fix(icons): restore dark-background app icon 2026-06-20 18:40:08 -04:00
pj 8b9fa7f24e chore(window): blank the native window title 2026-06-20 18:33:43 -04:00
pj 1cb738c20c fix(icons): ink mark on paper to match the logo (not inverted) 2026-06-20 18:30:53 -04:00
pj 18c367a82d chore(icons): generate app icon from the margin mark 2026-06-20 18:28:11 -04:00
pj 2997e8b79f feat(epub): add unzip_epub Tauri command for import 2026-06-20 18:24:09 -04:00
pj f4a4d63349 feat(menu): native File menu with New Book and Export 2026-06-20 15:13:12 -04:00
pj 709dd46f1c feat(library): app-managed book storage commands 2026-06-20 15:09:13 -04:00
pj f8ddde5e91 fix(epub): embed fonts in the Rust packager instead of fetching in the webview 2026-06-20 14:30:07 -04:00
pj b1bd42fe2f feat(epub): add EPUB3 generator and zip packager 2026-06-20 13:02:30 -04:00
pj 4443eda401 feat(io): add write_bytes command for binary exports 2026-06-20 12:55:48 -04:00
pj 13f2a70af2 feat(io): add read_file/write_file commands and dialog capability 2026-06-20 12:54:01 -04:00
pj eb63a6d49d chore(deps): add Tauri dialog plugin 2026-06-20 12:54:01 -04:00
pj e21db2be5d feat(pdf): embed Typst compiler with compile_pdf command 2026-06-20 12:42:04 -04:00
pj 816e79a794 chore: scaffold Tauri + React + TS app 2026-06-20 12:21:22 -04:00