Commit Graph
190 Commits
Author SHA1 Message Date
tianma-if 0e546ec834 feat: show instance deployment time in system info 2026-10-02 16:29:32 +08:00
tianma-if 21ddc90267 test(markdown): expect medium width for new images 2026-10-02 00:40:57 +08:00
tianma-if 12af0581d2 fix(web): import backups that contain Office attachments
Streaming unzip treated ZIP signatures inside stored .docx, .xlsx, and .pptx files as archive entries. Read each entry from the central directory so existing exports restore.
2026-10-01 22:32:19 +08:00
tianma-if 27d3b1ce96 test(release): stabilize ACP bridge and installer checks 2026-10-01 12:52:16 +08:00
tianma-if 65ef837f45 feat(web): copy a note to WeChat from the card menu
Text-note card menus can copy the note as rich text. The open note uses the editor, including unsaved changes; other notes copy saved content without switching the editor.
2026-09-30 20:12:49 +08:00
tianma-if ae6ae99eeb feat: integrate structured GitHub issue forms and prefilled feedback URLs 2026-09-30 17:49:20 +08:00
tianma-if 1769907288 refactor(settings): polish AI model services card copy and update e2e spec 2026-09-30 12:36:39 +08:00
tianma-if 0c5ce83dad fix: keep release checks green for the note CSS preview and undo test
ParentNode.append is the Workers stream helper under the root typecheck, so the preview attaches DOM nodes with appendChild. The sync queue test restores navigator after forcing onLine, so a later headless TipTap test can still read userAgent.
2026-09-30 02:03:20 +08:00
tianma-if fe90dfa9af fix(web): put the agent source ahead of model settings
Rename the settings tab to 模型与代理 and point model setup copy at that tab. The built-in assistant uses the model configured below.
2026-09-30 00:00:27 +08:00
tianma-if 50bda545a2 fix(web): mark a shared note with a pale gray share button
The header share icon only shifted between two grays, so an active public link was hard to see.
2026-09-29 00:12:57 +08:00
tianma-if 628016729e fix(web): confirm hidden platform copy with an ink toast
The clipboard notice was brand green, then a white card that disappeared on the note. Use a near-black success toast, and show it after copying for WeChat, WordPress, and Substack now that the action sits in the more menu.
2026-09-28 00:23:14 +08:00
tianma-if 594658ccad fix(editor): group consecutive Markdown images into a gallery
A tweet clip with several photos now opens as one gallery, while a single image stays on its own.
2026-09-27 11:16:27 +08:00
tianma-if 1ec4bfc06f fix(editor): use the small image size for Markdown pictures
Tweet clips and other Markdown images had no stored width, so the editor showed them at the large preset. Missing widths now follow the same 35% size used when inserting a picture.
2026-09-27 11:10:07 +08:00
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