Commit Graph
177 Commits
Author SHA1 Message Date
tianma-if aaf3dacfb6 fix(mobile): keep in-note search on one row
The search field, match count, and previous, next, and close controls sit on a single bar.
2026-09-26 18:26:11 +08:00
tianma-if 509d523f00 Merge pull request #435 from sivdead/fix/dev-assets-directory
Create missing Wrangler assets directories before development startup. Add regression coverage for creation before CLI invocation, preservation of existing assets, and non-dev command behavior.

Validation: typecheck, typecheck:mobile, build:web, and all 2244 non-E2E tests passed.
2026-09-26 11:57:51 +08:00
tianma-if d577ed7413 test(web): align chrome assertions with the current workspace 2026-09-26 01:10:52 +08:00
sivdeadandClaude Opus 5.5 25e4a91739 fix(dev): create the Wrangler assets directory before wrangler dev
Wrangler refuses to start `dev` when the configured `[assets].directory`
is missing and offers no option to create it. Local development serves
the web app from Vite, so `apps/web/dist` only exists after a previous
`build:web`; a fresh clone or `git clean` made `bun run dev` fail.

Resolve the directory from the effective Wrangler config (so custom
configs via WRANGLER_CONFIG are honored) and create it for every `dev`
command routed through run-wrangler. Deploy and migration commands are
unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 11:15:28 +08:00
tianma-if 0f3aec1679 feat(web): open, copy, and download table image attachments
Clicking an image thumbnail opens the file. Copy and download appear on hover, and copy places the image on the clipboard.
2026-09-23 23:35:32 +08:00
tianma-if bf0d51a02d fix(web): keep note sharing available while reading is locked (#428)
Reading protection and the phone reading view no longer block the share dialog. Phones get a header button that opens the existing link.
2026-09-23 16:19:11 +08:00
tianma-if f1949e795f feat(sharing): show the author's built-in font on public shares
Store the selected built-in note font on the account and apply it to the shared note body. System and custom font names keep the default face, so a share downloads a font only after one is chosen.
2026-09-23 00:09:28 +08:00
tianma-if 6580bec3b1 feat(mobile): change notebook from note view without editing 2026-09-20 21:39:18 +08:00
tianma-if dcf2c138cb feat(web): support rich-text headings through level 6 (#413) 2026-09-18 16:20:32 +08:00
tianma-if de7e006e57 fix(desktop): accept instance hosts without an https prefix 2026-09-17 21:32:59 +08:00
tianma-if d81ee60c58 fix(web): keep login card shadow from becoming a dark-mode halo
Dark mode inverts slate-900, so the login card's large shadow painted a light ring. Use a real black shadow and leave the brand wash, button glow, and frosted glass unchanged.
2026-09-17 17:26:26 +08:00
tianma-if dcfd11468d feat(sharing): add optional password protection for public note shares
Allow owners to turn on an auto-generated access password when sharing a note. Visitors must unlock the share page before reading the note or its attachments; existing public links stay open until a password is enabled.
2026-09-17 14:44:43 +08:00
tianma-if 8112d86bb0 fix(editor): quiet the empty-paragraph placeholder
Keep the hint at body size, but shorten the copy, drop the leading
Latin "Space", and use a lighter color so it no longer reads as a
larger type size.
2026-09-16 20:54:05 +08:00
tianma-if df7931e2f6 fix(desktop): keep one new note from appearing twice
Cmd+N and a second click could both create before isPending flipped.
Sync also left the local id in the list beside the durable id, and
autofocus stopped before the editor was editable.
2026-09-16 18:18:59 +08:00
tianma-if 99e9c2820c refactor: share editor schema and drop RN iOS builds
Editors now take document TipTap nodes from a shared factory. Workspace and editor helpers move out of the large panes. Store iOS no longer builds from Expo EAS.
2026-09-15 12:56:44 +08:00
tianma-if b346400f6a test: align coverage with Japanese locale and create-note layout
Update source and locale tests that still treated Japanese as unmatched English and pinned the previous fixed-width New note control.
2026-09-14 18:19:31 +08:00
tianma-if c7f05c672a docs: add a Traditional Chinese README and language switcher 2026-09-14 18:07:08 +08:00
tianma-if 2b49d36575 docs: add a Japanese README and language switcher
Give GitHub a first-class Japanese landing page that tracks the English README, and require future README edits to update Chinese, English, and Japanese together.
2026-09-14 15:56:21 +08:00
tianma-if ea9900b7e2 feat(i18n): add Japanese as a first-class in-app locale
Ship a full shared Japanese catalog for Web, desktop, and Android, resolve ja-JP to ja instead of English, and give iOS a three-language path with Japanese login, settings, and list chrome. Unmatched languages still fall back to English.
2026-09-14 12:49:11 +08:00
tianma-if 760e82ab50 fix(i18n): fall unmatched locales back to English
Unknown browser and system languages now resolve to English instead of
Simplified Chinese, and Japanese App Store / Play listing copy is kept
in store-assets for console publishing.
2026-09-14 10:56:53 +08:00
tianma-if cf082734d6 fix(ai): default the whole-note assistant to a custom instruction
Restore the last processing method only when text is selected so Space and other whole-note opens start on custom.
2026-09-13 23:24:06 +08:00
tianma-if bb43940135 feat(ai): replace social starter prompts with note workflows
Keep six factory prompts, swap Xiaohongshu and Twitter presets for extract-todos and continue-writing, and use four-character Chinese names.
2026-09-13 22:11:35 +08:00
tianma-if 8e2dfec1b4 fix(mobile): enter note editing without remounting the viewer
Open the existing detail WebView in place instead of waiting on a
network refresh and a second editor startup. Close is queued while a
save is in flight so back/done still respond, and the DomWebView
unmounts with the modal to avoid injectJavaScript after hide.
2026-09-12 23:02:02 +08:00
tianma-if 31ae9c975c feat(ai): open the assistant from selection or the whole note
Default to a custom instruction without a selection and to polish with one. Remember the last action separately for each scope, keep the composer from overriding selected text, and quiet the action-row chrome.
2026-09-12 10:08:57 +08:00
tianma-if 42a2d2da4e feat(ai): remember the last assistant action
Reopen the assistant on the last processing action, prompt, language, and
tone across web, Android, and iOS.
2026-09-12 00:07:20 +08:00
tianma-if 2cec726f43 feat(ai): stream note generation from the client when the model host allows it
Desktop, Android, and iOS call the configured model API after a short prepare hop so Cloudflare no longer sits in the token path. The web app probes CORS first and direct-connects only when the host allows it; blocked hosts keep using the instance proxy without downloading the API key.
2026-09-11 18:34:55 +08:00
tianma-if a4a10a32b9 feat(web): export selected notes as a Markdown ZIP
Add a bulk Markdown ZIP action for selected notes, reuse the existing
readable export layout, and keep the desktop bulk action card visible
when a diagram note is open.
2026-09-10 17:07:46 +08:00
tianma-if d41d068e0c fix(mobile): apply exact tag filters on Android and iOS lists
Selecting a tag kept showing every note because json_each on the full memo blob could fail or stall. Match tags from parsed memo data and paginate after filtering.

Refs #366
2026-09-10 11:48:13 +08:00
tianma-if 594c8c9ce7 feat(mobile): filter notes from a visible tag chip
Replace the tagged/untagged toggles with the specific-tag picker on Android and iOS so the list filter matches desktop.

Refs #366
2026-09-10 00:32:47 +08:00
tianma-if b82719abdb test desktop private protocol file flows 2026-09-09 11:19:12 +08:00
tianma-if 533a9bf638 test: isolate filesystem integration suites 2026-09-05 23:55:49 +08:00
tianma-if 2b9d568045 ci: pin the Bun toolchain across workflows 2026-09-05 23:43:38 +08:00
tianma-if 09b8b14668 test: tolerate slower CI integration tests 2026-09-05 23:24:55 +08:00
tianma-if 1a1429cde0 fix(desktop): keep new note editor focused during sync 2026-09-04 16:40:20 +08:00
tianma-if 7da54257f7 fix: report instance deployment source 2026-09-04 11:58:24 +08:00
tianma-if 2c20889d85 fix(editor): preserve focus after note creation 2026-09-04 11:42:54 +08:00
tianma-if 60d56103af refactor(web): simplify AI integration settings 2026-09-04 10:04:06 +08:00
tianma-if 110c238373 fix(web): preserve AI refinement context 2026-09-01 21:35:39 +08:00
tianma-if dcbb0d3383 fix(web): respect AI assistant input 2026-09-01 21:10:28 +08:00
tianma-if 609a589ebb feat(web): make AI assistant draggable 2026-09-01 18:14:33 +08:00
tianma-if 206e9e03d6 feat: support 1 GiB streamed attachments 2026-08-31 17:52:07 +08:00
tianma-if 4eda31ca30 refactor: decompose core runtime modules 2026-08-30 01:00:42 +08:00
tianma-if d483f6db00 feat: expand shared system diagnostics 2026-08-29 21:37:07 +08:00
tianma-if dd0c1d3566 fix(sync): batch large change detail queries 2026-08-29 18:28:25 +08:00
tianma-if 630bb98e3f fix(web): recover stalled local note saves 2026-08-29 18:06:27 +08:00
tianma-if bab4c55720 fix(deploy): guard default Cloudflare D1 deployment 2026-08-28 22:06:27 +08:00
tianma-if 903fe8e6c0 test(e2e): cover attachment deletion regression (#314) 2026-08-28 20:10:34 +08:00
tianma-if f00c98c355 revert: remove automatic note title derivation 2026-08-28 18:01:53 +08:00
tianma-if 475f87e24e fix: restrict automatic titles to leading H1 2026-08-28 17:52:29 +08:00
tianma-if 3316b158d1 fix: derive note titles from the first H1 2026-08-28 17:41:54 +08:00