Skip to content

[PKG-01] Prepare native fork preview packages for macOS and Windows/WSL #17

Open

Description

@jdbencardinop

ID: PKG-01. Priority: P0. Backlog: #1.

Goal

Produce reproducible personal-use native preview packages of the current fork,
without waiting for more product features. Freeze product source at
1af644681d931d77fdbda8a014d7c28fdd9ffdab, including the completed #20 Copilot
lifecycle fix. The corrected preview is 0.0.42-preview.20261003.2, build
bc9eeb9a6f5e3fe2e6d58d9c1b14d5ed93d6c2be on
build/fork-native-preview-20261003-r2. It includes the receiving-host repair
for the WSL account-home probe, while preserving the preview isolation boundary.

The Mac arm64 DMG/ZIP, Windows x64 installer and matching Linux x64 runtime are
ready. Build-only run
is the second approved attempt per CI target. Latest download links, checksums,
Mac native evidence and receiving-host steps are in the refresh comment.
Installed Windows/WSL qualification remains pending; keep this issue open.
The earlier 20261001 and 20261003.1 artifacts and results remain historical
evidence. The 20261003.1 build passed build gates but failed the receiving-host
WSL home-resolution preflight; it must not be presented as a WSL-qualified build.

Targets and deliverables

  • Unsigned macOS arm64 DMG built locally.
  • Unsigned Windows x64 NSIS installer built on a native Windows CI runner.
  • Independently built and smoked Linux x64 CLI archive, embedded byte-for-byte
    as the Windows WSL runtime.
  • Exact source/build/version manifest, SHA-256 checksums, available automated
    smoke evidence, and concise install/isolated-launch/rollback instructions.
  • Fork preview identity and update behavior must not replace or automatically
    update the ordinary installation. Never use the live T3 data directory.

Reuse and validation

Reuse existing desktop/CLI archive builders and platform smoke helpers. Preserve
the reviewed Copilot SDK/CLI/native dependency closure, payload budget and WSL
executable-mode repairs. Do not downgrade dependencies, bypass lockfiles/TLS,
relax packaging limits or claim signing/notarization.

Check application/server startup in owned state, bundled runtime/version and
native helper availability. The optional TWS integration must remain disabled by
default and must not be an installation prerequisite.

Native Windows/WSL interactive qualification requires a receiving-machine pass.
Keep that gate explicitly pending until exercised; Linux CI smoke is not WSL
qualification, and a built installer alone is not a complete desktop pass.

Approved unattended boundary

The maintainer approved:

  • commits and pushes to a dedicated work branch;
  • local Mac packaging plus Windows/Linux build-only GitHub Actions;
  • at most two CI build attempts per target for this refreshed batch;
  • isolated native Mac UI automation using only owned profiles/processes.

Do not merge main, open a PR, publish tags/releases/npm packages, deploy services,
use signing credentials, run real provider turns or generate real OS alerts.
Do not modify existing installs/profiles or disturb the Windows/WSL machine
currently being used for web testing.

Do not invoke the full upstream release workflow: it includes publishing and
deployment. Stop and report if credentials, signing, more CI budget, or receiving-
host interaction are needed. Unattended work stops at artifact readiness and the
available gates, leaving unmet qualification gates open.

Other feature work, including #10, remains queued.

Activity

  1. added
    fork-backlogMaintainer backlog for the multi-machine fork
    status:in-progressActively implementing the scoped issue
    priority:P0Stable reconciliation and attention core
    on Oct 1, 2026
  2. jdbencardinop commented on Oct 1, 2026

    @jdbencardinop
    Author

    Inspection found an isolation gap in stock packaging: the installer uses the stock app ID, Electron profile resolution ignores T3CODE_HOME, and Clerk registers the stock URL scheme at startup. I am adding a small explicitly gated fork-preview packaging overlay with a separate installer/profile identity and no update feed or stock protocol claim. Ordinary builds stay unchanged. The manifest will identify base982929e plus this overlay; isolated previews will not claim desktop cloud OAuth/passkey support. Local/SSH/WSL operation remains the target.

  3. jdbencardinop commented on Oct 1, 2026

    @jdbencardinop
    Author

    Mac arm64 DMG/ZIP built at overlay commit 1ba8423; the extracted final app passes isolated native startup, renderer, fork identity, separate state and TWS-default-off checks. App update feed and stock URL declarations are absent. Linux attempt1 failed because the workflow unnecessarily built the Linux desktop browser-secret helper; the workflow now builds only the server/web bundle needed by the CLI archive. Linux attempt2 passed archive build/smoke. Windows attempt1 is running in run36908946810. No Linux CI attempts remain; Windows/WSL interactive qualification is still pending.

  4. jdbencardinop commented on Oct 1, 2026

    @jdbencardinop
    Author

    PKG-01: artifacts ready; receiving-host qualification pending

    Version: 0.0.42-preview.20261001.1

    Downloads

    GitHub artifacts expire 2026-10-15. Download and retain them; these are not
    permanent release assets.

    File SHA-256
    T3-Code-Fork-Preview-0.0.42-preview.20261001.1-x64.exe 18a0832680b64bbc214cafb11dbfc41bde785767d8cbcedae8d4b8948dfd8dee
    t3-0.0.42-preview.20261001.1-linux-x64.tar.gz 32bc4005faad253b405ad78b28c1bae6320151d8b245368a671f4c94de46bee0
    T3-Code-Fork-Preview-0.0.42-preview.20261001.1-arm64.dmg 11f21ed94a950c6c27cb6c94cb647c6788f8f3c14a3a46ce9057e365fa4d4e75
    T3-Code-Fork-Preview-0.0.42-preview.20261001.1-arm64.zip 7814201aa54c0ad152ebaa5fe66099bc00d9fc84d739bb095a8ee740ac131422

    Available gates passed

    • 156 focused tests, with 14 existing platform/capability skips. Desktop/scripts
      types, scoped lint and actionlint passed.
    • Linux x64 single-executable/archive build and native archive smoke passed.
    • Windows x64 NSIS build and packaged dependency/native-load/self-containment
      checks passed. Payload: 59/80 files, 27 sidecar natives.
    • The embedded WSL archive matches the independently built Linux archive
      byte-for-byte by SHA-256. Both manifests name the same build commit/version.
    • Mac DMG/ZIP built. The extracted final app passed native renderer readiness,
      distinct fork identity, isolated T3/Electron data, TWS-default-off, restart
      with the same environment ID, and second-instance/no-duplicate-backend checks.
    • DMG and tested ZIP contain identical app.asar bytes. The final app embeds the
      expected short commit, the preview bootstrap, and no app-update.yml.
    • All six maintained tpatch roots verify. The complete packaging root retains
      27 paths; the working branch is clean.

    CI budget used: Linux 2/2; Windows 1/2. First Linux attempt unnecessarily
    built the desktop browser-import helper and failed on libsecret headers; the
    second correctly built only the server/web bundle required for the CLI archive.
    No dependency or payload constraint was relaxed.

    Earlier native harness attempts were unsuccessful and are not counted as
    passes. The successful fixture preserved the normal OS home while isolating
    T3/Electron/provider data and disabling all providers. Owned processes, temporary
    profiles and the dedicated build checkout were cleaned up; sanitized results,
    selected UI evidence and final artifacts are retained.

    Windows receiving-host checklist

    1. Download/extract the Windows artifact ZIP and verify the EXE against
      SHA256SUMS. Install T3 Code Fork Preview, not an ordinary/upstream build.
    2. Confirm its title/version and fresh profile. Native Windows state belongs in
      %USERPROFILE%\.t3-fork-preview, not the normal .t3 installation.
    3. Confirm the native environment starts, TWS is off, and ordinary project/thread
      navigation works before enabling any provider.
    4. In Connections, enable a selected WSL distro. Confirm a distinct environment
      and Linux state/cache under ~/.t3-fork-preview; the existing web preview
      profile and normal T3 state must remain untouched.
    5. Exercise a terminal in each environment, verify owning cwd/path behavior,
      restart the preview and confirm environment identity/persistence.
    6. Record results here. Provider turns/session continuity require a separately
      approved receiving-host pass; none were run by this unattended task.

    Not yet qualified: installed Windows GUI behavior and integrated WSL
    launch/restart/PTY/fallback on the receiving machine. Do not infer
    WINDOWS_AND_WSL_PASS from these builds.

    Preview limits

    Unsigned/unnotarized personal preview; OS warnings may appear. Do not disable
    system security globally. No auto-update feed or stock URL-handler registration.
    Desktop cloud OAuth/passkeys are intentionally unavailable in this isolated
    profile; use local/direct/WSL connections and do not update existing managed
    remote servers from it.

    Quit/uninstall only the fork preview to roll back. Keep its separate data if
    needed; never copy it over the ordinary profile. No main merge, PR, release tag,
    npm publication, deployment, signing credentials, provider turns or OS alerts
    were used.

    Leaving #17 open and blocked only on receiving-host qualification. Feature work
    remains paused until that feedback.

    Implemented with GPT-6 Astra through GitHub Copilot CLI; no delegated inference.

  5. added
    status:blockedRelease or dependency gate remains; no implementation yet
    and removed
    status:in-progressActively implementing the scoped issue
    on Oct 1, 2026
  6. jdbencardinop commented on Oct 3, 2026

    @jdbencardinop
    Author

    Refreshed batch approved: freeze fixed product at 1af6446 and compose the existing reviewed fork-preview isolation overlay. New version 0.0.42-preview.20261003.1. Local unsigned Mac arm64 DMG/ZIP plus build-only Linux x64 and Windows x64, renewed maximum two CI attempts per target. Dedicated branch commits/pushes and isolated Mac UI/restart checks approved. No provider turns, live-profile changes, PR, release, signing or deployment. The Windows/WSL receiving-host qualification remains a separate pending gate; prior artifacts and results stay preserved.

  7. jdbencardinop commented on Oct 3, 2026

    @jdbencardinop
    Author

    Refreshed native previews ready

    Version: 0.0.42-preview.20261003.1

    Product base: 1af644681d931d77fdbda8a014d7c28fdd9ffdab (includes #20).
    Build commit: 0630580536e00d531652ba802a2618e931276467.
    Branch: build/fork-native-preview-20261003.
    Successful build-only run: https://github.com/tesseracode/t3code/actions/runs/37090375997

    The reviewed preview-isolation code is unchanged from the prior batch. Only
    version/source pins and matching build documentation changed within the overlay.
    The provider lifecycle source and dependency lockfiles match the fixed product.
    The full extended packaging root remains 27 paths; all six maintained roots
    verify. The overlapping Foundation lockfile import was already present in the
    reviewed packaging root and was not duplicated in its replay; final product
    bytes differ from the frozen base only by the reviewed 17-path overlay.

    Downloads

    The Windows installer already contains the matching Linux/WSL runtime; the
    separate Linux download is not an additional Windows installation step.
    Actions downloads expire 2026-10-17. Previous artifacts remain separate.

    File SHA-256
    T3-Code-Fork-Preview-0.0.42-preview.20261003.1-x64.exe 830e37eeb72cb0cbdbd0ebd3baa5cb26f84c8d87ecc66241a672f893848157d6
    t3-0.0.42-preview.20261003.1-linux-x64.tar.gz ee27b9b2dde90d098d88c93079a94e5cb3d9dc65d8d1a5072a116cf0159c3fbb
    T3-Code-Fork-Preview-0.0.42-preview.20261003.1-arm64.dmg a06e00da9171f8d85ec22ed636976e229187df1e3c7d1047a992ae497127fd6a
    T3-Code-Fork-Preview-0.0.42-preview.20261003.1-arm64.zip 219254c99f911fecdf6dfe499c867010ab3e725c5f5180bf1e098fb9f3e93c7c

    Available gates passed

    • Seven focused test files: 176 passed, 14 existing platform/capability skips.
      Desktop/scripts types, scoped lint and pinned actionlint passed.
    • Linux x64 standalone runtime/archive built and smoked: --version and a real
      serve HTTP response passed.
    • Windows x64 NSIS build, exact owner-resolved dependency/native-load gates and
      whole-app payload check passed: 59/80 files, 27 sidecar natives.
    • Downloaded artifact hashes match their manifests. The Windows embedded WSL
      input matches the independently built Linux archive byte-for-byte.
    • The actual Mac ZIP app passed isolated native renderer readiness, fork
      branding, separate T3/Electron state, providers disabled, TWS off, restart
      preserving environment identity, and second-instance/no-duplicate-backend.
    • Mac DMG and ZIP contain identical app.asar bytes. Packaged server/desktop
      bundles match the build outputs; bootstrap matches the reviewed source.
      Embedded version and commit are correct; no app-update.yml or stock URL
      declarations are present.
    • Packaged Mac dependency versions match SDK 1.0.8, CLI 1.0.75, Koffi 3.3.1,
      vscode-jsonrpc 8.2.1, Zod 4.4.3 and detect-libc 2.1.2. Direct bundled CLI
      --version reported 1.0.75 with auto-update disabled; no provider turn ran.

    Renewed CI budget used: Linux 1/2, Windows 1/2. The first direct local Mac
    command failed before compilation because vp was not on the global PATH; the
    unchanged build succeeded through pnpm exec. Initial concurrent Electron
    lazy-install attempts caused one local test-loading failure; loading the
    installed package first and rerunning produced the passing result. These are
    retained as setup failures, not relabeled as passes. No source/dependency repair,
    payload relaxation, TLS bypass or extra CI attempt was needed.

    Receiving-machine qualification is still required

    1. Download/extract the Windows artifact ZIP and verify the EXE against
      SHA256SUMS. Quit an earlier fork preview before installing the new one.
      This updates the fork-preview installation, not the ordinary T3 app.
    2. Confirm version 0.0.42-preview.20261003.1, isolated preview identity/state
      and native Windows startup. Existing preview data may be retained;
      ordinary T3 profiles must remain untouched.
    3. Enable a selected WSL distro in Connections. Confirm a distinct Linux
      environment and its ~/.t3-fork-preview data/runtime cache.
    4. Exercise native and WSL terminals, restart/persistence, and fallback/recovery.
      Record results in this issue. Provider turns/session continuity need a
      separately approved receiving-host pass.

    Mac previews can be copied from the DMG into a separately named application
    location after quitting an older fork preview. These unsigned/unnotarized
    packages may show OS warnings; do not disable security globally.

    Separate preview profiles, no auto-update feed and no stock URL-handler claim
    remain in force. Provider homes are not automatically isolated. Desktop cloud
    OAuth/native passkeys remain intentionally unavailable. A standalone Linux
    server must be given its own preview home explicitly; WSL integration supplies
    that separation for its embedded runtime.

    No PR/main merge, release/tag/npm publication, deployment, signing credentials,
    provider inference, OS alerts or live-profile writes. No new
    WINDOWS_AND_WSL_PASS is claimed.
    #17 stays open/blocked on receiving-host
    qualification; the artifact refresh is complete.

    Built with GPT-6 Astra through GitHub Copilot CLI; no delegated inference.

  8. jdbencardinop commented on Oct 3, 2026

    @jdbencardinop
    Author

    Receiving-host qualification found a real startup blocker in preview20261003.1: WSL is available/enabled in both mode, but the Linux-home isolation preflight fails and only the Windows primary reaches the client. A read-only direct wsl.exe --exec id/getent probe succeeds on that host. Investigating the existing quote-sensitive sh -c home probe; preserve the isolation guard and replace shell-argument quoting with the established stdin-script mechanism. Sidebar CookieStore and Windows menu/title-bar observations are separate and are not the reported preflight cause. Preparing a correction using remaining approved CI attempt2/2 per target; no extra features or provider turns.

  9. jdbencardinop commented on Oct 3, 2026

    @jdbencardinop
    Author

    WSL home-probe correction: replacement packages ready

    Use 0.0.42-preview.20261003.2 for the next receiving-host check.

    • Build/source: bc9eeb9a6f5e3fe2e6d58d9c1b14d5ed93d6c2be
    • Branch: build/fork-native-preview-20261003-r2
    • Product base remains 1af644681d931d77fdbda8a014d7c28fdd9ffdab; the WSL
      helper correction is an explicit addition to its preview packaging overlay.
    • Successful build-only run
    • Windows x64 installer
    • Linux x64 runtime
    • Mac DMG/ZIP and sanitized native/payload results retained locally in
      wsl-home-artifacts/mac-arm64, with the exact tested app in mac-expanded.

    The Windows installer includes the matching WSL archive. Downloads expire
    2026-10-17. Both targets completed their second and final approved attempt
    for this batch; no additional CI attempts are authorized by this update.

    What changed

    The host showed WSL available/enabled in both mode but only a Windows primary
    bootstrap. The fatal preflight was:
    Fork preview could not resolve the Linux home needed for an isolated WSL profile.
    A direct read-only WSL id/getent lookup succeeded, so the Linux account has a
    valid home.

    The old helper passed nested shell quotes through Windows argv. The correction
    sends the account lookup script via stdin to wsl.exe --exec sh -s, using the
    same transport as other WSL probes. It uses the numeric Linux account ID and
    account database rather than inherited HOME. Failures now log bounded
    transport/exit details; invalid output still fails closed. No profile fallback,
    hardcoded user path or isolation bypass was introduced.

    The ordinary and WSL-targeted folder pickers share this home helper. CookieStore
    sidebar errors and the hidden Windows menu/title-bar behavior are separate
    observations and were deliberately not changed.

    Evidence and limits

    • The new command-transport and malformed-output regressions failed before the
      correction. Afterward, 87 focused cases pass, with 14 existing platform/tool
      skips, covering the environment/home probe, backend isolation, folder-picker
      IPC and preview bootstrap. Scoped desktop/scripts types, WSL lint and
      actionlint pass.
    • The actual stdin script executes in a POSIX fixture with spaces in the account
      home and an incorrect inherited HOME. This is not a live Windows WSL test.
    • All six maintained roots verify. The packaging root retains 27 paths.
      Compared with the prior preview, product changes are confined to the WSL
      helper/tests, version/branch workflow pins and related operations guidance.
      Copilot source and dependency lockfiles remain identical.
    • A local intermediate replay captured an auto-synchronized lockfile before
      Foundation was restored. It was preserved separately and corrected through
      a clean first-landing replay before publication; no dependency change shipped.
    • Linux archive --version and actual serve HTTP smoke passed. Windows NSIS and
      native/dependency checks passed at 59/80 whole-app files and 27 sidecar natives.
      Downloaded hashes and the embedded Linux archive digest were verified.
    • The corrected Mac app passed isolated native startup, renderer, TWS/provider
      defaults, restart identity and singleton checks. DMG/ZIP app.asar match;
      packaged bundles match build outputs and the exact source commit. Native CLI
      version remains 1.0.75; no provider turns were run.
    Artifact SHA-256
    Windows x64 EXE f485bda8bce4c112989526d4f3de2059080c21755c2c551ae8bdc12c3ef47edd
    Linux x64 archive / embedded WSL input 4586e050cd630a51e643d6a73fcc9abc10c44170be62c84d2dd621cf35784030
    Mac arm64 DMG e3b12eef29e3656792eb26687144d253bf6ffd770b19f6514fea9f84afff54b0
    Mac arm64 ZIP 703024ab32b8dfad90378c9d418933161a807c085beb88328584caf959e707a2

    Receiving-host next step

    Quit the old fork preview fully, verify/extract the new Windows download, install
    the .2 EXE and reopen. Keep the selected Ubuntu distro and WSL-only disabled
    for both-mode verification. No data directory deletion or HOME override is needed.

    Expected: preflightError clears, a separate WSL backend becomes connected, and
    Ctrl+K offers Open WSL folder. Add the first project with its Linux path.
    Then confirm native/WSL terminals, restart/persistence and fallback/recovery.
    If startup still fails, capture the sanitized bridge output and the new probe
    diagnostic; do not infer success from build gates.

    #17 remains open/blocked pending this receiving-host confirmation. The prior
    .1 receiving failure remains recorded. No new WINDOWS_AND_WSL_PASS, release,
    signing, PR, main merge, provider inference or live-profile modification is claimed.

    Implemented and packaged by GPT-6 Astra using GitHub Copilot CLI; no delegated
    models or other model families.

  10. jdbencardinop commented on Oct 3, 2026

    @jdbencardinop
    Author

    Receiving-host confirmation for preview20261003.2: the maintainer reports that projects can now be opened in both WSL and native Windows. This confirms the home-probe/secondary-registration/first-project blocker is resolved on that host. Keep #17 open for the remaining unreported installed-app terminal, restart/persistence and fallback qualification gates; do not infer a full WINDOWS_AND_WSL_PASS from project creation alone.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    fork-backlogMaintainer backlog for the multi-machine forkpriority:P0Stable reconciliation and attention corestatus:blockedRelease or dependency gate remains; no implementation yet

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions