release: v0.2.36 - #1118
Merged
Merged
Conversation
…handling - Added `resolveOpenCodeGoCookie` function to retrieve session cookies from Chromium-family browsers. - Enhanced `ProviderQuotaService` to utilize web quota data when available, falling back to local estimates if necessary. - Updated tests to cover new functionality for OpenCode Go subscription usage and cookie resolution. - Modified error handling to provide clearer messages when credentials are missing.
Restore production audit, Graph module-boundary, and PTY readiness baselines. Keep the macOS updater recovery test on its intended unsigned-updater path.
Keep the packaged extension desktop smoke deterministic by skipping updater initialization only when KUN_PACKAGED_EXTENSION_DESKTOP_SMOKE=1. Preserve normal updater behavior for unset and all other values. Also stabilize two Graph timing/concurrency tests exposed by the final Windows validation without changing production Graph behavior.
Add a workspace-scoped reveal action across the shared API, preload bridge, trusted Workbench IPC, and preview toolbar. Require workspaceRoot and resolve a canonical regular file within the workspace before calling Electron showItemInFolder. Add accessible localized UI and boundary/security regression coverage.
Serialize provider synchronization, deletion, rename overlays, explicit re-adds, and shared model selection through one mutation queue. Selection now reads the latest registry revision after queueing, rejects deleted/tombstoned providers, and retries one 409 conflict with the returned revision. Adds concurrency regression coverage for deletion, selection, rename overlays, unrelated settings, and explicit same-ID re-adds.
…resize - Hide failed prototypes and preview-host errors instead of leaking raw paths/ENOENT into the timeline. - Add an always-visible "Open in canvas" action that imports the chat prototype into the Design workspace as a real HTML artifact (deduped via importedFromPath) and routes to the board. - Replace the hidden height-only drag strip with a discoverable corner handle resizing width and height (pointer + 4-direction keyboard), with per-mode size persistence and legacy height migration. - Add componentPrototypeOpenCanvas / resize copy for all 7 locales.
Per-session daemons run a workspace script as a long-lived child process owned by the Electron main process under the desktop-background-services lease: heartbeat/silence detection, backoff restarts, tail-able logs, explicit thread binding, and text WeChat pushes via [kun-push] control frames whose target always comes from the daemon config. - Independent schedule.daemons settings model (global kill switch + per-item) - Shared reference-counted PowerSaveController used by ScheduleRuntime and DaemonRuntime - daemon:status / daemon:restart / daemon:logs IPC plus window.kunGui bridge - Strict WeChat sendmessage business-response validation (no HTTP-200 fake success) - Schedule page gains 'Scheduled tasks | Session daemons' tabs, daemon cards, create/edit dialog with explicit WeChat channel + conversation push target, and a log drawer; i18n keys added for every active locale
Per-session daemons run a workspace script as a long-lived child process owned by the Electron main process under the desktop-background-services lease: heartbeat/silence detection, backoff restarts, tail-able logs, explicit thread binding, and text WeChat pushes via [kun-push] control frames whose target always comes from the daemon config. - Independent schedule.daemons settings model (global kill switch + per-item) - Shared reference-counted PowerSaveController used by ScheduleRuntime and DaemonRuntime - daemon:status / daemon:restart / daemon:logs IPC plus window.kunGui bridge - Strict WeChat sendmessage business-response validation (no HTTP-200 fake success) - Schedule page gains 'Scheduled tasks | Session daemons' tabs, daemon cards, create/edit dialog with explicit WeChat channel + conversation push target, and a log drawer; i18n keys added for every active locale
…resize - Hide failed prototypes and preview-host errors instead of leaking raw paths/ENOENT into the timeline. - Add an always-visible "Open in canvas" action that imports the chat prototype into the Design workspace as a real HTML artifact (deduped via importedFromPath) and routes to the board. - Replace the hidden height-only drag strip with a discoverable corner handle resizing width and height (pointer + 4-direction keyboard), with per-mode size persistence and legacy height migration. - Add componentPrototypeOpenCanvas / resize copy for all 7 locales.
…ails Chain models.dev -> kun-agent.com/api/models when the primary catalog request fails or times out, then stale cache, then an error. The fallback uses the same provider-map format, so parsing, provider matching, URL matching, and cursor enrichment are reused unchanged. - Track catalog source in the cache so ETag revalidation stays same-source and stale results report where the data came from. - Expose optional source on ModelsDevCatalogResult ok results for logs/UI. - Normalize fallback provider keys onto models.dev keys via an alias table (filled from the real endpoint during integration). - Keep the fallback request credential-free and bounded (15s timeout).
…cution Cursor custom tools only carried name/args into Kun's ToolHost, so MCP, extension, file, and command tools lost their provider id and tool kind at execution time. The bridge now keeps toolKind in the catalog spec, normalizes tool names once, and the runtime factory resolves the bridged spec before executing so providerId/toolKind reach LocalToolHost. Adds regression coverage for provenance forwarding, name normalization, per-send custom tools on resumed/forced runs, and plan-mode create_plan advertising (agent and read-only sandbox gating).
Stream recovery previously forced at least one retry even when the operator configured maxAttempts: 0, and it silently returned the raw stream_read_error/stream_truncated error once final text, tool calls, or generated output had started. Use the normalized retry budget everywhere so an explicit 0 disables all transport retries, and annotate exhausted/blocked recoveries with an explicit reason while keeping the original error code for existing consumers.
feat(schedule): add session-level daemon threads with WeChat push
Automatic compaction now counts the reserved output budget (maxOutputTokens) against the same hard cap used by the send-time guard, closing the dead zone where input sits below the soft threshold while input + output already exceeds the cap (e.g. 725733 + 131072 > 850000). When the final rebuilt request still exceeds the cap, a single heuristic send-boundary compaction runs against the latest persisted history (no summary model call), and only a second failure records context_window_exceeded with structured details. - ContextCompactor: budget-driven force compaction in planCompaction - HistoryCompactionService: outcome object, capacity passthrough, CAS retry keeps capacity constraints, allowModelSummary=false skips model summary - ModelStepService: shared capacity model, composeForwardedRequest helper, one-shot send-boundary fallback, detailed input_compressed/error details - tests: dead-zone regression, boundary equality, image-forward fallback, no-compactable-history diagnostics; docs updated
…ails Chain models.dev -> kun-agent.com/api/models when the primary catalog request fails or times out, then stale cache, then an error. The fallback uses the same provider-map format, so parsing, provider matching, URL matching, and cursor enrichment are reused unchanged. - Track catalog source in the cache so ETag revalidation stays same-source and stale results report where the data came from. - Expose optional source on ModelsDevCatalogResult ok results for logs/UI. - Normalize fallback provider keys onto models.dev keys via an alias table (filled from the real endpoint during integration). - Keep the fallback request credential-free and bounded (15s timeout).
…sion hidden frames - add undoable deleteCanvasLayers action used by the layers panel trash button and Delete/Backspace; locked/hidden layers can be deleted explicitly while lock still guards accidental geometry edits - add per-row Trash2 button to CanvasLayersPanel with canvasLayerDelete label in all 7 locales - persist boardHiddenVersionIds tombstones so a deleted HTML version frame is not recreated by board sync/reload while newer versions still appear; legacy boardHidden keeps hiding only the current version - detect removed linked frames by artifactId+kind+versionId so deleting one version is not masked by another version's frame - clear tombstones when a frame is restored (undo) via node sync
…sion hidden frames - add undoable deleteCanvasLayers action used by the layers panel trash button and Delete/Backspace; locked/hidden layers can be deleted explicitly while lock still guards accidental geometry edits - add per-row Trash2 button to CanvasLayersPanel with canvasLayerDelete label in all 7 locales - persist boardHiddenVersionIds tombstones so a deleted HTML version frame is not recreated by board sync/reload while newer versions still appear; legacy boardHidden keeps hiding only the current version - detect removed linked frames by artifactId+kind+versionId so deleting one version is not masked by another version's frame - clear tombstones when a frame is restored (undo) via node sync
feat(schedule): add session-level daemon threads with WeChat push
OpenCode Go models with a large declared max output token cap (e.g. 500k) sent max_tokens far beyond the provider context window, so the request failed with a context cap error even though input was small. - model-step-service now derives the effective output budget from the exact composed request: min(declared max output, remaining capacity under the 85% context cap) and forwards it as request maxTokens. - existing model profiles are refreshed from models.dev catalog limits instead of only filling missing values, so stale oversized maxOutputTokens metadata is corrected on re-import. - loop tests updated: input alone past the cap still fails cleanly; send-boundary rehydration overage is absorbed by the clamp.
…stics Model-request traces now carry a pipeline phase (credential/setup/model), a failure origin, and a machine-readable diagnostic code. Credential and provider-setup failures emit not_started diagnostic records instead of blank request details, and Gemini loadCodeAssist/OAuth failures are traced with sanitized request/response data bound to the same thread/turn. Runtime diagnostics harden the 'missing LLM request' case: - ENOSPC and permission write failures are classified in trace persistence and atomic writes so operators stop chasing generic fetch failed logs. - Event-loop stall reports include stall class (cpu vs hard), runtime instance/build ids, and cheap live counters (inflight/captures). - better-sqlite3 ABI mismatches are reported with compiled vs current ABI and a rebuild hint instead of a bare JSONL fallback line. - Legacy gemini-cli-subscription provider kinds migrate idempotently to gemini-cli-api; provider config errors fail closed with the offending path. - Agent Perspective shows phase, failure origin, diagnostic code, and a legacy-trace marker; renderer parses optional request payloads and not_started statuses, and locale parity gains the new labels.
… fast pipeline Add explore_agent as a first-class tool in the main agent's tool list (alongside delegate_task). It runs a read-oriented child with full bash plus an exploration allow-list (read/grep/glob/ls/repo_map/find/ web_fetch/web_search), reusing the subagent runtime so child events and SubagentCallCard rendering work unchanged. - Tool registration in kun/src/adapters/tool/explore-agent-tool-provider.ts gated by the new Lab settings (default enabled); disabled removes it from the tool list and in-flight calls fail with a clear error. - Model policy: follows the main session (model/providerId/reasoning/ serviceTier) by default; Lab settings can pin provider/model/reasoning and enable Codex fast (serviceTier=priority). Delegation runtime gains inheritSessionDefaults + serviceTier propagation through ChildRunRecord and the child executor; fast is wire-gated on Codex priority capability. - New Settings -> Laboratory -> Explore agent panel plus shared KunLabSettingsV1 types, normalizer, kun-config lab schema, GUI->runtime config mapping, and IPC patch schema (sanitize round-trip stable). - Main agent system prompt steers investigation tasks to explore_agent. - Tests: tool provider, delegation serviceTier propagation, child request gating, shared settings merge, renderer lab panel, config stability.
- Removed windowSize and threshold properties from toolStorm configuration across various files, simplifying the settings to only include the enabled flag. - Updated related documentation to reflect the changes in tool storm behavior, allowing repeated tool calls without suppression. - Adjusted tests to align with the new tool storm configuration and behavior, ensuring that the system correctly handles repeated tool calls. - Modified localization files to update descriptions related to tool storm functionality.
…localization fallback handling - Updated the cleanup logic in DaemonRuntime tests to retry file removal on busy errors, improving test reliability. - Refactored localization handling in i18n.ts to merge with English fallback, ensuring that controls render correctly without raw translation keys. - Adjusted design module boundaries test to exempt specific long files from line count checks, maintaining test integrity.
…d tests - Added `appInstallPath` to the `UninstallAppRemovalTarget` type to display the application installation location. - Updated the `resolveAppRemovalTarget` function to return the installation path for different platforms (macOS, Windows, Linux). - Modified related tests to assert the presence of the installation path in the expected results. - Enhanced the uninstall settings section to show the installation path when applicable.
…ngsSection - Modified the API key input placeholder to display masked characters when a valid API key is present, enhancing security and user experience. - Updated related tests to reflect changes in the placeholder logic, ensuring accurate representation of the input state during provider mutation lifecycle tests.
…n graph check verifier
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.
Summary
Prepare the Kun v0.2.36 stable release from develop to master.
Changes
release/release-v0.2.36.md.Tests
npm run typechecknpm run test:graph:platform(darwin/arm64)npm run buildnpm run lintnpm run testis still being evaluated locally; required native platform checks are expected from GitHub Actions.