feat(home): move Setup to admin and omit unpermitted home content #20

Merged
KofTwentyTwo merged 1 commits from feature/data-analysis-business-home into develop 2026-10-16 15:19:28 +00:00
KofTwentyTwo commented 2026-10-16 14:18:32 +00:00 (Migrated from github.com)

Summary

The Data Analysis business home no longer shows system content or locked shells.

  • dataAnalysisSetup is removed from the home's widget list. It stays registered, gated to data_analysis.admin with DenyBehavior.HIDDEN, and is exposed as DataAnalysisQBitProducer.SYSTEM_WIDGETS for a host to place on its Admin area.
  • The other four home widgets require READ on their table (new TableReadWidgetPermissionChecker, HIDDEN) and are omitted from metadata otherwise.
  • Overview groups (Saved / Watches / My runs) the user cannot read are left out of the payload. No "Unavailable: READ permission required." text remains on the home; empty-state copy is unchanged.
  • Admin behaviour is unchanged apart from the Setup widget's placement. A user with only watch/run READ but no saved READ no longer gets the overview or starred widgets (they get the widgets for tables they can read).

Rubric item moved

A1 0 -> 1 and A8 0 -> 1 on Data Analysis (dataAnalysis).

Audit rows fixed

  • Data Analysis A1 (0): "dataAnalysisSetup (1st widget) is system configuration (defaults "max rows, sample, smallest group, results reused N min", "No scheduler is configured", result-cache state) shown to business users (A-0); no purpose line or table action"
  • Data Analysis A8 (0): "Locked shells: group subheaders and empty texts render "Unavailable: READ permission required." when a user lacks READ on watch/run/table-config, instead of omitting the widget (L-5)"

Tests

./mvnw verify passes (312 tests, checkstyle). New in DataAnalysisHomeTest: home widget list and app exclude dataAnalysisSetup; admin session has and can render it, a SAVED_READ session does not; a SAVED_READ-only session sees only the overview and starred widgets, with no "Unavailable"/"permission required" text in their payloads and only the Saved group.

Screenshots

Widget-level preview of the home widgets for a SAVED_READ-only user, before/after, widths 390/768/1024/1440/1920/3200. Attached locally (not committed): C:/Users/james/AppData/Local/Temp/claude/R--Git-Local-KofTwentyTwo-Praetor/83da0ae2-628c-4edb-9fd7-a93d49e86d27/scratchpad/dashboard-standard/pr-shots/qbit-data-analysis-home. Full-page shots happen when kof22 pins the release.

Release

A qbit-data-analysis RC is needed after 0.1.0-RC.4 (what kof22 pins on origin/main), i.e. 0.1.0-RC.5. kof22 then bumps qbit-data-analysis.version. Follow-up kof22 PR (not part of this): place DataAnalysisQBitProducer.SYSTEM_WIDGETS (dataAnalysisSetup) on an Admin page.

🤖 Generated with Claude Code

## Summary The Data Analysis business home no longer shows system content or locked shells. - `dataAnalysisSetup` is removed from the home's widget list. It stays registered, gated to `data_analysis.admin` with `DenyBehavior.HIDDEN`, and is exposed as `DataAnalysisQBitProducer.SYSTEM_WIDGETS` for a host to place on its Admin area. - The other four home widgets require READ on their table (new `TableReadWidgetPermissionChecker`, HIDDEN) and are omitted from metadata otherwise. - Overview groups (Saved / Watches / My runs) the user cannot read are left out of the payload. No "Unavailable: READ permission required." text remains on the home; empty-state copy is unchanged. - Admin behaviour is unchanged apart from the Setup widget's placement. A user with only watch/run READ but no saved READ no longer gets the overview or starred widgets (they get the widgets for tables they can read). ## Rubric item moved A1 0 -> 1 and A8 0 -> 1 on Data Analysis (`dataAnalysis`). ## Audit rows fixed - Data Analysis A1 (0): "`dataAnalysisSetup` (1st widget) is system configuration (defaults "max rows, sample, smallest group, results reused N min", "No scheduler is configured", result-cache state) shown to business users (A-0); no purpose line or table action" - Data Analysis A8 (0): "Locked shells: group subheaders and empty texts render "Unavailable: READ permission required." when a user lacks READ on watch/run/table-config, instead of omitting the widget (L-5)" ## Tests `./mvnw verify` passes (312 tests, checkstyle). New in `DataAnalysisHomeTest`: home widget list and app exclude `dataAnalysisSetup`; admin session has and can render it, a SAVED_READ session does not; a SAVED_READ-only session sees only the overview and starred widgets, with no "Unavailable"/"permission required" text in their payloads and only the Saved group. ## Screenshots Widget-level preview of the home widgets for a SAVED_READ-only user, before/after, widths 390/768/1024/1440/1920/3200. Attached locally (not committed): `C:/Users/james/AppData/Local/Temp/claude/R--Git-Local-KofTwentyTwo-Praetor/83da0ae2-628c-4edb-9fd7-a93d49e86d27/scratchpad/dashboard-standard/pr-shots/qbit-data-analysis-home`. Full-page shots happen when kof22 pins the release. ## Release A qbit-data-analysis RC is needed after 0.1.0-RC.4 (what kof22 pins on origin/main), i.e. 0.1.0-RC.5. kof22 then bumps `qbit-data-analysis.version`. Follow-up kof22 PR (not part of this): place `DataAnalysisQBitProducer.SYSTEM_WIDGETS` (`dataAnalysisSetup`) on an Admin page. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.