chore: merge upstream/main while preserving fork features - #13
Conversation
…ingdotgg#11833) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Removed labels from effect service conventions.
Removed labels from UI consistency configuration.
…ad (pingdotgg#11836) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…tgg#11679) Co-authored-by: Julius Marminge <julius0216@outlook.com>
…ead (pingdotgg#11852) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ingdotgg#11883) Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
…dotgg#11906) Co-authored-by: T3 Code Test <t3code-test@example.com>
…gg#11381) Co-authored-by: yashranaway <yashranaway@users.noreply.github.com>
…ngdotgg#8309) Co-authored-by: Julius Marminge <julius0216@outlook.com>
…tgg#11958) Co-authored-by: Antony <tnybyn@gmail.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…folders (pingdotgg#12008) The health probe launched the PyInstaller ACP binary every minute and force killed it, leaving about 1 GB of _MEI files per run. The probe now resolves the install on disk without spawning. Each ACP process gets its own temp directory under the profile that is removed when the runtime closes, and the driver sweeps the profile temp root on create. Continues pingdotgg#11657 by Vita Skacel. Owned temp directory approach from pingdotgg#9626 by ariszz. Co-authored-by: Vita Skacel <skacel.vita@gmail.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Merge upstream/main (8c18b5b) into the fork. Conflicts resolved to keep the fork's Forgejo provider, OhMyPi provider, --public-url, wake command, existing-branch worktree checkout, and trimmed CI workflows: - knip.jsonc: keep both smoke-cli-archive.ts and upstream's new mobile-native-client.ts as script entries. - PullRequestService.ts: adopt upstream's JSON.stringify ref scope and refCacheKey-based diff key, using the fork's Forgejo-aware repository normalization. - PullRequestService.test.ts: mock both `get` (fork) and `resolveLink` (upstream) on the source control registry. - SourceControlProviderRegistry.test.ts: keep the fork's listLogins mock and Forgejo refinement test alongside upstream's github/gitlab mocks and link-routing test. - mobile-eas-production.yml stays deleted (fork removed org-only workflows). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7db37d34c7
ℹ️ 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".
| if (!queue || queue.length === 0) { | ||
| return EMPTY_QUEUE; |
There was a problem hiding this comment.
Bump the cancellation generation after the queue was taken
When the only queued message has already been removed by take() and is awaiting an attachment upload, pressing Stop calls drain() on an empty queue and returns here without incrementing drainGeneration. The in-flight replay therefore passes the generation check in ChatView and starts a new turn after the interrupt, contrary to Stop's promise to cancel queued messages. Record the drain/cancellation even when no queued entry remains.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved critical and moderate review findings remain.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
This pull request syncs the fork with upstream/main while preserving fork-specific mobile, UI, tooling, and Macroscope functionality.
Changes:
- Adds protocol compatibility, unsupported-environment handling, and usage/setup/title updates.
- Adds queued follow-ups, monograms, keyboard/navigation features, and native-client workflows.
- Updates web, mobile, desktop, server, source-control, linting, documentation, and build tooling.
File summaries
| File | Change / review note |
|---|---|
vite.config.ts |
Updates Hermes API linting. |
patches/react-native-gesture-handler@2.32.0.patch |
Fixes gesture-handler hover cleanup and typings. |
packages/shared/src/keybindings.ts |
Adds queued-message shortcut. |
packages/contracts/src/worktreeSetup.ts |
Defines setup activity identity. |
packages/contracts/src/settings.ts |
Adds follow-up behavior settings. |
packages/contracts/src/settings.test.ts |
Tests follow-up settings. |
packages/contracts/src/keybindings.ts |
Registers steering command. |
packages/contracts/src/environment.ts |
Adds protocol metadata. |
packages/client-runtime/src/work-log/presentation.ts |
Hides setup activity records. |
packages/client-runtime/src/state/usage.ts |
Adds usage refresh cooldown. |
packages/client-runtime/src/state/usage.test.ts |
Tests cooldown behavior. |
packages/client-runtime/src/state/threads-pagination.test.ts |
Tests pagination replacement. |
packages/client-runtime/src/state/threads-atoms.test.ts |
Updates supervisor test shape. |
packages/client-runtime/src/state/threadReducer.ts |
Projects title state. |
packages/client-runtime/src/state/pullRequestRouting.ts |
Adds read timeouts and routing fallback. |
packages/client-runtime/src/state/presentation.ts |
Presents unsupported environments. |
packages/client-runtime/src/connection/presentation.ts |
Adds unsupported phase. Finding (moderate, 1 vote): Legacy classifiers must treat unsupported as terminal to avoid indefinite spinners and futile reconnect paths. |
packages/client-runtime/src/connection/presentation.test.ts |
Tests unsupported presentation. |
packages/client-runtime/src/connection/onboarding.ts |
Rejects incompatible pairing targets. |
packages/client-runtime/src/connection/onboarding.test.ts |
Tests pairing rejection. |
packages/client-runtime/src/connection/layer.ts |
Watches compatibility during discovery. |
packages/client-runtime/src/connection/index.ts |
Exports compatibility helper. |
packages/client-runtime/src/connection/compatibility.ts |
Implements protocol checks. |
packages/client-runtime/src/connection/compatibility.test.ts |
Tests protocol handling. |
packages/client-runtime/src/connection/catalog.ts |
Stores unsupported reasons. |
oxlint-plugin-t3code/rules/no-hermes-unsupported-array-methods.ts |
Removes the replaced lint rule. |
oxlint-plugin-t3code/rules/no-hermes-unsupported-apis.ts |
Adds generalized Hermes API linting. Finding (moderate, 1 vote): Unwrap ChainExpression before resolving optional calls so Intl.Segmenter?.() is linted. |
oxlint-plugin-t3code/rules/no-hermes-unsupported-apis.test.ts |
Tests Hermes API linting. |
oxlint-plugin-t3code/index.ts |
Registers the new lint rule. |
knip.jsonc |
Adds mobile and title script entries. |
docs/user/usage.md |
Documents automatic usage refresh. |
docs/user/project-settings.md |
Documents monogram icons. Finding (nit, 1 vote): Mobile ignores projectIcon, so selected monograms do not appear despite the documentation claim. |
docs/user/keybindings.md |
Documents iPad shortcuts. |
docs/user/composer.md |
Documents queued follow-ups. |
apps/web/src/state/threads.ts |
Supplies thread snapshots. |
apps/web/src/session-logic.ts |
Filters setup worklog entries. |
apps/web/src/routes/_chat.draft.$draftId.tsx |
Resets draft chat state. |
apps/web/src/projectIdentity.ts |
Uses icon palette colors. |
apps/web/src/projectIdentity.test.ts |
Tests palette-derived identities. |
apps/web/src/keybindings.test.ts |
Tests the steering shortcut. |
apps/web/src/composerDraftStore.ts |
Restores failed draft threads. |
apps/web/src/components/usage/UsagePage.tsx |
Refreshes limits on opening. |
apps/web/src/components/ui/dialog-styles.ts |
Adjusts desktop drag region. |
apps/web/src/components/sidebar/SidebarThreadHeader.tsx |
Simplifies sidebar controls. |
apps/web/src/components/sidebar/SidebarChrome.tsx |
Aligns sidebar branding. |
apps/web/src/components/Sidebar.tsx |
Guards post-settle navigation. |
apps/web/src/components/Sidebar.logic.ts |
Adds parking navigation logic. |
apps/web/src/components/Sidebar.logic.test.ts |
Tests parking navigation. |
apps/web/src/components/settings/settingsSearch.ts |
Adds follow-up search entry. |
apps/web/src/components/settings/SettingsPanels.tsx |
Adds follow-up setting UI. |
apps/web/src/components/settings/ProjectSettingsPanel.tsx |
Adds monogram picker support. |
apps/web/src/components/settings/ProjectIconPickerDialog.test.tsx |
Updates picker test props. |
apps/web/src/components/settings/ConnectionsSettings.tsx |
Displays unsupported environments. |
apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx |
Wraps narrow PR tabs. |
apps/web/src/components/pullRequest/PullRequestCodeTab.tsx |
Adjusts narrow diff controls. |
apps/web/src/components/ProviderUpdateLaunchNotification.environments.ts |
Handles unsupported state. |
apps/web/src/components/ProjectMonogram.tsx |
Renders monogram icons. |
apps/web/src/components/ProjectFavicon.tsx |
Uses monogram overrides. |
apps/web/src/components/diffs/DiffFileTree.test.tsx |
Tests folder state retention. |
apps/web/src/components/diffs/diffFileTree.logic.ts |
Preserves diff reading order. |
apps/web/src/components/diffs/diffFileTree.logic.test.ts |
Tests diff ordering. |
apps/web/src/components/device/DevicePanel.tsx |
Centers empty device actions. |
apps/web/src/components/ConnectionStatusDot.tsx |
Styles unsupported status. |
apps/web/src/components/cloud/cloudEnvironmentConnectionPresentation.ts |
Presents cloud incompatibility. |
apps/web/src/components/chat/TraitsPicker.tsx |
Restores composer focus behavior. |
apps/web/src/components/chat/ProviderModelPicker.tsx |
Adds shortcut tooltip text. |
apps/web/src/components/chat/ProviderInstanceIcon.tsx |
Fixes icon stacking. |
apps/web/src/components/chat/ModelPickerSidebar.tsx |
Fixes badge stacking. |
apps/web/src/components/chat/MessagesTimeline.logic.ts |
Adds queued-message rows. |
apps/web/src/components/chat/MessagesTimeline.logic.test.ts |
Tests queued rows. |
apps/web/src/components/chat/ComposerPrimaryActions.tsx |
Adds queue action while running. Finding (moderate, 2 votes): Steer mode still announces “Queue message”; derive the label from the resolved follow-up behavior. |
apps/web/src/components/chat/ComposerPrimaryActions.test.tsx |
Tests the queue action. |
apps/web/src/components/chat/composerEventScope.ts |
Restores composer focus after menus. |
apps/web/src/components/chat/composerEventScope.test.ts |
Tests menu focus behavior. |
apps/web/src/components/chat/CompactComposerControlsMenu.tsx |
Uses focus-aware menu props. |
apps/web/src/components/chat/ChatComposer.tsx |
Applies focus-aware menus. |
apps/web/src/components/BranchToolbarEnvModeSelector.tsx |
Applies menu focus handling. |
apps/web/src/components/BranchToolbarEnvironmentSelector.tsx |
Applies menu focus handling. |
apps/web/src/components/BranchToolbarBranchSelector.tsx |
Applies menu focus handling. |
apps/web/src/components/BranchToolbar.tsx |
Applies menu focus handling. |
apps/web/src/components/AppSidebarLayout.tsx |
Supports dynamic desktop inset. |
apps/server/src/vcs/GitVcsDriver.ts |
Reuses checkpoint index metadata. |
apps/server/src/textGeneration/ThreadTitleLinks.ts |
Resolves linked subjects. |
apps/server/src/textGeneration/ThreadTitleContext.test.ts |
Tests title context limits. |
apps/server/src/textGeneration/TextGenerationUtils.ts |
Adjusts title limits and schemas. |
apps/server/src/textGeneration/TextGenerationPrompts.test.ts |
Tests title generation changes. |
apps/server/src/textGeneration/TextGeneration.ts |
Adds link context enrichment. |
apps/server/src/textGeneration/OpenCodeTextGeneration.ts |
Passes title refinement state. |
apps/server/src/textGeneration/GrokTextGeneration.ts |
Passes title refinement state. |
apps/server/src/textGeneration/CursorTextGeneration.ts |
Passes title refinement state. |
apps/server/src/textGeneration/CodexTextGeneration.ts |
Passes title refinement state. |
apps/server/src/textGeneration/CodexTextGeneration.test.ts |
Tests title refinement output. |
apps/server/src/textGeneration/ClaudeTextGeneration.ts |
Passes title refinement state. |
apps/server/src/textGeneration/AntigravityTextGeneration.ts |
Passes title refinement state. |
apps/server/src/terminal/Manager.test.ts |
Tests terminal environment overrides. |
apps/server/src/sourceControl/SourceControlRepositoryService.test.ts |
Updates provider mocks. |
apps/server/src/sourceControl/SourceControlRateLimit.ts |
Scopes rate limits by credential. |
apps/server/src/sourceControl/SourceControlRateLimit.test.ts |
Tests credential isolation. |
apps/server/src/sourceControl/SourceControlProviderRegistry.ts |
Adds link resolution. |
apps/server/src/sourceControl/SourceControlProvider.ts |
Defines link subjects. |
apps/server/src/sourceControl/GitLabSourceControlProvider.ts |
Resolves GitLab links. |
apps/server/src/sourceControl/githubGraphQlBudget.ts |
Scopes GitHub budgets. |
apps/server/src/sourceControl/githubGraphQlBudget.test.ts |
Tests quota isolation. |
apps/server/src/sourceControl/ForgejoCli.ts |
Includes API response details. |
apps/server/src/serverRuntimeStartup.test.ts |
Updates projection query mocks. |
apps/server/src/server.ts |
Provides source-control services. |
apps/server/src/pullRequest/GitHubPullRequestProvider.ts |
Preserves retry timestamps. |
apps/server/src/pullRequest/GitHubPullRequestCli.ts |
Scopes GitHub credentials. |
apps/server/src/pullRequest/GitHubPullRequestCli.test.ts |
Updates rate-limit test layers. |
apps/server/src/provider/Layers/ProviderSessionReaper.test.ts |
Updates projection mocks. |
apps/server/src/provider/Layers/ProviderService.test.ts |
Updates projection mocks. |
apps/server/src/provider/Layers/ProviderRegistry.test.ts |
Improves executable errors. |
apps/server/src/provider/Layers/CodexProvider.ts |
Improves binary-path errors. |
apps/server/src/provider/acp/AntigravitySessionFiles.ts |
Cleans stale runtime directories. |
apps/server/src/project/WorktreeSetupTracker.ts |
Returns settled setup snapshots. |
apps/server/src/project/ProjectSetupScriptRunner.ts |
Disables setup-script colors. |
apps/server/src/project/ProjectSetupScriptRunner.test.ts |
Tests setup environment overrides. |
apps/server/src/project/AgentSessionScanner.test.ts |
Updates projection mocks. |
apps/server/src/persistence/Services/ProjectionThreads.ts |
Persists title state. |
apps/server/src/persistence/Migrations/052_ProjectionThreadTitleState.ts |
Adds title-state migration. |
apps/server/src/persistence/Migrations.ts |
Registers migration 052. |
apps/server/src/persistence/Layers/ProjectionThreads.ts |
Reads and writes title state. |
apps/server/src/persistence/Layers/OrchestrationEventStore.ts |
Encodes project icons. |
apps/server/src/orchestration/Services/ProjectionSnapshotQuery.ts |
Adds activity queries and title state. |
apps/server/src/orchestration/projector.ts |
Retains setup and title state. |
apps/server/src/orchestration/projector.test.ts |
Tests setup retention. |
apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.test.ts |
Tests list streaming. |
apps/server/src/orchestration/Layers/ProjectionPipeline.ts |
Projects title state. |
apps/server/src/orchestration/Layers/ProjectionPipeline.test.ts |
Tests icon persistence. |
apps/server/src/orchestration/Layers/OrchestrationEngine.test.ts |
Updates projection mocks. |
apps/server/src/orchestration/Layers/CheckpointReactor.ts |
Adjusts checkpoint timing and refresh. |
apps/server/src/orchestration/Layers/CheckpointReactor.test.ts |
Updates refresh callback shape. |
apps/server/src/orchestration/decider.titleRegeneration.test.ts |
Tests title ownership. |
apps/server/src/orchestration/decider.projectScripts.test.ts |
Tests monogram validation. |
apps/server/src/mcp/PreviewAutomationBroker.ts |
Disconnects timed-out clients. |
apps/server/src/git/GitWorkflowService.ts |
Adds optional fetch ref. |
apps/server/src/git/GitManager.test.ts |
Updates provider registry mocks. |
apps/server/src/environment/ServerEnvironment.ts |
Publishes protocol version. |
apps/server/src/environment/ServerEnvironment.test.ts |
Tests protocol metadata. |
apps/server/src/cloud/serviceProtocol.ts |
Bumps launcher protocol. |
apps/server/src/cloud/servicePreflight.test.ts |
Tests legacy launcher blocking. |
apps/server/src/checkpointing/CheckpointDiffQuery.test.ts |
Updates projection mocks. |
apps/server/integration/OrchestrationEngineHarness.integration.ts |
Updates refresh callback shape. |
apps/mobile/src/state/workspaceModel.ts |
Adds unsupported workspace state. |
apps/mobile/src/state/use-remote-environment-registry.ts |
Alerts on incompatibility. |
apps/mobile/src/state/threads.ts |
Supplies thread snapshots. |
apps/mobile/src/state/shell.ts |
Adds local shell state access. |
apps/mobile/src/state/asset-url-state.ts |
Handles unsupported assets. |
apps/mobile/src/persistence/mobile-preferences.ts |
Persists keyboard behavior. |
apps/mobile/src/native/T3ComposerEditor.types.ts |
Adds enter behavior prop. |
apps/mobile/src/native/T3ComposerEditor.tsx |
Accepts enter behavior. |
apps/mobile/src/native/T3ComposerEditor.ios.tsx |
Sends enter behavior to native. |
apps/mobile/src/lib/useHoverGesture.ts |
Adds pointer hover gestures. Finding (moderate, 3 votes): manualActivation(true) is never activated, so onBegin does not run and row hover feedback is disabled. |
apps/mobile/src/lib/threadActivity.ts |
Surfaces setup failures. |
apps/mobile/src/lib/composerEnterBehavior.ts |
Defines iOS return behavior. |
apps/mobile/src/lib/adaptive-navigation.ts |
Adds overlay navigation state. Finding (critical, 1 vote): routes.length produces an out-of-range reset index; use the appended or replaced thread index. |
apps/mobile/src/features/usage/UsageRouteScreen.tsx |
Refreshes limits when focused. |
apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx |
Adds rename and keyboard actions. |
apps/mobile/src/features/threads/threadListV2.test.ts |
Tests thread jump targets. |
apps/mobile/src/features/threads/ThreadFeed.tsx |
Removes unstable row transitions. |
apps/mobile/src/features/threads/thread-title-rename.ts |
Adds rename resolution logic. |
apps/mobile/src/features/threads/thread-title-rename.test.ts |
Tests rename resolution. |
apps/mobile/src/features/threads/thread-route-hydration.ts |
Defines route hydration state. Findings (moderate, 1 vote each): Treat unsupported as terminal to prevent an indefinite opening spinner; propagate an explicit unsupported state so incompatible environments show client guidance instead of a futile reconnect. |
apps/mobile/src/features/threads/thread-route-hydration.test.ts |
Tests hydration outcomes. |
apps/mobile/src/features/threads/NewTaskDraftScreen.tsx |
Submits hardware Return. |
apps/mobile/src/features/threads/floating-working-status.ts |
Displays unsupported status. |
apps/mobile/src/features/settings/SettingsRouteScreen.tsx |
Adds iOS keyboard settings. |
apps/mobile/src/features/settings/components/settings-sheet-targets.ts |
Adds keyboard settings route. |
apps/mobile/src/features/layout/workspace-pane-divider.tsx |
Removes hover-only divider state. |
apps/mobile/src/features/keyboard/threadKeyboardShortcuts.ts |
Adds thread jump shortcuts. |
apps/mobile/src/features/keyboard/hardwareKeyboardCommands.ts |
Supports command arrays. |
apps/mobile/src/features/keyboard/commandPaletteItems.ts |
Adds palette filtering. |
apps/mobile/src/features/home/HomeRouteScreen.tsx |
Adds thread rename action. |
apps/mobile/src/features/home/homeListItems.test.ts |
Tests thread jump numbering. |
apps/mobile/src/features/connection/EnvironmentConnectionNotice.tsx |
Presents unsupported connections. |
apps/mobile/src/features/connection/connectionTone.ts |
Adds unsupported tone. |
apps/mobile/src/features/connection/ConnectionStatusDot.tsx |
Styles unsupported status. |
apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx |
Disables unsupported toggles. |
apps/mobile/src/features/connection/CloudEnvironmentRows.tsx |
Disables unsupported cloud rows. |
apps/mobile/src/features/cloud/cloudEnvironmentPresentation.ts |
Detects cloud incompatibility. |
apps/mobile/src/features/cloud/cloudEnvironmentPresentation.test.ts |
Tests cloud incompatibility. |
apps/mobile/src/components/RowPressable.tsx |
Adds reusable row feedback. |
apps/mobile/src/components/ComposerEditor.tsx |
Reads keyboard preferences. |
apps/mobile/src/App.tsx |
Sets deep-link initial route. |
apps/mobile/README.md |
Documents native client setup. |
apps/mobile/package.json |
Updates Reanimated and Worklets. |
apps/mobile/modules/t3-terminal/ios/T3TerminalView.swift |
Emits delete input. |
apps/mobile/modules/t3-composer-editor/ios/T3ComposerEditorModule.swift |
Exposes enter behavior. |
apps/mobile/eas.json |
Adds preview build and submit profiles. |
apps/desktop/vite.config.ts |
Splits desktop process bundles. |
apps/desktop/src/window/DesktopWindow.ts |
Centers macOS window controls. |
apps/desktop/src/window/DesktopWindow.test.ts |
Tests zoomed controls. |
apps/desktop/src/window/DesktopApplicationMenu.ts |
Avoids duplicate plain-text paste. |
apps/desktop/src/window/DesktopApplicationMenu.test.ts |
Tests accelerator paste behavior. |
apps/desktop/src/preload.ts |
Syncs desktop window insets. |
AGENTS.md |
Documents native client verification. |
.macroscope/check-run-agents/ui-consistency.md |
Makes UI checks neutral. |
.macroscope/check-run-agents/effect-service-conventions.md |
Makes Effect checks neutral. |
.agents/skills/ios-debugger-agent/SKILL.md |
Documents native client preparation. |
Review details
Suppressed comments (5)
apps/mobile/src/features/threads/thread-route-hydration.ts:26
- The new
unsupportedphase is not treated as terminal here. While another environment is still loading connections, an incompatible target reaches theisLoadingConnectionscheck and keeps showing the opening spinner indefinitely instead of the unavailable state. Includeunsupportedwith the other terminal phases.
apps/mobile/src/features/threads/thread-route-hydration.ts:34 - An incompatible environment reaches this helper's generic
falseresult, soThreadRouteScreenrenders the generic "Thread unavailable" view and offers "Reconnect environment" whenever a runtime exists.retryEnvironmentcannot fix a protocol mismatch; propagate an explicit unsupported terminal state and show the compatible-client guidance instead of offering a futile retry.
docs/user/project-settings.md:47 - The new Monogram choice is rendered by the web
ProjectFavicon, but mobile'sProjectFaviconstill ignoresprojectIconand only renders a fetched favicon or the folder fallback. Consequently a monogram selected here does not appear on mobile, despite this documentation saying the choice appears on connected clients. Wire the override through the mobile project icon presentation or narrow the claim.
oxlint-plugin-t3code/rules/no-hermes-unsupported-apis.ts:54 - The added invalid-case table includes
Intl.Segmenter?.(), but ESTree represents an optional call with aChainExpressionaround the member expression. Passing that wrapper toglobalApiPathreturnsnull, so this visitor skips the optional invocation and the rule does not enforce the case its test requires. Unwrap the chain before resolving the API path.
packages/client-runtime/src/connection/presentation.ts:14 - Adding
unsupportedhere leaves the legacy sidebar's secondary-environment classifier checking onlyphase === "error"; an incompatible environment therefore falls through to itsconnectinglist and can show a spinner indefinitely instead of a terminal failure. Update that consumer (and similar phase classifiers) to treatunsupportedas terminal and avoid offering a reconnect path that cannot succeed.
- Files reviewed: 281/282 changed files
- Comments generated: 3
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| const routes = input.state.routes.slice(0, workspaceIndex + (input.action === "push" ? 1 : 0)); | ||
| return { | ||
| ...input.state, | ||
| index: routes.length, |
| const hoverGesture = useMemo( | ||
| () => | ||
| Gesture.Hover() | ||
| .manualActivation(true) |
| : isRunning | ||
| ? "Queue message" | ||
| : "Send message" |
What Changed
Syncs this fork with
upstream/mainwhile keeping fork-only work intact. The merge brings in the latest upstream fixes and features, including:_MEIfolders (fix(antigravity): stop health checks from filling the disk with _MEI folders pingdotgg/t3code#12008)Intl.Segmenteravoidance in monogram validation (fix(contracts): avoid Intl.Segmenter in monogram validation (Hermes crash) pingdotgg/t3code#11984)Fork features preserved on top:
scripts/mobile-native-client.tsplus the updatedtest-t3-mobile/ios-debugger-agentskill workflow treating a stale native client as a build step, not a blockerneutralconclusion and drop labelsWhy
Keeps the fork current with upstream so future merges stay cheap, without giving up fork-specific functionality. Conflicts were resolved to adopt upstream refactors while re-applying fork behavior where the two overlap.
UI Changes
No new fork UI in this merge. Upstream contributes visible fixes (sidebar brand/button alignment, PR controls in narrow panels, composer focus handling, mobile command palette and keyboard shortcuts); their before/after evidence lives in the referenced upstream PRs.
Checklist
Generated by opencode (glm-5.3-flash).