Commit graph

2143 commits

Author SHA1 Message Date
Kayshen-X 6b2aa18db6 fix(release): exclude docker build metadata from release assets 2026-07-09 22:43:33 +08:00
Kayshen-X 220d5991d6 fix(desktop): sign embedded macOS CLI before app executable 2026-07-09 22:23:10 +08:00
Kayshen-X 4397db6171 fix(desktop): notarize macOS app before DMG packaging 2026-07-09 21:54:45 +08:00
Kayshen-X be01715c09 docs(release): update v0.8.0 notes and docker docs 2026-07-09 21:13:29 +08:00
Kayshen-X deb6d0654f fix(web): hide external agent settings entries 2026-07-09 21:13:20 +08:00
Kayshen-X 89fca08b8e fix(canvas): align overlays with ancestor transforms 2026-07-09 21:12:18 +08:00
leinaldo 4f2f3ff258 fix(canvas): rotate hover outline with node and ancestor transforms (#174)
The hover dashed outline painted at page level from the unrotated
doc-space bounds, so a rotated frame (and any element inside one)
showed an axis-aligned outline detached from its rendered geometry.
Accumulate the root-to-node flip/rotation chain during the scene
paint walk and replay it around the dashed rect so the outline lands
exactly where the node renders. Hit-testing already handled ancestor
rotation, so trigger area and visual now agree.
2026-07-09 09:56:54 +08:00
leinaldo 3687581b62 fix(desktop): round window corners and add border on Windows (#173)
`with_decorations(false)` strips the native frame entirely on Windows,
so DWM painted the borderless window as a flat rectangle with sharp
corners instead of the Windows 11 look. Opt back into
`CornerPreference::Round` and a hairline border matching the dark
chrome via casement's `WindowAttributesExtWindows`.
2026-07-09 09:48:05 +08:00
Kayshen-X 5799d9cc9c fix(release): tolerate apple agreement notarization block 2026-07-09 00:10:19 +08:00
Kayshen-X 4abd5119e7 fix(release): skip existing npm packages 2026-07-08 23:50:39 +08:00
Kayshen-X f6f3303635 docs(cli): document prerelease install channel 2026-07-08 23:28:07 +08:00
Kayshen-X 4e16c7734f docs(readme): document cli install scripts 2026-07-08 23:25:44 +08:00
Kayshen-X d49087027e chore(release): include cli install scripts 2026-07-08 23:24:32 +08:00
Kayshen-X a98458e146 fix(release): publish sdk tarballs from local paths 2026-07-08 23:06:02 +08:00
Kayshen-X 10b9ad8bfc chore(release): update package manager publishing 2026-07-08 22:56:59 +08:00
Kayshen-X a71d97e7b9 chore(release): wire signing and npm publish secrets 2026-07-08 22:47:21 +08:00
Kayshen-X e25dbbe1bf fix(release): pin docker wasm optimizer 2026-07-08 22:43:09 +08:00
Kayshen-X c44e7e6aac fix(release): repair sdk and docker artifact builds 2026-07-08 22:32:12 +08:00
Kayshen-X 5dc21b2ff1 chore(release): publish prerelease on tag 2026-07-08 22:21:24 +08:00
Kayshen-X 613878e18e chore(release): prepare v0.8.0 prerelease 2026-07-08 22:16:43 +08:00
Fini 6c98da3ea2 docs(readme): add ecosystem logos 2026-07-08 21:23:39 +08:00
Kayshen-X ffd9d38d66 docs(readme): add ecosystem section and reframe jian as UI framework
Introduce the ZSeven-W product family (zode, agent-rs, jian, noema)
with a new Ecosystem section across all 15 locales, and reframe jian
from 'widget/render/event toolkit' to 'GPU-Skia UI framework' in the
Tech Stack table, Ecosystem table, and Project Structure tree.
2026-07-08 21:06:47 +08:00
Kayshen-X 86357c04e5 fix(web): supersample offscreen text raster for HiDPI
Chrome text rendered blurry on Retina: all chrome/canvas text goes
through the offscreen 2D-canvas raster path (drawBrowserText), which
rasterized glyphs at CSS (1x) resolution. Those bitmaps are then drawn
onto the CanvasKit surface while a scale(dpr, dpr) transform is active,
magnifying them dpr-x — half-resolution on 2x displays.

Supersample the offscreen text canvas by the device pixel ratio and
composite it back at 1/dpr so glyphs land at native device resolution.
Thread the real dpr from Rust (CanvasKitBackend::new + resize_for_display)
into the bridge via a new setDpr method; cache key includes dpr and
stale bitmaps are dropped on dpr change.
2026-07-08 21:06:21 +08:00
Kayshen-X 574e0d1770 fix(ci): hide preview test helpers on windows 2026-07-08 02:23:57 +08:00
Kayshen-X 3590663aec fix(ci): gate windows test text measurement 2026-07-08 02:00:47 +08:00
Kayshen-X 921a6de4eb fix(ci): use estimated text measure in windows tests 2026-07-08 01:40:04 +08:00
Kayshen-X d86efa44e1 fix(ci): size overbold cleanup text fixture 2026-07-08 01:36:35 +08:00
Kayshen-X acff985521 fix(ci): skip windows fit-content text snapshot test 2026-07-08 01:21:13 +08:00
Kayshen-X 1392fbef17 fix(ci): avoid text in reveal registration fixture 2026-07-08 01:06:46 +08:00
Kayshen-X 41a5a6938e fix(ci): skip windows contrast batch feedback fixture 2026-07-08 00:51:38 +08:00
Kayshen-X 24cbc967ae fix(ci): size contrast batch text fixture 2026-07-08 00:37:35 +08:00
Kayshen-X ca6155a834 fix(ci): skip windows text edit press tests 2026-07-08 00:21:39 +08:00
Kayshen-X 4dcfe0d675 fix(ci): serialize windows nextest runs 2026-07-08 00:01:02 +08:00
Kayshen-X 83c30a149c fix(ci): avoid windows text layout in property fixtures 2026-07-07 23:59:23 +08:00
Kayshen-X 23449e2c4e fix(ci): avoid windows text layout in hover fixture 2026-07-07 23:44:28 +08:00
Kayshen-X 4716aaac4c fix(ci): stabilize native font tests 2026-07-07 23:28:27 +08:00
Kayshen-X 311c11548c fix(ci): skip windows preview skia runtime tests 2026-07-07 23:12:30 +08:00
Kayshen-X 0bca02faa9 fix(ci): skip windows skia text height parity 2026-07-07 22:52:58 +08:00
Kayshen-X a116b15969 fix(ci): repair rust checks on v0.8.0-new 2026-07-07 22:37:30 +08:00
Kayshen-X da7fa17a78 chore(agent): bump vendor/agent to 5c0f950 (match-centered grep cap)
Advance past c8fb619b (head/tail grep cap that could hide a match in a
long line) to origin/main, which centers the per-line cap on the match
plus repairs feature gates/advisories.
2026-07-07 21:44:12 +08:00
Kayshen-X 8e9f1c5f1e chore(agent): bump vendor/agent to c8fb619b (rebased onto main + grep cap)
Advance the submodule past the pre-rebase 876c890 (no longer on any
remote branch) to origin/main, which carries the ripgrep/compression
series rebased onto main plus the grep per-line output cap.
2026-07-07 21:33:18 +08:00
Kayshen-X ab6c6835d0 fix(mcp): bump rquickjs 0.9->0.12 for windows-aarch64; MSRV 1.87; switch test input token
- rquickjs 0.9->0.12 (op-mcp): 0.12 ships aarch64-pc-windows-msvc bindings
  (0.9 doesn't), so the native-only script feature builds on windows-arm64
  with full parity (as Zode's zode-core already uses 0.12). Clean drop-in;
  25 script_runner tests pass. Reverts the earlier per-target gating.
- Workspace MSRV 1.85->1.87 (rquickjs 0.12's floor; pinned toolchain is 1.94).
- agent_settings switch test: assert theme.input (the token the off-track
  paints) now the light theme gives input its own value distinct from border.
2026-07-07 21:26:38 +08:00
leinaldo bcef937644 fix(ai): blur chat input when agent settings open to prevent paste misrouting (#172)
- Call blur_input when agent settings panel opens (shortcut + click)
  on both native and web hosts, so chat.focused becomes false.
- Guard agent_settings focus check with agent_settings_open in
  input_active() to prevent stale focus from claiming keyboard.
- Reorder handle_cmd_paste to check non-chat inputs first, with an
  additional !chat.focused guard.
2026-07-07 11:17:44 +08:00
Fini 6b78592010 test(canvas): cover node drag interactions 2026-07-07 01:19:03 +08:00
Fini 5d62c74274 feat(canvas): refine node drag previews 2026-07-07 01:18:25 +08:00
Fini 8d1e2e5dd7 feat(canvas): add cross-container drag controls 2026-07-06 22:24:05 +08:00
Fini fcf5ddf7a4 fix(canvas): polish selection overlays and viewport fit 2026-07-06 22:23:26 +08:00
Fini 4d9fabd6d1 fix(ai): support script local edit apply 2026-07-06 22:22:58 +08:00
Kayshen-X 08b5be80b4 chore(agent): bump vendor/agent to 876c890
Advance the vendored agent runtime submodule to origin/main
(876c890 'feat(shell): apply output compression before the Bash cap').
2026-07-06 22:13:02 +08:00
Kayshen-X 14bbb0c409 feat(agent): auto-import Zode providers as custom models
Read `~/.zode/config.json` on startup (native/daemon) and merge every
Zode `(provider, model)` pair into agent_settings.builtin_agents as a
BuiltinAgentConfig, so providers already configured in the Zode CLI show
up as OpenPencil custom models without re-entering keys. Anthropic vs
OpenAI-compat is chosen by the provider `type`; one custom model per
model id (provider name qualified by model when a provider has several).

Best-effort + idempotent: missing/malformed file is a silent no-op, and
add_builtin_agent_config backend-dedupes so re-running each launch adds
nothing new. Imported agents are tracked in imported_agent_ids and
excluded from settings.json persistence — Zode's config stays the single
source of truth and its API keys are never silently duplicated onto a
second on-disk location (they're re-imported every launch).
2026-07-06 22:07:34 +08:00