Skip to content
Merged

0.3.7 #1236

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
168 commits
Select commit Hold shift + click to select a range
b7fbdce
fix(providers): send truly anonymous requests for OpenCore Free
XingYu-Zhong Aug 21, 2026
20e7256
fix(UserMessageBubble): improve visibility of user message actions on…
XingYu-Zhong Aug 21, 2026
ea91214
fix(agent-ui): surface awaiting-input state across the chat UI
Aug 21, 2026
23dd2c4
fix(runtime): preserve route-pool capability probes through the timin…
XingYu-Zhong Aug 21, 2026
b8e56c2
feat: implement manager replacement functionality with tests
XingYu-Zhong Aug 21, 2026
c47208f
fix(runtime): stop SSE 404 dead-ends and event-loop stalls on large t…
XingYu-Zhong Aug 21, 2026
61b3306
feat(providers): add OpenCore Free provider
XingYu-Zhong Aug 21, 2026
6fcfa92
feat: add provider quota timeout isolation tests and adjust request t…
XingYu-Zhong Aug 21, 2026
de714f5
fix(providers): use anonymous OpenCore Free access
XingYu-Zhong Aug 21, 2026
bcd9123
fix(providers): show OpenCore Free in free group without API key prompt
XingYu-Zhong Aug 21, 2026
d847a5c
feat(agent): add user_input timeout self-decision and sidebar awaitin…
Aug 21, 2026
c7a6c26
fix(composer): keep user model selection when switching threads
XingYu-Zhong Aug 21, 2026
3e08fb1
fix(chat): stop replaying live-progress UI when reopening a settled t…
Aug 22, 2026
9d4ee42
fix(chat): hoist busyUnconfirmed hooks out of conditional render paths
Aug 22, 2026
71a73a1
fix(delegation): stop Fast Context cards rendering as failed
XingYu-Zhong Aug 22, 2026
8a610e7
fix(delegation): tighten Fast Context false-failure guards
XingYu-Zhong Aug 22, 2026
f72d5e0
feat: implement batch thread state retrieval and improve user input h…
XingYu-Zhong Aug 22, 2026
45a1ed7
feat(usage): estimate provider costs from models.dev catalog pricing
XingYu-Zhong Aug 22, 2026
54e86fb
fix(chat): fit media tiles to image aspect ratio without cropping
XingYu-Zhong Aug 22, 2026
2186721
feat: enhance thread state error handling and diagnostics
XingYu-Zhong Aug 22, 2026
f634a98
fix(sidebar): freeze thread row position during a running turn
XingYu-Zhong Aug 22, 2026
7e92d35
feat(usage): estimate subscription model costs from models.dev catalo…
XingYu-Zhong Aug 22, 2026
15fff3f
fix(runtime): support multi-directory forced handoff recovery
XingYu-Zhong Aug 22, 2026
2b40a19
fix(runtime): harden state cursors and user input races
XingYu-Zhong Aug 22, 2026
655387b
fix(chat): restore composer state per thread
XingYu-Zhong Aug 22, 2026
5f08c4b
fix(chat): guard concurrent turn completion identity
XingYu-Zhong Aug 22, 2026
3f7075f
fix(providers): keep credential-less OpenCore Free usable in connecti…
XingYu-Zhong Aug 22, 2026
14584af
fix(usage): price legacy GLM Coding Plan usage as catalog zero cost
XingYu-Zhong Aug 22, 2026
2f94726
fix(providers): strip legacy OpenCore Free credentials on anonymous s…
XingYu-Zhong Aug 22, 2026
e0616e3
fix(startup): gate runtime handoff and harden recovery windows
XingYu-Zhong Aug 22, 2026
8000b03
feat: enhance sidebar row focus handling and add prewarm functionalit…
XingYu-Zhong Aug 23, 2026
b7d33ba
fix(chat): stop leaking rehype-harden [blocked] marker into file links
Aug 23, 2026
9c1d675
feat: enhance canvas conversation layout and resizing logic, improve …
XingYu-Zhong Aug 23, 2026
c11bc64
fix(store): stop guided queued messages resurrecting after thread switch
XingYu-Zhong Aug 23, 2026
bfd5964
fix(store): revalidate prewarm handle after promise settles in select…
XingYu-Zhong Aug 23, 2026
e2f95c2
fix(renderer): render whole app lifecycle through a single React root
XingYu-Zhong Aug 23, 2026
2b59f92
fix(renderer): preserve turn identity on turn_failed projection with …
XingYu-Zhong Aug 23, 2026
7ebd75c
fix(kun): attribute historical usage to per-turn provider
XingYu-Zhong Aug 23, 2026
42c58b5
fix(layout): adjust conversation panel positioning to account for mac…
XingYu-Zhong Aug 23, 2026
7288bae
feat: implement workbench boot state management with error handling a…
XingYu-Zhong Aug 23, 2026
ba8d089
fix(runtime): repair channel and thread maintenance flows
XingYu-Zhong Aug 23, 2026
7403e9c
fix(renderer): bound snapshots and preserve hydration state
XingYu-Zhong Aug 23, 2026
65b6806
fix: keep recovery paths retryable and fail closed on runtime upgrades
XingYu-Zhong Aug 23, 2026
fd26f4c
fix(usage): keep sidebar usage history readable under load
XingYu-Zhong Aug 23, 2026
6ff0762
feat: add dark UI color customization and improve live projection han…
XingYu-Zhong Aug 23, 2026
0d0a65b
fix(retention): prevent prune from overwriting turns
XingYu-Zhong Aug 23, 2026
3865074
fix(storage): recover listings and bound history queries
XingYu-Zhong Aug 23, 2026
dad2ea6
chore(hygiene): restore file-size gate and web typecheck
XingYu-Zhong Aug 23, 2026
b427054
fix(loop): stop goal continuation for user-directed questions
XingYu-Zhong Aug 23, 2026
e3aa2f6
fix(sidebar): demote viewed completed threads
XingYu-Zhong Aug 23, 2026
66bed86
fix(updater): serialize channel changes
XingYu-Zhong Aug 23, 2026
12c90b1
fix(updater): harden channel handoff
XingYu-Zhong Aug 23, 2026
2d01ac1
test(updater): split release notes coverage
XingYu-Zhong Aug 23, 2026
89b93ca
fix(tui): enable automatic session titles
XingYu-Zhong Aug 23, 2026
318350f
fix(tui): make new sessions ready immediately
XingYu-Zhong Aug 23, 2026
2b7e8fe
fix(kun): handle aborted stream disconnects gracefully
XingYu-Zhong Aug 23, 2026
530cac4
feat(profile): add design profile summary component and layout resolver
XingYu-Zhong Aug 23, 2026
5c9fc72
fix(context): classify active skill context tokens
XingYu-Zhong Aug 24, 2026
237d0ad
feat(manager): implement ManagerThreadExecutionLeaseClient with renew…
XingYu-Zhong Aug 24, 2026
9a81597
feat(create-plan-tool): enhance plan title handling and add test for …
XingYu-Zhong Aug 24, 2026
a04a7d4
feat(plan-panel): add copy path functionality for active plan and upd…
XingYu-Zhong Aug 24, 2026
1db761b
fix(pricing): add DeepSeek V4 time-based rates
XingYu-Zhong Aug 24, 2026
227d393
fix(terminal): portal new-tab menu and add clipboard shortcuts
XingYu-Zhong Aug 24, 2026
a5e2803
feat(composer): dismissible auto-expiring inline errors for voice dic…
XingYu-Zhong Aug 24, 2026
cc6ab18
feat(release-notes): 更新 v0.3.7 发布说明,新增深色主题自定义、语音听写优化等功能
XingYu-Zhong Aug 24, 2026
b3723af
feat(tests): 添加历史记录压缩测试,优化消息时间线和内存查找组件
XingYu-Zhong Aug 24, 2026
c394abd
feat(manager): 增强数据互斥和线程续租机制,添加租约过期处理
XingYu-Zhong Aug 24, 2026
65591fc
fix(runtime): replace portless stale runtime safely
XingYu-Zhong Aug 24, 2026
abf1da7
fix(updater): back off failed background checks
XingYu-Zhong Aug 24, 2026
c38e276
fix(kun): keep JSONL read and usage backfill from hiding I/O failures
XingYu-Zhong Aug 24, 2026
11fc28e
fix(kun): index JSONL usage deltas per thread so ranged queries stop …
XingYu-Zhong Aug 24, 2026
6ebb432
fix(updater): recover failed Windows installs
XingYu-Zhong Aug 24, 2026
fbb5ba1
test(manager): add tests for lease renewal and handling failures
XingYu-Zhong Aug 25, 2026
53afeae
fix(design): admit delegated child turns
XingYu-Zhong Aug 25, 2026
a29a2ab
fix(usage): rebuild corrupt file indexes
XingYu-Zhong Aug 25, 2026
a6113cf
fix(installer): abort ambiguous update scope
XingYu-Zhong Aug 25, 2026
1c767dd
fix(runtime): bound migration history verification retries
XingYu-Zhong Aug 25, 2026
52ddbf9
fix(updater): validate backup cleanup paths
XingYu-Zhong Aug 25, 2026
f0645ad
fix(updater): converge Windows update recovery states
XingYu-Zhong Aug 25, 2026
a817214
fix(runtime): fence delegated session cleanup
XingYu-Zhong Aug 25, 2026
8b5ebf2
fix(updater): isolate update health probe
XingYu-Zhong Aug 25, 2026
3e02ae5
fix(manager): preserve earliest mutex deadline
XingYu-Zhong Aug 25, 2026
e6787a8
fix(hybrid): resume failed usage backfills
XingYu-Zhong Aug 25, 2026
0a9ec7b
fix(providers): retry pending credential sync
XingYu-Zhong Aug 25, 2026
d9cbf37
fix(runtime): verify stale port owner identity
XingYu-Zhong Aug 25, 2026
e5fc788
feat(providers): wait for mutations before quit
XingYu-Zhong Aug 25, 2026
119ee97
fix(providers): lock identities and scope atomic writes
XingYu-Zhong Aug 25, 2026
5e46df8
fix(runtime): keep provider registry read-only during hot apply
XingYu-Zhong Aug 25, 2026
40652a8
fix(providers): close mutation barrier races
XingYu-Zhong Aug 25, 2026
8b7a74a
fix(providers): preserve async credential drains after rebase
XingYu-Zhong Aug 25, 2026
ae82e1f
fix(runtime): bound usage index append hashing to tail segments
XingYu-Zhong Aug 25, 2026
df06b30
fix(kun): preserve usage index cumulative high-water
XingYu-Zhong Aug 25, 2026
aa5a60b
feat(canvas): implement canvas turn outcome handling and suppress con…
XingYu-Zhong Aug 25, 2026
fa911c4
feat(assistant): promote fast context from laboratory
XingYu-Zhong Aug 25, 2026
6730bd5
perf(usage): index file ranges by byte offset
XingYu-Zhong Aug 25, 2026
758f7e8
fix(checkpoint): enforce disk quota on staged snapshots
XingYu-Zhong Aug 25, 2026
492e680
fix(updater): bound post-install recovery backups
XingYu-Zhong Aug 25, 2026
c633238
fix(updater): bound feed discovery and compare prereleases
XingYu-Zhong Aug 25, 2026
ad6d1e2
feat(thread): implement thread hydration loading and replay handling
XingYu-Zhong Aug 25, 2026
31969cb
fix(installer): recover failed Windows updates
XingYu-Zhong Aug 25, 2026
164da0c
fix(providers): apply edited credentials and endpoints
XingYu-Zhong Aug 25, 2026
77ac3bf
feat: Enhance thread live projection and hydration loading
XingYu-Zhong Aug 25, 2026
980fb63
fix(kun): canonicalize user input tool aliases
XingYu-Zhong Aug 26, 2026
9a22d68
fix(providers): migrate stale retry opt-outs
XingYu-Zhong Aug 26, 2026
34368de
fix(updater): recover failed first startup
XingYu-Zhong Aug 26, 2026
1594a5d
fix(manager): fence shared data mutations
XingYu-Zhong Aug 26, 2026
a751260
feat(provider): enhance shared provider handling with local metadata …
XingYu-Zhong Aug 25, 2026
82600b1
fix(canvas): treat unknown terminal outcome as wait, not allow
XingYu-Zhong Aug 26, 2026
3e89b0d
fix(providers): probe after provider mutations settle and resolve upd…
XingYu-Zhong Aug 26, 2026
fd62146
feat(antigravity-cli): enhance model parsing to handle whitespace for…
XingYu-Zhong Aug 26, 2026
c0a740d
feat(streaming): implement live assistant streaming context and enhan…
XingYu-Zhong Aug 26, 2026
198f667
feat: Add fastContext support in runtime configuration and tests
XingYu-Zhong Aug 26, 2026
ef5e62a
fix(usage): surface subscription reference-value estimates in usage c…
XingYu-Zhong Aug 26, 2026
6787099
feat(provider): add glm-5.3-flash to Zhipu Coding Plan presets
XingYu-Zhong Aug 26, 2026
eb08f25
feat(kun): restore long-session context elasticity with squash, prune…
XingYu-Zhong Aug 26, 2026
1d707f9
fix(runtime): parallelize tool discovery
XingYu-Zhong Aug 26, 2026
05eab27
fix(manager): serialize resource lease heartbeats
XingYu-Zhong Aug 26, 2026
dfaa783
fix(runtime): atomically persist managed config
XingYu-Zhong Aug 26, 2026
6f63524
fix(store): reconcile thread states through the batched runtime endpoint
Aug 26, 2026
b9fd913
fix(settings): protect media API credentials
XingYu-Zhong Aug 26, 2026
5a90e81
fix(threads): enforce paginated sidebar loading
XingYu-Zhong Aug 26, 2026
1d546af
fix(baseline): restore typecheck and registry coverage
XingYu-Zhong Aug 26, 2026
e0f5f37
fix(chat): load earlier history while running
XingYu-Zhong Aug 26, 2026
6aa5511
fix(runtime): bound fast context queue wait
XingYu-Zhong Aug 26, 2026
8852045
fix(startup): show window before runtime services
XingYu-Zhong Aug 26, 2026
b82c615
fix(renderer): keep goal elapsed time anchored to the running turn ac…
XingYu-Zhong Aug 26, 2026
7c86194
fix(chat): keep archive row clear of user message hover actions
XingYu-Zhong Aug 26, 2026
d0fa8b9
fix(runtime): overlay settled detached subagent state in thread timeline
XingYu-Zhong Aug 26, 2026
d380deb
feat(diagram): integrate HTML-first diagram design
XingYu-Zhong Aug 26, 2026
ff1c656
fix(agent-sdk): verify and atomically activate downloads
XingYu-Zhong Aug 26, 2026
16c5d93
fix(ci): harden installer and Linux handoff gates
XingYu-Zhong Aug 26, 2026
158d10b
fix(ci): preserve release smoke diagnostics
XingYu-Zhong Aug 26, 2026
f2b9f74
fix(antigravity): unify CLI catalog and installation
XingYu-Zhong Aug 26, 2026
e352e96
fix(gateway): require independent local API credentials
XingYu-Zhong Aug 26, 2026
5bc2665
fix(gateway): tolerate unavailable renderer bridge
XingYu-Zhong Aug 26, 2026
3806242
fix(ci): gate Chromium sandbox fallback
XingYu-Zhong Aug 27, 2026
1e1d4d3
fix(security): close gateway streaming resources
XingYu-Zhong Aug 27, 2026
686672e
feat(release): 更新 v0.3.7 发布说明,新增多项功能与修复
XingYu-Zhong Aug 27, 2026
2766fae
fix(ci): unblock Windows transaction tests, Linux sandbox smoke, and …
Aug 26, 2026
7ba9547
fix(security): close installer compatibility regressions
XingYu-Zhong Aug 27, 2026
075f3c1
fix(runtime): preserve fast context model on startup
XingYu-Zhong Aug 27, 2026
4f92a84
fix(sidebar): expand loaded threads before pagination
XingYu-Zhong Aug 27, 2026
dfc5df9
fix(renderer): enforce i18n resource contracts
XingYu-Zhong Aug 27, 2026
cb294c2
feat(chat): add governed chart visualizations
XingYu-Zhong Aug 27, 2026
bc3c8d9
fix(runtime): update hot-apply body to handle Fast Context and local …
XingYu-Zhong Aug 27, 2026
9676323
feat(startup): add Kun mascot loading experience
XingYu-Zhong Aug 27, 2026
161fdef
feat(chat): float background shell panel
XingYu-Zhong Aug 27, 2026
30e83f0
fix(startup): finalize workbench preparation handoff
XingYu-Zhong Aug 27, 2026
3d06de4
fix(runtime): restore authoritative subagent status
XingYu-Zhong Aug 27, 2026
5d4c272
fix(runtime): isolate fast context queues by session
XingYu-Zhong Aug 27, 2026
73716ee
fix(sidebar): stabilize thread pagination and refresh
XingYu-Zhong Aug 27, 2026
2e4bdfd
fix(sidebar): auto-load expanded project threads
XingYu-Zhong Aug 27, 2026
80398c7
fix(chat): enable plan image guidance
XingYu-Zhong Aug 27, 2026
8999e7d
feat(sidebar): add always-available collapse for expanded project thr…
XingYu-Zhong Aug 27, 2026
a6105c9
fix(sidebar): reset project thread preview on collapse
XingYu-Zhong Aug 27, 2026
94de70f
feat: 增加多个新功能,包括启动加载体验、背景 Shell 浮动面板和受治理的图表可视化
XingYu-Zhong Aug 27, 2026
a7639da
fix(release): unblock 0.3.7 packaging
XingYu-Zhong Aug 27, 2026
83de118
fix(release): preserve typed registry arrays
XingYu-Zhong Aug 27, 2026
cb9d74a
fix(packaging): dedupe shared JS runtimes between root and Kun node_m…
Aug 27, 2026
7054787
fix(release): stop Windows installer access violations
XingYu-Zhong Aug 27, 2026
2f3b3e3
fix(packaging): keep hoisted runtime closure unpacked
XingYu-Zhong Aug 27, 2026
5650bd7
fix(release): avoid redundant legacy payload backups
XingYu-Zhong Aug 27, 2026
91f737c
fix(release): expose Windows upgrade failures
XingYu-Zhong Aug 27, 2026
160642e
fix(release): handle optional health diagnostics
XingYu-Zhong Aug 27, 2026
f9f3ed1
fix(installer): release staged payload before cutover
XingYu-Zhong Aug 27, 2026
bf75567
fix(release): make Windows smoke hashing self-contained
XingYu-Zhong Aug 27, 2026
c678831
fix(installer): use the 64-bit transaction registry view
XingYu-Zhong Aug 28, 2026
9e1a38a
fix(release): exercise normal GUI quit in handoff smoke
XingYu-Zhong Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
70 changes: 68 additions & 2 deletions .github/workflows/daily-dev-prerelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,14 @@ jobs:
release_name="Kun Dev ${dev_version}"
head_sha="$(git rev-parse HEAD)"

node -e '
const semver = require("semver")
const [appVersion, devVersion] = process.argv.slice(1)
if (!/^\d{8}\.\d{4}$/.test(devVersion)) throw new Error(`invalid daily dev version: ${devVersion}`)
if (!semver.valid(appVersion)) throw new Error(`invalid daily app SemVer: ${appVersion}`)
if (!semver.prerelease(appVersion)?.some((part) => String(part).startsWith("dev-"))) throw new Error(`daily app version is not a dev prerelease: ${appVersion}`)
' "${app_version}" "${dev_version}"

{
echo "app_version=${app_version}"
echo "dev_version=${dev_version}"
Expand Down Expand Up @@ -95,6 +103,18 @@ jobs:
- name: Build macOS packages
run: npm run dist:mac

- name: Smoke packaged update handoff (host-native macOS)
timeout-minutes: 20
shell: bash
run: |
set -euo pipefail
if [[ "$(node -p 'process.arch')" == "arm64" ]]; then
resources="dist/mac-arm64/Kun.app/Contents/Resources"
else
resources="dist/mac/Kun.app/Contents/Resources"
fi
npm run smoke:packaged-update-handoff -- --resources "${resources}"

- name: Upload macOS artifacts
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -138,9 +158,36 @@ jobs:
- name: Install dependencies
run: npm ci

- name: Test Windows update rollback failpoints
env:
KUN_INSTALLER_TEST_ARTIFACT_ROOT: ${{ github.workspace }}\artifacts\windows-installer-transaction
run: npx vitest run src/main/windows-installer-migration.transaction.test.ts

- name: Upload Windows transaction diagnostics
if: always()
uses: actions/upload-artifact@v4
with:
name: daily-windows-installer-transaction-diagnostics
if-no-files-found: warn
retention-days: 7
path: |
artifacts/windows-installer-transaction/**/diagnostic.log
artifacts/windows-installer-transaction/**/journal.json
artifacts/windows-installer-transaction/**/transaction.json
artifacts/windows-installer-transaction/**/result-*.txt
artifacts/windows-installer-transaction/**/fixture-summary.json

- name: Build Windows installer
run: npm run dist:win

- name: Smoke Windows installer migration
timeout-minutes: 60
run: npm run smoke:windows-installer-migration -- -InstallerPath (Get-ChildItem dist/Kun-*-win-x64.exe | Select-Object -First 1 -ExpandProperty FullName)

- name: Smoke packaged update handoff (Windows)
timeout-minutes: 20
run: npm run smoke:packaged-update-handoff -- --resources dist/win-unpacked/resources

- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -183,14 +230,24 @@ jobs:
- name: Install Linux packaging dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3 xvfb xauth

- name: Install dependencies
run: npm ci

- name: Build Linux AppImage
run: npm run dist:linux

- name: Smoke packaged update handoff (Linux x64)
timeout-minutes: 20
env:
KUN_CI_ALLOW_NO_SANDBOX: '1'
run: |
# Exercise the packaged Chromium sandbox instead of bypassing it.
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
node ./scripts/configure-linux-chrome-sandbox.cjs --resources dist/linux-unpacked/resources
npm run smoke:packaged-update-handoff -- --resources dist/linux-unpacked/resources

- name: Upload Linux artifacts
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -234,7 +291,7 @@ jobs:
- name: Install Linux packaging dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3 cmake file
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3 cmake file xvfb xauth

- name: Install dependencies
run: npm ci
Expand All @@ -249,6 +306,15 @@ jobs:
--arch arm64
--dist dist

- name: Smoke packaged update handoff (Linux ARM64)
timeout-minutes: 20
env:
KUN_CI_ALLOW_NO_SANDBOX: '1'
run: |
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
node ./scripts/configure-linux-chrome-sandbox.cjs --resources dist/linux-arm64-unpacked/resources
npm run smoke:packaged-update-handoff -- --resources dist/linux-arm64-unpacked/resources

- name: Upload Linux ARM64 artifacts
uses: actions/upload-artifact@v4
with:
Expand Down
62 changes: 60 additions & 2 deletions .github/workflows/pr-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,24 @@ jobs:
- name: Install Linux packaging dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3 xvfb xauth

- name: Install root dependencies
run: npm ci

- name: Build Linux AppImage
run: npm run dist:linux

- name: Smoke packaged update handoff (Linux x64)
timeout-minutes: 20
env:
KUN_CI_ALLOW_NO_SANDBOX: '1'
run: |
# Exercise the packaged Chromium sandbox instead of bypassing it.
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
node ./scripts/configure-linux-chrome-sandbox.cjs --resources dist/linux-unpacked/resources
npm run smoke:packaged-update-handoff -- --resources dist/linux-unpacked/resources

- name: Upload Linux package
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -78,7 +88,7 @@ jobs:
- name: Install Linux packaging dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3 cmake file
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3 cmake file xvfb xauth

- name: Install root dependencies
run: npm ci
Expand Down Expand Up @@ -110,6 +120,15 @@ jobs:
--arch arm64
--dist dist

- name: Smoke packaged update handoff (Linux ARM64)
timeout-minutes: 20
env:
KUN_CI_ALLOW_NO_SANDBOX: '1'
run: |
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
node ./scripts/configure-linux-chrome-sandbox.cjs --resources dist/linux-arm64-unpacked/resources
npm run smoke:packaged-update-handoff -- --resources dist/linux-arm64-unpacked/resources

- name: Upload Linux ARM64 PR package
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -155,6 +174,18 @@ jobs:
- name: Build ad-hoc macOS packages (x64 and arm64)
run: npm run dist:mac

- name: Smoke packaged update handoff (host-native macOS)
timeout-minutes: 20
shell: bash
run: |
set -euo pipefail
if [[ "$(node -p 'process.arch')" == "arm64" ]]; then
resources="dist/mac-arm64/Kun.app/Contents/Resources"
else
resources="dist/mac/Kun.app/Contents/Resources"
fi
npm run smoke:packaged-update-handoff -- --resources "${resources}"

- name: Upload ad-hoc macOS PR packages
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -206,9 +237,36 @@ jobs:
--commit $env:GITHUB_SHA `
--target win32-x64 `
--output dist/tui-pr
- name: Test Windows update rollback failpoints
env:
KUN_INSTALLER_TEST_ARTIFACT_ROOT: ${{ github.workspace }}\artifacts\windows-installer-transaction
run: npx vitest run src/main/windows-installer-migration.transaction.test.ts

- name: Upload Windows transaction diagnostics
if: always()
uses: actions/upload-artifact@v4
with:
name: pr-windows-installer-transaction-diagnostics
if-no-files-found: warn
retention-days: 3
path: |
artifacts/windows-installer-transaction/**/diagnostic.log
artifacts/windows-installer-transaction/**/journal.json
artifacts/windows-installer-transaction/**/transaction.json
artifacts/windows-installer-transaction/**/result-*.txt
artifacts/windows-installer-transaction/**/fixture-summary.json

- name: Build Windows NSIS installer
run: npm run dist:win

- name: Smoke Windows installer migration
timeout-minutes: 60
run: npm run smoke:windows-installer-migration -- -InstallerPath (Get-ChildItem dist/Kun-*-win-x64.exe | Select-Object -First 1 -ExpandProperty FullName)

- name: Smoke packaged update handoff (Windows)
timeout-minutes: 20
run: npm run smoke:packaged-update-handoff -- --resources dist/win-unpacked/resources

- name: Upload Windows PR package
uses: actions/upload-artifact@v4
with:
Expand Down
63 changes: 61 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,18 @@ jobs:
- name: Build signed macOS packages
run: npm run dist:mac:signed

- name: Smoke packaged update handoff (host-native macOS)
timeout-minutes: 20
shell: bash
run: |
set -euo pipefail
if [[ "$(node -p 'process.arch')" == "arm64" ]]; then
resources="dist/mac-arm64/Kun.app/Contents/Resources"
else
resources="dist/mac/Kun.app/Contents/Resources"
fi
npm run smoke:packaged-update-handoff -- --resources "${resources}"

- name: Upload macOS artifacts
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -173,9 +185,36 @@ jobs:
- name: Install dependencies
run: npm ci

- name: Test Windows update rollback failpoints
env:
KUN_INSTALLER_TEST_ARTIFACT_ROOT: ${{ github.workspace }}\artifacts\windows-installer-transaction
run: npx vitest run src/main/windows-installer-migration.transaction.test.ts

- name: Upload Windows transaction diagnostics
if: always()
uses: actions/upload-artifact@v4
with:
name: release-windows-installer-transaction-diagnostics
if-no-files-found: warn
retention-days: 7
path: |
artifacts/windows-installer-transaction/**/diagnostic.log
artifacts/windows-installer-transaction/**/journal.json
artifacts/windows-installer-transaction/**/transaction.json
artifacts/windows-installer-transaction/**/result-*.txt
artifacts/windows-installer-transaction/**/fixture-summary.json

- name: Build Windows installer
run: npm run dist:win

- name: Smoke Windows installer migration
timeout-minutes: 60
run: npm run smoke:windows-installer-migration -- -InstallerPath (Get-ChildItem dist/Kun-*-win-x64.exe | Select-Object -First 1 -ExpandProperty FullName)

- name: Smoke packaged update handoff (Windows)
timeout-minutes: 20
run: npm run smoke:packaged-update-handoff -- --resources dist/win-unpacked/resources

- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -218,14 +257,25 @@ jobs:
sudo apt-get update
# build-essential + python3: node-pty ships no Linux prebuild, so it
# must be compiled from source against Electron's ABI during dist.
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3 xvfb xauth

- name: Install dependencies
run: npm ci

- name: Build Linux AppImage
run: npm run dist:linux

- name: Smoke packaged update handoff (Linux x64)
timeout-minutes: 20
env:
KUN_CI_ALLOW_NO_SANDBOX: '1'
run: |
# Keep Chromium's sandbox under test. GitHub-hosted Ubuntu restricts
# unprivileged user namespaces through AppArmor by default.
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
node ./scripts/configure-linux-chrome-sandbox.cjs --resources dist/linux-unpacked/resources
npm run smoke:packaged-update-handoff -- --resources dist/linux-unpacked/resources

- name: Upload Linux artifacts
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -267,7 +317,7 @@ jobs:
- name: Install Linux packaging dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3 cmake file
sudo apt-get install -y --no-install-recommends libarchive-tools rpm fakeroot dpkg build-essential python3 cmake file xvfb xauth

- name: Install dependencies
run: npm ci
Expand All @@ -282,6 +332,15 @@ jobs:
--arch arm64
--dist dist

- name: Smoke packaged update handoff (Linux ARM64)
timeout-minutes: 20
env:
KUN_CI_ALLOW_NO_SANDBOX: '1'
run: |
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
node ./scripts/configure-linux-chrome-sandbox.cjs --resources dist/linux-arm64-unpacked/resources
npm run smoke:packaged-update-handoff -- --resources dist/linux-arm64-unpacked/resources

- name: Upload Linux ARM64 artifacts
uses: actions/upload-artifact@v4
with:
Expand Down
9 changes: 9 additions & 0 deletions THIRD_PARTY_NOTICES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Third-Party Notices

## diagram-design adapted Skill

Kun includes a compact, DESIGN.md-integrated adaptation of the MIT-licensed
`diagram-design` version 2.6 project supplied with this integration. The
selection grammar, connector rules, HTML/SVG output contract, and selected
MIT-licensed icon primitives are adapted for Kun's progressive Skill loading
and existing HTML/canvas/SVG artifact pipeline. The complete license is shipped
at `resources/bundled-skills/diagram-design/LICENSE`.

## agent-skills adapted subagent instructions

Kun includes standalone subagent instructions adapted from the `agents/` and
Expand Down
Loading
Loading