From da6a85b1365993d0ff2a79698cd82498de247d8a Mon Sep 17 00:00:00 2001 From: Gianmarco Date: Tue, 22 Sep 2026 18:46:41 +0200 Subject: [PATCH 01/28] fix(web): respect panel motion in composer transitions (#11064) --- apps/web/src/components/ChatView.tsx | 42 ++++++++++++------- apps/web/src/components/chat/ChatComposer.tsx | 22 ++++++---- .../chat/draftHeroTransition.test.ts | 37 +++++++++++++--- .../components/chat/draftHeroTransition.ts | 17 +++++++- apps/web/src/index.css | 11 ++--- 5 files changed, 93 insertions(+), 36 deletions(-) diff --git a/apps/web/src/components/ChatView.tsx b/apps/web/src/components/ChatView.tsx index 981f6f2c04af..0d0810eefa42 100644 --- a/apps/web/src/components/ChatView.tsx +++ b/apps/web/src/components/ChatView.tsx @@ -406,7 +406,6 @@ import { import { deriveLatestContextWindowSnapshot, formatContextWindowTokens } from "../lib/contextWindow"; import { DRAFT_HERO_TRANSITION_ANIMATION_ID, - DRAFT_HERO_TRANSITION_DURATION_MS, DRAFT_HERO_TRANSITION_EASING, MOBILE_COMPOSER_VIEW_TRANSITION_NAME, MOBILE_DRAFT_HEADLINE_VIEW_TRANSITION_NAME, @@ -539,7 +538,11 @@ const EMPTY_PROVIDERS: ServerProvider[] = []; const EMPTY_USAGE_LIMIT_SOURCES: UsageLimitSourceSnapshots = []; const EMPTY_PROVIDER_SKILLS: ServerProvider["skills"] = []; const EMPTY_PENDING_USER_INPUT_ANSWERS: Record = {}; -function useDraftHeroLayoutTransition(isDraftHeroState: boolean) { +function useDraftHeroLayoutTransition( + isDraftHeroState: boolean, + animationsActive: boolean, + animationDurationMs: number, +) { const transitionGroupRef = useRef(null); const composerAnchorRef = useRef(null); const previousStateRef = useRef(isDraftHeroState); @@ -559,9 +562,6 @@ function useDraftHeroLayoutTransition(isDraftHeroState: boolean) { const transitionGroup = transitionGroupRef.current; const nextComposerRect = composerAnchorRef.current?.getBoundingClientRect() ?? null; const stateChanged = previousStateRef.current !== isDraftHeroState; - const prefersReducedMotion = - typeof window !== "undefined" && - window.matchMedia?.("(prefers-reduced-motion: reduce)").matches; const mobileComposerTransitionActive = typeof document !== "undefined" && document.documentElement.dataset.mobileComposerRouteTransition === "true"; @@ -572,7 +572,7 @@ function useDraftHeroLayoutTransition(isDraftHeroState: boolean) { const previousComposerRect = previousComposerRectRef.current; if ( stateChanged && - !prefersReducedMotion && + animationsActive && !mobileComposerTransitionActive && transitionGroup && previousComposerRect && @@ -588,7 +588,7 @@ function useDraftHeroLayoutTransition(isDraftHeroState: boolean) { { transform: "translate3d(0, 0, 0)" }, ], { - duration: DRAFT_HERO_TRANSITION_DURATION_MS, + duration: animationDurationMs, easing: DRAFT_HERO_TRANSITION_EASING, }, ); @@ -607,7 +607,7 @@ function useDraftHeroLayoutTransition(isDraftHeroState: boolean) { previousStateRef.current = isDraftHeroState; previousComposerRectRef.current = nextComposerRect; - }, [isDraftHeroState]); + }, [animationDurationMs, animationsActive, isDraftHeroState]); return [attachTransitionGroupRef, attachComposerAnchorRef, captureComposerRect] as const; } @@ -3634,7 +3634,11 @@ export default function ChatView(props: ChatViewProps) { attachDraftHeroTransitionGroupRef, attachDraftHeroComposerAnchorRef, captureDraftHeroComposerRect, - ] = useDraftHeroLayoutTransition(isDraftHeroState); + ] = useDraftHeroLayoutTransition( + isDraftHeroState, + panelAnimationsActive, + panelAnimationDurationMs, + ); const gitCwd = activeProject ? projectScriptCwd({ @@ -7877,13 +7881,19 @@ export default function ChatView(props: ChatViewProps) { const dockStarted = new Promise((resolve) => { resolveDockStarted = resolve; }); - const dockTransition = runMobileComposerTransition(() => { - flushSync(() => { - captureDraftHeroComposerRect(); - setDockedDraftHeroThreadKey(activeThreadKey); - }); - resolveDockStarted?.(); - }); + const dockTransition = runMobileComposerTransition( + () => { + flushSync(() => { + captureDraftHeroComposerRect(); + setDockedDraftHeroThreadKey(activeThreadKey); + }); + resolveDockStarted?.(); + }, + { + active: panelAnimationsActive, + durationMs: panelAnimationDurationMs, + }, + ); void dockTransition.catch(() => resolveDockStarted?.()); await dockStarted; } diff --git a/apps/web/src/components/chat/ChatComposer.tsx b/apps/web/src/components/chat/ChatComposer.tsx index 9cbf733e1061..28c59ecf90ea 100644 --- a/apps/web/src/components/chat/ChatComposer.tsx +++ b/apps/web/src/components/chat/ChatComposer.tsx @@ -395,7 +395,6 @@ const EMPTY_PULL_REQUEST_LIST_TARGETS: ReadonlyArray, onOverlayHeightChange: (height: number) => void, + animationsActive: boolean, + animationDurationMs: number, ) { const elementRef = useRef(null); const isCollapsedRef = useRef(isCollapsed); @@ -523,7 +524,6 @@ function useComposerRestingTransition( const previousHeight = interruptedHeight ?? previousHeightRef.current; const targetChanged = interruptedTargetHeight === null || Math.abs(interruptedTargetHeight - nextHeight) >= 0.5; - const prefersReducedMotion = window.matchMedia?.("(prefers-reduced-motion: reduce)").matches; const shouldAnimate = shouldAnimateComposerRestingTransition({ hasCompletedInitialLayout: hasCompletedInitialLayoutRef.current, stateChanged, @@ -532,18 +532,16 @@ function useComposerRestingTransition( if ( shouldAnimate && - !prefersReducedMotion && + animationsActive && previousHeight !== null && Math.abs(previousHeight - nextHeight) >= 0.5 ) { const remainingDuration = typeof interruptedDuration === "number" && interruptedCurrentTime !== null ? Math.max(1, interruptedDuration - interruptedCurrentTime) - : COMPOSER_RESTING_TRANSITION_DURATION_MS; + : animationDurationMs; const duration = - interruptedHeight !== null && !targetChanged - ? remainingDuration - : COMPOSER_RESTING_TRANSITION_DURATION_MS; + interruptedHeight !== null && !targetChanged ? remainingDuration : animationDurationMs; element.style.overflow = "clip"; surface.style.height = "100%"; @@ -743,7 +741,13 @@ function useComposerRestingTransition( actionFromBottom: nextActionTop === null ? null : nextRect.bottom - nextActionTop, }; }, - [clearTransitionStyles, onOverlayHeightChange, restingControlsRef], + [ + animationDurationMs, + animationsActive, + clearTransitionStyles, + onOverlayHeightChange, + restingControlsRef, + ], ); useLayoutEffect(() => { @@ -4826,6 +4830,8 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps) isComposerResting, restingComposerControlsRef, onComposerOverlayHeightChange, + panelAnimationsActive, + panelAnimationDurationMs, ); const canTrackComposerScrollGesture = routeKind === "server" && activeThreadId !== null && !isMobileViewport; diff --git a/apps/web/src/components/chat/draftHeroTransition.test.ts b/apps/web/src/components/chat/draftHeroTransition.test.ts index c9d43d541584..c8a708e3b616 100644 --- a/apps/web/src/components/chat/draftHeroTransition.test.ts +++ b/apps/web/src/components/chat/draftHeroTransition.test.ts @@ -56,8 +56,9 @@ describe("runMobileComposerTransition", () => { finishTransition = resolve; }); const dataset: Record = {}; + const style = { setProperty: vi.fn(), removeProperty: vi.fn() }; vi.stubGlobal("document", { - documentElement: { dataset }, + documentElement: { dataset, style }, getAnimations: () => [], startViewTransition: (update: () => void | Promise) => { void update(); @@ -68,7 +69,10 @@ describe("runMobileComposerTransition", () => { matchMedia: (query: string) => ({ matches: query === "(max-width: 639px)" }), }); - const transition = runMobileComposerTransition(() => undefined); + const transition = runMobileComposerTransition(() => undefined, { + active: true, + durationMs: 240, + }); await Promise.resolve(); let handoffComplete = false; @@ -85,11 +89,12 @@ describe("runMobileComposerTransition", () => { it("uses a scoped view transition on mobile", async () => { const dataset: Record = {}; + const style = { setProperty: vi.fn(), removeProperty: vi.fn() }; const startViewTransition = vi.fn((update: () => void | Promise) => ({ finished: Promise.resolve(update()).then(() => undefined), })); vi.stubGlobal("document", { - documentElement: { dataset }, + documentElement: { dataset, style }, startViewTransition, }); vi.stubGlobal("window", { @@ -97,13 +102,35 @@ describe("runMobileComposerTransition", () => { }); const update = vi.fn(); - await runMobileComposerTransition(update); + await runMobileComposerTransition(update, { active: true, durationMs: 360 }); expect(startViewTransition).toHaveBeenCalledOnce(); expect(update).toHaveBeenCalledOnce(); + expect(style.setProperty).toHaveBeenCalledWith( + "--mobile-composer-transition-duration", + "360ms", + ); + expect(style.removeProperty).toHaveBeenCalledWith("--mobile-composer-transition-duration"); expect(dataset).not.toHaveProperty("mobileComposerRouteTransition"); }); + it("updates without a view transition when panel animations are inactive", async () => { + const startViewTransition = vi.fn(); + vi.stubGlobal("document", { + documentElement: { dataset: {} }, + startViewTransition, + }); + vi.stubGlobal("window", { + matchMedia: () => ({ matches: true }), + }); + const update = vi.fn(); + + await runMobileComposerTransition(update, { active: false, durationMs: 360 }); + + expect(startViewTransition).not.toHaveBeenCalled(); + expect(update).toHaveBeenCalledOnce(); + }); + it("updates without a view transition when reduced motion is preferred", async () => { const startViewTransition = vi.fn(); vi.stubGlobal("document", { @@ -115,7 +142,7 @@ describe("runMobileComposerTransition", () => { }); const update = vi.fn(); - await runMobileComposerTransition(update); + await runMobileComposerTransition(update, { active: true, durationMs: 360 }); expect(startViewTransition).not.toHaveBeenCalled(); expect(update).toHaveBeenCalledOnce(); diff --git a/apps/web/src/components/chat/draftHeroTransition.ts b/apps/web/src/components/chat/draftHeroTransition.ts index 0773407cfcc4..958b7374c1a8 100644 --- a/apps/web/src/components/chat/draftHeroTransition.ts +++ b/apps/web/src/components/chat/draftHeroTransition.ts @@ -1,8 +1,8 @@ export const DRAFT_HERO_TRANSITION_ANIMATION_ID = "t3-draft-hero-transition"; -export const DRAFT_HERO_TRANSITION_DURATION_MS = 180; export const DRAFT_HERO_TRANSITION_EASING = "cubic-bezier(0.4, 0, 0.2, 1)"; export const MOBILE_COMPOSER_VIEW_TRANSITION_NAME = "t3-mobile-composer"; export const MOBILE_DRAFT_HEADLINE_VIEW_TRANSITION_NAME = "t3-mobile-draft-headline"; +const MOBILE_COMPOSER_TRANSITION_DURATION_PROPERTY = "--mobile-composer-transition-duration"; type ComposerViewTransition = { readonly finished: Promise; @@ -39,6 +39,7 @@ export async function waitForDraftHeroTransition(): Promise { export async function runMobileComposerTransition( update: () => void | Promise, + options: { active: boolean; durationMs: number }, ): Promise { if (typeof document === "undefined" || typeof window === "undefined") { await update(); @@ -49,7 +50,12 @@ export async function runMobileComposerTransition( const mobileViewport = window.matchMedia?.("(max-width: 639px)").matches ?? false; const prefersReducedMotion = window.matchMedia?.("(prefers-reduced-motion: reduce)").matches ?? false; - if (!mobileViewport || prefersReducedMotion || !transitionDocument.startViewTransition) { + if ( + !options.active || + !mobileViewport || + prefersReducedMotion || + !transitionDocument.startViewTransition + ) { await update(); return; } @@ -61,6 +67,10 @@ export async function runMobileComposerTransition( await update(); }; let transitionFinished: Promise | null = null; + transitionDocument.documentElement.style.setProperty( + MOBILE_COMPOSER_TRANSITION_DURATION_PROPERTY, + `${String(options.durationMs)}ms`, + ); transitionDocument.documentElement.dataset.mobileComposerRouteTransition = "true"; try { const transition = transitionDocument.startViewTransition(runUpdate); @@ -78,5 +88,8 @@ export async function runMobileComposerTransition( activeMobileComposerTransition = null; } delete transitionDocument.documentElement.dataset.mobileComposerRouteTransition; + transitionDocument.documentElement.style.removeProperty( + MOBILE_COMPOSER_TRANSITION_DURATION_PROPERTY, + ); } } diff --git a/apps/web/src/index.css b/apps/web/src/index.css index 562c2f970d9b..62a61463e69e 100644 --- a/apps/web/src/index.css +++ b/apps/web/src/index.css @@ -13,7 +13,7 @@ html[data-mobile-composer-route-transition="true"]::view-transition-new(root) { } html[data-mobile-composer-route-transition="true"]::view-transition-group(t3-mobile-composer) { - animation-duration: 180ms; + animation-duration: var(--mobile-composer-transition-duration); animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } @@ -22,12 +22,12 @@ html[data-mobile-composer-route-transition="true"]::view-transition-image-pair(t } html[data-mobile-composer-route-transition="true"]::view-transition-old(t3-mobile-composer) { - animation: t3-mobile-composer-old 180ms linear both; + animation: t3-mobile-composer-old var(--mobile-composer-transition-duration) linear both; mix-blend-mode: normal; } html[data-mobile-composer-route-transition="true"]::view-transition-new(t3-mobile-composer) { - animation: t3-mobile-composer-new 180ms linear both; + animation: t3-mobile-composer-new var(--mobile-composer-transition-duration) linear both; mix-blend-mode: normal; } @@ -57,11 +57,12 @@ html[data-mobile-composer-route-transition="true"]::view-transition-new(t3-mobil } html[data-mobile-composer-route-transition="true"]::view-transition-group(t3-mobile-draft-headline) { - animation-duration: 130ms; + animation-duration: var(--mobile-composer-transition-duration); } html[data-mobile-composer-route-transition="true"]::view-transition-old(t3-mobile-draft-headline) { - animation: t3-mobile-draft-headline-exit 130ms cubic-bezier(0.4, 0, 1, 1) both; + animation: t3-mobile-draft-headline-exit var(--mobile-composer-transition-duration) + cubic-bezier(0.4, 0, 1, 1) both; mix-blend-mode: normal; } From 7c2702d68ae2e10fa9d3a08c996ed47c393dcffd Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Tue, 22 Sep 2026 10:36:26 -0700 Subject: [PATCH 02/28] fix(web): read panel animation settings in the composer (#13098) Co-authored-by: Claude Fable 5 --- apps/web/src/components/chat/ChatComposer.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/web/src/components/chat/ChatComposer.tsx b/apps/web/src/components/chat/ChatComposer.tsx index 28c59ecf90ea..f1de1f81434e 100644 --- a/apps/web/src/components/chat/ChatComposer.tsx +++ b/apps/web/src/components/chat/ChatComposer.tsx @@ -977,6 +977,7 @@ import { } from "@t3tools/client-runtime/providerSkills"; import { searchProviderSkills } from "../../providerSkillSearch"; import { useMediaQuery } from "../../hooks/useMediaQuery"; +import { usePanelAnimationSettings } from "../../panelAnimations"; import { useAtomCommand } from "../../state/use-atom-command"; import { serverEnvironment } from "../../state/server"; import type { ReviewCommentContext } from "../../reviewCommentContext"; @@ -4825,6 +4826,8 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps) ) : null} ) : null; + const { active: panelAnimationsActive, durationMs: panelAnimationDurationMs } = + usePanelAnimationSettings(); const composerMainSurfaceRef = useComposerRestingTransition( composerControlsInStrip, isComposerResting, From f25a8e4b72c1164f2ab7b1c8481496f168d17f55 Mon Sep 17 00:00:00 2001 From: "t3-code[bot]" <269035359+t3-code[bot]@users.noreply.github.com> Date: Tue, 22 Sep 2026 10:58:10 -0700 Subject: [PATCH 03/28] feat(models): add opus 5.5 without changing existing aliases (#13094) Co-authored-by: Anco Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> --- apps/server/src/provider/model-manifest.json | 55 +++++++++++++++++++- docs/internals/model-manifest.md | 8 +-- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/apps/server/src/provider/model-manifest.json b/apps/server/src/provider/model-manifest.json index efc22ad0a3d0..8befdd86ec52 100644 --- a/apps/server/src/provider/model-manifest.json +++ b/apps/server/src/provider/model-manifest.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-09-12T00:41:55Z", + "updatedAt": "2026-09-22T17:51:55Z", "currentModels": { "codex": [ "gpt-6-astra", @@ -10,7 +10,7 @@ "gpt-daybreak-blue-latest", "gpt-daybreak-red-latest" ], - "claudeAgent": ["claude-fable-5-1", "claude-opus-5", "claude-sonnet-5"], + "claudeAgent": ["claude-fable-5-1", "claude-opus-5-5", "claude-opus-5", "claude-sonnet-5"], "antigravity": ["gemini-3.8-flash-high", "gemini-3.8-flash-medium", "gemini-3.8-flash-low"] }, "providers": { @@ -96,6 +96,48 @@ } } }, + "opus-5-5": { + "capabilities": { + "optionDescriptors": [ + { + "id": "effort", + "label": "Reasoning", + "type": "select", + "options": [ + { "id": "low", "label": "Low" }, + { "id": "medium", "label": "Medium", "isDefault": true }, + { "id": "high", "label": "High" }, + { "id": "xhigh", "label": "Extra High" }, + { "id": "max", "label": "Max" }, + { + "id": "ultracode", + "label": "Ultracode", + "description": "xhigh effort plus multi-agent workflow orchestration" + }, + { "id": "ultrathink", "label": "Ultrathink" } + ], + "promptInjectedValues": ["ultrathink"] + }, + { "id": "fastMode", "label": "Fast Mode", "type": "boolean" }, + { + "id": "contextWindow", + "label": "Context Window", + "type": "select", + "options": [ + { "id": "200k", "label": "200k" }, + { "id": "1m", "label": "1M", "isDefault": true } + ] + } + ] + }, + "adapter": { + "claudeCode": { + "effortMap": { "ultracode": "xhigh", "ultrathink": null }, + "modelSuffixes": { "contextWindow": { "1m": "[1m]" } }, + "contextWindowTokens": { "200k": 200000, "1m": 1000000 } + } + } + }, "opus-5": { "capabilities": { "optionDescriptors": [ @@ -554,6 +596,15 @@ } }, "models": [ + { + "slug": "claude-opus-5-5", + "name": "Claude Opus 5.5", + "aliases": ["opus-5.5", "claude-opus-5.5"], + "status": "current", + "badge": "new", + "profile": "opus-5-5", + "adapter": { "claudeCode": { "minVersion": "2.1.280" } } + }, { "slug": "claude-fable-5-1", "name": "Claude Fable 5.1", diff --git a/docs/internals/model-manifest.md b/docs/internals/model-manifest.md index 3892a1df7277..7d3eadae7f58 100644 --- a/docs/internals/model-manifest.md +++ b/docs/internals/model-manifest.md @@ -16,9 +16,11 @@ built-in catalog. Adding a model with an existing capability profile is a JSON edit; a new profile is needed only for a new capability combination. Codex still gets its model list from its app server. -`currentModels.claudeAgent` is frozen for releases that predate catalog discovery. -Do not extend it when adding Claude models. Codex uses `currentModels.codex` as a -legacy-classification overlay for discovered models. +`currentModels.claudeAgent` is the current-model classification overlay for +releases that predate catalog discovery; it does not add models to their catalogs. +Catalog-aware releases use `providers.claudeAgent.models[].status` instead. +Codex uses `currentModels.codex` as a legacy-classification overlay for discovered +models. Model data is schema-validated configuration. Tests should cover resolver, cache, and adapter semantics with synthetic model names, so adding a model never requires From 17e34773b148fd7351a44ab39e9616b4073a1fa8 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Tue, 22 Sep 2026 11:42:19 -0700 Subject: [PATCH 04/28] Update model manifest with new timestamps and models --- apps/server/src/provider/model-manifest.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/apps/server/src/provider/model-manifest.json b/apps/server/src/provider/model-manifest.json index 8befdd86ec52..a5924f9cadf2 100644 --- a/apps/server/src/provider/model-manifest.json +++ b/apps/server/src/provider/model-manifest.json @@ -1,16 +1,15 @@ { "version": 1, - "updatedAt": "2026-09-22T17:51:55Z", + "updatedAt": "2026-09-22T19:42:55Z", "currentModels": { "codex": [ "gpt-6-astra", - "gpt-5.6-luna", - "gpt-5.6-terra", - "gpt-5.6-sol", + "gpt-6-luna", + "gpt-6-sol", "gpt-daybreak-blue-latest", "gpt-daybreak-red-latest" ], - "claudeAgent": ["claude-fable-5-1", "claude-opus-5-5", "claude-opus-5", "claude-sonnet-5"], + "claudeAgent": ["claude-fable-5-1", "claude-opus-5-5", "claude-sonnet-5"], "antigravity": ["gemini-3.8-flash-high", "gemini-3.8-flash-medium", "gemini-3.8-flash-low"] }, "providers": { From c0490e9d0eb057218bfa5df3f25a7c26c37145a5 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Tue, 22 Sep 2026 12:22:10 -0700 Subject: [PATCH 05/28] refactor(web): use ghost-muted where ghost buttons restyled to muted (#13020) Co-authored-by: Claude Fable 5 --- apps/web/src/components/DiffFilePathCopyButton.tsx | 3 +-- apps/web/src/components/RightPanelTabs.tsx | 4 ++-- apps/web/src/components/chat/ProviderStatusBanner.tsx | 4 ++-- .../src/components/diffs/DiffCommentAnnotation.tsx | 11 +++-------- .../components/pullRequest/PullRequestCommentBody.tsx | 4 ++-- .../components/pullRequest/PullRequestTimelineTab.tsx | 4 ++-- .../components/settings/AddProviderInstanceDialog.tsx | 3 +-- .../src/components/settings/ConnectionsSettings.tsx | 6 ++---- .../src/components/settings/KeybindingsSettings.tsx | 6 ++---- .../src/components/settings/ProjectActionsList.tsx | 4 ++-- .../src/components/settings/ProviderInstanceCard.tsx | 4 ++-- scripts/lint-restyle-ceiling.ts | 2 +- 12 files changed, 22 insertions(+), 33 deletions(-) diff --git a/apps/web/src/components/DiffFilePathCopyButton.tsx b/apps/web/src/components/DiffFilePathCopyButton.tsx index 49b00ed89b74..5e78949336cf 100644 --- a/apps/web/src/components/DiffFilePathCopyButton.tsx +++ b/apps/web/src/components/DiffFilePathCopyButton.tsx @@ -24,8 +24,7 @@ export function DiffFilePathCopyButton({ filePath }: { filePath: string }) { diff --git a/apps/web/src/components/diffs/DiffCommentAnnotation.tsx b/apps/web/src/components/diffs/DiffCommentAnnotation.tsx index bce9f7e55f58..6633a593067e 100644 --- a/apps/web/src/components/diffs/DiffCommentAnnotation.tsx +++ b/apps/web/src/components/diffs/DiffCommentAnnotation.tsx @@ -68,8 +68,8 @@ export function DiffCommentAnnotation({

{displayedText}

{onDelete ? ( {secondaryAction ? ( diff --git a/apps/web/src/components/pullRequest/PullRequestCommentBody.tsx b/apps/web/src/components/pullRequest/PullRequestCommentBody.tsx index d730c0f859a1..073cd2a07efb 100644 --- a/apps/web/src/components/pullRequest/PullRequestCommentBody.tsx +++ b/apps/web/src/components/pullRequest/PullRequestCommentBody.tsx @@ -44,8 +44,8 @@ export function PullRequestCommentBody({ {overflowing ? ( } @@ -93,7 +88,6 @@ export function T3ConnectEnvironmentRow(props: {