Commit graph

1293 commits

Author SHA1 Message Date
Fini
23bf862f16 fix(ai): align model picker filtering
Some checks failed
Rust check (native) / macos-latest / 1.94 (push) Waiting to run
Rust check (native) / windows-latest / 1.94 (push) Waiting to run
Rust multi-platform build / linux-aarch64 (push) Waiting to run
Rust multi-platform build / macos-aarch64 (push) Waiting to run
Rust multi-platform build / windows-x86_64 (push) Waiting to run
Rust multi-platform build / macos-x86_64 (push) Waiting to run
Rust multi-platform build / windows-aarch64 (push) Waiting to run
Rust multi-platform build / ios-aarch64 (cargo check only) (push) Waiting to run
Rust multi-platform build / ios-aarch64-sim (cargo check only) (push) Waiting to run
Rust check (native) / ubuntu-latest / 1.94 (push) Failing after 2s
Rust check (native) / cargo-deny (native) (push) Failing after 1s
Rust check (native) / diagnostics golden drift (push) Failing after 2s
Rust multi-platform build / linux-x86_64 (push) Failing after 2s
Rust multi-platform build / wasm32-unknown-unknown / op-host-web (compile guard) (push) Failing after 1s
Rust multi-platform build / android-aarch64 (cargo check only) (push) Failing after 1s
Rust multi-platform build / android-x86_64 (cargo check only) (push) Failing after 1s
WASM bundle check (kickoff §1.2) / cargo check --target wasm32-unknown-unknown (push) Failing after 1s
WASM bundle check (kickoff §1.2) / cargo-deny --target wasm32-unknown-unknown check bans (push) Failing after 1s
2026-05-31 03:23:13 +08:00
Fini
ba7292358e fix(ai): align streaming thinking pill 2026-05-31 03:23:13 +08:00
Kayshen-X
130a9b14a3 fix(editor): guard flex children on drag + property-panel and desktop chrome fixes
Canvas / layout:
- Guard flex flow-children from free-drag and add a 4px drag threshold,
  so a first click no longer materializes x/y on a flow child and
  collapses the auto-layout frame.

Property panel:
- Gap/justify radios disable the gap input on space-between/around;
  compact gap rows with vertically-centered input text.
- Padding-mode gear popover hover; the pin is anchor-scoped so it no
  longer leaks into the next selection.
- Font-weight dropdown: full 100-900 numeric options + row hover.
- Stroke hex seeds the displayed swatch colour (not #000000); stroke
  width now persists on commit.

Desktop:
- Traffic-light inset now applies on launch (casement windowDidBecomeKey).
- File-drop overlay; git commit caret blink.

Refactor:
- Split property_dispatch / git_panel / property-panel tests under the
  800-line cap; reorganise panel tests by topic.
2026-05-31 01:04:12 +08:00
Fini
8e2f5ac3dd fix(desktop): fit new document viewport 2026-05-31 00:56:57 +08:00
Fini
2905b491cd fix(ai): show design progress checklist 2026-05-31 00:35:34 +08:00
Fini
49da051a42 fix(ai): read frame image search queries 2026-05-31 00:25:52 +08:00
Fini
20f0510d34 feat(settings): edit acp agent entries 2026-05-30 19:37:37 +08:00
Fini
6c930c8eaa test(ai): cover image search job polling
Some checks failed
Rust check (native) / macos-latest / 1.94 (push) Waiting to run
Rust check (native) / windows-latest / 1.94 (push) Waiting to run
Rust multi-platform build / linux-aarch64 (push) Waiting to run
Rust multi-platform build / macos-aarch64 (push) Waiting to run
Rust multi-platform build / windows-x86_64 (push) Waiting to run
Rust multi-platform build / macos-x86_64 (push) Waiting to run
Rust multi-platform build / windows-aarch64 (push) Waiting to run
Rust multi-platform build / ios-aarch64 (cargo check only) (push) Waiting to run
Rust multi-platform build / ios-aarch64-sim (cargo check only) (push) Waiting to run
Rust check (native) / ubuntu-latest / 1.94 (push) Failing after 2s
Rust check (native) / cargo-deny (native) (push) Failing after 2s
Rust check (native) / diagnostics golden drift (push) Failing after 2s
Rust multi-platform build / linux-x86_64 (push) Failing after 4s
Rust multi-platform build / wasm32-unknown-unknown / op-host-web (compile guard) (push) Failing after 1s
Rust multi-platform build / android-aarch64 (cargo check only) (push) Failing after 2s
Rust multi-platform build / android-x86_64 (cargo check only) (push) Failing after 2s
WASM bundle check (kickoff §1.2) / cargo check --target wasm32-unknown-unknown (push) Failing after 1s
WASM bundle check (kickoff §1.2) / cargo-deny --target wasm32-unknown-unknown check bans (push) Failing after 1s
2026-05-30 19:24:27 +08:00
Fini
db0e33fc55 fix(settings): show mcp client config 2026-05-30 19:12:27 +08:00
Fini
920af1b8f5 feat(settings): persist acp agent entries 2026-05-30 19:04:00 +08:00
Fini
1fec63bd61 fix(settings): use tested ark coding preset 2026-05-30 18:47:50 +08:00
Fini
9ef13f212f fix(settings): correct deepseek provider preset 2026-05-30 16:09:24 +08:00
Fini
e1c51ac100 fix(settings): add image provider selector 2026-05-30 16:06:23 +08:00
Fini
98285b159e fix(ai): restore maximized chat affordance 2026-05-30 15:55:13 +08:00
Fini
d0014bb5bf fix(ai): align builtin model picker chrome 2026-05-30 15:49:11 +08:00
Fini
457326d8e7 fix(panels): match hidden layer state color 2026-05-30 15:45:13 +08:00
Fini
ed019a31f6 fix(ai): align chat panel surface 2026-05-30 15:34:22 +08:00
Kayshen-X
e5cb0b6512 fix(panels): paint the centered git popover above the align toolbar
The Git popover is hit-tested at press block 0.9 — ahead of the align
toolbar (line 554) — but was painted at §8.2, BELOW the align toolbar
(§8.4). That was moot while the panel floated top-left, but once it
centres under the Git button it overlaps the align toolbar: paint said
the align toolbar was on top, the hit-test said the popover was, so a
click on an align button over the popover went to the popover.

Move the popover paint to §8.7 — above the align toolbar / marquee /
property overlays, still below the shape / locale pickers and modals —
so the paint z-order matches the hit-test priority.
2026-05-30 13:57:54 +08:00
Kayshen-X
604467033b feat(panels): match git empty-state to the TS GitPanelEmptyState
Faithful port of apps/web's git-panel-empty-state.tsx:

- Per-card hover effect (TS hover:/group-hover:): the card lifts 1px and
  recolors to border-primary/40 + bg-accent/30, the icon box to
  bg-primary/10 + text-primary. Tracked via the new
  GitPanelState.empty_hovered_card (0=Init / 1=Open / 2=Clone), updated
  by update_git_panel_empty_hover on cursor-move.
- Disabled Init card (no saved .op): the TS opacity-50 look + a
  not-allowed cursor (new CursorHint::NotAllowed → winit NotAllowed),
  and the requireSavedFile hint shown only on hover (TS Tooltip
  side="bottom", bg-primary text-primary-foreground).
- Gradient clock badge (from-muted/60 to-muted/20 + ring-border/60) and
  the TS container spacing (pt-8 / gap-5 / pb-6).

Adds the alpha()/over() colour helpers (Tailwind /NN opacity + compositing)
and a placement test for the per-card hover + not-allowed cursor.
2026-05-30 13:39:54 +08:00
Kayshen-X
af78b6ada0 feat(panels): center git popover with caret + full cursor suppression
- Float the git panel centered under the TopBar git button (TS popover
  parity) with an up-caret; git_panel_rect is the single placement source
  that paint, hit-test, cursor and outside-click all read.
- git_panel_outer_rect (body + caret bridge) backs hit-test / cursor /
  outside-click / diff-scroll so a click or hover on the caret is caught
  by the popover instead of falling through to the canvas.
- over_floating_overlay keeps the canvas Move/Crosshair cursor from
  bleeding through every floating overlay (git / status / chat / toolbar /
  align-toolbar / shape / locale / file-menu / context-menu + the centered
  panels).
- Onboarding empty state: Init / Open / Clone cards; Init is disabled until
  the doc has a saved path, with a hover-gated "save .op first" hint pill.
- Split oversized files for the 800-line cap: git_panel -> {empty, status};
  geometry -> overlay_rects; top_bar -> top_bar_paint.
- Resolve the stash-pop conflict against the upstream refactor (ai_chat_rect
  now lives in ai_chat_geometry) and clear clippy-1.94 drift in upstream
  files (unnecessary_map_or, too_many_arguments, match_like_matches_macro)
  so the workspace gate passes.
2026-05-30 13:19:19 +08:00
Fini
d6f6d60e2c fix(ai): fill placeholder frames from image search 2026-05-30 07:26:13 +08:00
Fini
34c79b8049 fix(ai): prefill builtin provider presets 2026-05-30 07:12:18 +08:00
Fini
9650481647 fix(ai): hide assistant tool xml 2026-05-30 07:02:39 +08:00
Fini
56bdce5e85 fix(ai): use full width assistant transcript 2026-05-30 06:58:49 +08:00
Fini
e78ea9da0d fix(ai): lift chat panel surface 2026-05-30 06:44:12 +08:00
Fini
efe3d3c95c fix(ai): use openverse credentials for image search 2026-05-30 06:41:08 +08:00
Fini
3fe7d42633 fix(ai): edit openverse image search credentials 2026-05-30 06:37:17 +08:00
Fini
526487a6d7 fix(ai): search model groups by label 2026-05-30 06:26:38 +08:00
Fini
3e8986120a fix(ai): show chat step details 2026-05-30 06:21:34 +08:00
Fini
debebc0632 fix(ai): edit image generation profiles 2026-05-30 06:17:14 +08:00
Fini
c679175c31 fix(ai): add image generation profile rows 2026-05-30 06:10:04 +08:00
Fini
9376faed06 fix(ai): surface tool call metadata 2026-05-30 05:47:27 +08:00
Fini
eefd82fb7d fix(ai): pin chat step checklist 2026-05-30 05:32:12 +08:00
Fini
97b92a018e fix(ai): parse chat step progress tags 2026-05-30 05:25:50 +08:00
Fini
37c421697a fix(editor): fit blank frame on startup 2026-05-30 05:16:04 +08:00
Fini
502f301a70 fix(ai): add system auto update toggle 2026-05-30 05:06:33 +08:00
Fini
a2b54f7c7c fix(ai): disable mcp port while running 2026-05-30 03:30:35 +08:00
Fini
9a132e220b fix(ai): label builtin model groups 2026-05-30 03:26:28 +08:00
Fini
1c91416763 fix(renderer): defer desktop gl startup 2026-05-30 03:08:58 +08:00
Fini
da6c9bd20b fix(ai): enable desktop image search 2026-05-30 02:27:35 +08:00
Fini
a2c20aa6d8 fix(ai): render design progress as steps 2026-05-30 02:19:22 +08:00
Fini
809f65580d fix(editor): compact settings sidebar 2026-05-30 02:13:16 +08:00
Fini
f0be1c3303 fix(ai): add searchable model picker 2026-05-30 01:10:37 +08:00
Fini
4f571d4e44 fix(ai): tighten empty chat cards 2026-05-30 00:56:28 +08:00
Fini
24866fe914 fix(editor): align starter frame and layer hover 2026-05-30 00:49:10 +08:00
Fini
50fd43a9fb feat(ai): add built-in providers and align chat ui 2026-05-30 00:21:34 +08:00
Kayshen-X
b938dcd14b feat(panels): wire git empty-state cards (init / open / clone)
The onboarding cards are now actionable:
- 新建/Init → `GitRepo::init` at the saved doc's directory, then
  rebind the session so the doc is tracked (disabled until saved);
- 打开/Open → native folder picker → `GitRepo::discover` + a new
  `GitSession::bind_repo` (tracks the doc when it's under the repo);
- 克隆/Clone → info dialog for now (needs the in-panel URL form — a
  follow-up).

Adds GitPanelHit::{EmptyInit,EmptyOpen,EmptyClone},
GitPanelAction::{InitRepo,OpenRepo,CloneRepo}, host press dispatch +
binary drain, `git_panel.has_saved_file` tracked on every rebind, and
a hit-test test. EN/ZH strings for the two new messages.
2026-05-29 23:09:22 +08:00
Kayshen-X
3ea3527446 feat(panels): rich git empty-state (TS parity), visual
Replace the bare "不是 Git 仓库。" text with the TS onboarding empty
state: a History clock glyph in a rounded box, the
"这份文件还没有版本历史" heading, three cards (新建/打开/克隆 with
FilePlus/FolderOpen/GitFork icons + descriptions), and the "Git is
optional" note — laid out centred in a 380×284 panel.

- new History/FilePlus/GitFork icons;
- `GitPanelState.has_saved_file` dims the Init card when the doc is
  unsaved (matching TS);
- `empty_state_rects` shared for the upcoming card hit-test.

Card actions (init/open/clone) wired in a follow-up.
2026-05-29 22:56:07 +08:00
Kayshen-X
50e95fbf89 fix(panels): compile out the git button on web (no git backend)
Some checks failed
Rust check (native) / macos-latest / 1.94 (push) Waiting to run
Rust check (native) / windows-latest / 1.94 (push) Waiting to run
Rust multi-platform build / linux-aarch64 (push) Waiting to run
Rust multi-platform build / macos-aarch64 (push) Waiting to run
Rust multi-platform build / windows-x86_64 (push) Waiting to run
Rust multi-platform build / macos-x86_64 (push) Waiting to run
Rust multi-platform build / windows-aarch64 (push) Waiting to run
Rust multi-platform build / ios-aarch64 (cargo check only) (push) Waiting to run
Rust multi-platform build / ios-aarch64-sim (cargo check only) (push) Waiting to run
Rust check (native) / ubuntu-latest / 1.94 (push) Failing after 3s
Rust check (native) / cargo-deny (native) (push) Failing after 1s
Rust check (native) / diagnostics golden drift (push) Failing after 3s
Rust multi-platform build / linux-x86_64 (push) Failing after 2s
Rust multi-platform build / wasm32-unknown-unknown / op-host-web (compile guard) (push) Failing after 2s
Rust multi-platform build / android-aarch64 (cargo check only) (push) Failing after 1s
Rust multi-platform build / android-x86_64 (cargo check only) (push) Failing after 2s
WASM bundle check (kickoff §1.2) / cargo check --target wasm32-unknown-unknown (push) Failing after 2s
WASM bundle check (kickoff §1.2) / cargo-deny --target wasm32-unknown-unknown check bans (push) Failing after 2s
The web/wasm build has no git backend and never paints GitPanel, so
the top-bar git button toggled an invisible panel (Codex stop-time
review). Gate the button's paint + hit-test on a `GIT_BUTTON_AVAILABLE`
const (`!cfg!(target_arch = "wasm32")`) so it only exists on desktop.
2026-05-29 22:23:37 +08:00
Kayshen-X
a4b70fa055 feat(panels): add git-panel button to the top bar
The top bar had no affordance to open the git panel (only a
keyboard/menu path). Add a TS-style git button just right of the file
name: a `GitBranch` glyph + the current branch name when in a repo.
Always shown (per request) — a click toggles the git panel, which
offers `init` when the doc isn't yet a repo.

- new `Icon::GitBranch` lucide glyph;
- `TopBar.git_branch` from `git_panel.branch`; `git_button_rect`
  (CJK-aware width estimate so it clears a CJK file name) shared by
  paint + hit-test; `TopBarHit::ToggleGitPanel`;
- native host mirrors `main.rs` toggle bookkeeping (per-frame refresh
  does the scan); web host toggles `git_panel.open`.
2026-05-29 22:12:38 +08:00