Skip to content

feat(classic): stage current v2 service and verified upgrade delivery - #20

Draft
LogicLyra wants to merge 5968 commits into
mainfrom
classic-v2
Draft

LogicLyra wants to merge 5968 commits into
mainfrom
classic-v2

Conversation

@LogicLyra

@LogicLyra LogicLyra commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

Issue for this PR

Owner-requested Classic v2 migration, staged behind the v1 client bridge in #19.

Type of change

  • New feature
  • Refactor / code improvement

What does this PR do?

Bring the staged v2 track current with upstream 2.2.5 (a24a239456), including the final request-object and provider/model warming updates, and the earlier local build groundwork. Port fork-owned update delivery to the current service/client build tree:

  • Shared stable-release discovery and checksum verification, matching the v1 bridge contract.
  • Classic-only CLI updates; upstream package-manager/update-service installation is not exposed by the Classic updater layer.
  • Exact-release desktop update feeds and no automatic downgrades.
  • Classic app/package/protocol identity, launcher metadata and updater cache continuity.
  • Current build entrypoints, flat installer-compatible CLI archives, explicit production versions, packaged-CLI checks and retained artifact checksums.
  • A disabled migration manifest and a publication guard. V2 publication remains non-Latest, keeping old clients' route to the v1 bridge intact.

Draft / no cutover: the classic interface and Classic profile migration have not yet been ported and accepted. classic-migration.json remains migrationReady: false. This branch must not replace main's released classic client until those requirements pass.

How did you verify your code works?

  • Shared release-selection/integrity suite: 20 passed.
  • Desktop packaging identity/configuration suites: 13 passed.
  • CLI updater/install suites: 44 passed, 5 Windows-only cases skipped on Linux.
  • Official affected-package TypeScript checks: passed.
  • Workflow actionlint and shell syntax: passed.
  • Final-tree Linux production package gate: PASS 6/6, linux-ci-20261101T034954Z-c3502cd4-v2-package; earlier groundwork gate also passed.
  • Actual production baseline CLI/service smoke, desktop deb/rpm packaging and bundled opencode v2.2.5: passed.
  • Retained artifact checksums: 7/7 verified; deb and rpm package names both opencode-classic, version 2.2.5.
  • Real Electron bundle test verifies the release-policy workspace is compiled into JavaScript rather than left as a TS runtime dependency.
  • Final incoming-change AI cassette suite: 2006 passed, 28 skipped, 0 failed. Affected Core contract suites: 251 passed, 0 failed.
  • Bridge PR feat(updater): ship the v1.19.5 bridge for staged Classic v2 updates #19 is merged, and v1.19.5 is published as Latest. Real old CLI self-upgrade and desktop updater payload download have passed against that release.

Remaining cutover requirements

  • Port and accept the classic interface and isolated Classic profile migration.
  • Triage the CodeQL report: the completed final scan flags 30 alerts (26 high, 4 medium) in files that are byte-identical to pinned upstream a24a239456 (all annotated paths compared). These include upstream CI/cache, URL matching, regex and test-sanitization findings. They are not dismissed here; this remains a draft pending review. No annotation names a fork-added release-policy/updater file.
  • Complete installed v1-bridge-to-v2 and rollback acceptance, including supported-platform runtime checks.

Visual

Update-delivery illustration, not a screenshot or a claim that the v2 classic UI is complete:

<svg xmlns="http://www.w3.org/2000/svg" width="240" height="72" viewBox="0 0 240 72">
  <g fill="none" stroke="currentColor"><rect x="5" y="20" width="55" height="32" rx="6"/><path d="M60 36h25m70 0h25" opacity=".5"/><rect x="85" y="20" width="70" height="32" rx="6"/><rect x="180" y="20" width="55" height="32" rx="6" stroke-dasharray="4 3"/></g>
  <g fill="currentColor" font-family="sans-serif" font-size="11" text-anchor="middle"><text x="32" y="40">v1</text><text x="120" y="40">bridge</text><text x="207" y="40">v2</text><text x="207" y="66" opacity=".6">staged</text></g>
  <circle cx="64" cy="36" r="2" fill="currentColor"><animate attributeName="opacity" values=".25;1;.25" dur="2s" repeatCount="indefinite"/></circle>
</svg>

Checklist

  • Tested update selection, checksums, packaging identity and affected typechecks.
  • Kept cross-major readiness disabled until classic-layout/profile acceptance is complete.

rekram1-node and others added 30 commits October 28, 2026 23:44
…co#59910)

Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
…with its last tab (anomalyco#60126)

Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
…malyco#60147)

Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
…malyco#59550)

Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
…rror (anomalyco#59546)

Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
anomalyco#60244)

Co-authored-by: neriousy <34747899+neriousy@users.noreply.github.com>
…yco#60216)

Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: usrnk1 <7547651+usrnk1@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: LukeParkerDev <10430890+Hona@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
rekram1-node and others added 23 commits October 31, 2026 12:41
# Conflicts:
#	bun.lock
#	packages/desktop/electron-builder.config.ts
Comment on lines +121 to +123
- name: Set up Bun
uses: ./.github/actions/setup-bun
- name: Fetch
Comment on lines +123 to +125
- name: Fetch
run: bun packages/core/script/update-models-snapshot.ts .cache/models-catalog/api.json
- name: Upload
Comment on lines +17 to +43
name: typecheck
if: ${{ !github.event.pull_request.draft }}
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
# A pull request checks out its merge into the current base; the first parent is that base.
fetch-depth: 2

- name: Setup Bun
uses: ./.github/actions/setup-bun

- name: Lint
run: bun run lint

# Local `bun run check` uses `bun check`; CI keeps the official TypeScript compiler as the source of truth.
- name: Typecheck (TypeScript 7.1)
run: bun run typecheck:tsc

# Every GUI package file (app, desktop, gui-plugins, the plugin package's GUI SDK, ui, session-ui) a pull request adds or edits must be free of
# oxlint problems, warn-level rules (anti-slop) included. Other packages are not affected.
- name: Lint changed files
if: github.event_name == 'pull_request'
# Against the merge's first parent, so base-branch commits the pull request has not merged are not counted as its
# changes (the event's base SHA can predate them).
run: bun run lint:changed HEAD^1

@github-advanced-security github-advanced-security AI 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.

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

This branch has not been deployed

No deployments
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.