Commit Graph
231 Commits
Author SHA1 Message Date
edgeever-updater[bot] 05e53dcba3 chore: update EdgeEver from v2.7.0
EdgeEver-Upstream-Commit: 30fcb3fc65c419000a3e6f8cfb70eca47ae53914
2026-10-26 07:48:43 +00:00
Andy Jarosz e1210c664b feat(editor): add per-gallery fit width and fit height (#655)
Each gallery can keep the cropped tile or show every image whole inside an even tile. Fit width stays the previous look. The choice is saved with that gallery and survives reopening and Markdown edits. Sharing, HTML export, and print follow it. Older galleries stay on fit width.
2026-10-23 22:09:44 +08:00
Andy Jarosz a5bda92e14 feat(editor): add per-image left, center, and right alignment (#654)
Select a standalone image to align it left, center, or right. The choice stays with that image through save, Markdown edits, and reload. Existing images keep their previous layout until an alignment is chosen. Galleries keep their own layout. Native editors apply a saved alignment and do not add a picker in this change.
2026-10-23 18:37:59 +08:00
LuoQianhong 9ae88e3381 feat: 增强公开笔记本站点体验与发布控制 (#634)
公开笔记本站点新增长文导航、正文检索、逐站点排除和站点配置,保留实时分享以及原有 Token、密码和解锁 Cookie。收录只对无密码的别名页生效,Token 页保持完整 noindex。

迁移 0072 为 notebook_shares 增加站点列,并新增排除关系表。先执行迁移再部署。

Closes #591
2026-10-21 23:20:38 +08:00
tianma-if 9f0d18ca54 feat(memos): sort note lists from Z to A
Add a title Z-A option beside title A-Z on web, Android, iOS, the API, and the desktop sidecar. Pinned notes stay first, and same-title tie breaks stay as they were.
2026-10-21 23:09:57 +08:00
tianma-if c25fdf68e5 refactor(ai)!: require client-direct model calls across all platforms 2026-10-20 01:13:40 +08:00
tianma-if d24105d625 fix(backup): exclude Markdown attachments from note counts 2026-10-19 22:21:52 +08:00
tianma-if dba620d8e5 fix: repair welcome note Markdown seed
Repair untouched welcome notes with real line breaks, a consistent content hash and revision, and sync notification. Keep first-sign-in localization compatible with both seed versions and cover persisted database upgrades and user-content preservation.

Fixes #622
2026-10-19 19:43:33 +08:00
tianma-if 10b4753955 feat(poster): automatically ensure static thumbnails during development and builds 2026-10-19 18:17:47 +08:00
tianma-if 5f54aeaddc perf(poster): use pregenerated static template thumbnails 2026-10-19 17:57:35 +08:00
LuoQianhong d0db8b128f fix: restore editor mode shortcut round trips (#623) 2026-10-19 17:54:22 +08:00
tianma-if d525d60fc0 fix(poster): bound preview loading and allow failed thumbnails to retry 2026-10-19 17:50:01 +08:00
tianma-if 12b100f680 fix(web): keep memo context menus within the viewport 2026-10-19 17:18:34 +08:00
tianma-if 3519fc9ec3 feat: support SVG image uploads and previews 2026-10-19 16:43:11 +08:00
tianma-if 4c00dbb1df fix: use glass as the default note image theme 2026-10-18 21:16:29 +08:00
tianma-if b58011f76f fix: improve note share image hierarchy and rich content exports 2026-10-18 21:05:16 +08:00
Dariusz Korytoandtianma-if df22f55d1c feat(docker): report image build metadata in System information (#602)
Docker instances reported most deployment fields as unknown. Report how
and when the container image was built, separately from how the
instance was deployed:

- Dockerfile: optional EDGE_EVER_BUILD_CREATED_AT, EDGE_EVER_BUILD_TRIGGER
  and EDGE_EVER_BUILD_METHOD build args, empty by default.
- /api/health (self-hosted-bun only): optional buildCreatedAt and
  buildProvenance. deploymentVersionCreatedAt and deployment keep their
  meaning and stay runtime-supplied; Cloudflare responses are unchanged.
- docker-image.yml: official images record the build time and their
  provenance. Draft-release builds dispatched with release_tag are
  github_release, main pushes main_push, other dispatches manual.
  The container test checks the health response for a metadata build
  with runtime overrides and for a default self-build; the post-publish
  audit checks the published image.
- Add an explicit `docker` deployment method. It is never inferred from
  the runtime, and the registry source still comes only from
  EDGE_EVER_CONTAINER_IMAGE.
- Web/desktop show "Image built at" and "Image build source" for Docker;
  Android shows "Image built at". Older clients ignore the new fields.
- Document the build args and runtime variables in both Docker guides.

Co-authored-by: tianma-if <yingwaizhiying@gmail.com>
2026-10-18 11:43:41 +08:00
Dariusz Korytoandtianma-if 82dac9b5cb fix: keep share and form links out of search indexes and caches (#608)
Public share and form pages only added a robots meta tag from JavaScript,
so the HTML for /share/* and /form/* was served without any indexing or
caching directive, and the form page had none at all. Error responses
from /api/public/* also lacked X-Robots-Tag.

Send one policy everywhere a token-bearing link is served:

  X-Robots-Tag: noindex, nofollow, noarchive, nosnippet, noimageindex
  Cache-Control: private, no-store
  Referrer-Policy: no-referrer

- /api/public/*: shared middleware in the application, so it applies on
  Cloudflare and Docker, including 404/403 responses. Routes that already
  set Cache-Control keep it.
- /share/* and /form/* HTML: _headers rules for Cloudflare static assets
  and the self-hosted static server.
- Referrer-Policy keeps the share token out of Referer headers sent to
  linked sites.

robots.txt is deliberately not used to block these paths: a disallowed
URL can still be indexed from external links, because crawlers never see
the noindex header.

Co-authored-by: tianma-if <yingwaizhiying@gmail.com>
2026-10-18 11:23:42 +08:00
tianma-if 776fc3b566 feat(share): refine image themes and persist settings across clients 2026-10-16 21:57:49 +08:00
Thorsten Ruf 367cb8368d feat(web): add a table context menu with copy and paste (#579)
* feat: add table context menu with copy and paste

* fix(web): preserve native input and test table context menu regressions

* fix: harden table context actions and desktop clipboard
2026-10-16 11:24:46 +08:00
tianma-if 6113e18fff test: isolate ACP cleanup in full regression suite 2026-10-16 01:50:03 +08:00
LuoQianhong 1bb9580007 feat(extension): expand vertical and article platform clipping (#578) 2026-10-15 21:39:41 +08:00
tianma-if 4609f72a85 test: isolate WorkBuddy launcher subprocess checks 2026-10-15 12:42:37 +08:00
tianma-if 71e2395e28 fix(editor): search and replace in the active editor mode
Search raw Markdown in source mode with literal character matching, batched undoable replacement, and matching highlights. Preserve query whitespace and keep replacement focus stable. Route source editor search shortcuts through the workspace controller.

Validation: 141 editor tests and 2 Chrome end-to-end cases passed; web and mobile typechecks and the web build passed.

Refs #574
2026-10-15 11:43:34 +08:00
tianma-if 6d9469c058 refactor(web): streamline share dialog layout and password controls 2026-10-14 00:13:07 +08:00
tianma-if 9011a1ce62 feat(plugins): add guarded editing for structured notes 2026-10-13 13:25:16 +08:00
Thorufur bc048b9620 Improve editor resizing for better viewing (#528)
* feat(web): improve editor resizing and header visibility

Prioritize note titles, compact notebook and tag controls by available space, preserve Smart Tags, and show accessible tooltips. Share pane-width limits across layout and resizing.

Validation: web/mobile typechecks and web build pass; 3002 bulk tests and 17 integration tests pass. One OpenClaw ACP timeout also reproduces on unchanged upstream/main 3855efb3. This commit builds on the existing notebook-pane resizing contribution 17f0898a.

* fix(web): handle constrained editor resizing
2026-10-12 23:35:58 +08:00
tianma-if e66b0d707e fix(desktop): recover transient ACP note access failures 2026-10-12 22:13:37 +08:00
Thorufur 5053e0cd71 feat(web): make notebook pane resizable (#527)
* feat(web): make notebook pane resizable

* fix(web): harden notebook pane dragging
2026-10-12 20:50:38 +08:00
LuoQianhong eaf68ef3d9 feat(extension): expand social and article platform clipping (#521)
* feat(extension): expand platform clipping and harden readable content capture

* fix(extension): preserve Bluesky links and exclude hidden body text
2026-10-11 21:04:54 +08:00
tianma-if ccc73ab6af feat(markdown): preserve front matter on import and export
Support imported YAML properties without adding a toolbar entry. Keep ordinary single-note exports body-only and retain full metadata for ZIP backups.
2026-10-10 18:42:45 +08:00
LuoQianhongandjingwen.lqh cc18b4329f feat(extension): support Hacker News main-post clipping (#505)
Co-authored-by: jingwen.lqh <jingwen.lqh@dtyunxi.com>
2026-10-09 12:52:08 +08:00
tianma-if 04a6de6b47 test: align mobile metadata save scope with confirmation flow 2026-10-09 10:31:49 +08:00
tianma-if e93c2882b0 fix: align release checks with current note and diagram behavior 2026-10-08 22:51:06 +08:00
tianma-if 08f645686d test: stabilize release regression gates 2026-10-07 23:28:56 +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 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
tianma-if 3e0ec79575 docs(deploy): update AI Agent deployment heading across READMEs and site 2026-10-07 10:33:50 +08:00
Dariusz Koryto 40321fe1f8 feat(extension): keep page clip images inside the note (#474)
Copy images in generic page and selection clips into note resources so clips can retain them when source URLs change. Keep remote URLs for images that cannot be copied.

Protect concurrent note edits, parse Markdown image syntax correctly, and bound image transfers by time and size. Add unit and Chromium browser coverage.

Refs #159
2026-10-06 16:24:49 +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 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