Repository navigation
Merge upstream T3 Code through bb7783e295 into Lecturn - #175
Merged
Merged
Conversation
….com footer (pingdotgg#23133) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tgg#22976) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#22978) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#22979) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…uest (pingdotgg#23143) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ds with its sidebar (pingdotgg#23144) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…s list (pingdotgg#23145) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tgg#23146) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ine in place (pingdotgg#23147) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…its tab bar (pingdotgg#23148) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ngdotgg#23149) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ngdotgg#23150) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…3226) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…2094) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gg#23052) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gdotgg#23205) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…card (pingdotgg#23282) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…ingdotgg#22777) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…uests (pingdotgg#23034) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…sed (pingdotgg#23170) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ngdotgg#23096) Co-authored-by: Vishal <vishalprashantdoshi@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: Vishal Doshi <vdoshi96@users.noreply.github.com>
…ingdotgg#24172) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#23895) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ver (pingdotgg#23814) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…he version mismatch instead of reconnecting forever (pingdotgg#23647) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gdotgg#23789) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ngdotgg#24329) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@theo.li> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…24206) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…#24339) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…pingdotgg#24348) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#24287) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…e search (pingdotgg#24343) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Integrates 158 first-parent upstream commits after a12d6ed: the Node 26.12.1 pin, the iPhone Duo run, unified mobile draft and thread navigation, Usage and Settings in mobile workspace navigation, messages from other agents as one-line rows, right-to-left text, ChatView render isolation, indexed Cmd+K search, GitCafe reviewers and labels, the em dash and polling test lints, and a further test prune under the retention rule. Fork edits moved with the code they sat in; RESOLUTION_GUIDE lists where they landed. Relay preview and stale-issue workflows are not taken. Migrations 068 and 069 become 86 and 87 on the fork ledger. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Point the service preflight install command at the fork's real install script; the identity sweep had invented a dead host. - Open folded agent rows when a citation targets them. - Clear accountId and appId on mobile route resets, and keep app workspaces out of the Home new-thread fallback. - Android Apps drafts go back to Apps, Stave draft headers read the primary repo, and new-task finishes keep a real thread on the back stack. - Keep recent palette queries out of app and embed sessions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pin the Stave draft header git action target in its test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fork does not take the relay preview workflows, so it still holds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nurozen
marked this pull request as ready for review
November 7, 2026 19:55
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
True merge of
pingdotgg/t3codethroughbb7783e295506ad423f527ed28a019836e331e8c(158 first-parent commits aftera12d6ed942) into Lecturn main, including #172 and #176. 237 conflicts, no.reposcommit in the range. It stops before upstream's forge-definitions refactor run (pingdotgg#23992 onward).What changes for users
Kept or left out on purpose
Recorded in
RESOLUTION_GUIDE.md:relay-preview.yml,relay-preview-cleanup.ymlandstale-needs-more-info.ymlare not taken (PR code on repo secrets; public issue closing). Fork reply features moved besideThreadTimeline. Upstream's sidebar row motion is not taken on mobile. Palette queries are kept out of app and embed sessions.Verification
accountIdon thread selection, and app workspaces as the Home new-thread default. Delta reviews pass with nits. Grok accepts each round.build-exepasses on macOS.useEffectEventresult in a dependency array, no provider fix needed. "Maximum update depth exceeded" never appeared in web or Android captures; the mobile inspector screen was not captured.Limitations
3cfb765band75d8ac82; Android on433ea6f7and3cfb765b. Since then: a mobile route param, tests, docs and docs(privacy): describe hashed analytics identifiers and the real opt-out #172/fix(ci): run the auth email test from its own package #176. No layout change.build-exeon Linux, EAS store builds on Node 26.Web evidence (48 pairs)
UI evidence: isolated synthetic fixture (web dev server, stub Codex, headless Chrome 1440x900 at 1x, dark)
Before = 0ec7aee, the tree of main 984c2a6; after = 3cfb765 and 75d8ac8, with the same web app code as head ff448b5 (see the note below).
No regressions. Every upstream UI change reached with a visible defect now behaves as intended, and the spot checks match main apart from relative times, sidebar run order and the sidebar scroll from pingdotgg#23519. "Maximum update depth exceeded" appeared 0 times on any scene.
One open bug is inherited, not added here. Choosing a project in the sidebar "All projects" scope crashes the app with "Too many re-renders" on main and on this branch, in dev and production builds.
Real send: the stub calls Lecturn's MCP lecturn_thread_send.
Citation link built with the app's helper and opened by URL.
Final answer mixes Arabic, Hebrew and English.
Typed Arabic.
Composer 544 px wide.
MCP result with 11 images and a limit of 8 (1 px test images).
Durations patched into the stored plan (see notes).
Stub fails the turn with usageLimitExceeded, then Snooze until reset.
Text typed, no selection, Cmd+B, more text.
All text selected.
Header 944 px wide.
Clip of the Text generation section.
Server started with an unreachable LECTURN_OTLP_TRACES_URL.
Toast added through the app's toast manager (see notes).
Real click on "All projects", then a project.
Thread with two subagents.
Threads "Port the feeding log" and a newer "Report the weekly totals".
Text from an agent answer.
40 MB synthetic PNG through a real paste event. The settled frames are pixel-identical; the change is timing.
Synthetic PR data (see notes).
Mock: detail has 1 passing check, the checks call has 3 with one failure.
Synthetic PR data (see notes).
Migrated thread whose reply has no run.
Hover on the later user message.
Stored request marked as a connected app tool (see notes).
Squires enabled.
End frame.
Two checkouts of one repository, one Stave space.
Row layout, status line.
Worked row expanded.
A settled thread, shelf open.
Saved note from a selection.
12 turn thread, hover on the last strip.
Image and file attached, text typed.
Open from the composer.
Change theme.
Search "roster".
Directory browser.
Synthetic PR data (see notes).
Detail open, hover on the watch button.
Clip of the detail header.
Tap inside the app.
Corner clip.
How these were made. Both sides ran the same scripted steps, one after the other, on a fresh isolated fixture: synthetic projects, a stub Codex, Claude off, HOME set to the fixture, the github.com host turned off and the host label masked as "Fixture Mac". A pixel diff backs the verdicts. Differences from the clock or the run (relative times, ids, the dev port) are not counted.
Sources. Before is 0ec7aee, the same tree as main 984c2a6. Spot-check before frames are reused from the last checkpoint's after frames on that tree. After ran on 3cfb765; PR scenes 87 to 89 and the spot checks ran on 75d8ac8. The web app code is the same from 3cfb765 through ff448b5: later commits change mobile, CI, docs and a static privacy page.
Sidebar scope crash. Choosing any project in the scope picker, or reloading with one saved, fails with "Too many re-renders" (React error 301 in production) in
<Sidebar>until the saved scope is cleared. Both production builds crash the same way, so this is inherited. Likely cause, from reading the code and not tested with a fix:useSidebarSegments.tsline 105 comparesscopedProjectKeysby identity during render, andSidebar.tsxbuilds that Set anew. The production pages ran from a local static server in front of the fixture server, not from a packaged app.Fixture patches, disclosed.
Parity only, defect not reproduced on main here. pingdotgg#23967: the draft opens on both sides with sockets cut in the page, which may not match a truly offline project. pingdotgg#23233: no toast on either side with a forced update advisory. pingdotgg#23519: the unscoped back case already had the row in view, and the scoped case hits the crash above.
Not shown: pingdotgg#23896 tool icons in light mode (the stub has no image tool icon), the pingdotgg#24259 Edit comment action (no button with the mock), the AccountMark and Connect sidebar rows, and the PR Code tab.
Android evidence
Android evidence (phone and 10-inch tablet, dark, Lecturn theme; GitHub-hosted ubuntu-24.04, capture-only harness)
Verdict: no confirmed regression, with one open item below. Synthetic fixture only. Method: ffmpeg max-channel pixel difference, threshold 12/255. Logs: 0 "Maximum update depth" in all 15 runs; no red screens or launcher ANR dialogs in the frames reviewed.
Heads. Each row names its source. Before
e5a1909breuses the earlier frames: to 984c2a6, mobile changed only send gating for pending approvals and comments, which these scenes do not render. After3cfb765bwas compared to the433ea6f7frames: draft 0.00% on phone, and thread, threads, apps and tablet draft at most 0.61%, all relative times, status-bar icons and sidebar row shift. Rows marked433ea6f7were not recaptured on later heads. PR head1abf40d6differs from3cfb765bin mobile by non-layout navigation fixes (route params, draft back and new-task routing) and tests; no capture ran on1abf40d6.Open item. One of 6 after captures on phone showed an empty thread feed under the composer with a draft present (first scene after a cold start, agent-row stub applied). A rerun of the same commit showed the feed, as did the other 4 phone and all 6 tablet captures. Before showed the feed in its 3 phone captures, so a before-side count this small cannot exclude a change. The cause is not established; capture timing against the feed reveal is the likely reading, and that reveal gate also exists before this merge.
Stubs. Capture-only client stubs supply the draft model, draft text, agent message attribution and scratch icon. The fixture has no model options: without a model, the draft shows upstream's (pingdotgg#23467) "Your draft is saved on this device. Connect to an environment to choose its first model." with no composer controls, even with the environment connected.
Phone (1080×1920)
e5a1909 to 3cfb765
e5a1909 to 3cfb765
e5a1909 to 3cfb765
984c2a6 to 3cfb765
984c2a6 to 433ea6f
984c2a6 to 433ea6f
984c2a6 to 433ea6f
e5a1909 to 433ea6f
e5a1909 to 433ea6f
e5a1909 to 433ea6f
e5a1909 to 433ea6f
e5a1909 to 433ea6f
984c2a6 to 433ea6f
984c2a6 to 433ea6f
984c2a6 to 433ea6f
984c2a6 to 433ea6f
984c2a6 to 433ea6f
10-inch tablet, split view (1440×2560)
e5a1909 to 3cfb765
e5a1909 to 3cfb765
e5a1909 to 3cfb765
984c2a6 to 3cfb765
984c2a6 to 433ea6f
984c2a6 to 433ea6f
984c2a6 to 433ea6f
e5a1909 to 433ea6f
e5a1909 to 433ea6f
e5a1909 to 433ea6f
e5a1909 to 433ea6f
e5a1909 to 433ea6f
984c2a6 to 433ea6f
984c2a6 to 433ea6f
984c2a6 to 433ea6f
984c2a6 to 433ea6f
984c2a6 to 433ea6f
After only
433ea6f7)3cfb765b)Other scenes checked with no regression (
433ea6f7, not published): environments, agent activity, usage in Settings, scheduled tasks, new scheduled task, environment detail, Stave and import flows. Maintenance differs only because the earlier frame carried a stubbed database notice. The Arcane backdrop with automatic insets is the Lecturn theme, shown in the frames above at its resting scroll position.Not covered: pingdotgg#22110 HTML links in pull request comments and a loaded pull request (no GitHub in the fixture), tapping new thread from an app card (no connected app; its draft route is the same as the draft row), large text label fit, scrolled backdrop position, other palettes, iOS (capture route broken).
🤖 Generated with Claude Code