The GitHub Actions job "Required Checks" on texera.git/main has succeeded.
Run started by GitHub user github-merge-queue[bot] (triggered by 
github-merge-queue[bot]).

Head commit for run:
dcf8217ff4487fdbb648c33c4e3f8b159d819a51 / Meng Wang <[email protected]>
feat(frontend): add the warehouse dashboard tab (#8005)

### What changes were proposed in this PR?

The warehouse dashboard tab (#6933), mirroring the computing-unit tab
throughout. It sits on top of the merged API client (#7820) and ships
the components and the page together, per review.

Everything is gated behind the backend's warehouse feature flag
(`storage.warehouse.enabled`): the sidebar entry reads it from the
boot-time GUI config, the page re-checks it through `GET
/warehouse/status`, and deployments with the flag off (the default) see
no change at all.

- **`user-warehouse` page + routing** — a "Warehouses" sidebar entry,
shown only while the flag is on, plus the route. The route itself is
unguarded on purpose: a deep link with the flag off lands on the page's
disabled notice instead of silently redirecting, and the backend
enforces the flag on every endpoint regardless. The page lists the
user's warehouses in a virtual-scrolled list, opens the create dialog,
appends on create, removes the row on delete, and distinguishes the
three states the flag request can leave it in: enabled (the list),
disabled (a notice that the deployment has the feature off), and failed
(a retry button, instead of the misleading "disabled" notice).
- **`warehouse-create-modal`** — embedded through `[(visible)]` and
returning its result through `(warehouseCreated)`, the same contract as
`ComputingUnitCreateModalComponent`. Following review, its submit flow
mirrors the computing-unit dialog: Create fires the request and closes
at once, with the outcome owned by the actions service — the toast and
the list update arrive even if the user has navigated away mid-create.
There is no in-flight dialog state to cancel, a late response never
touches a dialog the user has since reopened, and a name that breaks the
backend naming rule cannot be submitted at all.
- **`warehouse-metadata`** — the read-only details dialog the row name
opens: name, owner, flavor, created. The Lakekeeper catalog name is
deliberately absent; it locates data inside storage the user has no
access to until warehouses live in their own bucket (#6870, Phase 1).
- **`user-warehouse-list-item`** — the row card, matched to the
computing-unit row down to its 64px content height, hover-revealed
delete, id column and metadata columns. Warehouses have no status,
metrics, rename or sharing, so the computing-unit row's badge, progress
bars, inline rename and share control have no counterpart.

Screenshots and Videos:

<img width="1493" height="785" alt="Screenshot 2026-08-27 at 1 06 01 PM"
src="https://github.com/user-attachments/assets/815feb50-7939-4a3c-94b2-9b02fe9a54ba";
/>

<img width="1493" height="919" alt="Screenshot 2026-08-27 at 1 06 24 PM"
src="https://github.com/user-attachments/assets/a8c155fe-7fc7-48a0-a233-339603074497";
/>

<img width="1515" height="811" alt="Screenshot 2026-08-27 at 1 06 40 PM"
src="https://github.com/user-attachments/assets/1f6af9c0-49f0-4527-88bf-7a85a59aea10";
/>



https://github.com/user-attachments/assets/44069306-0239-4692-bd31-0c3d1fb0d07b

### Any related issues, documentation, discussions?

Closes #6933. Part of #6870; the on-canvas picker follows in #7817.

### How was this PR tested?

- 67 Vitest tests across 7 spec files pass, covering the three
components, the page, the dashboard sidebar gating, and the (already
merged) services.
  - Whole suite as CI runs it: `yarn test:ci`
- Just this change: `ng test --watch=false --include
"src/app/common/component/warehouse-*/**/*.spec.ts" --include
"src/app/dashboard/component/user/user-warehouse/**/*.spec.ts" --include
"src/app/dashboard/component/dashboard.component.spec.ts"`
- The dialogs are driven through their own controls — the Create and
Cancel buttons, the Enter key, the text input — so the template bindings
are verified too, not just component methods.
- Failure paths verified rather than assumed: each behaviour was broken
on purpose and the suite confirmed to fail for the expected reason
before being restored.
- Exercised end to end against a local deployment with the flag on,
backed by live Lakekeeper and MinIO — screenshots and a video in the
description above.

### Was this PR authored or co-authored using generative AI tooling?

Generated-by: Claude Code (claude-opus-5, claude-fable-5)

Report URL: https://github.com/apache/texera/actions/runs/35142536704

With regards,
GitHub Actions via GitBox

Reply via email to