Commit Graph
351 Commits
Author SHA1 Message Date
tianma-if 7d2e54966b feat(poster): guide AI template selection with shared descriptions 2026-10-19 17:33:04 +08:00
tianma-if 3519fc9ec3 feat: support SVG image uploads and previews 2026-10-19 16:43:11 +08:00
tianma-if fdad077843 chore: release v1.124.0 [skip ci] 2026-10-19 11:42:38 +08:00
tianma-if cb13c07592 chore: release v1.123.0 [skip ci] 2026-10-18 22:21:14 +08:00
tianma-if 862132acc7 chore: release v1.122.0 [skip ci] 2026-10-18 12:47:22 +08:00
tianma-if 8820de1273 chore: release v1.121.0 [skip ci] 2026-10-17 01:23:52 +08:00
Dariusz Koryto ccc5ed3f29 refactor: remove unused code and enforce no-unused-vars (#598)
* refactor: remove unused imports, variables and parameters

Remove the 110 bindings reported by no-unused-vars:

- 78 unused imports. Nine whole value-import statements disappear:
  shadcn/ui input, tooltip, button and switch, MobileWebClipCapture,
  AccountSecurityModal and @/lib/api in plugin-host. None of these
  modules has top-level side effects beyond displayName assignments,
  and @/lib/api is still imported by 60 other web modules. The other
  removals are type-only imports or bindings from modules that stay
  imported, so module evaluation is unchanged.
- Dead helpers: appendResourceMarkdown, handleTogglePin (mobile),
  CheckCircleCheck, moveTargetTitle, moveTargetSelectRef,
  handleMoveTargetSelectKeyDown (memo list), copiedLabel (share
  dialog), and an unused palette and flowchart in the diagram editor.
- Component props that are passed but never read are dropped from the
  destructuring only. Their prop types and call sites are unchanged,
  so no caller changes behaviour.
- Tests: iterate Object.values() where keys were unused, and drop
  unused fixture bindings and callback parameters.

* ci: enforce no-unused-vars in oxlint

Turn the rule on with the conventional escapes: names starting with an
underscore and rest siblings used to omit a property
(`({ id, ...item }) => item`) are allowed.
2026-10-17 01:11:05 +08:00
Dariusz Koryto bec688b91a ci: add oxlint correctness check and resolve its findings (#592)
* refactor: resolve oxlint correctness findings without behavior changes

- Snapshot iterations that mutate their collection with Array.from()
  instead of a spread (live childNodes, self-removing disposers, a Set
  extended inside its own loop).
- Drop empty spread fallbacks, redundant regex escapes, Boolean() casts
  inside negations, a rethrow-only try/catch and statement ternaries.
- Use startsWith/endsWith for anchored literal checks in the extension.
- List U+FE0F explicitly in the mobile attachment emoji class; the
  matched set is unchanged.
- Fix the WeChat copy fixture, where \oint in a template literal lost its
  backslash and the block formula never exercised \oint.
- Document the intentional control-character regexes (filename
  sanitizing and input validation), the throwing provider stream test,
  Astro's generated type reference and the mobile auto-sync finally
  block with narrow inline exceptions.

* ci: run oxlint correctness rules on pull requests

Pin oxlint 1.88.0 and enable only its correctness category across apps/
and packages/, excluding build output, vendored code and the iOS app.
Findings are errors and the script passes --deny-warnings, so CI fails
on any finding. no-unused-vars stays off until unused code is removed
in a dedicated pass.
2026-10-16 21:57:36 +08:00
tianma-if 70d486e4d7 fix(desktop): exclude development files from production packages 2026-10-16 21:44:29 +08:00
yulei666andClaude Opus 5.5 e85916de78 fix(desktop): connect to WorkBuddy 5.8+ lite-wb CLI over stdio ACP (#586)
WorkBuddy 5.8+ ships only dist/codebuddy-lite-wb.mjs. Its loader picks that
bundle only with CODEBUDDY_FORCE_LITE_WB_BUNDLE=1, otherwise --acp requires the
removed dist/codebuddy and exits. A bare --acp in the lite-wb bundle also runs a
one-shot print session; stdio ACP is served only together with --serve.

When the lite-wb layout is detected, set the bundle variable and launch with
--acp --serve --acp-transport stdio. --serve also starts WorkBuddy's local
gateway, so pin it to loopback with --host 127.0.0.1 and SERVER__HOST, which
overrides an inherited SERVER__HOST; the port stays WorkBuddy's random default.
Older layouts keep the previous launch, and the login flow adds only --port
when the command already serves.

Fixes #584

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:00:35 +08:00
yulei666andClaude Opus 5.5 d26988e0ee fix(desktop): allow clearing local data from the scoped userData directory (#585)
The packaged app is named @edgeever/desktop, so Electron stores userData at
<appData>/@edgeever/desktop. The reset guard only accepted a direct child of
appData and therefore always failed with unsafe-data-directory. Also accept a
single @scope/name directory while still rejecting other nested paths.

Fixes #583

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 12:52:41 +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 1d6cc281e2 chore: release v1.120.0 [skip ci] 2026-10-16 01:51:16 +08:00
tianma-if 3853b54c1b test(desktop): separate POSIX pipe inheritance from portable closure checks 2026-10-15 22:24:41 +08:00
tianma-if 3eaad71509 fix(desktop): await ACP process closure before workspace cleanup
Track close separately from exit, preserve probe outcomes on cleanup errors, and cover inherited pipes and Windows cwd locks. Add cross-platform CI with the official Codex ACP process chain smoke check.

Refs #523
2026-10-15 22:19:48 +08:00
tianma-if 544a6e8e8c chore: release v1.119.0 [skip ci] 2026-10-15 12:46:48 +08:00
tianma-if f4b36fc64f fix(desktop): repair ACP updates and add manual retry 2026-10-15 11:10:39 +08:00
Dariusz Koryto bbe80d18db fix(api): store LF line breaks for multipart image notes; make ACP host tests portable (#568)
* fix(api): store LF line breaks for multipart image notes

multipart/form-data encodes line breaks in text fields as CRLF. Browsers
always do so, and Bun 1.4 now does as well, so notes created through
POST /api/v1/memos/with-image (used by the Web Clipper) were stored with
CRLF line breaks, while every other note uses LF. The route now normalizes
the Markdown field to LF before creating the note.

This also fixes the existing route contract test under Bun 1.4, and a new
test sends a CRLF multipart body like a browser does.

* test(desktop): make ACP host tests independent of the machine and Bun version

- The ACP command allow-list test checked that a missing command is not
  installed, but on macOS the resolver also looks in /opt/homebrew/bin and
  /usr/local/bin, so it failed on any machine with that command installed.
  The test now only sees its temporary directory.
- The fake WorkBuddy agent started its account API without a port during
  probes and chats. Bun 1.3 then listened on a random port, while Bun 1.4,
  like Node, rejects port NaN, so six WorkBuddy session tests hung until
  their timeout. Like WorkBuddy itself, the fake agent now serves the
  account API only when started with a port.
2026-10-15 09:22:42 +08:00
tianma-if 2977f07bdb fix(desktop): support bundled WorkBuddy credential codec exports 2026-10-15 01:20:12 +08:00
tianma-if 3c77c67155 fix(desktop): defer local AI probes until selector opens
Record adapter process lifecycle diagnostics to correlate transient Windows consoles.

Refs #561; Windows device verification remains pending.
2026-10-14 17:53:03 +08:00
tianma-if 2ba1e8e70e chore: release v1.118.0 [skip ci] 2026-10-14 11:03:01 +08:00
tianma-if 8127802f32 chore: release v1.117.0 [skip ci] 2026-10-14 10:56:01 +08:00
tianma-if 21d291dca5 test(desktop): avoid filesystem order assumptions in share recovery 2026-10-14 10:54:27 +08:00
tianma-if c6a5eeef5d chore: release v1.116.0 [skip ci] 2026-10-14 10:51:28 +08:00
tianma-if c78f17a800 fix(desktop): restore WorkBuddy sign-in after connection failure 2026-10-14 10:40:53 +08:00
tianma-if d18c63618f fix(desktop): persist failed share imports across restarts 2026-10-14 10:33:10 +08:00
tianma-if 30a4ab08ca chore: release v1.115.0 [skip ci] 2026-10-13 18:04:02 +08:00
tianma-if ccc8a57129 chore: release v1.114.0 [skip ci] 2026-10-13 17:55:08 +08:00
tianma-if fda8cf9ba6 fix(desktop): preserve attachment downloads behind navigation guard 2026-10-13 14:21:59 +08:00
tianma-if c7c4a5e329 chore: release v1.113.0 [skip ci] 2026-10-13 14:15:15 +08:00
tianma-if be93432e78 fix: capture desktop update network diagnostics
Record sanitized request URLs, redirects, timing, HTTP errors and proxy resolution from the actual updater session. Include the trace in copyable update diagnostics. Refs #513
2026-10-13 13:40:11 +08:00
tianma-if 6b5027e8b4 fix(security): harden renderer and desktop execution boundaries
Preserve trusted plugin and automatic ACP permission models. Track release and remaining validation in #546.
2026-10-13 00:42:36 +08:00
tianma-if 16e8f1a8f3 chore: release v1.112.0 [skip ci] 2026-10-12 23:54:04 +08:00
tianma-if 28a8792e1a fix(desktop): verify ACP authentication status and retain diagnostics
Handle asynchronous authentication identity notifications, reject missing credentials before prompting, and preserve sanitized adapter stderr. Document Claude gateway model mapping and add regression coverage for issue #531.
2026-10-12 22:31:21 +08:00
tianma-if e66b0d707e fix(desktop): recover transient ACP note access failures 2026-10-12 22:13:37 +08:00
tianma-if 435376ca56 feat: add optional desktop PicGo image uploads
Add local PicGo configuration, connection testing, and explicit upload failure recovery. Expose the configuration preview on Web.

Refs #530
2026-10-12 21:45:06 +08:00
tianma-if 566d65fde0 chore: release v1.111.1 [skip ci] 2026-10-12 14:06:05 +08:00
tianma-if 59d6548abd fix: harden remaining dependency paths and desktop npm
Remove the unused React Native Markdown renderer. Pin safe YAML, shell quoting, tar, and cache dependencies; upgrade npm within the 11 series and apply upstream fixes to its hidden bundled Undici and cache copies.

Add actual-consumer security regressions and an opt-in real npm/ACP upgrade verifier. Typechecks, Web build, Android APK/signature checks, and 2,997 tests passed (23 skipped). Real old-to-new npm installs, ACP initialize, rollback, restart, and fallback retention passed under the desktop Electron runtime.

Android USB-device validation and full desktop automatic-update release gates remain pending. Dependency audit is reduced from 85 to 74 unique advisories; this is not a complete security clearance.
2026-10-12 12:48:47 +08:00
tianma-if 0e958b4944 chore: upgrade core dependencies and migrate site to Astro 7
Align editor, AI SDK, query, and Expo SDK 57 dependencies; pin floating versions and rebase the Mermaid and Android sharing patches. Refresh the standalone iOS editor bundle and migrate site content collections while preserving routes.

Validation: typechecks for Web/API, Android, and iOS editor; Web, site, iOS editor, Worker, Docker server, extension, and Android APK builds; 2,994 tests passed, 23 skipped. Built-in browser verified rich-text paste/undo and bilingual site navigation.

USB-device upgrade/data/share verification and desktop cross-version release gates remain pending. Remaining dependency audit advisories are not all resolved.
2026-10-12 12:22:42 +08:00
tianma-if 1b0bbf6ed6 chore: release v1.111.0 [skip ci] 2026-10-11 23:42:12 +08:00
tianma-if 12874df3de chore: release v1.110.0 [skip ci] 2026-10-11 18:31:06 +08:00
tianma-if 150f0e8de5 feat(ai): expose detailed poster editing and client rendering 2026-10-11 17:20:32 +08:00
tianma-if 03a0397a3e fix(desktop): bootstrap WorkBuddy encrypted ACP credentials 2026-10-11 16:43:00 +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 615a99b230 chore: release v1.109.0 [skip ci] 2026-10-11 15:34:52 +08:00
tianma-if bbacfc9322 fix: reject unusable WorkBuddy ACP login credentials 2026-10-11 09:59:51 +08:00
tianma-if 57e47a9d12 chore: release v1.108.0 [skip ci] 2026-10-11 00:54:26 +08:00
tianma-if 068235614b feat: show desktop update download progress
Add read-only Windows taskbar shortcut diagnostics to investigate stale targets. Refs #513
2026-10-10 23:49:44 +08:00
tianma-if f9e1214a79 fix: expose detailed desktop update diagnostics
Refs #513
2026-10-10 23:41:19 +08:00