Skip to content

[fork] trunk#2

Draft
patroza wants to merge 56 commits into
fork/candidatesfrom
fork/changes
Draft

[fork] trunk#2
patroza wants to merge 56 commits into
fork/candidatesfrom
fork/changes

Conversation

@patroza

@patroza patroza commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Purpose

Tracks fork-owned feature layer on top of fork/candidates.

Private operations, host topology, credentials, machine configuration, and deployment automation are deliberately excluded. This is a long-lived stack branch and remains a draft; fork/integration is the deployable aggregate.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Jul 24, 2026
@patroza
patroza force-pushed the fork/tim branch 2 times, most recently from c6b394a to 83d75d0 Compare July 25, 2026 05:23
@patroza
patroza changed the base branch from fork/tim to fork/candidates July 25, 2026 08:12
@patroza
patroza force-pushed the fork/changes branch 2 times, most recently from 2a67c78 to 27a72d4 Compare July 25, 2026 08:30
@patroza patroza changed the title feat: apply public fork changes feat: apply our fork changes Jul 25, 2026
@patroza patroza changed the title feat: apply our fork changes [fork] trunk Jul 25, 2026
@patroza patroza added FORK and removed vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Jul 25, 2026
patroza and others added 26 commits July 25, 2026 20:03
* fix(server): bound provider shutdown drains

* fix: repair memory candidate integration checks
* ci(mobile): build labelled PR previews with the release profile

The preview workflow built `preview:dev`, a development-client profile, so
labelled PR builds ran unminified JavaScript with dev-only assertions. Those
builds cannot show how a change behaves for performance or memory.

Point the workflow at the plain `preview` profile and give it the two settings
it was missing for that role: the fingerprint version policy, so the
continuous-deploy-fingerprint action can still reuse compatible builds and
publish OTA updates, and an APK Android build type, so the artifact linked from
the PR installs directly. `preview:dev` stays for local Metro attachment.

Also seed the preview EAS environment with the T3CODE_MOBILE_* variables that
only the development environment carried, so remote builds resolve this fork's
project instead of the upstream fallback.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* ci(mobile): limit labelled PR previews to iOS

Android has no signing keystore on the Expo project, so a `platform: all`
preview build fails on credentials before the iOS artifact is published.
Restore Android here once a keystore exists.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Integration deploys dispatched the production workflow with mode=update, which
publishes an OTA update and nothing else. An OTA cannot carry a native runtime
change, so any integration that touched native inputs left the installed tester
build behind with no signal and no new binary.

Add mode=auto, which runs the same fingerprint deploy the development track
uses: a JavaScript-only integration publishes to the production channel, and a
native change starts a production build that EAS submits to TestFlight through
auto-submit-builds. Dispatch that mode from fork CI, restricted to iOS because
Android has no signing keystore.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix(discord-bot): make Discord thread title sync durable and race-safe

Stop VCS callbacks from re-applying ⏳ after settle using a stale running
thread, keep a pending desired title for rate-limit/timeout retries, and
retry desynced titles on a periodic tick so idle threads no longer stay wrong.

* chore(fork-stack): add update to keep feature PRs mergeable

Add `pnpm fork:stack update [--push] [pr]` to rebase or replay feature
branches onto fork/changes, retarget wrong bases, and document the
agent handoff so PRs are not opened against the upstream main mirror.

* fix(fork-stack): parse gh JSON under FORCE_COLOR agent hosts

Disable ANSI color in stack subprocess env so `gh --json` stays valid JSON
when agents run with FORCE_COLOR set.

* fix(fork-stack): force plain gh JSON for agent FORCE_COLOR hosts

Pass --color=never and strip residual ANSI so stack helpers can parse
`gh --json` when FORCE_COLOR is set by the agent environment.

* fix(fork-stack): strip ANSI from gh JSON under agent FORCE_COLOR

Avoid --color flags the t3 gh wrapper rejects; force FORCE_COLOR=0 and
strip residual SGR sequences so stack update/rebase can parse --json.

---------

Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
)

When the stack rewrites fork/changes, also force-with-lease rebase every
open PR that targets it (conflicts are skipped and summarized).

Add `pnpm fork:stack pull` for local checkouts after remote rewrites:
hard-reset when local commits are patch-equivalent to remote, otherwise
rebase unique unpushed work. Fix gh --json parsing under FORCE_COLOR.

Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
)

Every worktree-backed thread creation surfaced a "Queued message was
rejected: Git command failed in GitVcsDriver.createWorktree" toast. The
composer persists each outgoing turn to the outbox before sending, and
the outbox drain effect fired while the original bootstrap send was
still in flight (worktree creation keeps it pending for seconds), so
the same turn was delivered twice. The replay re-ran `git worktree add
-b` and failed on the branch the first delivery had just created.

Client: track in-flight sends and skip them in the outbox drain.
Server: when a bootstrap replay reaches prepareWorktree for a thread
that already has a recorded worktree, reuse it instead of re-creating
it, and skip the duplicate setup-script run.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…#52)

When fork/changes is rewritten, do not replay the full GitHub PR commit
list. Use patch-id uniqueness (git cherry), oldest-first cherry-picks,
and auto-skip large conflicting layer commits so multi-generation drift
can resync safely. Cascade uses the same fallback after rebase --onto.

Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Drop the arbitrary file-count skip heuristic. A PR's commits are exactly
oldBase..head where oldBase is the newest recorded fork/changes tip still
ancestral to the branch. The cascade appends each tip to
refs/t3/stack/base-history/fork-changes and rebases with --onto.

Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
patroza added 3 commits July 25, 2026 20:22
* fix(mobile): hand connected follow-ups to server queue

* feat(mobile): render optimistic pending messages

* feat(mobile): control queued follow-up messages

* fix(mobile): make send optimistic on the outbox critical path

Update the in-memory outbox before disk I/O, clear the draft immediately,
and paint local pending bubbles even while thread detail is still loading
so send no longer waits on durability or snapshot hydration.

* fix(web): reconcile queued send path after candidate replay
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant