Skip to content

chore: remove upstream desktop, web app and hosted platform packages - #15151

Merged
marius-kilocode merged 1 commit into
v2from
prune-upstream-apps
Oct 16, 2026
Merged

marius-kilocode merged 1 commit into
v2from
prune-upstream-apps

Conversation

@marius-kilocode

Copy link
Copy Markdown
Collaborator

What Problem This Solves

v2 carries upstream product areas that Kilo does not ship: the Electron desktop app, the web app, and the hosted opencode.ai platform. Each upstream sync has to merge, review, install, and test them. After the v2.0.30 sync (#15136), the packages/app component tests fail on Windows CI and needed a temporary guard.

v1 removed the same areas (#253, #9845, #10381, #11450) and keeps them out with skipFiles. On v2, skipFiles was empty.

Why This Change Was Made

Removed (3,339 files, about 616k lines):

Area Paths
Desktop and web app packages/desktop, packages/app, packages/gui-extensions, packages/session-ui, packages/storybook
Hosted platform packages/console, packages/web, packages/posts, packages/function, packages/stats, infra/, sst.config.ts, salesforce/
Upstream VS Code extension sdks/vscode

packages/app imports assets from packages/desktop, and session-ui and storybook are used only by app (their component tests import packages/app). So they go together. No package in the CLI, SDK, or Kilo plugin closure depends on any of them.

How future syncs stay free of manual work:

  • All removed paths are in skipFiles (script/upstream/utils/config.ts). During a sync, transforms/skip-files.ts removes upstream changes and additions under these paths, which also resolves their modify/delete conflicts.
  • script/upstream/utils/shared.ts does not count skipFiles paths, so the shared-patch counter stays at its baseline (deletedFiles: 0).
  • transform-package-json.ts re-applies the root lint script, like the root dev script.
  • Leftover references in shared upstream files are not edited, because they are harmless and each edit is a new conflict point: turbo.json task names (Turborepo ignores a task for a missing package, checked with 2.10.2), workspace globs (Bun accepts a glob with no match), dev:* scripts, .oxlintrc.json overrides, nix files, script/publish.ts.

Shared upstream files changed (all rung 3, listed in shared-patches.json):

File Change Why no lower rung
packages/cli/script/app-assets.ts Build an empty web UI archive when packages/app does not exist. Covers build.ts and build-node.ts Build scripts call buildAppArchive directly
packages/cli/script/service-smoke.ts Accept a 404 for the web UI shell Smoke script has no option to skip the check
.github/workflows/test.yml if: false on the affected job, so the e2e job (app and session-ui only) is skipped. One job-level line, so upstream changes to the e2e steps still merge. The temporary Windows guard from #15136 is reverted to upstream Job conditions cannot be set from outside the file
package.json Root lint runs only oxlint (the ast-grep and sdk-docs.ts steps check gui-extensions) JSON, root scripts

migration-tracking/plans/v2-plan-delta-2026-10-13.md section 7 records the decision. It replaces "keep inert" for F-V2-055 / U-E0-04 and covers the desktop and web app part of Q-PROD-01 (U-E9-15).

User Impact

  • The CLI binary embeds no web UI. Non-API server paths return 404, as on v1. The TUI, run, and the API are unchanged.
  • The TUI /pair (/web) command still exists and its links lead to that 404. Hiding it is follow-up work in U-E9-15.
  • Kept for now: packages/ui (TUI sounds, VS Code port), services/, nix/, install, github/. Their removal waits for the release lane (U-E3-06, U-E3-07).

Evidence

  • bun run check: lint 0 errors, typecheck 27/27 tasks. Run on a copy outside the main checkout: inside a nested .kilo/worktrees checkout, TypeScript picks up the parent checkout's @types/node 22 and fails @opencode/ai on zstdCompressSync. That happens on origin/v2 too, because neither tree puts @types/node in the root node_modules.
  • bun install --frozen-lockfile with Bun 1.4.2 (lock regenerated with the pinned Bun).
  • CI CLI steps: script/build.ts --single --skip-install + script/service-smoke.ts, and script/build-node.ts --single --skip-install --outdir=dist/node + script/service-smoke.ts --node: pass.
  • script/upstream: bun test 78 pass, bun run typecheck pass. New tests: the counter ignores removed product areas, and the config skips them but not live packages.
  • check-workflows, check-opencode-annotations, check-shared-patches, progress.ts --check: ok.
  • Sync dry run against upstream/dev (39 commits after v2.0.30): 71 conflicts, all auto-resolved by the tool (67 skip, 3 workflow, 1 lock-file), none manual. 70 of the 241 files that upstream changed are in the removed paths.
  • Self-test: KILO_V2_PROFILE=<tmp> bun dev run --standalone "Reply with exactly: PRUNE-OK" with kilo-auto/free: answered PRUNE-OK, no errors in the log.

@github-actions

Copy link
Copy Markdown
Contributor

➖ v2 migration progress: 0.1% → 0.1% (0 done, 0 total, 0 dropped; 12/9854 cells)

No change to the progress map.

v2 migration progress map at this commit

Full map · how cells close

@marius-kilocode
marius-kilocode marked this pull request as ready for review October 16, 2026 09:58
@kilo-code-bot

kilo-code-bot Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Reviewed the ~14 changed non-generated files (plus the bun.lock regeneration and the deleted product-area tree). The seam patches correctly handle the removed packages/app: packages/cli/script/app-assets.ts emits an empty archive when the directory is gone, and packages/cli/script/service-smoke.ts accepts a 404 for the web shell so the compiled-service smoke test still validates the API, auth, and plugins. script/upstream/utils/shared.ts and script/upstream/utils/config.ts filter the removed paths out of the shared-patch counter, and the raised shared-patches.json limits (files 12→14, markedLines 45→48, unmarkedLines 17→18) match the added markers and unmarked comment line. The affected/e2e jobs are correctly gated off, and the root lint seam drops only checks that targeted the removed packages/gui-extensions. The skipFiles list covers every top-level path deleted by this PR (desktop, app, gui-extensions, session-ui, storybook, console, web, posts, function, stats, infra, sst.config.ts, salesforce, sdks/vscode, script/sdk-docs.ts, script/ast-grep/gui-extensions), and no kept package imports a removed one.

Note: leftover references to removed paths (package.json dev:*/bench:* scripts, .oxlintrc.json overrides, workspace globs, script/raw-changelog.ts) are acknowledged in the PR as intentional merge-conflict avoidance.

Files Reviewed (14 files)
  • .github/workflows/test.yml
  • package.json
  • packages/cli/script/app-assets.ts
  • packages/cli/script/service-smoke.ts
  • script/upstream/README.md
  • script/upstream/checks.test.ts
  • script/upstream/shared-patches.json
  • script/upstream/transforms/skip-files.test.ts
  • script/upstream/transforms/transform-package-json.test.ts
  • script/upstream/transforms/transform-package-json.ts
  • script/upstream/utils/config.ts
  • script/upstream/utils/shared.ts
  • migration-tracking/plans/v2-plan-delta-2026-10-13.md
  • bun.lock (generated)

Reviewed by deepseek-v4.1-flash · Input: 83.3K · Output: 25.3K · Cached: 1.9M

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.

1 participant