0.2.22#719
Merged
Merged
Conversation
Add a third top-level workspace mode "design" (设计模式) after code and write: an AI design workspace with a live HTML canvas, a design-agent composer, and persistent design artifacts under .kun-design/. Mode scaffold - AppRoute 'design' + openDesign action + 3rd workspace tab - DesignWorkspaceView (canvas + agent), DesignCanvas (preview / code / live views + viewport switch), DesignSidebar (artifact list), DesignAgentPanel (composer + design-context form) - DesignSettingsV1 end-to-end (types, defaults, normalize, strict patch schema, settings section) + a thin design-thread registry - Reuses the write-prototype webview path; widens prototype-embed-registry to authorize the .kun-design artifact dir Design <-> code integration (one product, three lenses, shared design system) - Implement-this-design: hand an artifact to the coding agent (publishes DESIGN_SYSTEM.md, dispatches an implement turn into a fresh code thread) - Shared design system: design-context injected into both agents - Provenance + drift badges on artifacts - Code->design: redesign an existing file from the file preview panel - Requirement->design bridge (SDD) + live-app canvas view Verified: tsc (web+node) clean, vitest 230 passed, eslint clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Canvas - Live refresh via file watch (startWriteWorkspaceFileWatch): the agent's incremental writes refresh the canvas in place; the webview is reloaded (not remounted) and the watch retries until the artifact file is created - Device frames for mobile/tablet, light/dark background toggle, open in browser; shiki-highlighted code view Settings tab (DesignSettingsV1: 4 -> 17 fields across 4 cards) - Design system: default surface type + free-form guidelines (injected into both agents and DESIGN_SYSTEM.md) - Design agent: default model, reasoning effort, custom generation prompt - Design -> code: target stack hint, honor-design-system toggle, publish DESIGN_SYSTEM.md toggle - Canvas defaults: viewport, view, background, live-refresh, device-frame - Every field wired to behavior via the design store (loadDesignSettings) Verified: tsc (web+node) clean, vitest 226 passed, eslint clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ed tokens - Design craft baseline (anti-AI-slop, color, type, layout, motion, a11y, states) injected into every design/implement turn and DESIGN_SYSTEM.md - Design-system presets expanded 5 -> 14, each with a prompt description - Iterate in place: a selected artifact -> new version that reads the prior and applies only the requested changes; no selection -> fresh artifact - Structured tokens: corner radius / spacing density / type style, fed into the design context for both the design and code agents Verified: tsc (web+node) clean, vitest 131 passed, eslint clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a second design-artifact kind, 'graph', backed by React Flow (@xyflow/react): - design-graph data model (nodes / edges / serialize) persisted to .kun-design/<id>/graph.json - DesignGraphView editor: add / connect / rename / move nodes, debounced save; DesignCanvas renders it for 'graph' artifacts - "New canvas" in the design sidebar; per-kind artifact icons Foundation only — the run engine (node -> agent turn) is the next round. Verified: tsc (web+node) clean, eslint clean. package-lock synced with npm@10 to match CI. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…low along edges) - Graph nodes gain a kind (prompt / design), status and output path - topoSortDesignGraph (Kahn) with cycle detection - runDesignNode: dispatch a design turn from a node (its brief + upstream text) into the design thread, then await the node's HTML output - DesignGraphView "Run": execute design nodes in topological order, with live per-node status; outputs at .kun-design/<id>/<nodeId>.html Verified: tsc (web+node) clean, eslint clean. Runtime (React Flow + live agent runs) needs a manual app check. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Node canvas: - inline node-output preview (webview panel, replaces external browser) - hover delete button on nodes (beyond the Delete key) - empty-graph hint Sidebar: - delete an artifact; version count (vN) on iterated artifacts Composer: - iterate/new + busy hints (surface the in-place iteration model) - brand-color picker swatch; collapsible design-context form Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…r, minimap, rename) Reliability: - Artifact list rehydrates from disk on load — per-artifact .kun-design/<id>/meta.json sidecars (written on every mutation) + reconstruct-from-files fallback; removal deletes the on-disk dir and a session guard stops a not-yet-flushed delete from resurrecting it. Fixes the in-memory-only list losing artifacts on reload. - fileError is now surfaced (dismissible banner) and wired to graph-run / export failures. Export (mirrors write-export): - New design:export-prototype IPC — export a prototype to standalone HTML or PDF (hidden BrowserWindow printToPDF), via a native save dialog defaulting to the title. Node canvas: - React Flow minimap + grid background. Sidebar: - Inline artifact rename (double-click), persisted to meta.json. Scouted internals with a multi-agent pass; hardened against a multi-agent adversarial review (removeArtifact race, always-rehydrate, stable sort, rename re-entry guard). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Snapshots a hash of the DESIGN_SYSTEM.md published at implement time onto the artifact; on load the store re-reads DESIGN_SYSTEM.md and compares, so an artifact implemented against an older shared design system now shows a distinct "code drift" badge (⚠) alongside the existing design-drift (⟳) and in-sync (✓). Persisted in the meta.json sidecar; refreshed on every design-mode mount. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Seeds a built-in design skill into ~/.kun/skills/design-system/ once at startup (idempotent marker, mirrors ensureBundledUiPlugins). skill.json + SKILL.md carry design-system-first thinking and the anti-AI-slop craft baseline, so the agent auto-gets design guidance (triggers on design prompts / loadable via load_skill). Honors deletion; appears after the next runtime restart. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds an 'image' node kind alongside prompt/design. When the graph runs, an image node dispatches a generate_image turn (brief + upstream context) targeting .kun-design/<graphId>/<nodeId>.png, waits for the file to appear, then displays it inline via readWorkspaceImage. Renderer-only and fail-safe: if the agent doesn't land the image at the path, the node just shows an error — nothing breaks. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comprehensive docs/DESIGN_MODE.md covering the mode end to end: architecture + file map, artifact model & durability (rehydration), the design loop, the design↔code integration (implement / reverse-design / shared design system / bidirectional drift / unified preview), the node canvas + execution engine, settings (incl. the 9-touchpoint landmine), export, the built-in design skill, design context / tokens / craft, positioning vs the reference projects, extension seams, the deferred MCP plan, and runtime-only behaviors to verify. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add the third top-level workspace mode (design): AI design workstation with a live HTML canvas, organic design<->code integration, a node canvas + execution engine, durable artifacts, HTML/PDF export, and a bundled design skill. See docs/DESIGN_MODE.md. # Conflicts: # src/main/claw-runtime.test.ts # src/main/claw-schedule-mcp-config.test.ts # src/main/claw-scheduled-task-detector.test.ts # src/main/index.ts # src/main/ipc/app-ipc-schemas.ts # src/main/ipc/register-app-ipc-handlers.test.ts # src/main/kun-process.test.ts # src/main/kun-regression.test.ts # src/main/runtime/kun-adapter.test.ts # src/main/runtime/managed-runtime-idle.test.ts # src/main/schedule-runtime.test.ts # src/main/services/skill-service.test.ts # src/main/services/write-inline-completion-service.test.ts # src/main/settings-store.ts # src/main/upstream-models.test.ts # src/renderer/src/agent/kun-runtime.test.ts # src/renderer/src/agent/runtime-client.test.ts # src/renderer/src/components/Workbench.tsx # src/renderer/src/components/chat/Sidebar.tsx # src/renderer/src/components/chat/WorkspaceModeTabs.tsx # src/renderer/src/components/settings-section-claw.test.ts # src/renderer/src/components/settings-utils.ts # src/renderer/src/lib/claw-model-options.test.ts # src/renderer/src/store/chat-store-app-actions.ts # src/renderer/src/store/chat-store-types.ts # src/shared/app-settings-normalize.ts # src/shared/app-settings-provider.test.ts # src/shared/app-settings-types.ts # src/shared/app-settings.test.ts
The sidebar used a bare pt-2 wrapper instead of the SidebarFrame title-bar spacer, so the mode tabs collided with the macOS window controls. Add the same ds-drag titlebar spacer + ds-titlebar-safe-block (42px on macOS, 0 elsewhere) the code/write sidebars get, so the tabs sit below the traffic lights. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Nodes wouldn't drag and edges wouldn't connect because #root is -webkit-app-region: drag (the whole app is a window-drag region; only .ds-no-drag and native controls are exempt) and the React Flow pane was not marked ds-no-drag — so dragging the canvas dragged the window. Mark the canvas wrappers ds-no-drag. Redesign the (crude) nodes: fixed-width cards with a colored header (icon/type/status, doubling as the drag handle), prompt/design/image color coding, a selected ring, and larger white-ringed handles. Polish the canvas: self-connect guard, smoothstep edges, wider connectionRadius, grid snapping, edges animated while running, 3-color minimap, hidden lock toggle. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
"Implement in code" now opens an in-page side panel on the design page instead of navigating to code mode (mirrors the write assistant: MessageTimeline + FloatingComposer). The coding agent runs the implement turn in a code thread shown in the panel; the design agent panel is hidden while it's open, and "Back to design" closes it (the code thread persists). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…de zoom, grid) Tune the React Flow node canvas to feel like Excalidraw's infinite canvas (React Flow already does pan/zoom + zoom-to-cursor, so this is config only): - Wide zoom range 0.1–4 instead of the default 0.5–2 that felt bounded. - panOnScroll: two-finger / wheel scroll now pans; ctrl+scroll or pinch zooms. - zoomOnDoubleClick off (no accidental zoom). - Two-tier "graph paper" grid (fine dots + a major line every 5 cells), semi-transparent so it reads on both light and dark canvases. Runtime feel — verify with an app reload (typecheck/lint pass but can't test trackpad pan/zoom here). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the ComfyUI-style node graph with a Penpot-inspired SVG design canvas where users directly draw, select, move, and resize shapes. Data layer: - 5 Zustand stores: shape (flat objects map + undo), viewport (viewBox zoom/pan), selection, undo (50-entry stack), design-assistant - 6 shape types: rect, ellipse, text, image, frame, group - Hit testing, persistence (canvas.json), keyboard shortcuts - Tool handler pattern: select, rect, ellipse, text, frame, hand SVG rendering: - CanvasViewport with viewBox-driven zoom/pan (no CSS transforms) - Per-type shape renderers (foreignObject for text) - Dot grid, selection overlay with 8 resize handles, marquee Design AI Rail (right panel, 380px): - design-assistant-store.ts: own threadId, blocks, input, busy state - Completely independent from global useChatStore - Own thread creation via KunRuntimeProvider, SSE subscription - Message timeline with user/assistant bubbles - Replaces bottom floating DesignAgentPanel when in design mode Integration: - 'canvas' artifact kind, sidebar creation button, layers panel - DesignCanvas routes canvas artifacts to CanvasViewport - i18n keys for tools, layers, rail (en + zh) - All 1586 tests pass, typecheck clean Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ingle design surface User feedback: node canvas adds noise and isn't what people expect when they enter 设计 mode. The new SVG design canvas covers the design-by-drawing use case; HTML drafts cover the LLM-generates-the-prototype use case. Node canvas (React Flow prompt→design→image graph) is removed entirely. Removed: - DesignGraphView.tsx, design-graph.ts, design-graph-run.ts - 'graph' kind from DesignArtifactKind and all branches - createDesignGraph in Workbench, onNewGraph prop on DesignSidebar - promoteGraphOutputToDesignArtifact (only used by DesignGraphView) - mode='graph' branch in DesignAgentPanel (now html-only) - ~25 graph-specific i18n keys (en + zh) Result: sidebar shows just 'New design' (HTML) + 'New design canvas' (SVG); canvas artifacts route to CanvasViewport; HTML artifacts keep the existing viewport/code/live preview flow. Typecheck clean (excluding pre-existing settings-section-providers error), 1581 tests pass. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3 P0 bugs that made the canvas unusable end-to-end:
1. Data flow loop never closed (CanvasViewport)
- loadCanvasDocument never called → canvas always showed empty doc
- persistCanvasDocument never wired to store updates → edits lost on reload
- artifact switch left stale doc/selection/zoom/undo in stores
Fix: total useEffect([artifactId, workspaceRoot]) that loads from disk
(falling back to createEmptyDocument), resets selection/viewport/undo,
and subscribes to store changes for debounced persist. Penpot pattern:
initialize-page* / finalize-page + workspace-cache.
2. Tool state leaked via module-level lets (rect/ellipse/frame/select/hand)
- drawing/previewId/dragMode/startX/lastX were module globals → every
tool factory call shared state, so rapid tool switches or remounts
resurfaced stale state.
Fix: move all let into createXxxTool() closure. Each handler instance
gets its own state. Penpot pattern: workspace-drawing in global state,
tool change = state replacement.
3. Resize handles were dead (SelectionOverlay + CanvasViewport)
- overlay-layer was pointerEvents:'none' (which in SVG also kills
descendants in some renderers); handles had no onPointerDown anyway.
Fix: removed overlay-layer pointer-events override; added onPointerDown
on each handle wired to a new resize loop that tracks startBounds +
shape starts, attaches window pointermove/up, scales shapes via
scaleShapesToBounds, and pushes one consolidated undo on release.
New pure-function module canvas-resize.ts with 10 unit tests covering
computeResizedBounds (8 handle directions, shift-constrain, clamping)
and scaleShapesToBounds. Penpot pattern: g.resize-handler
pointer-events:auto + on-pointer-down per handle.
Plus P1 polish:
- Empty/loading document guard: CanvasViewport now shows a loading state
until docLoaded && root exists (no more crash on null doc).
- Pass workspaceRoot + artifactId as props from DesignCanvas (was: read
from store globally) for explicit data flow.
Typecheck clean. 1591 tests pass (was 1581 — 10 new resize tests).
Verification checklist for the user to run in the Electron shell:
1. New design canvas → draw rect → seen
2. Switch to HTML draft → switch back → rect still there
3. Drag se handle → grows; Cmd+Z → original size
4. Restart app → rect persisted
5. Press R in AI Rail textarea → 'R' typed, no rect
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Visible bugs reported from the user's screenshot:
1. Dragging on the canvas dragged the whole Electron app window
2. The AI Rail was bg-white + Tailwind blues — looked grafted-on
3. No sidebar collapse button anywhere in design mode
4. AI Rail composer had no model/provider selector
Fixes:
1. CanvasViewport: add ds-no-drag to the root so the Electron
ds-drag region on the workbench shell stops eating pointer events
in the canvas
2. DesignAIRail: rewrite with kun palette
- bg-white / dark:bg-[#1f242c] (matches DesignAgentPanel)
- border-[var(--ds-sidebar-row-ring)]
- accent #3b82d8 (mascot blue) for send button + user bubbles
- shadow-inset borders consistent with rest of design mode
- ds-no-drag on root, focus chrome + send button
3. Sidebar collapse:
- DesignSidebar accepts onToggleLeftSidebar, forwards to
SidebarFrame as onCollapse — gives the in-sidebar toggle
- CanvasViewport renders a SidebarTitlebarToggleButton in front
of CanvasToolbar so users can re-expand when sidebar collapsed
- DesignCanvas HTML toolbar also renders the toggle (with
ds-window-controls-safe-inset clearance when collapsed)
- DesignWorkspaceView threads leftSidebarCollapsed +
onToggleLeftSidebar through to DesignCanvas
- Workbench passes onToggleLeftSidebar to DesignSidebar
4. AI Rail composer: drop in FloatingComposerModelPicker (same
component used by chat + write composers); sources composerPickList
and composerModelGroups from useChatStore, assistantModel +
assistantProviderId from useDesignWorkspaceStore. Configure-
providers link opens settings.
i18n: designRailSend added in en + zh.
Typecheck clean (still only pre-existing settings-section-providers
error unrelated to canvas). 1591 tests pass.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tor/text/ops
Phase 0 — foundations:
- withUndoGroup(label, fn) transaction primitive (nested calls reuse outer
group, single Cmd+Z reverts the whole batch)
- selection-before/after snapshot on every CanvasChange; undo/redo restore
the selection state from the time of the action
- atomic writeWorkspaceFile (tmp + rename); crash mid-write no longer
corrupts canvas.json — leaves the previous version intact
- shapeGeometry(shape) → { selrect, points }, computed lazily (≤200 shapes
× 60Hz trig is cheap, not worth caching). hitTest uses pointInPolygon
with selrect coarse filter — rotated shapes are now selectable on their
visual body, not the unrotated bbox
- applyPatches reverses for undo so chained changes revert in the right
order
Phase 1 — rotate handles:
- 4 transparent 20px corner-outside handles per selection
- canvas-rotate.ts pure-fn module: angleFromPivot + computeRotation
(Shift=15°, Cmd/Ctrl=45° snap, [0,360) normalize)
- rotation uses pivot at selection bbox center; pointermove updates each
shape independently so multi-select rotates around the collective center
Phase 2 — align / distribute floating toolbar:
- canvas-align.ts: 6 axes (left/h-center/right/top/v-center/bottom) +
2 distribute (horizontal/vertical), unit-tested
- AlignmentToolbar appears top-right of canvas when ≥2 selected;
distribute buttons disabled until ≥3
- both wrapped in withUndoGroup so each operation = one undo entry
Phase 3 — real snap (kills the lying toggle):
- canvas-snap.ts: O(n) edge + center + grid snap with threshold = 8px/zoom
- select-tool move integrates snap using collective bbox vs static shapes
- 1px pink (or grey for grid) guide lines render during drag
- Magnet button in toolbar actually toggles snap on/off
Phase 4 — Properties Panel (right inspector):
- 260px panel right of canvas, only shows when shapes are selected
- Sections: Position & size, Fill, Stroke, Corner radius, Opacity, Text
(text-only when all selected are text shapes)
- Multi-select shows '—' placeholder for mixed values; edits apply to all
- Every commit wrapped in withUndoGroup for clean undo
Phase 5.1 — text editing:
- TextShape becomes contenteditable when editingId matches
- Double-click in CanvasViewport → setEditing + select shape
- Esc cancels, Cmd+Enter commits, blur commits
- All commits go through withUndoGroup('edit-text')
Phase 5.2-5.3 — ShapeOps + semantic naming:
- shape-ops.ts: Zod-validated discriminated union of 8 ops
(add/update/delete/reparent/move/resize/align/distribute)
- executeOps(rawOps, label) wraps the whole batch in withUndoGroup
- Structured errors with code + suggestion (lists available shapes
when a referenced id is missing — AI can self-correct)
- addShape auto-renames duplicates per parent ('Card', 'Card 2', 'Card 3')
Typecheck clean (only pre-existing settings-section-providers error).
1639 tests pass (vs 1591 before, +48 new canvas tests).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The AI Rail used to be free-text only. Now it round-trips structured canvas
operations end-to-end:
1. Canvas turn prompt (design-turn-prompt.ts buildCanvasTurnPrompt):
- New canvas-target branch teaches the AI ShapeOps vocabulary
- Embeds a token-economic snapshot of the current canvas so the AI sees
shape names/ids/positions without bbox/render noise
- Example fenced response shows the expected output shape
2. Canvas snapshot (canvas-snapshot.ts):
- snapshotCanvas(doc) walks the tree, emits {id, name, type, x/y/w/h,
rotation?, parentName, textContent?} per shape — rounded to 2 decimals
- 4 unit tests cover empty doc, rotation gating, text content, parent chain
3. Renderer-side ShapeOps applier (design-assistant-store applyAiShapeOps):
- Scans assistant message for fenced JSON blocks
- Parses each block as an array, runs through executeOps (which validates
with Zod and wraps in withUndoGroup)
- Auto-applied at turn_complete — single user message → AI batch → one
undo entry
4. Visual feedback (SelectionOverlay):
- lastAiAffectedIds + lastAiActionAt tracked in design-assistant-store
- 800ms cyan glow around affected shapes after AI batches commit
- Auto zoomToFit when shapes are outside the current viewport (so the
user actually sees what the AI did)
5. DesignAIRail send path:
- Snapshot captured at send time when artifact is a canvas
- Passes snapshot to buildDesignTurnPrompt only on canvas targets
The structured error path (code/suggestion) was already in shape-ops.ts so
the AI's bad ops self-correct without exceptions bubbling up.
Typecheck clean. 1643 tests pass (was 1639 — +4 snapshot tests).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The right-side Design AI Rail was always 380px wide with no way to reclaim horizontal space. Added a chevron toggle that flips between full panel and a 36px strip: - aiRailCollapsed: boolean + setAiRailCollapsed in design-workspace-store, persisted via browser-storage under kun.design.aiRailCollapsed.v1 so it survives reload - Expanded mode: PanelRightClose button at the start of the header, click to collapse - Collapsed mode: 36px-wide strip with PanelRightOpen button + the chat icon + a spinner when busy, click to re-expand - en + zh i18n: designRailCollapse / designRailExpand Typecheck clean. 1643 tests still pass. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The design page showed TWO near-identical input boxes whenever an HTML draft or the empty state was active: the bottom-center floating composer (DesignAgentPanel → sendDesignTurn → global chat thread) and the right- side AI Rail (DesignAIRail → design-assistant-store). Same placeholder, both labelled 新建设计, two different backends. Confusing and redundant. Consolidate everything onto the right-side AI Rail: - design-workspace-store.prepareHtmlTurn(brief): encapsulates the HTML artifact lifecycle that used to live in sendDesignTurn — iterate the active HTML artifact (new version + basePath) or create a fresh one. - DesignAIRail.handleSend: single entry point. Canvas artifact → snapshot + ShapeOps; anything else → prepareHtmlTurn + HTML turn prompt. The agent writes the file; the existing webview file-watch picks it up. - design-assistant-store.sendDesignMessage now forwards model + reasoningEffort to sendUserMessage — the Rail's model picker was previously decorative (the send ignored it). Now HTML drafts and canvas ops both honor the selected model. - DesignCanvas: removed the bottom DesignAgentPanel; the empty-state CTA (描述一个设计) now expands + focuses the Rail textarea; the center 'Designing…' state reads designBusy so feedback survives the backend switch. - Dropped the now-unused input/setInput/onSubmitPrompt prop chain through DesignWorkspaceView, deleted Workbench.sendDesignTurn, deleted DesignAgentPanel.tsx. Net: one conversation surface for all design work — canvas + HTML — with history, model picker, and collapse all in one place. HTML generation now runs through the Rail's independent design thread instead of the global chat thread (the unification the original plan intended). Typecheck + lint clean. 1643 tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(supply-chain): add runtime package audit
feat(renderer): add mathematical expressions render support
fix(memory): confirm and restore records
feat(tools): freeze virtual catalog per turn
feat(chat): export assistant responses
fix(mcp): resolve nvm npx for stdio servers
fix(tests): stabilize Windows test runs
…token fix(runtime): secure managed Kun runtime settings
# Conflicts: # src/main/index.ts
…tions - Introduced new settings for tool output limits including max lines and max bytes in the agents settings section. - Added UI controls for configuring tool output limits in the settings. - Implemented image generation quality options with corresponding translations and UI elements. - Enhanced image generation settings to include quality as a configurable parameter. - Updated tests to cover new functionality for tool output limits and image generation quality. - Refactored related settings and store actions to accommodate new features.
… enhance instruction runtime - Added support for injectedInstructionSources and instructionInjectionBytes in thread and turn services. - Implemented tests for instruction runtime to validate loading and handling of AGENTS.md files. - Enhanced the child agent executor to inject instructions from AGENTS.md into requests. - Updated settings and diagnostics to include instructions capability and its status. - Improved UI components to display injected instructions and their sources. - Added localization for instructions-related strings in English and Chinese.
fix(validation): restore typecheck and timeline error tests
…tates and improve design document handling
… artifact path resolution
…automatic repairs
…iew-workspace fix(chat): use thread workspace for file previews
feat(memory): add markdown import and export
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.