apiVersion: jenkins.io/v1 kind: PipelineActivity metadata: annotations: lighthouse.jenkins-x.io/cloneURI: https://github.com/greencapitaltrade/flash.git lighthouse.jenkins-x.io/job: release pipeline.jenkins-x.io/traceID: c40e2e0c34acac567ff04df45ec47bc9 creationTimestamp: "2026-06-01T15:57:26Z" generation: 8 labels: branch: main build: "82" context: release created-by-lighthouse: "true" event-GUID: 8d45ac8a-5dd2-11f1-8b27-842a5f84367a lighthouse.jenkins-x.io/baseSHA: 0ecf984cb015b33bba479ab4ccff68dcba0a8763 lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1780329446232" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: ncapitaltrade-flash-main-release-x5rp6 lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: 0ecf984cb015b33bba479ab4ccff68dcba0a8763 lighthouse.jenkins-x.io/refs.org: greencapitaltrade lighthouse.jenkins-x.io/refs.repo: flash lighthouse.jenkins-x.io/type: postsubmit owner: greencapitaltrade podName: ncapitaltrade-flash-main-release-h5tpb-from-build-pack-pod provider: github repository: flash tekton.dev/pipeline: ncapitaltrade-flash-main-release-h5tpb managedFields: - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:branch: {} f:context: {} f:owner: {} f:provider: {} f:repository: {} f:spec: f:lastCommitMessage: {} f:lastCommitSHA: {} f:releaseNotesURL: {} f:version: {} manager: jx-changelog-0.10.18 operation: Update time: "2026-06-01T16:06:33Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:lighthouse.jenkins-x.io/cloneURI: {} f:lighthouse.jenkins-x.io/job: {} f:pipeline.jenkins-x.io/traceID: {} f:labels: .: {} f:build: {} f:created-by-lighthouse: {} f:event-GUID: {} f:lighthouse.jenkins-x.io/baseSHA: {} f:lighthouse.jenkins-x.io/branch: {} f:lighthouse.jenkins-x.io/buildNum: {} f:lighthouse.jenkins-x.io/context: {} f:lighthouse.jenkins-x.io/id: {} f:lighthouse.jenkins-x.io/job: {} f:lighthouse.jenkins-x.io/lastCommitSHA: {} f:lighthouse.jenkins-x.io/refs.org: {} f:lighthouse.jenkins-x.io/refs.repo: {} f:lighthouse.jenkins-x.io/type: {} f:podName: {} f:tekton.dev/pipeline: {} f:spec: .: {} f:baseSHA: {} f:batchPipelineActivity: {} f:build: {} f:buildLogsUrl: {} f:completedTimestamp: {} f:context: {} f:gitBranch: {} f:gitOwner: {} f:gitRepository: {} f:gitUrl: {} f:message: {} f:pipeline: {} f:startedTimestamp: {} f:status: {} f:steps: {} manager: jx-build-controller operation: Update time: "2026-06-01T16:07:26Z" name: greencapitaltrade-flash-main-82 namespace: jx resourceVersion: "68997512" uid: 672d19e6-f141-4de2-b4f1-04d34aec0238 spec: baseSHA: 0ecf984cb015b33bba479ab4ccff68dcba0a8763 batchPipelineActivity: {} build: "82" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/flash/main/82.log completedTimestamp: "2026-06-01T16:07:19Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: flash gitUrl: https://github.com/greencapitaltrade/flash.git lastCommitMessage: | fix(team-selector): filter by team on SSR, hide 0 badge, portal dropdown Three customer-visible bugs in the team selector, fixed in one PR because they all surfaced from the same trace and share component boundaries. # 1. Asset list ignores the selected team (the visible one) The assets page lives at /:team_id/assets but the GET_ASSETS_LIST query had no team_id variable. The client-side Apollo middleware set x-gct-team-id from window.location.pathname; the SSR PreloadQuery in app/(protected)/[team_id]/assets/page.tsx had no equivalent path because React Server Components don't have access to the browser URL. Fury fell back to "every team the user can see" → 228 assets across all teams returned on every page, regardless of which team segment was in the URL. Confirmed live via Playwright on prod: - Navigated to /14/assets (Sandeep Kumar's Team) - GetAssetsList request went out with x-gct-team-id: - Response contained TEST-IOT-001, GCT-IOT-002 — assets from team 4 - Dashboard "Total Assets: 228" matches the company-wide count Fix: - Add `$teamId: Int` to GET_ASSETS_LIST and GET_ASSETS, threaded through to `assets(teamId: $teamId)`. - apps/next/app/(protected)/[team_id]/assets/page.tsx awaits params, parses :team_id to an int, and passes it as a PreloadQuery variable. - packages/app/features/asset/screen.tsx reads team_id from useParams (URL path, the actual source of truth) instead of url.team — a leftover ?team= query-string reference that never updated when the dropdown rewrote the path segment. - useAssetsSuspense accepts an optional teamId so Apollo caches per team and switching teams refetches reliably. Matching Fury change in greencapitaltrade/fury#1966 — both PRs need to ship together for the customer-visible fix. # 2. Team dropdown shows "0" next to every team name Bifrost returns member_count = len(asset.team.member rows for the team). In production no teams have any asset.team.member rows yet, so every team shows "0" in the dropdown chip. The chip read as a broken count rather than "this team has no riders assigned". Fix in packages/ui/src/TeamSelector.tsx: only render the chip when member_count > 0. We can rethink semantics (asset count? user count?) later — hiding the 0 chip removes the customer-facing surprise now. # 3. Dropdown gets hidden behind page content The dropdown was an absolute-positioned YStack inside the sticky header. The header forms its own stacking context that the dropdown can't escape; even at zIndex=100000, the dashboard map's pane controls (leaflet) painted on top of it. Fix: portal the dropdown content to the root via tamagui's Portal, with position:fixed coordinates computed from the trigger's getBoundingClientRect. Repositions on scroll / resize so the dropdown stays anchored when the user scrolls with it open. data-team-selector-dropdown marker added for the outside-click handler to recognize portaled content. # Tests - packages/app/features/asset/api/__tests__/assets-team-id-wiring.test.ts 6 cases pinning the query, SSR page, and screen wiring so a regression that drops the variable, the page param parse, or the useParams hook fails loudly. - packages/ui/src/__tests__/TeamSelector.test.tsx 4 cases verifying: chip hidden when count=0, chip hidden when member_count is undefined, chip visible when count>0, and the dropdown renders inside a Portal wrapper. lastCommitSHA: d984d4174ad53940cdbffe8878e37d637fc388c6 message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/flash/main releaseNotesURL: https://github.com/greencapitaltrade/flash/releases/tag/v0.11.2 startedTimestamp: "2026-06-01T15:57:26Z" status: Succeeded steps: - kind: Stage stage: completedTimestamp: "2026-06-01T16:07:19Z" name: from build pack startedTimestamp: "2026-06-01T15:57:33Z" status: Succeeded steps: - completedTimestamp: "2026-06-01T15:57:42Z" name: Git Clone startedTimestamp: "2026-06-01T15:57:33Z" status: Succeeded - completedTimestamp: "2026-06-01T15:57:45Z" name: Next Version startedTimestamp: "2026-06-01T15:57:43Z" status: Succeeded - completedTimestamp: "2026-06-01T15:57:48Z" name: Jx Variables startedTimestamp: "2026-06-01T15:57:45Z" status: Succeeded - completedTimestamp: "2026-06-01T16:01:17Z" name: Build Yarn Install startedTimestamp: "2026-06-01T15:57:48Z" status: Succeeded - completedTimestamp: "2026-06-01T16:02:27Z" name: Next Build startedTimestamp: "2026-06-01T16:01:18Z" status: Succeeded - completedTimestamp: "2026-06-01T16:02:30Z" name: Check Registry startedTimestamp: "2026-06-01T16:02:27Z" status: Succeeded - completedTimestamp: "2026-06-01T16:06:20Z" name: Build Container Build startedTimestamp: "2026-06-01T16:02:30Z" status: Succeeded - completedTimestamp: "2026-06-01T16:06:33Z" name: Promote Changelog startedTimestamp: "2026-06-01T16:06:20Z" status: Succeeded - completedTimestamp: "2026-06-01T16:06:36Z" name: Promote Helm Release startedTimestamp: "2026-06-01T16:06:33Z" status: Succeeded - completedTimestamp: "2026-06-01T16:07:19Z" name: Promote Jx Promote startedTimestamp: "2026-06-01T16:06:36Z" status: Succeeded - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/4060 startedTimestamp: "2026-06-01T16:06:59Z" status: Succeeded startedTimestamp: "2026-06-01T16:06:59Z" status: Succeeded - kind: Promote promote: environment: production pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/4061 startedTimestamp: "2026-06-01T16:07:16Z" status: Succeeded startedTimestamp: "2026-06-01T16:07:16Z" status: Succeeded version: 0.11.2 status: {}