Treat empty memo selections as no-ops so a repeated trash cleanup cannot delete the entire local mirror. Add regression coverage for repeated cleanup and empty batch mutations.\n\nFixes #420
The 1.79.0 listing includes ja, so Fastlane rejected submit_review when
release-summary.json had no Japanese notes. Fail in store-delivery and
Fastfile instead of creating a stuck draft.
Cloud #50 exported 1.74.0 because project.yml hardcoded MARKETING_VERSION
and ci_post_clone regenerated the Xcode project from that YAML. Keep the
version in Version.xcconfig and stamp it into the pbxproj before archive.
Enable font-feature-settings: 'chws' 1 and overflow-wrap / word-break across Web, Mobile, iOS, and image cards for improved typography and long text wrapping.
Formal releases with iOS runtime changes now bump MARKETING_VERSION, archive the tag via Xcode Cloud, wait until App Store Connect marks the build Valid, and submit App Review. GitHub publication stays independent of iOS outcome.
Remove the desktop local data directory field from the system info panel,
avoiding exposing local usernames and account hashes in screenshots or
copies, and cleaning up unused diagnostic references.
0046 only looked for nb_inbox or {workspace}_inbox, so a historical slug inbox got a second empty 等待分类. Keep the notebook with notes, soft-delete extras, and unique-index one active inbox per workspace.
Release decoded editor media before replacing the TipTap document, and evict
idle memo-detail queries so visiting image-heavy notes does not keep their
bitmaps and JSON in the renderer.
Reload the hidden Chromium renderer once it has been in the background long
enough or its working set is high, after flushing the open draft. Restore the
last notebook and memo from session storage so reopening the window does not
land on a blank first note.
Reuse the TipTap view across memo changes, skip the modal scroll lock on the
card menu, and prefetch note details on pointer down so short notes no longer
pay a full editor remount.
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.
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.
Keep Cloudflare requests short for Agent, tag suggestions, plugin generate, and Paw checks. The instance only prepares credentials and executes tools; CORS failures still fall back to the existing proxy.
OpenAI-compatible providers reject oneOf, anyOf, and const in tool JSON
Schema. Agent forwarded MCP schemas unchanged, so those models failed
before the first token. Flatten the diagram and template schemas, reject
incompatible keywords when the catalog loads, and map provider HTTP
errors to specific copy.
Show the connected instance URL on desktop and mobile, and the local
data directory on desktop. Keep both out of GitHub feedback. Relabel
health-check latency and distinguish an empty sync queue from never
having synced.