Skip to content

release: v0.3.6 - #1217

Merged
XingYu-Zhong merged 84 commits into
masterfrom
develop
Aug 21, 2026
Merged

release: v0.3.6#1217
XingYu-Zhong merged 84 commits into
masterfrom
develop

Conversation

@XingYu-Zhong

Copy link
Copy Markdown
Collaborator

Summary

Release Kun v0.3.6 from the validated develop branch.

Release contract

Validation

  • Release version computation on the current develop head: v0.3.6
  • fix(threads): let the sidebar summarize a session #1204 focused regression tests and changed-file lint passed before merge
  • Awaiting this PR’s current-SHA native packaging matrix before merge and automated release.

XingYu-Zhong and others added 30 commits August 16, 2026 22:56
…roxy

Image, speech, music, and video generation clients called the global
fetch directly, so a provider reachable only through the Settings >
Providers network proxy failed for media tools while chat worked.

ResolveCapabilityProviderCredential now carries the materialized
connections proxy URL, the tool providers forward it alongside
apiKey/headers, and every media client accepts an injected fetch built
by createProxyFetch, sharing the chat model request stack. Proxy unset
keeps direct connections unchanged.
POST /v1/threads/{id}/summarize was missing from the Main IPC runtime
allowlist, so every "Summarize" click was rejected inside Main and never
reached the runtime. The renderer folded that rejection into one fixed
"could not summarize" string, which is why the failure left no runtime
log to diagnose.

- allowlist the summarize endpoint for POST only
- report why a summary failed (provider text, timeout, empty output,
  aborted) instead of a blanket 503 with no content
- give the user-initiated summary 90s in the runtime and 120s in Main,
  up from the 20s background budget
- show the generated summary with a copy action, and reconcile the
  sidebar when the runtime no longer stores the thread
- add "Copy session ID" to the thread context menu

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
While a Graph run executed a compiled plan, the composer kept showing the
originating plan checklist as live step progress ("Step 1 / 19") even though
the run had already accepted 7 of its 11 nodes. A healthy run looked stalled,
and the Graph card one row below it reported a contradicting number.

The checklist is seeded once from the plan markdown when the user saves a plan
and is never written again during a Graph run: Graph nodes carry no reference
to thread todos in either direction, so no checklist-to-node mapping exists to
synchronise. The authoritative count was already on screen — the Graph card
reports accepted nodes — so the defect was the contradiction, not a missing
metric.

While a live Graph run owns the thread the checklist chip now presents itself
as a static plan outline ("Plan outline · 19 steps"), says so in its accessible
name, and explains in its detail popover that Graph reports execution progress.
The new selector shares selectComposerGraphRun with the Graph card so the two
surfaces can never disagree about which one is authoritative. The demotion is
scoped to non-terminal runs: a thread that later runs ordinary todo-writing
turns keeps its own step progress.

Adds a desktop end-to-end harness that seeds a real 19-item GUI plan through
the runtime, puts an 11-node Graph run on the thread, and records screenshots
plus a WebM/MP4 walkthrough of the four states.

Fixes #1202

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The checklist demotion read the Graph store directly while the Graph card
is gated on showGraphProgress. If Graph Mode is disabled mid-run (or the
code-execution surfaces are hidden), the checklist stayed demoted to a
plan outline and its popover hint pointed at a Graph card that was not
rendered.

Pass the same enabled flag the Graph card receives so both surfaces
demote and report together.
…rogress-staleness

fix(chat): stop the plan checklist from faking Graph progress
The policy proxy raced an unbounded dns.lookup before answering CONNECT,
so an unresponsive VPN DNS made browser_use open hang forever with the
preview spinner stuck on loading. Bound the lookup with a 10s deadline
(dns_timeout), surface the underlying failure detail in navigation_failed
results, and audit successful opens for future diagnosis.
…gemini-3.7 ids

Gemini CLI subscription providers were never persisted or selectable:
the shared-connection baseUrl-optional whitelist omitted the
gemini-cli-api kind, so the sync loop skipped the provider entirely and
registry projections dropped it from AppSettings, which surfaced as
"connection works but the provider cannot be saved / used on the main
page".

- Add sharedConnectionBaseUrlOptional and use it for connect, catalog
  commit, credential connect, and settings projection paths
- Add gemini-cli-api to the renderer SharedModelConnection kind union
- Bootstrap the Code Assist catalog with gemini-3.7-pro-preview and
  gemini-3.7-flash-preview wire ids (shared preset + provider-catalog)
- Merge synced catalogs with user-added ids via
  geminiCliApiCatalogPatch, with a conservative vision/tool-calling
  profile for unknown ids
Unified Workbench Design follow-ups resolved the task lock from the
render-time thread snapshot. After a lean list refresh or restart the
snapshot lost designProfile, so the next Design turn minted a fresh
document/board profile and Runtime admission rejected it with
design_profile_locked (#1206).

Resolve the authoritative lock from the thread detail before submit,
pin the locked board instead of creating a new drawing, omit profile
fields when the identity cannot be rebuilt so admission reuses the
lock, keep lean list refreshes from wiping the local lock, self-heal
the store after a 409, strip Design profile fields from Code sends,
and enrich the 409 details with the locked document/board and
mismatch kind.
… completion

Route pools now require a content commit point before marking a target
healthy: usage-only, completed-only, and empty streams fail over to the
next target and end with the aggregate exhaustion error when none
produces content.

The round outcome coordinator adds a terminal model_empty_response
safety net after bounded recovery windows decline to act, persisting a
failed turn with an error item, an error event, and turn_failed instead
of turn_completed. ModelRoundEngine also synthesizes a diagnostic when a
provider ends with only completed(stopReason=error) and no error chunk,
so failed turns always carry a renderable message.
XingYu-Zhong and others added 27 commits August 20, 2026 00:59
- Implemented a popover for displaying detailed turn usage information.
- Added new types for reference price breakdown and associated items.
- Created utility functions for formatting turn usage costs and counts.
- Updated the TurnUsageRow component to handle visibility and placement of the popover.
- Introduced tests for popover placement calculations.
- Enhanced localization files with new strings for turn usage details.
- Refactored existing code for better readability and maintainability.
…ponents

- Implemented local cost visibility in ProviderQuotaPanel when upstream probe fails.
- Enhanced ProviderQuotaPanel to display local cost summary using ProviderLocalCostSummaryView.
- Updated tests for ProviderQuotaPanel to validate local cost behavior.
- Introduced new types for local cost coverage and summary in provider-quota.ts.
- Added styles for local cost display in provider-quota-panel and tray-provider-quota.
- Extended thread usage hooks to handle local cost estimates and coverage.
- Updated localization files to include new strings for local cost features.
- Removed legacy properties from DurableDesignCanvasTurnCompletion type.
- Simplified image placement logic in placeGeneratedImagesForTurn function.
- Enhanced image result handling by including width and height in GeneratedImageResult type.
- Updated tests to reflect changes in image generation and placement behavior.
- Improved prompt messages for clarity on image generation workflow in design turns.
- Ensured successful image materialization is handled correctly during turn completion.
…unctionality

- Updated tooltip text for the restart action to provide clearer user guidance.
- Added support for tooltip wrapping to accommodate longer messages.
- Modified aria-labels to reflect the new functionality and improve accessibility.
- Implemented internationalization for the tooltip text in Chinese.
- Enhanced test coverage for tooltip behavior and restart actions.
- Introduced thread-specific right panel expansion state management.
- Added utility functions for managing thread right panel expansion preferences.
- Updated styles for tooltip wrapping in the top bar action buttons.
- Refactored dev preview detection to support new auto-open signal structure.
- Improved chat store maintenance actions to clear thread-specific preferences.
- Introduced `placeRectNearAnchorAvoiding` function to improve placement of revisions beside their source images.
- Updated `placeGeneratedImagesForTurn` and `materializeHistoricalGeneratedImages` to support preserving target revisions.
- Modified `ensureGeneratedImageOnCanvas` to handle image revisions more effectively.
- Enhanced image annotation dispatch to include image edit reference paths and prevent unnecessary updates to source images.
- Updated design turn prompts to clarify handling of existing images and revisions.
- Added tests to validate new behavior for image annotations and design turn submissions.
- Refactored design locked profile functions to wait for canvas document readiness.
- Adjusted styles for composer status overlay for better visual alignment.
- Introduced `setSpreadsheetMutations` action to manage spreadsheet mutations in the document state.
- Added `convertSpreadsheet` and `reloadSpreadsheetConflict` actions for handling spreadsheet conversion and conflict resolution.
- Updated `WriteDocumentSession` and `WriteWorkspaceState` types to include spreadsheet-related properties.
- Enhanced document saving logic to accommodate office documents with spreadsheet formats.
- Implemented new workspace spreadsheet types and constants for mutation limits and styles.
- Updated app settings to include new model request retry defaults versioning.
…node_modules

Move @univerjs/presets, @univerjs/preset-sheets-core, pptx-preview, and docx-preview to devDependencies. Vite already compiles them into out/renderer, so electron-builder was shipping a duplicate production copy inside app.asar, pushing the macOS arm64 app to 947.7 MiB, the DMG to 305.4 MiB, and the ZIP to 319.9 MiB. Add a renderer-bundled-only regression check to check-packaged-runtime-dependencies.cjs so these packages cannot silently re-enter the production dependency graph.
- Added `evaluateSpreadsheetExternalRebase` function to handle external changes in XLSX previews.
- Introduced `SpreadsheetExternalRebase` type to encapsulate rebase results.
- Enhanced `diffUniverWorkbook` to return base fingerprints for mutations.
- Updated localization files to include new messages related to external conflicts and spreadsheet actions.
- Implemented conflict resolution logic in `createWriteSpreadsheetActions` to manage local and external changes.
- Added tests for spreadsheet editor coordination and conflict resolution.
- Refactored workspace store types to accommodate new properties for handling spreadsheet conflicts.
…rize-ipc-allowlist

fix(threads): let the sidebar summarize a session

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR checks failed. Please fix the failing CI jobs before merging.

Failed jobs:

  • Build ad-hoc macOS packages (PR)

Run details: https://github.com/KunAgent/Kun/actions/runs/32392018124

@XingYu-Zhong
XingYu-Zhong merged commit 993f315 into master Aug 21, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants