Commit graph

1510 commits

Author SHA1 Message Date
Fini d545455b71 feat(editor): paint a breathing border around each agent's frame
During a multi-screen concurrent generation, every screen group's root
frame is tagged with a distinct agent colour; the canvas now strokes a
pulsing glow + ring in that colour around each one so you can see which
agent is building what. Indicators are registered as the concurrent
scaffold lands and cleared once the turn finishes.
2026-06-09 15:06:33 +08:00
Fini b38b27c202 feat(editor): add agent-team canvas indicator registry
A process-global registry of active per-agent indicators (node borders,
root-frame glow/badge, preview pulses), mirroring the design worker /
paint-pass split. The canvas will read snapshot()/is_active() each frame;
the generation path tags nodes via add_node/add_frame as they stream in.
2026-06-09 15:06:32 +08:00
Fini 9f1a165cba feat(editor): add agent-team identity palette
Each parallel design sub-agent gets a distinct colour (6-colour palette,
cycled by index) and name, so the canvas can later draw per-agent
breathing borders and badges. assign_agent_identities(count) is the
entry point; colours wrap past the palette size.
2026-06-09 15:06:31 +08:00
Fini 953690f39b fix(ai): scope desktop dashboard cleanup to right/insight rows
Drop the bare "panel" trigger keyword so ordinary two-column rows
whose second child merely contains "panel" are no longer rewritten to
full desktop width; require right/insight to signal a real right rail.
2026-06-09 15:06:30 +08:00
Fini 67749b3755 fix(panels): soften web chat panel shadow
shadow-lg -> shadow-md to match the lighter native panel shadow.
2026-06-09 15:06:29 +08:00
Fini add87902a0 fix(editor): soften chat panel shadow and center card emoji on wrap
Fade the faked drop shadow out (faint far layer) instead of a hard
full-width grey band, and vertically center the example-card emoji
against a two-line title instead of pinning it to the first line.
2026-06-09 15:06:28 +08:00
Fini 6e3b42b7f0 fix(editor): stack connected-agent icons like TS
Replace the flat bg-muted icon row with one rounded bg-foreground/10
chip per connected provider, overlapped 6px with a card-coloured ring
(TS top-bar.tsx: -space-x-1.5 + ring-1 ring-card).
2026-06-09 15:06:27 +08:00
Fini effd1eae17 fix(canvas): match TS light/dark canvas background
canvas_surface light #fafafa->#e5e5e5, dark #181818->#1a1a1a to equal
the TS CANVAS_BACKGROUND_LIGHT/DARK constants, so the white frame reads
against the canvas instead of vanishing into a near-white surface.
2026-06-09 15:06:26 +08:00
Kayshen-X bef43c74a9 fix(editor): polish rust ui interactions 2026-06-09 09:55:33 +08:00
Kayshen-X b12505eaaa fix(editor-ui): inset framework tabs past scroll chevrons (no edge clipping) 2026-06-09 09:38:38 +08:00
Kayshen-X b1e67ba75f fix(editor-ui): polish rust chrome interactions 2026-06-09 09:38:37 +08:00
Kayshen-X 6a041c144c feat(editor-ui): single-row scrollable framework tabs in the Code panel 2026-06-09 09:38:36 +08:00
Kayshen-X 083417506b fix(editor-ui): make Design/Code property tab clickable 2026-06-09 09:38:35 +08:00
Fini 2b9f481c86 fix(panels): improve AI chat panel spacing and shadow
Soften the floating chat panel shadow (shadow-2xl -> shadow-lg), add
top padding before the first message bubble, and give the input text
more room below the divider. Mirrors the native editor panel fix.
2026-06-08 23:42:17 +08:00
Fini ec324e369c fix(editor): improve AI chat panel spacing and shadow
Soften the floating panel's drop shadow (two tight low-alpha layers
instead of a heavy offset pair so it no longer stacks into a dark band),
add top breathing room before the first transcript bubble, and drop the
input text below the separator line.

Splits the hit-test half (hit_test / resize_edge_at /
design_block_hover_at / rect_contains) out into a sibling
ai_chat_panel_hit module so the edited file stays under the 800-line
cap; the painting half keeps the spacing fixes.
2026-06-08 23:41:31 +08:00
Fini e45c108b08 fix(ai): expand sparse desktop dashboard rows
Add a desktop-dashboard cleanup pass that widens a narrow main-content
row to the desktop width when a no-sidebar generation emits a 1200px
root with a sparse two-column row, preserving the authored intent.
2026-06-08 23:41:20 +08:00
Fini 4f42826aba fix(renderer): export svg path strokes
Paint NodeKind::Path nodes that carry an svg_path via a dedicated
svg_path module (fill + stroke, EvenOdd for multi-subpath) instead of
the polyline fallback, and give them proper export corner bounds.
2026-06-08 23:41:09 +08:00
Kayshen-X b6e6d1da7f feat(web): web codegen session driving CodegenPipeline [unverified] 2026-06-07 19:21:33 +08:00
Kayshen-X ec2ed2796d feat(web): AI-streaming foundation (rAF pump + XHR/SSE transport + clipboard/download) [unverified] 2026-06-07 19:21:32 +08:00
Kayshen-X 65ba304067 feat(host): /api/ai/stream SSE proxy + /api/ai/models 2026-06-07 19:21:31 +08:00
Kayshen-X 476cb1b14f fix(host): surface codegen worker panic/disconnect instead of hanging 2026-06-07 19:21:30 +08:00
Kayshen-X 681dd76ad4 feat(host): code download + AI structure bundle export 2026-06-07 19:21:29 +08:00
Kayshen-X 7e885dc43e feat(host): wire codegen session into the frame loop 2026-06-07 19:21:28 +08:00
Kayshen-X c211c79a10 feat(host): drive codegen pipeline on a worker thread 2026-06-07 19:21:27 +08:00
Kayshen-X 06be333be6 feat(host): build CodegenInput from selection 2026-06-07 19:21:26 +08:00
Kayshen-X 907190d341 feat(host): scaffold codegen_session + op-codegen ai dep 2026-06-07 19:21:25 +08:00
Kayshen-X f1068c275d feat(host): dispatch Code panel actions 2026-06-07 19:21:24 +08:00
Kayshen-X c4e439bfe4 feat(editor-ui): hit-test Code panel actions 2026-06-07 19:21:23 +08:00
Kayshen-X 146cac371d feat(editor-ui): render real Code panel from CodegenState 2026-06-07 19:21:22 +08:00
Fini d0ce8c112d fix(renderer): prevent fit-content text overlap 2026-06-07 19:11:32 +08:00
Fini 55f845fd79 fix(ai): compact dense mobile rows 2026-06-07 18:45:17 +08:00
Fini 4bd85aee24 fix(renderer): render icon fonts in raster export 2026-06-07 16:51:16 +08:00
Fini f0955609d7 fix(ai): preserve generated layout parents 2026-06-07 16:15:30 +08:00
Kayshen-X ec553017b1 feat(editor-ui): add CodegenAction to PropertyPanelAction 2026-06-07 15:25:37 +08:00
Kayshen-X 041cfc4de6 feat(editor-core): wire CodegenState onto EditorState
Add pending_generate + pending_regenerate flags to CodegenState
(mirror of chat.pending_send). Wire codegen: CodegenState as a
field on EditorState immediately after chat, with TDD coverage in
codegen_state_defaults_to_idle_react.
2026-06-07 15:16:40 +08:00
Kayshen-X 59776bf232 fix(codegen): include import sources in dependency-contract prompt 2026-06-07 15:02:30 +08:00
Kayshen-X 30a24780be fix(codegen): close codex P1 parity gaps (planning ids, full contract, retry/assembly/inference) 2026-06-07 14:55:28 +08:00
Kayshen-X f93283a7b4 feat(codegen): implement codegen pipeline state machine 2026-06-07 14:55:27 +08:00
Kayshen-X c973aa2c71 feat(codegen): port ai structure bundle builder 2026-06-07 14:55:26 +08:00
Kayshen-X 32aeb2737d feat(codegen): port codegen asset extraction 2026-06-07 14:55:25 +08:00
Kayshen-X 72c7a25abd feat(codegen): port codegen prompt/request builders 2026-06-07 14:55:24 +08:00
Kayshen-X 87da2edbd5 feat(codegen): port pure parse/order/validate logic 2026-06-07 14:55:23 +08:00
Kayshen-X 846dfd6d2e feat(codegen): port ai pipeline-internal types 2026-06-07 14:55:22 +08:00
Kayshen-X c2fed4c2d5 feat(ai-skills): add shared compose_system_prompt helper 2026-06-07 14:55:21 +08:00
Kayshen-X 014dca45f5 feat(editor-core): add UI-facing codegen state types
Plain-data types for the Code panel (Framework / CodegenPhase /
ChunkStatus / CodeGenProgress / ChunkProgress / AssetMeta /
CodegenState) in a new op-editor-core::codegen module. Keeps
op-editor-core wasm-clean; pipeline logic stays in op-codegen::ai
which already depends on this crate (acyclic).
2026-06-07 14:55:20 +08:00
Kayshen-X ed7608fc04 feat(codegen): scaffold ai-feature-gated pipeline module 2026-06-07 14:55:19 +08:00
Fini 82a293e7ab fix(ai): reduce generated layout overflow 2026-06-07 14:53:26 +08:00
Fini a860cd3221 fix(electron): preserve builtin providers without api keys 2026-06-07 14:24:50 +08:00
Fini bd4d310c95 ci: retry Bun install in Rust Check to survive transient infra flakes
The `Install Bun` step (oven-sh/setup-bun@v2) intermittently fails the Bun
download and reds the whole Rust Check job even when every Rust step (fmt /
build / test / clippy -D warnings) passed and windows/macos jobs are green.
Replace it with the official install script in a real 3-attempt retry loop
(no new third-party action), exporting the bin dir to GITHUB_PATH for the
JS-deps + planner-prompt drift-guard steps.

`set -o pipefail` is REQUIRED so `curl | bash` surfaces a curl download failure
(otherwise the pipeline returns bash's exit and the flake is never retried),
and an explicit ok-flag + `exit 1` after 3 attempts keeps a persistent real
failure from silently passing the step. (Codex review.)
2026-06-07 00:07:13 +08:00
Fini 1e4a7d1c54 feat(ai): inject selected style-guide palette into sub-agent prompts
Port of buildSubAgentStyleGuideInstruction (orchestrator-sub-agent-compact.ts):
look up the planner-selected guide by name (select_style_guide + the registry),
extract its palette/fonts/radius (extract_style_guide_values), and append a
tier-aware "follow these specs" block to the sub-agent system prompt so the
model uses the selected aesthetic instead of inventing a conflicting palette.

RUST ADAPTATION: TS emits $color-* refs (which it seeds into doc.variables);
Rust does not seed style-guide vars, so refs wouldn't resolve — we emit the
guide's CONCRETE HEX values instead. Same effect, correct for the Rust path.

This also CLOSES the design-system gap the earlier fix left open: when the
style-guide block is injected it REPLACES design-system, so design_system_covered
now also includes style_guide_instruction.is_some() — a named guide no longer
falls back to the generic (and conflicting) design-system skill.

Tests: a named style guide injects "VISUAL STYLE GUIDE" + drops design-system;
the no-style-guide path still drops design-system via style-defaults.
2026-06-06 23:58:03 +08:00