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
