Skip to content

fix(lastcode): clone historical Intel targets without credentials - #85

Open
lastobelus wants to merge 81 commits into
lastcode/mainfrom
lastcode/fix-historical-intel-checkout
Open

fix(lastcode): clone historical Intel targets without credentials#85
lastobelus wants to merge 81 commits into
lastcode/mainfrom
lastcode/fix-historical-intel-checkout

Conversation

@lastobelus

Copy link
Copy Markdown
Owner

GitHub Checkout v6 fails while cleaning credentials after checking out older installable commits that predate the repository’s root submodule metadata. That prevents building airy’s current 1162 tag.

Clone the public target repository with ordinary credential-free Git, apply the existing sparse-checkout exclusion, and detach at the exact validated commit. The trusted workflow and isolated publisher still use GitHub Checkout with credentials disabled. A disposable clone checked out exact commit 5f13035182feffb7941e03c312d5305a8ef35116 successfully and excluded .repos; the source-coupled workflow test asserts the target path contains neither Checkout nor github.token.

Implemented by GPT-5.6 in the Codex harness.

lastobelus and others added 30 commits August 24, 2026 00:01
LastCode needs to remain a small personal fork that can run beside T3
Code, follow every upstream nightly without losing its fork commits, and
produce optional local ad-hoc-signed builds without relying on hosted CI
or an Apple Developer subscription. The fork also needs durable branding
and operator documentation that are unlikely to conflict with upstream
changes.

- isolate LastCode's Electron profile, application IDs, URL schemes,
state directory, single-instance lock, and update behavior from T3 Code
- add the themed LastCode wordmark, temporary app mark, app icons, and
favicons under a fork-owned asset root with dev, nightly, and prod
variants
- add an exact-commit local CI gate, pre-push quick gate, and guarded
squash-merge command
- checkpoint every upstream nightly as an immutable
`lastcode/checkpoint/<upstream-tag>` tag while rebasing the complete
fork stack in an isolated worktree
- promote rebased checkpoints to `lastcode/main` only when no pull
request is open
- require checkpoint-bound full-CI provenance before an ad-hoc macOS
build, then emit a manifest, SHA-256 checksums, and a numbered build tag
- add an opt-in hourly/login launchd service for checkpoint automation
- place LastCode-specific runbooks and conventions under
`docs/lastcode/`
- sanitize repository-local Git variables from nested Git and CI
subprocesses so hooks and temporary-repository tests remain isolated

LastCode and T3 Code can run simultaneously. Every upstream nightly can
be recorded even when no LastCode build is ready, while selected
checkpoints can later become reproducible local releases. Hosted release
jobs are disabled for the fork; releases remain deliberate, local, and
ad hoc.

- exact-commit full local CI passed on
`77b716527cd64f7253afe2c71d596d3f1319e769`
- all workspace formatting and lint checks passed
- all workspace typechecks passed
- workspace tests passed, including 1,984 server tests (7 skipped) and
2,004 desktop tests
- desktop production build and preload assertions passed
- Rust resource-monitor formatting and 15 tests passed
- SwiftLint, ktlint, and detekt passed for mobile native sources
- release smoke passed from a frozen install
- the normal pre-push quick gate passed under Git's hook environment
- the LastCode desktop build was launched and manually verified with its
sidebar wordmark, menu-bar name, isolated runtime, and app icon

Implemented with GPT-5.6-Sol through the Codex harness in T3 Code.
The nightly checkpoint bootstrap stopped before its first rebase because
`git worktree add` does not support the `--branch` long option.

Use Git's documented `-b <new-branch>` syntax and cover the exact
command arguments so the automation remains compatible with the
installed Git CLI.

Validation:

- scripts package: 24 files, 230 tests passed
- scripts typecheck passed
- exact-commit 11-stage full local CI passed for
`973bebf72b97200d81c3899eb14c8fafabee6837`
- normal pre-push quick gate passed

Implemented with GPT-5.6-Sol through the Codex harness in T3 Code.
The checkpoint smoke stage could resolve the caller worktree’s `vp`
binary through pnpm’s inherited PATH, mixing module graphs inside the
isolated sync worktree.

After installing the recovery worktree, run its smoke tests and scripts
typecheck through that worktree’s explicit local `node_modules/.bin/vp`.
Tests cover the runner path selection. The focused scripts suite,
scripts typecheck, exact-commit 11-stage local CI, and independent
pre-push gate pass.

Implemented by GPT-5.6-SOL through the Codex harness.
The launchd automation worktree was created without dependencies, so its
first checkpoint invocation could not import workspace packages. A
current main also attempted an unchanged promotion, unnecessarily
triggering the full pre-push gate every hour.

The installer now provisions the durable automation worktree before
loading the agent, and each scheduled run reconciles dependencies after
checking out `lastcode/main`. Promotion exits before the PR check or
push when the remote branch already matches the newest checkpoint. The
behavior and upgrade path are documented under `docs/lastcode/`.

Focused tests, scripts typecheck, actual upgrade-in-place provisioning,
exact-commit 11-stage local CI, and the independent pre-push gate pass.
One cold automation-worktree run reached CI successfully but hit an
upstream diff-highlighter test transient (650/651); that test passed in
both subsequent exact-commit and pre-push runs.

Implemented by GPT-5.6-SOL through the Codex harness.
The scheduled checkpoint job successfully rebased LastCode onto a new
upstream nightly, then failed before smoke validation because launchd
could not resolve the bare `vp` executable used to install the new sync
worktree.

Use the invoking automation worktree’s explicit `node_modules/.bin/vp`
to bootstrap dependencies in the isolated sync worktree. After
installation, continue using that sync worktree’s own Vite+ runner for
smoke tests and typechecking. Document the two-stage runner model under
`docs/lastcode/`.

Validation includes focused checkpoint/service tests, scripts
typechecking, a real install under launchd’s restricted PATH against the
retained `1076` recovery worktree, all 57 recovery smoke tests,
exact-commit 11-stage local CI, and the independent pre-push gate.

Implemented by GPT-5.6-SOL through the Codex harness.
The nightly checkpoint service has durable tags and raw launchd logs,
but no concise way to see recent checkpoint health, replay size, timing,
promotion, or build state.

This adds an installable `lastcode-checkpoints` command using the shell
mocolors palette, records structured timing and failure history,
enriches new annotated checkpoint tags, and documents installation and
operation. The executable lives in `~/.lastcode/bin` and is exposed
through `~/.local/bin`; it parses launchd status without dumping
inherited environment values.

Validation:
- focused checkpoint/dashboard tests
- scripts workspace typecheck
- scoped lint and formatting
- full pre-push quick gate (format/lint, workspace typechecks, and all
workspace tests)
- installed command exercised from outside the repository

Generated with GPT-5.6 Codex in the T3 Code harness.
## Problem

Git hooks export repository-local environment variables such as
`GIT_DIR`. When those variables leak into nested temporary-repository
tests, a command such as `git init --bare` can reconfigure the real
shared repository instead of its fixture. That can damage both the
primary checkout and every linked worktree.

## Changes

- clear all variables reported by `git rev-parse --local-env-vars` at
the pre-push hook boundary
- require the shared repository config to report `core.bare=false`
before local CI
- snapshot the shared config byte-for-byte and verify the value,
contents, and common Git directory again on every CI exit, including
failures
- cover hook cleanup, bare-repository rejection, and config-mutation
detection with focused tests
- document the three Git-safety layers and the fail-closed recovery
policy under `docs/lastcode/`

The guard reports the affected config path and stops. It deliberately
does not auto-repair repository state, so evidence is preserved for
inspection.

## Validation

- pre-push quick CI: passed
- focused LastCode CI/nightly tests: 16 passed
- scripts workspace typecheck: passed
- scoped lint: passed
- hook test verified from both repository-root and scripts-package
working directories

Built by GPT-5.6 Codex in T3 Code.
Checkpoint tags already pass the dedicated checkpoint smoke gate before
publication, but each tag push also triggered the generic pre-push quick
gate. Catching up across multiple nightlies therefore reran the full
workspace suite once per immutable tag, and unrelated nondeterministic
tests repeatedly blocked publication after the checkpoint itself had
passed.

This change pushes a checkpoint tag with `--no-verify` only when that
checkpoint actually ran and passed the dedicated smoke gate. Bootstrap
checkpoints and explicit `--no-smoke` runs retain the generic pre-push
hook. Ordinary branch pushes and `lastcode/main` promotion are unchanged
and still run quick local CI.

The patched runner successfully published checkpoints 1079, 1081, and
1082 after 65 focused smoke tests each, then ran the full quick gate
once while promoting 1082 to `lastcode/main`.

Validation:

- `vp test run scripts/lastcode-checkpoint.test.ts` — 12 tests passed
- scripts workspace typecheck passed
- branch pre-push quick CI passed, including 2,490 server tests, 2,378
web tests, and 657 mobile tests

Implemented with Codex in T3 Code using GPT-5.6.
The nightly runner successfully published checkpoint tags, but if the
initial `lastcode/main` promotion failed, later runs could not identify
the already-published checkpoint as the correct retry target. They
therefore reported no missing nightlies while leaving main on an older
checkpoint.

This records the exact source commit in new checkpoint tag metadata and
resumes from the newest checkpoint when that metadata matches the
unchanged main source. Existing promoted-checkpoint behavior remains
intact, and new commits on main still start a fresh rebase sequence.

Validation:

- 23 focused checkpoint/nightly tests passed
- scripts workspace typecheck passed
- pre-push quick CI passed, including all workspace tests

Implemented with Codex in T3 Code using GPT-5.6.
LastCode needs an explicit contribution model for two kinds of work:
private fork integrations and improvements that should be offered
upstream while remaining available downstream.

This documents the independent branch and PR bases for both streams,
refreshes the fork contribution workflow, and adds repository skills for
executing each workflow consistently.

Validation:
- both skills pass `skill-creator`'s `quick_validate.py`
- all six changed files pass the repository formatter
- `pnpm lastcode:ci:quick`

Documented with Codex in T3 Code using GPT-5.6.
LastCode checkpoints are currently buildable only from the command line,
so the desktop update control cannot carry an installed personal build
forward.

This adds an opt-in LastCode settings page and a local checkpoint update
source. New checkpoint tags appear in the existing sidebar control with
commit summaries; the first click runs full local CI and creates an
ad-hoc-signed DMG plus updater ZIP in an isolated worktree, and the
second click uses the existing Electron staging and restart path. The
feature is disabled by default and never shares or cleans a human
checkout or the checkpoint daemon worktree.

Validation: `pnpm lastcode:ci` passed for
`791ce60245b7aae0415b1c3cf7281a5b0d21813b`; the pre-push `pnpm
lastcode:ci:quick` gate also passed.

Implemented with Codex in T3 Code using GPT-5.6.
A fresh LastCode profile requires repeating a large amount of harmless
UI and workflow setup from T3 Code. Copying the entire profile is unsafe
because the two applications must retain independent identities,
databases, connections, secrets, network settings, and update state.

This adds a Settings → LastCode import preview and an explicit Import
and restart action. It validates the three supported JSON documents,
copies client preferences and keybindings, allowlists safe
server/provider fields, preserves LastCode-only and secret-bearing
values, backs up existing files with private permissions, and atomically
replaces them with rollback on failure. The new LastCode runbook
documents the imported categories and exclusions.

Validation:
- read-only preview against the local T3 Code and LastCode profiles: all
three categories ready
- focused importer tests: 4 passed
- focused contracts, desktop, and web typechecks
- focused lint
- full local CI for bc9f0b0 (all 11
stages)
- pre-push quick local CI

Generated with Codex (GPT-5.6 Sol) through the T3 Code Codex harness.
The LastCode project entry still selected the upstream T3 development
icon, so the project list displayed a blue T3 badge.

Point `t3.json` at the existing LastCode development touch icon so
project-icon resolution uses the fork branding.

Implemented by GPT-5.6-sol through the Codex harness.
Local LastCode nightlies were difficult to build, install, recover, and
trust as a continuous workflow: checkpoint conflicts could stall
silently, local builds inherited unsafe ambient state, ad-hoc signing
behavior drifted, and a delayed desktop keychain response could strand
startup on an HTTP 500 screen.

This makes the local-nightly lifecycle coherent end to end. It adds the
userland lastcode-build and lastcode-install commands, records and
resumes checkpoint conflict resolutions, makes the checkpoint dashboard
actionable, keeps builds explicitly ad-hoc signed, retains local
artifacts for installation, and retries desktop authentication for up to
one hour after delayed keychain access. Documentation and focused
coverage accompany each boundary.

Validation: pre-push quick local CI passed on the exact head, including
workspace formatting, lint, typechecks, and tests. Full local CI will
run as the guarded merge gate.

Built with GPT-5.6 in the Codex harness.
Merged LastCode work currently cannot become an in-app update until
another upstream nightly arrives.

Publish ordered `lastcode/revision/...` tags when `lastcode/main`
advances between upstream checkpoints, teach the local updater and build
tools to discover and package those revisions, and request an immediate
daemon run after guarded merges. The hourly daemon remains the fallback,
and the normal upstream checkpoint sequence still takes precedence.
Documentation covers tag ordering, recovery, settings, and local builds.

Validation: focused LastCode/desktop tests (186 passing), scripts
typecheck, targeted lint, checkpoint dry-run, and the full quick
local-CI push gate.

Authored with GPT-5.6 SOL via the Codex harness.
The checkpoint daemon opened its SSH push connection before a long local
pre-push gate. GitHub closed the idle connection after CI passed, and
the hook validated the automation checkout rather than the revision
commit being promoted.

Use the existing candidate smoke validation before automation-controlled
tag and branch updates, then push promotions and exact upstream mirrors
with `--no-verify` and their existing exact force-with-lease guards.
This keeps ordinary human branch pushes on the full pre-push gate while
making daemon ref updates validate the correct commit without an idle
transport.

Validated with the complete local quick gate, 25 focused checkpoint
tests, targeted lint, scripts typecheck, formatting, and diff checks.

Model: GPT-5.6-sol (high reasoning)
Harness: Codex in T3 Code
The cross-architecture Windows payload test treats any child command
carrying ELECTRON_RUN_AS_NODE=1 as the packaged primary probe. LastCode
local updates run from Electron and inherit that variable, so the
ordinary Node self-containment check is misclassified and full local CI
fails before a build can be produced.

Identify the primary probe by both its packaged executable path and
Electron runtime flag. This keeps the assertion scoped to its intended
behavior and allows local update builds launched from LastCode.

Upstream: pingdotgg#7253

Validation:
- focused scripts/build-desktop-artifact.test.ts: 47 passed
- exact-head full local CI passed for
dfdb1d4 against eab34f9
- pre-push quick local CI passed

Implemented with GPT-5.6-Sol through the Codex harness in T3 Code.
Successive ad-hoc-signed LastCode nightlies have different designated
requirements, so Squirrel can build and download them but cannot
reliably replace the running app. The failed handoff could leave
LastCode alive without a visible window.

Route only the LastCode-local source through the retained DMG and the
existing managed installer primitive. The detached helper verifies the
manifest SHA-256 and bundle version, acquires the shared install lock,
stages the replacement, and reports readiness before backend shutdown.
An explicit COMMIT/CANCEL handoff owns quit, rollback-safe swap, and
relaunch; hosted signed updates continue using electron-updater.

Validation: focused updater/installer tests, targeted lint, desktop and
workspace typechecks, two complete Quick CI passes on the exact head,
and a real retained-DMG preflight/cancel with no residual mount, staging
path, backup, or lock.

Fixes #20

Implemented by GPT-5.6-sol through the Codex harness in T3 Code.
Issue #21 needs a configurable shortcut for switching between the inbox
and legacy sidebars without changing the existing default keymap.

This adds the unbound `sidebar.mode.toggle` command, exposes it in
Keybindings settings, and routes it through the existing persisted
legacy-sidebar preference. Client-settings functional updates now
persist in invocation order so rapid toggles cannot write stale desktop
state out of order. Focused contract, server, resolver, settings-label,
and persistence tests cover the behavior, and the user keybinding
documentation describes the command.

Closes #21

Implemented and validated with GPT-5.6-sol through the Codex harness in
T3 Code.
Drafts remain in the composer store after navigation, but the legacy
sidebar did not render them. That left users with no way to return to an
unsent draft while the legacy sidebar was enabled.

This ports
[pingdotgg#7120](pingdotgg#7120)
at pinned head `799ba957f51cd0b48ad8e5020090814318d0388f`. It exports
the existing `SidebarDraftBlock` and reuses it above the legacy project
list through a small wrapper that supplies project lookup, route state,
and navigation. Upstream authorship and the `cherry-pick -x` provenance
trailer are preserved.

## Validation

- LastCode Quick CI passed on Node 24.13.1 at the current head.
- Focused web typecheck and lint passed.
- 3 nearby test files passed: 118 tests.
- Manual isolated-app verification passed for draft appearance,
restoration, discard, zero-draft layout, and default-sidebar parity.
- Responsive verification passed at 465 × 800: selecting the persisted
draft restored its exact text and closed the sidebar.
- Matched desktop and responsive before/after evidence is attached in
the PR conversation.

Model and harness: GPT-5.6-Sol via the Codex harness in LastCode/T3
Code.

Co-authored-by: VIvidh Mahajan <vividhmahajan@gmail.com>
Local nightly builds can run for several minutes without a percentage,
leaving the existing circular download indicator looking inert. The
checkpoint dashboard also only matched build tags to the bare upstream
checkpoint, so built LastCode revisions such as `1110.1` appeared to
have no build.

This makes the integrated download ring spin indeterminately while
progress is unknown (with reduced-motion support), while retaining
determinate progress for hosted downloads. It also renders actually
built LastCode revisions as indented pacific-colored rows under their
parent checkpoint, with commit, main, and build-number evidence.

Validation:
- focused tests: 18 passed
- targeted lint: passed
- web and scripts typecheck: passed
- LastCode quick CI: passed

Generated with Codex (gpt-5.6-sol) in T3 Code.
The direct LastCode installer could hang before its 30-second shutdown
deadline began because it waited synchronously for the app's quit
AppleEvent response.

Send the quit request without waiting for an application response, then
enforce the existing bounded running-state poll. Add focused coverage
for both a clean quit and an application that never exits.

Validation: focused installer tests, targeted lint/format/typecheck, and
LastCode Quick CI.

Generated with Codex (gpt-5.6-sol) in T3 Code.
The first complete upstream-import tracer exposed workflow requirements
that do not belong in `upstream-fix`, which handles the opposite
direction. Without a dedicated lane, future imports risk following
moving PR heads, confusing path overlap with conflicts, or treating
upstream CI as downstream acceptance.

This adds an `import-upstream-pr` skill for evaluating open-unmerged and
closed-unmerged T3 Code pull requests, preserving pinned provenance,
validating on the current LastCode base, publishing evidence, and
handing delivery to the existing guarded LastCode workflow. A focused
reference captures intake receipts, duplicate detection, UI evidence,
and squash patch-equivalence checks.

## Validation

- Skill Creator `quick_validate.py` passed.
- `git diff --check` passed.
- Fresh-context read-only forward test against pingdotgg#7120
correctly detected the already-merged identical patch and stopped before
creating another port.
- LastCode Quick CI passed on Node 24.13.1.

Model and harness: GPT-5.6-Sol via the Codex harness in LastCode/T3
Code.
Part of #13

Project Actions could run in terminals, but an agent could not
explicitly launch one and receive a trustworthy follow-up when it
finished. Long-running Actions therefore required polling or manual user
intervention.

This adds a bounded LastCode-only resume seam:
- locally opted-in Actions are exposed to Codex through scoped MCP tools
- each invocation runs in a dedicated thread terminal and persists
one-shot lifecycle state
- success, failure, and user cancellation deliver one system-authored
follow-up when the originating thread is eligible
- interrupted processes require explicit review and resume after restart
- web and desktop show a yellow Waiting state with terminal and
cancellation controls
- desktop quit flows warn with the number of running Actions

Mobile UI is intentionally deferred to the next slice.

Validation:
- `pnpm lastcode:ci:quick` passed locally on Node 24.13.1
- integrated web QA covered prompt-driven discovery/launch, successful
completion, cancellation, exactly-one follow-up, and ordinary
non-resuming Action behavior
- the ELI5 architecture document passes its structural verifier and
desktop/narrow visual checks

Implemented by GPT-5.6-Sol through the Codex harness in T3 Code.
Part of #13.

The Action-resume lifecycle shipped in the first slice was visible and
controllable only from web/desktop. A user checking the originating
thread from iPhone could not see that LastCode was waiting, cancel the
running Action, or resolve an interrupted follow-up.

This reuses the existing `actionResume` shell state and existing
close/resume/discard commands on mobile:

- running Actions show a yellow **Waiting** status and stay out of the
settled tail
- the thread view shows a compact waiting/recovery card
- users can cancel a running Action or choose **Resume agent** /
**Discard** after restart
- legacy and v2 mobile thread lists receive the same status and
cancellation affordance

This is intentionally a thin, temporary client slice for a single-user
macOS workflow pending the V2 orchestrator. It adds no scheduler, server
persistence model, compatibility layer, timeout, or Android-specific
behavior.

Verified on an iPhone 17 Pro simulator against a disposable local
LastCode environment. The recovery card rendered with both choices, and
tapping **Discard** reached the server and persisted the disposed
lifecycle state.

![Interrupted Action recovery controls on
iPhone](https://raw.githubusercontent.com/lastobelus/lastCode/48db8736b/.github/pr-assets/13-mobile-action-recovery.png)

- `pnpm lastcode:ci:quick`
- focused tests: 224 passed
- mobile suite: 732 passed
- native iOS dev-client build: succeeded
- targeted contracts, client-runtime, and mobile typechecks: passed

Built with GPT-5.6 Codex in T3 Code.
The managed installer inherited `ELECTRON_RUN_AS_NODE=1` into its `open`
command and treated LaunchServices exit code 0 as proof that LastCode
relaunched. A successful bundle swap could therefore leave the app
stopped with no visible error.

This scrubs helper-only Node mode from the launch environment, forces an
addressed new app launch, retries within a bounded deadline, requires
the process to remain running before deleting the backup, and records
the full helper transcript. Focused regression tests cover retry,
stability, timeout, and rollback behavior.

Implemented by GPT-5.6-Sol through the Codex harness.
Large archives are difficult to navigate because every archived thread
is shown at once. LastCode should adopt the project-scoped Archive
filter now without waiting for the upstream review schedule.

- Upstream PR: pingdotgg#7282
- Title: `feat(web): filter archived threads by project`
- Author: Michael Johnston (`lastobelus`)
- Observed August 17, 2026 (America/Vancouver): open and unmerged, with
the upstream vouch gate blocking merge
- Pinned upstream base: `949feb61e4bfd96669ba0e8cf3dca7c6d7f885b3`
- Pinned upstream head: `535a7b11358d8f0b4b302e4261b769dbafffc643`
- Linked request: pingdotgg#6780
- Review context: all 13 upstream review threads are resolved; upstream
checks are supporting evidence only

The complete eight-commit upstream graph was derived from the pinned Git
objects and cherry-picked oldest-first with `-x` onto exact LastCode
base `6ebffe1965126f81e1ee65ba5bee9726d6cb4b10`.

The upstream stack applied without textual conflicts or
LastCode-specific adaptations. Range-diff shows only the provenance
trailers, and both source and the initial port aggregate to stable patch
ID `d9e9829895c1cbb1ee796950022e39f59095c8f3`.

LastCode exact-head review then found that saved disconnected
environments could leave the archive aggregate loading forever. A
downstream follow-up limits archive snapshot requests to connected
environments and adds a regression test for the offline case.

- dependency installation completed with `vp i`
- 7/7 focused archive-filtering tests passed, including
disconnected-environment coverage
- targeted formatter and linter checks passed for all eight changed
files
- the web package typecheck passed under Node `24.13.1`
- committed-range `git diff --check` passed
- the guarded push's `lastcode:ci:quick` hook passed formatting,
workspace typechecks, and all workspace test groups
- a LastCode web client at 1280×800 used disposable state with three
projects and five archived threads:
  - `All` showed Alpha, Beta, and the archive-only Legacy project
- selecting `Beta Project` updated the route and hid Alpha and Legacy
rows
  - selecting `All` cleared the query and restored all groups

The shared preview could exercise the interaction but could not capture
a screenshot while its tab was hidden. The published images below are
from the patch-identical upstream candidate; the LastCode client
assertions above were verified independently.

Default Archive scope:

<img width="1280" height="800" alt="Default — Archive / All"
src="https://github.com/user-attachments/assets/26167028-e14c-43fa-958d-37c96392bec7"
/>

Filtered Archive scope:

<img width="1280" height="800" alt="Filtered — Archive / Beta Project"
src="https://github.com/user-attachments/assets/c4547658-26c1-43ea-84e7-3ddfd48e5782"
/>

Implemented by GPT-5.6-sol through the Codex harness.
lastobelus and others added 13 commits August 24, 2026 00:01
Claude threads could connect to LastCode’s MCP server, but Action Resume
was restricted to Codex and Claude rejected the no-argument action-list
schema.

This enables Claude as a supported Action Resume provider, publishes a
Claude-compatible object schema for action listing, and gives Claude a
small routing hint so natural prompts naming a saved Project Action use
the product-native tools. OpenCode remains unsupported.

Validation:
- 83 focused Action Resume, MCP, and Claude adapter tests
- server typecheck and scoped lint/format
- LastCode quick CI on exact head (2699 tests passed; 7 skipped)
- manual macOS desktop QA: Claude listed and launched the saved action,
showed Waiting, received exactly one automated follow-up, and reported
secret marmalade with exit code 0

Refs #33

Built by Codex (GPT-5.6) in T3 Code.
The annotation editor's action footer could detach from the dialog
because a form wrapper interrupted the shared dialog's direct-child flex
layout.

This keeps the shared header, scrolling panel, and footer as direct
dialog children. The form now lives inside the panel, and the footer
submit button targets it by ID, preserving Enter/submit behavior while
restoring the standard modal layout.

Validation:
- focused annotation component tests (2/2)
- web typecheck
- targeted lint and formatting
- quick local CI (all workspace typechecks and tests)
- integrated Safari QA against an isolated production build

Built by GPT-5.6-Sol with the Codex harness.
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing
Codex `interacted` events. LastCode's nightly adopted that
implementation, but the rebased #48 commit still grouped two independent
safeguards under the old composite port.

This branch makes the ownership explicit and atomic:

1. revert LastCode #48;
2. reapply the generic status-free `task.updated` liveness hardening
from pingdotgg#7468;
3. reapply the pre-registration child-turn replay from the narrowed
pingdotgg#7848, including its terminal-error ordering and
cross-client anchor fixes.

The small net diff is intentional: the nightly had already resolved the
pingdotgg#7937 overlap semantically. The commit stack preserves separation and
upstream provenance without exposing an intermediate LastCode state that
drops either still-needed safeguard.

Upstream sources observed 2026-08-23 PDT:

- pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge
`4e00471d1ab340b46742565bb6ce6462160b4d0c`)
- pingdotgg#7848 open at reviewed head `1123f75e9`
- pingdotgg#7468 remains the upstream owner of generic liveness hardening

Import method: exact commits applied with `cherry-pick -x`; review fixes
were authored in pingdotgg#7848 first and then ported into this stack.

Validation:

- 52 focused Codex adapter, collaboration runtime, wire, and
background-liveness tests passed
- server typecheck passed
- targeted lint, formatting, and diff checks passed
- three bounded review rounds completed: correctness/edge cases,
KISS/best practices, and final regression review
- mandatory quick local CI passed on head `a6f42da8a`

Prepared by gpt-5.6-sol through the Codex harness.

---------

Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Unannotated legacy-sidebar threads only opened their details hover from
the title text and inherited the normal tooltip delay, while annotated
rows opened immediately from the entire row.

Use the existing whole-row hover and focus state for both paths. The
legacy row is now the detached tooltip trigger for unannotated threads,
while annotated threads keep the interactive annotation popover.

Validation:
- 108 focused sidebar and annotation tests
- scoped web lint and typecheck
- LastCode Quick CI

Authored by GPT-5.6 SOL in the Codex harness.
The nightly conflict resolution preserved upstream hoverable update
details and LastCode local-build status, but its non-conflicting test
file still referenced the pre-resolution helper. This aligns the
coverage with the promoted API and formats the resolved source.

Validated with focused tests, scoped lint, web typecheck, and the full
quick local CI suite.

Authored by GPT-5.6 Codex in the T3 Code harness.
## Problem

Codex can already discover and inspect LastCode/T3 Code sessions by
probing environment variables and SQLite, but that path is unofficial,
inconsistent, and awkward across hosts. A single user running a handful
of concurrent threads needs a small supported command surface for
identifying, listing, reading, messaging, and waiting on those threads.

## Implemented

This umbrella contains all three reviewed slices:

1. [#54](#54) adds Codex-only
`current`, `list`, and `read` commands plus the generated
`lastcode-thread` launcher. Reads prefer the authenticated live server
and use a bounded, read-only SQLite fallback.
2. [#59](#59) adds live-only,
fire-and-forget `send`.
3. [#61](#61) adds exact
`send --wait` correlation and standalone `wait`, with bounded answers
and recovery handles.

Codex receives authoritative LastCode and provider thread identity.
Cross-host use deliberately composes the same command over SSH. Durable
usage documentation is in `docs/user/codex-thread-tools.md`.

## Scope

This remains a personal, low-concurrency tool. It does not add an MCP
server, broker, host registry, UI, generic retry framework, or
general-purpose orchestrator. If the provider accepts a turn but the
process dies, correlation finalization fails, the assistant-finalization
marker cannot be persisted before the durable link is recorded, or a
checkpoint revert removes the tracked turn, that wait handle can time
out; automatic retry and reconciliation are intentionally deferred.

## Validation

- Each slice passed focused tests, package typechecks, lint, formatting,
bounded Luna-high review rounds, and exact-head Codex review before
being merged into this umbrella.
- The rebased patch is identical across all 16 feature commits and
contains only 42 thread-tools files.
- The exact current head `6c618fa9d` passed 224 focused tests and the
guarded quick local CI gate on base `0b0bca08e`, including all workspace
tests and typechecks and 2,749 passing server tests.
- Exact-head Codex review reported no major issues, and every review
thread is resolved.

**Do not merge this umbrella PR into `lastcode/main` until the user
explicitly rubberstamps it.**

Implemented by GPT-5.6 Sol, reviewed with GPT-5.6 Luna, in the T3 Code
Codex harness.
Htulo must not prepare an Intel nightly newer than the LastCode already
installed on airy.

This adds `--maximum-version-host airy` to the existing prepare-only
staging command. It performs one non-interactive SSH read before
touching pending state, selects the newest immutable Intel release at or
below that version, and leaves the existing pending update untouched
when airy cannot be read. It does not pause threads, stop LastCode,
install an app, or schedule anything.

Focused validation: 18 staging tests; scripts typecheck; targeted lint,
formatting, and diff checks. The normal pre-push quick CI also passed
all workspace checks.

Implemented with GPT-5.6 via the Codex harness.
Htulo needs one unattended LastCode update per day without password
prompts or repeated relaunches.

This adds one external 04:00 LaunchAgent controller. It stages and fully
prepares the newest Intel nightly at or below airy's installed version
before interrupting work, asks currently working htulo threads to pause
concurrently through the merged local thread CLI, checks once for
newcomers, quits once, swaps the user-owned app, attempts one launch,
and tells paused threads to resume. If any thread does not acknowledge,
the app stays running and already-paused threads are resumed.

The scheduled path never uses bootstrap mode. A one-time manual `run
--bootstrap` is documented for upgrading the currently installed pre-#52
app; after that, scheduled runs require the merged local thread wrapper.
Airy must have non-interactive SSH access enabled; otherwise staging
safely skips before changing pending state.

Focused validation: 25 controller/installer tests; scripts typecheck;
targeted lint, formatting, syntax, and diff checks. Normal pre-push
quick CI passed all workspaces.

Implemented with GPT-5.6 via the Codex harness.
Large thread worktrees can take much longer than the existing 15-second
`git worktree remove` deadline, producing a cleanup failure after Git
has already started deleting the tree.

This keeps Git as the sole owner of worktree deletion and gives it a
30-minute deadline. That is long enough for multi-gigabyte install trees
while still returning an actionable error for a genuinely stalled
filesystem. The integration test now exercises the forced-removal path.

Upstream provenance:

- Source: pingdotgg#3902 — “Fix worktree
removal timing out on large install trees” by Jake Leventhal
- Pinned upstream head: `6e80eab9601f2cfec525d179cedeb6c8c6b31ced`
- Linked issue: pingdotgg#3593
- LastCode adaptation: replaced the upstream pre-deletion traversal with
a bounded native Git removal after review exposed unavoidable
pathname-swap races

Validation on head `eea7b6f1501e174e45a1d993b2e03623a98a1fd0`:

- Focused forced-worktree-removal integration test passed
- Server typecheck passed (pre-existing Effect suggestions only)
- Quick local CI passed
- Full local CI passed with an exact-head stamp
- Automated review has zero current unresolved findings

No client, provider, contract, connection-mode, or documentation
behavior changes; this is the server-side removal primitive only.

Implemented with GPT-5.6-sol through the Codex harness.

Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Deleting a thread could remove the conversation before its worktree
cleanup finished, leaving failures visible only in a short-lived toast
and losing the cleanup entirely across a disconnect or restart.

This makes worktree cleanup a durable server-owned lifecycle. The
deletion event records deleting, queued, or failed cleanup state;
same-repository removals run in order; restart resumes unfinished jobs;
and the thread remains as a non-openable sidebar row until cleanup
succeeds or the user explicitly keeps the worktree. Legacy, v2, and
mobile sidebars observe the state. Web and desktop provide retry,
copy-details, and keep-worktree controls for failures; mobile provides
Retry and Keep worktree from the failed row's long-press menu.

This builds on merged #74, which gives native Git enough time to remove
large worktrees while retaining a finite deadline for stalled
filesystems.

Validation:

- focused contract, capability, decider, reactor, projection, migration,
web, and mobile tests
- contracts, client-runtime, server, web, and mobile typechecks
- three sequential Luna/high review rounds covering correctness, UI/UX,
KISS, and best practices; accepted findings are fixed on the current
head
- LastCode guarded full CI on the exact head: formatting/lint, all
workspace typechecks and tests, desktop build, native static checks, and
release smoke
- integrated visual QA in the retained web client across legacy and v2
sidebar states, failure controls, queued deletion, light/dark themes,
and cleanup-detail hovers; the final pass also corrected path font size
and premature balanced-text wrapping

Compatibility boundary: pre-feature clients connected to the newer
server may not render cleanup tombstones correctly. We intentionally do
not add a presentation shim; clients and server should be upgraded
together for this feature.

Implemented by GPT-5.6-sol through the Codex harness in T3 Code.
GitHub Checkout v6 fails before the Intel artifact workflow can run
because the repository contains one nested gitlink without a matching
root `.gitmodules` entry.

Describe that existing reference-only Alchemy dependency at the
repository root, with `update = none`, so checkout can inspect
submodules without downloading the vendor repository. A disposable
sparse checkout passes the exact recursive credential-cleanup command
that failed on the Intel runner.

Implemented by GPT-5.6 in the Codex harness.
The Intel artifact workflow cannot read the repository immutable-release
setting: GitHub requires Administration: read, which `GITHUB_TOKEN`
cannot request, so every dispatch fails before checkout of the
installable target.

Remove those impossible preflight API calls. Immutable releases remain
an explicit maintainer prerequisite, and the workflow still rejects
every reused or newly published release unless GitHub reports that
release itself immutable. Update the source-coupled workflow test and
operator documentation to describe the real permission boundary.

Implemented by GPT-5.6 in the Codex harness.
@lastobelus

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Hooray!

Reviewed commit: 49e90206f0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@lastobelus
lastobelus force-pushed the lastcode/fix-historical-intel-checkout branch from 49e9020 to 9d63e9b Compare August 24, 2026 23:06
@lastobelus

Copy link
Copy Markdown
Owner Author

@codex review

## Problem

Hovering a remote-machine thread hides its cloud icon along with the
timestamp, removing useful machine context just as the user is about to
act on the row.

## Fix

The remote indicator now sits beside the hover-fading metadata block.
The timestamp or jump hint still yields to the archive action, while the
cloud stays visible. LastCode-specific sidebar scaling and annotation
behavior are preserved.

Upstream proposal: pingdotgg#8132

## Validation

- Focused formatting and lint for `LegacySidebar.tsx`
- Web typecheck
- `apps/web/src/legacySidebarScale.test.ts` (3 tests)
- Push-gated quick local CI: format, lint, all workspace typechecks, and
all workspace tests passed

## UI evidence

The reporter supplied the before screenshot. Automated after-image
capture was not available because this clean worktree has no paired
remote-environment fixture. The DOM relationship was verified directly:
the cloud is no longer a descendant of the metadata element whose hover
class sets opacity to zero.

Implemented with GPT-5.6 Codex in the T3 Code harness.
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Nice work!

Reviewed commit: 9d63e9b28d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@lastobelus
lastobelus force-pushed the lastcode/fix-historical-intel-checkout branch from 9d63e9b to b79824f Compare August 24, 2026 23:17
Saving a thread annotation could leave an invisible closing dialog
backdrop over the app, swallowing every pointer interaction until
navigation unmounted it.

Make the shared modal backdrop non-interactive as soon as Base UI
reports the dialog closed, and apply that behavior consistently to
dialogs, alert dialogs, command dialogs, and sheets. Add focused tests
that reproduce the closed-but-still-mounted transition and prove the
backdrop no longer intercepts clicks.

Validation:
- reproduced the lock before the fix and verified pointer hit-testing
after the fix
- 3 sequential Luna high review rounds completed
- focused dialog regression tests, lint, formatting, and web typecheck
passed
- mandatory LastCode pre-push CI passed, including checkpoint/rebase
tests

Built by GPT-5.6-Sol with the Codex harness.
@lastobelus
lastobelus force-pushed the lastcode/fix-historical-intel-checkout branch from b79824f to 0282619 Compare August 24, 2026 23:37
@lastobelus
lastobelus force-pushed the lastcode/fix-historical-intel-checkout branch from 0282619 to 92d0908 Compare August 24, 2026 23:47
@lastobelus

Copy link
Copy Markdown
Owner Author

Hosted run 32790985156 proved the credential-free historical checkout, then exposed one narrow follow-up: the public sparse clone contains the immutable LastCode tag but not the local short upstream nightly tag that checkpoint CI resolves. Commit ba99313 restores that local lightweight tag from the immutable installable tag metadata, validates the recorded tag/commit and ancestry, and does not push it anywhere.

Validation: focused Intel workflow tests 9/9; YAML parse; targeted format/lint/diff checks; fresh public-clone proofs for both 1162 and airy build 1174.2; normal pre-push quick CI passed all workspaces, including 2,769 server tests.

@lastobelus

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ba993134be

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/pr-assets/issue-19-local-build-progress-evidence.md
Comment thread docs/lastcode/legacy-sidebar-scaling-plan.md
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