feat(admin): consolidate Stripe nav and raise the dashboard switch (BUNYIP-417) #415

Merged
longjacksonle merged 1 commit from feat/BUNYIP-417-nav-stripe-dashboard-switch into main 2026-07-30 04:58:15 +02:00

What

Closes BUNYIP-417. Two admin navigation fixes.

1. Stripe navigation redundancy

Verified first (the ticket flagged that only one literal Stripe nav entry exists): the real redundancy was that Stripe config was split across two nav entries - the "Stripe" page (keys, checkout, and Products/Prices from BUNYIP-416) and "Tier Settings", which also carried the tier -> Stripe price/product ID mappings.

Consolidated per the chosen direction (move mappings to the Stripe page):

  • The three "Stripe catalog" mapping blocks moved from Tier Settings onto the Stripe page as a new "Tier catalog mapping" section (Free/lifetime, Early adopter, Standard), its own form posting to a new POST /admin/stripe/catalog.
  • Tier Settings now holds only its non-Stripe concerns (slots + trial lengths) and links to the Stripe page.
  • Nothing lost: the mapping fields moved, not removed, and persist via the same partial tier-config update (blank = keep). All destinations previously reachable are still reachable.

Now all Stripe config lives under the single "Stripe" nav entry (matching the a8n-tools structure).

2. Dashboard switch raised

The user/admin dashboard switch ("Admin Panel" / "User Dashboard") moved from the bottom of the sidebar to the top (above the section items, divider below), since it's one of the most-used controls.

Tests

  • tier_settings_shows_slots_and_no_stripe_catalog - catalog gone from Tier Settings, slots/trials present, links to Stripe.
  • catalog_section_renders_mapping_fields_prefilled - the moved section renders the six fields prefilled from tier config, posts to /admin/stripe/catalog, with a load-error state.
  • Existing product/price/two-column tests still pass. just check-container green.

Verification (screenshots shared in-thread)

  • Admin nav: "User Dashboard" at the top; user nav: "Admin Panel" at the top.
  • Stripe page: setup docs, config, Products, Prices, and the new Tier catalog mapping section with Save.
  • Tier Settings: slots/trials only, with a pointer to the Stripe page.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LerAorB26HGHLfjC9iDUbd

## What Closes BUNYIP-417. Two admin navigation fixes. ### 1. Stripe navigation redundancy Verified first (the ticket flagged that only one literal Stripe nav entry exists): the real redundancy was that Stripe config was **split across two nav entries** - the "Stripe" page (keys, checkout, and Products/Prices from BUNYIP-416) and "Tier Settings", which also carried the tier -> Stripe price/product ID mappings. Consolidated per the chosen direction (move mappings to the Stripe page): - The three "Stripe catalog" mapping blocks moved from Tier Settings onto the **Stripe** page as a new "Tier catalog mapping" section (Free/lifetime, Early adopter, Standard), its own form posting to a new `POST /admin/stripe/catalog`. - **Tier Settings** now holds only its non-Stripe concerns (slots + trial lengths) and links to the Stripe page. - Nothing lost: the mapping fields moved, not removed, and persist via the same partial tier-config update (blank = keep). All destinations previously reachable are still reachable. Now all Stripe config lives under the single "Stripe" nav entry (matching the a8n-tools structure). ### 2. Dashboard switch raised The user/admin dashboard switch ("Admin Panel" / "User Dashboard") moved from the bottom of the sidebar to the **top** (above the section items, divider below), since it's one of the most-used controls. ## Tests - `tier_settings_shows_slots_and_no_stripe_catalog` - catalog gone from Tier Settings, slots/trials present, links to Stripe. - `catalog_section_renders_mapping_fields_prefilled` - the moved section renders the six fields prefilled from tier config, posts to `/admin/stripe/catalog`, with a load-error state. - Existing product/price/two-column tests still pass. `just check-container` green. ## Verification (screenshots shared in-thread) - Admin nav: "User Dashboard" at the top; user nav: "Admin Panel" at the top. - Stripe page: setup docs, config, Products, Prices, and the new Tier catalog mapping section with Save. - Tier Settings: slots/trials only, with a pointer to the Stripe page. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01LerAorB26HGHLfjC9iDUbd
feat(admin): consolidate Stripe nav and raise the dashboard switch (BUNYIP-417)
All checks were successful
E2E / Playwright against deployment (pull_request) Successful in 1m28s
Check / fmt + clippy + build + tests (pull_request) Successful in 8m14s
Create release / Create release from merged PR (pull_request) Has been skipped
60d21841e9
Two navigation fixes.

1. Stripe redundancy. Stripe configuration was split across two admin nav entries: the "Stripe" page (keys, checkout, and - since BUNYIP-416 - Products/Prices) and "Tier Settings", which also carried the tier -> Stripe price/product ID mappings. The catalog mapping now lives on the Stripe page as its own "Tier catalog mapping" section (Free/lifetime, Early adopter, Standard), so all Stripe config sits under the single "Stripe" nav entry (matching the a8n-tools structure). Tier Settings keeps only its non-Stripe concerns (slots + trial lengths) and links to the Stripe page. Nothing is lost: the mapping fields moved, not removed, and persist via the same partial tier-config update (blank = keep) through a new POST /admin/stripe/catalog handler.

2. Dashboard switch. The user/admin dashboard switch ("Admin Panel" / "User Dashboard") moved from the bottom of the sidebar to the TOP (above the section items, with a divider below), since it is one of the most frequently used controls.

Verification: every destination previously reachable from Tier Settings is still reachable - the catalog mapping is on the Stripe page, Tier Settings still holds slots/trials. Confirmed via screenshots (admin + user nav, Stripe page with the catalog section, Tier Settings slots-only) at 1440px.

Tests (bunyip-web): tier_settings_shows_slots_and_no_stripe_catalog (catalog gone, slots present, links to Stripe) and catalog_section_renders_mapping_fields_prefilled (the moved section renders the six fields, prefilled from tier config, posting to /admin/stripe/catalog, with a load-error state). Existing product/price tests still pass. just check-container green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LerAorB26HGHLfjC9iDUbd
longjacksonle scheduled this pull request to auto merge when all checks succeed 2026-07-30 04:50:51 +02:00
longjacksonle deleted branch feat/BUNYIP-417-nav-stripe-dashboard-switch 2026-07-30 04:58:15 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/bunyip!415
No description provided.