fix(cloud-nav): animate and stabilize side-nav collapse#3606
Merged
Conversation
The Cloud nav header reflowed from a single row (expanded) into a stacked column (collapsed: flex-col + gap-2, dropping min-h-7), changing its height. Because the nav icon list sits directly below the header, the icons shifted vertically on every expand/collapse. Keep the header a constant-height single row in both states: pin min-h-7, hide the logo/subtitle block when collapsed, and center the toggle. The icon list's top edge no longer moves. OSS nav bar is unaffected. Co-Authored-By: Claude Opus 4.8 <[email protected]>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
bilal-karim
marked this pull request as draft
June 25, 2026 20:53
bilal-karim
force-pushed
the
fix/cloud-nav-collapsed-header-shift
branch
from
June 29, 2026 15:46
08b89f8 to
bfebd68
Compare
bilal-karim
force-pushed
the
fix/cloud-nav-collapsed-header-shift
branch
from
June 29, 2026 16:00
bfebd68 to
40bfd27
Compare
The nav declared transition-width but it never fired: the expanded Cloud nav has an explicit width (w-[13.125rem]) while the collapsed state fell back to content width (auto), which CSS can't interpolate, so the toggle snapped. Pin the collapsed Cloud width to its natural rail size so the existing transition-width has two definite endpoints, and add a motion-reduce guard. Co-Authored-By: Claude Opus 4.8 <[email protected]>
bilal-karim
force-pushed
the
fix/cloud-nav-collapsed-header-shift
branch
from
June 29, 2026 16:20
e4bad47 to
604e833
Compare
bilal-karim
marked this pull request as ready for review
June 29, 2026 16:35
laurakwhit
approved these changes
Jun 29, 2026
temporal-cicd Bot
pushed a commit
that referenced
this pull request
Jul 2, 2026
Auto-generated version bump from 2.51.1 to 2.52.0 Bump type: minor Changes included: - [`9c6fcd54`](9c6fcd5) Add direct SSO redirect and backend logout (#3590) - [`feab0d90`](feab0d9) a11y(4.1.3): Toaster role="log" → per-toast role="status"/"alert" for correct AT announcement semantics (#3560) - [`d7bbfb01`](d7bbfb0) a11y(2.5.8): toast — replace bare close button with IconButton (36×36 px) (#3553) - [`4efd6ab6`](4efd6ab) a11y(3.3.1): Holocene input primitives — add aria-invalid, aria-describedby, and uniform live-region error announcement (#3554) - [`0600b700`](0600b70) Use green only (#3599) - [`94107549`](9410754) Clarify activity pause timeout behavior (#3600) - [`9f88d5a8`](9f88d5a) Bump node version to 22.23.1 or newer to fix issue from previous security release (#3604) - [`ca4104ae`](ca4104a) Update reason copy and inputs (#3588) - [`51db73fa`](51db73f) Update batch operation reason input hint (#3605) - [`836d7c55`](836d7c5) a11y(2.4.3): route navigation — move focus to the main landmark on afterNavigate, not just scroll (#3538) - [`4ee95696`](4ee9569) Improve re-renders for large encoded event histories (#3592) - [`fa5e7aa1`](fa5e7aa) feature/schedules (#3603) - [`0d9467fd`](0d9467f) Default includeHeartbeatDetails and includeLastFailure to true for getActivityExecution and pollActivityExecution (#3521) - [`e5bc514e`](e5bc514) fix schedules: duplicate key (#3612) - [`f1eb489f`](f1eb489) Remove preview badge (#3581) - [`1e5173b4`](1e5173b) Add existing versions to worker create deployment version form (#3601) - [`a8552bae`](a8552ba) fix schedules -e.trim not a function (#3613) - [`0442f847`](0442f84) Fix width of ComputeBadge in VersionTableRow (#3615) - [`ddbeb54f`](ddbeb54) fix(cloud-nav): animate and stabilize side-nav collapse (#3606) - [`3cfc684b`](3cfc684) fix - schedules recent/upcoming runs - sort issue (#3616) - [`92b8875b`](92b8875) Move timestamp out of translate (#3617) - [`901258af`](901258a) Fix SAA and WF consistency (#3614) - [`99593d97`](99593d9) DT-4001 - standalone nexus operations (#3496) - [`f10d1bf1`](f10d1bf) Clamp codeblock to container width (#3621) - [`0a9d93ce`](0a9d93c) Remove unnecessary bottom-0 (#3623) - [`9dabb522`](9dabb52) chore(deps-dev): bump vite from 6.4.2 to 6.4.3 (#3610) - [`5c1854d3`](5c1854d) News Feed (#3596)
bilal-karim
added a commit
that referenced
this pull request
Jul 2, 2026
Follow-up to #3606. The nav item labels used a plain symmetric opacity transition, so on collapse they stayed opaque as the panel narrowed over them (a visible "chop") and expand/collapse felt abrupt. Make the label motion direction-aware and paired with the nav's 150ms transition-width, scoped to the Cloud nav only (OSS unchanged): - Collapse: the label leads — a fast 75ms ease-out fade so it clears before the shrinking panel reaches it. - Expand: the label lags — waits 75ms for the panel to open, then fades in linearly over 150ms. Timing lives in a shared cloudNavLabelMotion constant; scoping uses a new data-cloud attribute on the nav container. Co-Authored-By: Claude Opus 4.8 <[email protected]>
bilal-karim
added a commit
that referenced
this pull request
Jul 2, 2026
Follow-up to #3606. The nav item labels used a plain symmetric opacity transition, so on collapse they stayed opaque as the panel narrowed over them (a visible "chop") and expand/collapse felt abrupt. Make the label motion direction-aware and paired with the nav's 150ms transition-width, scoped to the Cloud nav via a new data-cloud attribute (OSS unchanged): - Collapse: the label leads — a fast 75ms ease-out fade so it clears before the shrinking panel reaches it. - Expand: the label lags — waits 75ms for the panel to open, then fades in linearly over 150ms. Co-Authored-By: Claude Opus 4.8 <[email protected]>
bilal-karim
added a commit
that referenced
this pull request
Jul 7, 2026
* fix(cloud-nav): smooth label fade on side-nav collapse/expand Follow-up to #3606. The nav item labels used a plain symmetric opacity transition, so on collapse they stayed opaque as the panel narrowed over them (a visible "chop") and expand/collapse felt abrupt. Make the label motion direction-aware and paired with the nav's 150ms transition-width, scoped to the Cloud nav via a new data-cloud attribute (OSS unchanged): - Collapse: the label leads — a fast 75ms ease-out fade so it clears before the shrinking panel reaches it. - Expand: the label lags — waits 75ms for the panel to open, then fades in linearly over 150ms. Co-Authored-By: Claude Opus 4.8 <[email protected]> * Make transition apply to OSS and Cloud * Gate label transition to motion-reduce --------- Co-authored-by: Claude Opus 4.8 <[email protected]> Co-authored-by: Laura Whitaker <[email protected]>
temporal-cicd Bot
pushed a commit
that referenced
this pull request
Jul 8, 2026
Auto-generated version bump from 2.51.1 to 2.52.0 Bump type: minor Changes included: - [`9c6fcd54`](9c6fcd5) Add direct SSO redirect and backend logout (#3590) - [`feab0d90`](feab0d9) a11y(4.1.3): Toaster role="log" → per-toast role="status"/"alert" for correct AT announcement semantics (#3560) - [`d7bbfb01`](d7bbfb0) a11y(2.5.8): toast — replace bare close button with IconButton (36×36 px) (#3553) - [`4efd6ab6`](4efd6ab) a11y(3.3.1): Holocene input primitives — add aria-invalid, aria-describedby, and uniform live-region error announcement (#3554) - [`0600b700`](0600b70) Use green only (#3599) - [`94107549`](9410754) Clarify activity pause timeout behavior (#3600) - [`9f88d5a8`](9f88d5a) Bump node version to 22.23.1 or newer to fix issue from previous security release (#3604) - [`ca4104ae`](ca4104a) Update reason copy and inputs (#3588) - [`51db73fa`](51db73f) Update batch operation reason input hint (#3605) - [`836d7c55`](836d7c5) a11y(2.4.3): route navigation — move focus to the main landmark on afterNavigate, not just scroll (#3538) - [`4ee95696`](4ee9569) Improve re-renders for large encoded event histories (#3592) - [`fa5e7aa1`](fa5e7aa) feature/schedules (#3603) - [`0d9467fd`](0d9467f) Default includeHeartbeatDetails and includeLastFailure to true for getActivityExecution and pollActivityExecution (#3521) - [`e5bc514e`](e5bc514) fix schedules: duplicate key (#3612) - [`f1eb489f`](f1eb489) Remove preview badge (#3581) - [`1e5173b4`](1e5173b) Add existing versions to worker create deployment version form (#3601) - [`a8552bae`](a8552ba) fix schedules -e.trim not a function (#3613) - [`0442f847`](0442f84) Fix width of ComputeBadge in VersionTableRow (#3615) - [`ddbeb54f`](ddbeb54) fix(cloud-nav): animate and stabilize side-nav collapse (#3606) - [`3cfc684b`](3cfc684) fix - schedules recent/upcoming runs - sort issue (#3616) - [`92b8875b`](92b8875) Move timestamp out of translate (#3617) - [`901258af`](901258a) Fix SAA and WF consistency (#3614) - [`99593d97`](99593d9) DT-4001 - standalone nexus operations (#3496) - [`f10d1bf1`](f10d1bf) Clamp codeblock to container width (#3621) - [`0a9d93ce`](0a9d93c) Remove unnecessary bottom-0 (#3623) - [`9dabb522`](9dabb52) chore(deps-dev): bump vite from 6.4.2 to 6.4.3 (#3610) - [`5c1854d3`](5c1854d) News Feed (#3596) - [`340da30f`](340da30) a11y(2.1.1): guard global r/R keydown so text inputs can receive the letter (#3589) - [`dd97a9d1`](dd97a9d) fix(markdown-editor): disable chromatic snapshot for preview story (#3631) - [`7db61ab9`](7db61ab) a11y(4.1.2): Table / ProgressBar / Loading primitives — expose aria-busy on data-refresh regions (#3555) - [`d2111ecf`](d2111ec) a11y(4.1.3): Add live-region wrappers for workflow status, event count, filter counts, and Banner (#3561) - [`24eabaec`](24eabae) a11y(2.4.6): guard DrawerContent against empty <h2> when title is omitted (#3595) - [`3552e307`](3552e30) Fix CodeMirror Lezer dependency mismatch (#3632) - [`7ac37199`](7ac3719) Update defaults to match workflow defaults (#3634) - [`c1f02865`](c1f0286) Draft fix for link variant handling (#3620) - [`bbbf2b8c`](bbbf2b8) Add connection status and optional Latest Version column to deployments (DT-4174) (#3618) - [`76f266f4`](76f266f) DurationInput updates (#3633) - [`07da53c5`](07da53c) COM-191 - prefill CloudFormation template params in Launch Stack link (#3619) - [`90946e0b`](90946e0) Schedules - Timeout empty defaults (#3637) - [`97f9ad39`](97f9ad3) fix(cloud-nav): smooth label fade on side-nav collapse/expand (#3628) - [`a399ed35`](a399ed3) Improve Search Attribute deletion messaging (#3629) - [`ad976d94`](ad976d9) Pass through source prop for News Feed Widget (#3638) - [`6ef84fe3`](6ef84fe) Restrict select-all to exclude workflow status (#3639) - [`4c3729f8`](4c3729f) Reduce news feed markdown whitespace (#3642) - [`aa04a9b6`](aa04a9b) feat(nexus-operations): add loading state to standalone nexus operations list page header (#3643) - [`dce2f804`](dce2f80) chore: remove unused generate-holocene-props script (#3644) - [`760bc7bc`](760bc7b) Make megaphone icon bigger (#3645) - [`c047384a`](c047384) refactor(nexus): replace hand-rolled types with @temporalio/proto (#3646)
rossedfort
added a commit
that referenced
this pull request
Jul 8, 2026
Auto-generated version bump from 2.51.1 to 2.52.0 Bump type: minor Changes included: - [`9c6fcd54`](9c6fcd5) Add direct SSO redirect and backend logout (#3590) - [`feab0d90`](feab0d9) a11y(4.1.3): Toaster role="log" → per-toast role="status"/"alert" for correct AT announcement semantics (#3560) - [`d7bbfb01`](d7bbfb0) a11y(2.5.8): toast — replace bare close button with IconButton (36×36 px) (#3553) - [`4efd6ab6`](4efd6ab) a11y(3.3.1): Holocene input primitives — add aria-invalid, aria-describedby, and uniform live-region error announcement (#3554) - [`0600b700`](0600b70) Use green only (#3599) - [`94107549`](9410754) Clarify activity pause timeout behavior (#3600) - [`9f88d5a8`](9f88d5a) Bump node version to 22.23.1 or newer to fix issue from previous security release (#3604) - [`ca4104ae`](ca4104a) Update reason copy and inputs (#3588) - [`51db73fa`](51db73f) Update batch operation reason input hint (#3605) - [`836d7c55`](836d7c5) a11y(2.4.3): route navigation — move focus to the main landmark on afterNavigate, not just scroll (#3538) - [`4ee95696`](4ee9569) Improve re-renders for large encoded event histories (#3592) - [`fa5e7aa1`](fa5e7aa) feature/schedules (#3603) - [`0d9467fd`](0d9467f) Default includeHeartbeatDetails and includeLastFailure to true for getActivityExecution and pollActivityExecution (#3521) - [`e5bc514e`](e5bc514) fix schedules: duplicate key (#3612) - [`f1eb489f`](f1eb489) Remove preview badge (#3581) - [`1e5173b4`](1e5173b) Add existing versions to worker create deployment version form (#3601) - [`a8552bae`](a8552ba) fix schedules -e.trim not a function (#3613) - [`0442f847`](0442f84) Fix width of ComputeBadge in VersionTableRow (#3615) - [`ddbeb54f`](ddbeb54) fix(cloud-nav): animate and stabilize side-nav collapse (#3606) - [`3cfc684b`](3cfc684) fix - schedules recent/upcoming runs - sort issue (#3616) - [`92b8875b`](92b8875) Move timestamp out of translate (#3617) - [`901258af`](901258a) Fix SAA and WF consistency (#3614) - [`99593d97`](99593d9) DT-4001 - standalone nexus operations (#3496) - [`f10d1bf1`](f10d1bf) Clamp codeblock to container width (#3621) - [`0a9d93ce`](0a9d93c) Remove unnecessary bottom-0 (#3623) - [`9dabb522`](9dabb52) chore(deps-dev): bump vite from 6.4.2 to 6.4.3 (#3610) - [`5c1854d3`](5c1854d) News Feed (#3596) - [`340da30f`](340da30) a11y(2.1.1): guard global r/R keydown so text inputs can receive the letter (#3589) - [`dd97a9d1`](dd97a9d) fix(markdown-editor): disable chromatic snapshot for preview story (#3631) - [`7db61ab9`](7db61ab) a11y(4.1.2): Table / ProgressBar / Loading primitives — expose aria-busy on data-refresh regions (#3555) - [`d2111ecf`](d2111ec) a11y(4.1.3): Add live-region wrappers for workflow status, event count, filter counts, and Banner (#3561) - [`24eabaec`](24eabae) a11y(2.4.6): guard DrawerContent against empty <h2> when title is omitted (#3595) - [`3552e307`](3552e30) Fix CodeMirror Lezer dependency mismatch (#3632) - [`7ac37199`](7ac3719) Update defaults to match workflow defaults (#3634) - [`c1f02865`](c1f0286) Draft fix for link variant handling (#3620) - [`bbbf2b8c`](bbbf2b8) Add connection status and optional Latest Version column to deployments (DT-4174) (#3618) - [`76f266f4`](76f266f) DurationInput updates (#3633) - [`07da53c5`](07da53c) COM-191 - prefill CloudFormation template params in Launch Stack link (#3619) - [`90946e0b`](90946e0) Schedules - Timeout empty defaults (#3637) - [`97f9ad39`](97f9ad3) fix(cloud-nav): smooth label fade on side-nav collapse/expand (#3628) - [`a399ed35`](a399ed3) Improve Search Attribute deletion messaging (#3629) - [`ad976d94`](ad976d9) Pass through source prop for News Feed Widget (#3638) - [`6ef84fe3`](6ef84fe) Restrict select-all to exclude workflow status (#3639) - [`4c3729f8`](4c3729f) Reduce news feed markdown whitespace (#3642) - [`aa04a9b6`](aa04a9b) feat(nexus-operations): add loading state to standalone nexus operations list page header (#3643) - [`dce2f804`](dce2f80) chore: remove unused generate-holocene-props script (#3644) - [`760bc7bc`](760bc7b) Make megaphone icon bigger (#3645) - [`c047384a`](c047384) refactor(nexus): replace hand-rolled types with @temporalio/proto (#3646) Co-authored-by: rossedfort <[email protected]>
Alex-Tideman
pushed a commit
that referenced
this pull request
Jul 11, 2026
* fix(cloud-nav): keep collapsed nav header height stable The Cloud nav header reflowed from a single row (expanded) into a stacked column (collapsed: flex-col + gap-2, dropping min-h-7), changing its height. Because the nav icon list sits directly below the header, the icons shifted vertically on every expand/collapse. Keep the header a constant-height single row in both states: pin min-h-7, hide the logo/subtitle block when collapsed, and center the toggle. The icon list's top edge no longer moves. OSS nav bar is unaffected. Co-Authored-By: Claude Opus 4.8 <[email protected]> * fix(cloud-nav): animate width on expand/collapse The nav declared transition-width but it never fired: the expanded Cloud nav has an explicit width (w-[13.125rem]) while the collapsed state fell back to content width (auto), which CSS can't interpolate, so the toggle snapped. Pin the collapsed Cloud width to its natural rail size so the existing transition-width has two definite endpoints, and add a motion-reduce guard. Co-Authored-By: Claude Opus 4.8 <[email protected]> --------- Co-authored-by: Claude Opus 4.8 <[email protected]> Co-authored-by: Laura Whitaker <[email protected]>
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.
Polishes the Cloud side-nav expand/collapse transition. Two related fixes to the same component group:
1. Animate the width (
navigation-container.svelte)The nav declared
transition-width, but it never fired: the expanded Cloud nav has an explicit width (w-[13.125rem]) while the collapsed state fell back to content width (auto), which CSS can't interpolate — so the toggle snapped. Pin the collapsed Cloud width to its natural rail size (calc(3rem + 1px)= the 2rem icon column +px-2padding + 1px border) so the existingtransition-widthhas two definite endpoints, plus amotion-reduce:transition-noneguard.2. Stable header height (
cloud-nav-bar.svelte)When the nav collapsed, its header reflowed from a single row into a stacked column (
group-data-[nav=closed]:flex-col gap-2, droppingmin-h-7), changing its height. Because the nav icon list sits directly below it, every icon shifted vertically on each expand/collapse. Keep the header a constant-height single row in both states (pinmin-h-7, hide the logo/subtitle block when collapsed, center the toggle).Both changes are scoped to the Cloud nav; the OSS nav bar is a separate component and is untouched.
Preview
Before.mp4
After.mp4
Testing
Visually verified in cloud-ui (via a locally rebuilt tarball) across expanded and collapsed states for project/namespace nav and the Cloud root.
🤖 Generated with Claude Code