Commit Graph
292 Commits
Author SHA1 Message Date
tianma-if 91f1887c33 fix(ai): surface safe companion failure diagnostics
Preserve HTTP status and fixed failure categories for direct and proxied agent requests, display diagnostics beside failed turns, and prevent AI SDK error logging from exposing request data.

Refs #555
2026-10-13 17:35:33 +08:00
tianma-if 7bbde189f8 feat: show instance and per-account attachment storage usage
Add owner-only attachment summaries and a compact member management table. Keep personal attachment statistics unchanged and exclude Trash from usage totals.

Refs #553
2026-10-13 17:12:04 +08:00
tianma-if 9011a1ce62 feat(plugins): add guarded editing for structured notes 2026-10-13 13:25:16 +08:00
tianma-if c4f5d50ca2 fix(ai): expose empty notebook deletion to built-in companion 2026-10-11 20:59:35 +08:00
tianma-if 68f13c14f1 feat(poster): generate structured content layouts 2026-10-11 17:41:48 +08:00
tianma-if 150f0e8de5 feat(ai): expose detailed poster editing and client rendering 2026-10-11 17:20:32 +08:00
tianma-if abdf9846ef fix(ai): support poster queries and complete note operations 2026-10-11 16:13:11 +08:00
tianma-if dc15724d73 fix(ai): create editable poster notes through ACP and MCP 2026-10-11 16:07:09 +08:00
tianma-if 0da78f6ce8 feat: add native poster notes and unified AI editing 2026-10-11 00:38:44 +08:00
tianma-if 53869bd3f8 feat(mcp): safely delete empty notebook trees (#509) 2026-10-10 00:01:13 +08:00
tianma-if 5fe8d75ee4 docs(demo): add bilingual Word attachment sample 2026-10-09 10:55:12 +08:00
tianma-if e59d48b786 feat: add centralized memo share management 2026-10-08 23:43:21 +08:00
tianma-if 3164e7fffc fix(ai): use unambiguous math delimiters in sidebar replies 2026-10-08 00:37:41 +08:00
tianma-if 1080b39791 Add direct speech service connection test 2026-10-07 20:36:32 +08:00
tianma-if 916b1b35e8 Move note attachment transcription to direct client processing 2026-10-07 20:22:31 +08:00
tianma-if f3b4226555 feat(speech): transcribe note media attachments without external downloads 2026-10-07 19:36:19 +08:00
tianma-if 2e15f325c5 revert: withdraw unreleased video transcription feature 2026-10-07 17:30:14 +08:00
tianma-if c1d92c75fa fix(api): return 404 when a new memo names a missing notebook
A bad notebook id used to write orphan content and then fail the read-back as a generic 500.
2026-10-07 16:36:48 +08:00
tianma-if 46f1c7d764 feat(speech): extract video-note subtitles from a workspace speech service
Video notes keep a hidden marker, and the note list can queue subtitle extraction. The desktop app downloads the audio with yt-dlp and sends it to the selected OpenAI-compatible speech service.
2026-10-07 11:36:12 +08:00
Dariusz Koryto 518fafa86e fix(api): report bad request bodies and fractional limits as client errors (#484)
A malformed JSON body, or a body over the route's size limit, made Hono
throw an HTTPException that the API reported as a 500 internal error. In
the companion API the same requests returned 503 "unavailable, please
retry", so clients retried a request that could never succeed. These
now return 400 bad_request and 413 payload_too_large in the API's usual
error shape.

A fractional limit or offset such as ?limit=1.5 was passed to SQLite as
a float and failed with a datatype mismatch. Limits, offsets and cursors
are now truncated to whole numbers, and the two private copies of the
clamp helper reuse the shared one.
2026-10-06 21:39:22 +08:00
tianma-if be7bbe25e6 feat(plugins): append a signed community catalog beside official plugins
Official entries stay on the bundled registry. The instance returns a community file only when EDGE_EVER_COMMUNITY_REGISTRY_URL is set, and submission opens from its own marketplace entry.
2026-10-06 18:38:37 +08:00
Dariusz Koryto 80dadb3194 feat(i18n): add Polish as an in-app locale (#473)
* feat(editor): add setting to turn off spellcheck underlines

Add a device-local "Underline spelling mistakes" switch to the editing
preferences. The rich-text editor and the mobile plain-text editor now
set spellcheck from this preference and update live when it changes.
Defaults to enabled, so existing behavior is unchanged.

Refs #468

* feat(i18n): add Polish as an in-app locale

Add Polish (pl) across clients, mirroring how Japanese was added:

- Shared: full pl catalog, locale matching for pl/pl-*, Polish memo
  templates and factory AI prompts, mobile editor strings, and Polish as
  an AI translation target and selection-translate chip.
- Web: "Polski" in the language picker; the catalog is lazy-loaded in its
  own i18n-pl chunk and kept out of the PWA precache like ja.
- Android: pl locale option, mobile-only strings, web-clip labels.
  Messages that only had an English branch now use English for every
  non-Chinese locale, so Japanese no longer falls back to Chinese there.
- iOS: .polish UI language (pl-PL), pl argument for every t() call,
  pl in CFBundleLocalizations and Localizable.xcstrings.
- Companion: accepts locale "pl" and detects Polish requests.
- Browser extension: _locales/pl messages.
- Marketing site: /pl/ pages, hreflang, sitemap, language switcher.
- Google Play listing copy for pl-PL (manual publish only).

* fix(ios): show the note editor in Polish and Japanese

The iOS editor received every interface language except English as
Chinese, so with Polish or Japanese selected its toolbar and image
gallery controls were labeled in Chinese. Pass Polish and Japanese
through to the embedded editor, label its toolbar and the shared image
gallery controls in both languages, and rebuild the checked-in
EditorBundle. The Android editor uses the same gallery labels.

Also translate the last iOS strings that had no Polish text: the
follow-system language label, note created/updated times and the
current-device marker.

Refs #473

* fix(companion): recognize Polish typed without diacritics

Requests in Latin letters without Polish diacritics were always treated
as English, so with a Polish interface "Napisz plan na jutro" got an
English reply. With a Polish interface, such text is now told apart by
common English and Polish words; when it is still unclear, the recent
conversation and then the interface language decide. Other interface
languages keep treating Latin text as English.

Refs #473

* chore(ios): regenerate the Xcode project for Polish

Run xcodegen so the shipped Info.plist lists Polish in
CFBundleLocalizations and the project knows the pl region. The
hand-written AiDirectStream.swift entries are replaced by the IDs
xcodegen generates. MARKETING_VERSION and CURRENT_PROJECT_VERSION stay
in the project file because the release script and Xcode Cloud update
them there.

Refs #473

* i18n(pl): translate the sidebar shortcut, desktop menus and video scope

Add Polish for features that reached main while this branch was open:
the show/hide sidebar shortcut label, the desktop application and
editing context menus, and the new "ai:generate" MCP scope. The desktop
menus switch to Polish for pl and pl-* locales; other locales are
unchanged.

Refs #473
2026-10-06 16:18:38 +08:00
tianma-if eabd9bbb79 feat(extension): save YouTube and Bilibili watch pages as video notes
Read the current player's captions after one click and write a timestamped note. Summaries use the workspace default model when the token includes ai:generate.
2026-10-06 00:26:10 +08:00
tianma-if 36f60ca429 fix: enable structured table creation in companion agent 2026-10-05 22:52:26 +08:00
tianma-if 93a650c903 test(diagram): verify demo architecture layout remains stable 2026-10-05 12:00:44 +08:00
tianma-if b64772a46b fix(diagram): balance wide architecture layouts 2026-10-04 23:15:11 +08:00
tianma-if e008b59f98 fix(ai): default generated flowchart theme 2026-10-04 21:22:14 +08:00
tianma-if 378c80712b fix(ai): link created notes and default mind map theme 2026-10-04 21:19:46 +08:00
tianma-if fc4be76036 feat(ai): apply note content edits automatically 2026-10-03 09:53:53 +08:00
tianma-if aeac1a77e9 fix(ai): infer translation target from conversation language 2026-10-03 09:46:04 +08:00
tianma-if 09e74ea3df fix(ai): choose default translation target from locale 2026-10-03 09:33:53 +08:00
tianma-if 40be9b5713 fix(ai): reuse translated note in replacement follow-ups 2026-10-03 09:28:46 +08:00
tianma-if d963ff76e2 Refactor workspace memo removal and MCP tool helpers 2026-10-02 18:58:52 +08:00
tianma-if 0e546ec834 feat: show instance deployment time in system info 2026-10-02 16:29:32 +08:00
tianma-if 50d4d5a75b feat(mcp): support creating infographic notes via MCP and companion 2026-10-02 12:33:37 +08:00
tianma-if 8d81218ff4 fix(web): show the AI assistant on diagram and table notes
Diagram, flowchart, architecture, and table notes now use the same bottom-right launcher and companion sidebar. Structured tables can be discussed, but update_memo cannot replace them.
2026-10-02 11:00:59 +08:00
tianma-if cc1dac72b1 fix(companion): save new notes in the inbox without asking
When a note, diagram, or template is created without a named notebook, put it in 等待分类 instead of pausing for a destination.
2026-10-02 10:25:49 +08:00
tianma-if b39519fb10 fix(infographic): preserve custom note titles across conversation turns 2026-10-02 10:07:49 +08:00
tianma-if 17490040f7 fix: prevent overlap in demo sequence diagram 2026-10-02 00:46:47 +08:00
tianma-if b5e30dc2a4 fix(auth): accept desktop session for password changes 2026-10-01 11:05:24 +08:00
tianma-if 146637d60e feat(mcp): create and edit structured table schemas 2026-09-30 22:51:08 +08:00
tianma-if 2d8df49bbd feat(mcp): support structured table record CRUD 2026-09-30 22:41:56 +08:00
tianma-if caba871c36 fix(api): rebuild browser mirrors after a demo reset
The seed clears the changelog before deleting notes, so a caught-up browser keeps the old copies. A new workspace sync identity makes that browser replace its mirror with the seeded snapshot.
2026-09-30 00:46:54 +08:00
tianma-if 871a9325d5 feat(web): replace the AI dialog with a companion sidebar
Notes open a right-hand assistant that can attach files and asks before changing note content. Desktop can talk to a local ACP agent without handing over the note directory.
2026-09-29 22:19:55 +08:00
tianma-if 53290535ff feat(web): share note size, line height, and palette
Keep the native editor theme, store column width on this device, and publish account font size, line height, palette, and custom CSS to the editor, public shares, and WeChat paste. Highlight custom CSS with CodeMirror.
2026-09-29 16:20:57 +08:00
tianma-if 0c37516e3f feat(diagram): default mind maps and flowcharts to a plain theme
Add 素简 as the selectable default, with graphite emphasis instead of solid black. Unset diagrams render in that theme, and every mind map, flowchart, and architecture canvas uses the note editor surface while named themes keep their node colors.
2026-09-27 17:36:09 +08:00
tianma-if e825872bdc fix(extension): save a clipped image in the first note version
Create the note and its picture together, and keep a Google image search source down to the query instead of the full tracking URL.
2026-09-27 13:15:04 +08:00
tianma-if 5fe220704e refactor(settings): remove AI tag prompt configuration and product hunt link 2026-09-27 11:28:13 +08:00
tianma-if 4ef440ffaa style(demo): remove emoji icons from seed note titles and headings 2026-09-27 11:09:14 +08:00
tianma-if 587b0583c2 feat(demo): add infographic and structured table notes, refresh overview 2026-09-27 10:54:53 +08:00