Skip to content

Merge upstream/main into fork/dev (14 commits) - #400

Merged
omegent-app[bot] merged 16 commits into
fork/devfrom
sync/upstream-2026-08-12b
Aug 13, 2026
Merged

Merge upstream/main into fork/dev (14 commits)#400
omegent-app[bot] merged 16 commits into
fork/devfrom
sync/upstream-2026-08-12b

Conversation

@omegent-app

@omegent-app omegent-app Bot commented Aug 13, 2026

Copy link
Copy Markdown

14 upstream commits. Six conflicts, resolved by hand; two adversarial reviews (grok-4.6, gpt-5.6-sol) then found the merge had welded two of them incompletely, fixed in the follow-up commit.

Notable incoming work: the pull request surfaces overhaul (#6039 — filters and qualifiers, all-server listing, update branch, reactions, in-place editing), T3 Connect environment deregistration (#4844), project favicons in command subtitles (#6330), and PR links that honour modifier-clicks (#6278, #6378).

Conflicts

LegacySidebar.tsx — the interesting one. Upstream reworked the PR status badge from a <button> into a real <a href> so cmd/middle-click opens the PR in the browser. The fork had already replaced that icon badge with a numeric #1234 one, so taking upstream's block verbatim would have rendered two badges per row. Upstream's block is dropped and its anchor behaviour ported onto the fork's badge — which the merged handlePrClick requires anyway, since its event type became MouseEvent<HTMLAnchorElement>.

Sidebar.logic.ts / .test.ts — both sides added independent functions and describe blocks around a shared closing brace. Unioned, with the fork's block closed explicitly so nothing ends up nested (135 it( blocks before and after).

CommandPalette.logic.ts — unioned both Pick<> field lists: the fork's originSource / participantSummaries with upstream's modelSelection / session / worktreePath.

remote-access.md kept both new sections; mobile-showcase-environment.ts took upstream's added schema-wait helpers.

What review caught

  • A dead helper. The showcase script kept upstream's waitForSeedableSchema but lost its call site to an auto-merge — the classic weld failure. That restored the exact startup race upstream added it for: the server listens before it finishes migrating, so seeding could hit a column that doesn't exist yet. Call site restored.
  • A fork lint rule upstream does not have. Upstream's new helper sleeps with a global setTimeout; the fork's Effect diagnostics reject that in scripts/. Opted out at the file header the way its sibling mobile-showcase.ts already does, rather than rewriting upstream's helper.
  • fix(web): cmd+click sidebar PR numbers open in the browser pingdotgg/t3code#6378 half-applied. The fork's second numeric badge, in Recent Threads, was still a button. useOpenPrLink only leaves the native default alone for an anchor with an href, so middle-click and "open in new tab" did nothing there while working on project rows. Now the same anchor — and that conversion needs upstream's nested-link guard, which the recents row handler never had: without it a modifier-click on the badge would open the PR and toggle the row's selection.

Known, not changed

Upstream's new command-subtitle maps key project metadata by ProjectId alone, ignoring environmentId. In this fork projects come from every connected environment, so two environments sharing a ProjectId would cross their cwd/favicon/title. ProjectId is a random UUID per environment, so that needs a collision or a copied state.sqlite — worth a follow-up, not worth restructuring upstream's new code inside a sync.

Verification

pnpm typecheck (18 packages) · pnpm test272 files, 0 failures · vp build in apps/web · vp check --fix · forkSurfaceExistence (the anti-stack-drop net) green.

Co-authored-by: Patrick Roza 42661+patroza@users.noreply.github.com

🤖 Generated with Claude Code via T3 Chat on Discord

t3-code Bot and others added 16 commits August 12, 2026 14:32
Co-authored-by: t3-code[bot] <219304759+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
…otgg#4844)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…isting, update branch, reactions, in-place editing, smarter diffs (pingdotgg#6039)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
…6393)

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

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
14 upstream commits, six conflicts. Notable incoming work: the pull request
surfaces overhaul (pingdotgg#6039), T3 Connect environment deregistration (pingdotgg#4844),
project favicons in command subtitles (pingdotgg#6330), and PR links that honour
modifier-clicks (pingdotgg#6278, pingdotgg#6378).

Resolutions:

- LegacySidebar: upstream reworked the PR badge from a button into a real
  anchor so cmd/middle-click opens the PR in the browser. The fork had already
  replaced that icon badge with a numeric one, so taking upstream's block
  verbatim would have rendered two badges per row. Upstream's block is dropped
  and its anchor behaviour ported onto the fork's numeric badge — which the
  merged `handlePrClick` now requires anyway, since its event type became
  MouseEvent<HTMLAnchorElement>.
- Sidebar.logic(.test): both sides added independent functions and describe
  blocks around a shared closing brace; unioned, with the fork's block closed
  explicitly so nothing ends up nested.
- CommandPalette.logic: unioned both Pick<> field lists (fork's originSource /
  participantSummaries with upstream's modelSelection / session / worktreePath).
- remote-access.md: kept both new sections.
- mobile-showcase-environment: took upstream's added schema-wait helpers.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
…dges

Two adversarial reviews of the merge found the port was incomplete.

The showcase script kept upstream's `waitForSeedableSchema` helpers but lost
its call site to an auto-merge, leaving them dead and restoring the startup
race they were added for: the environment server listens before it finishes
migrating, so seeding could hit a table or column that does not exist yet.

The fork's second numeric PR badge, in Recent Threads, was still a button.
`useOpenPrLink` only leaves the native default alone for an anchor with an
href, so middle-click and "open in new tab" did nothing there while working on
the project rows — upstream's pingdotgg#6378 half-applied. It is now the same anchor.

That conversion needs upstream's nested-link guard, which the recents row
handler never had: without it a modifier-click on the badge would open the pull
request *and* toggle the row's selection.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-app Bot merged commit 0bf7835 into fork/dev Aug 13, 2026
5 checks passed
@omegent-app
omegent-app Bot deleted the sync/upstream-2026-08-12b branch August 13, 2026 05:46
omegent-app Bot added a commit that referenced this pull request Aug 15, 2026
#401 was squash-merged. That kept the code and threw the lineage away:
the 23 upstream commits stopped being ancestors, so `fork/dev` read as
**29 commits behind upstream when only 6 were genuinely outstanding**,
and the next sync would have re-merged and re-resolved all 23 — on the
same mobile files that took sixteen conflicts to land the first time.

Nobody noticed for two merges. It surfaced in a deploy alert that said
**"Commits (2)"** for a range that had carried 23.

## What this adds

A `push`-triggered check on `fork/dev` that fails when a commit which
carried a sync has fewer than two parents, and prints the `-s ours`
repair in the log.

Sync commits are identified by **the head branch of the PR they came
from**, not by their subject, because subjects vary by merge method:

```
Merge pull request #400 from patroza/sync/upstream-2026-08-12b
Merge upstream/main into fork/dev (23 commits) (#401)
merge: sync upstream through b73232b
```

A merge-button commit names the branch inline, so no API call is needed;
squash and rebase commits are resolved through the API, with the subject
line as a fallback when that is unavailable. **Ordinary fork PRs are
untouched** — they are expected to squash, and are never checked.

## Verified against the real commits

| commit | what it is | result |
|---|---|---|
| `5e63531b1` | #401, squash-merged sync | **fails**, exit 1 |
| `0bf7835cc` | #400, sync merged properly | recognised as a sync,
passes (2 parents) |
| `a76069bd9` | #402, an ordinary squashed PR | not flagged |

The third row is the one that matters most: the guard has to stay silent
on your normal workflow.

## This detects, it does not prevent

Worth being explicit, since it was the first question asked: **clicking
merge does not fail.** The check runs after the merge lands, because
GitHub has no per-PR merge-method control, and a repository-wide setting
cannot allow squash for ordinary fork PRs while requiring a merge commit
for syncs. Squash merges do fire `push` — `5e63531b1` triggered Fork CI
at 08:08 — so this turns a silent, weeks-later discovery into a red
check within a minute.

Actual prevention is `gh pr merge <n> --merge`, which is how #398, #399
and #400 all landed correctly. That is now written into the sync runbook
in `AGENTS.md`.

If you would rather it be enforced at the button, the next step is a
`sync:upstream` label workflow that merges the PR through the API once
checks pass — say the word and I will add it.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>

🤖 Generated with [Claude Code](https://claude.com/claude-code) via [T3
Chat](https://t3.chat) on Discord

---------

Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
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.

8 participants