Skip to content

feat(admin): adopt capability nomenclature — retire Pro/International, Merchant → Business (ENG-516)#55

Merged
islandbitcoin merged 2 commits into
mainfrom
eng-516/capability-nomenclature
Jul 17, 2026
Merged

feat(admin): adopt capability nomenclature — retire Pro/International, Merchant → Business (ENG-516)#55
islandbitcoin merged 2 commits into
mainfrom
eng-516/capability-nomenclature

Conversation

@islandbitcoin

Copy link
Copy Markdown
Contributor

Summary

Admin-panel half of ENG-516. Companion to lnflash/flash#452 (backend capability state machine).

Adopts the light headline status naming (product decision 2026-07-14): accounts lead with one word — Trial → Verified → Business — with capability badges as supporting detail. Pro and International are retired; Merchant is renamed Business.

Changes

  • Account Hub (account_hub.js)
    • Headline badge shows statusHeadline from the backend (Trial/Verified/Business), falling back to the stored level for older backends.
    • Capability badges (Bank payout, USD account) render next to the headline in the account header.
    • Upgrade-request rows label requested_level as the capability being requested (L2 → "Bank payout", L3 → "Business").
    • "Merchant" tab renamed "Business" (display only — data-tab/classes unchanged).
    • Change-level dialog uses disambiguated internal labels ("Verified (L1)" vs "Verified + Bank payout (L2)") — it matched options by label, and L1/L2 now share the Verified headline, so plain new labels would have mis-selected.
  • Account Management (account_management.js): level map and Requested Level filter adopt the new names with level numbers for admin clarity.
  • GraphQL client (graphql_client.py): AccountDetail fragment now fetches statusHeadline + capabilities { verified bankPayout business usdAccount }.

Deploy ordering

⚠️ Requires lnflash/flash#452 deployed first — the fragment queries the new fields and the whole query fails against an older schema. The JS itself degrades gracefully (falls back to level labels) but the fragment does not.

Testing

  • node --check on both pages; py_compile on the client.
  • pytest admin_panel/tests/test_account_hub_search_js.py: 3 pass, 3 fail — the same 3 fail on clean origin/main (pre-existing, unrelated to this change).

🤖 Generated with Claude Code

…, Merchant → Business (ENG-516)

Account Hub and Account Management adopt the light-headline-status naming:
accounts lead with Trial / Verified / Business, with capability badges
(Bank payout, USD account) as supporting detail. Upgrade-request levels
read as the capability being requested. The GraphQL account fragment now
fetches statusHeadline + capabilities from the flash backend (requires
lnflash/flash#452), with a level-based fallback for older backends.
The change-level dialog uses disambiguated internal labels since L1 and
L2 share the Verified headline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@linear

linear Bot commented Jul 15, 2026

Copy link
Copy Markdown

ENG-516

…es (ENG-516)

Review follow-ups on #55:
- prettier: format account_hub.js (was failing the pre-commit CI hook — the
  new capabilityBadgesHtml chain wasn't prettier-clean).
- Change-level dialog now uses the disambiguated ADMIN_LEVEL_OPTIONS labels in
  its ERP-party and success messages (was ACCOUNT_LEVEL_LABELS, which renders
  "Verified" for both L1 and L2 — misleading, since L1 needs no ERP party).

Verified: prettier --check clean; node --check OK.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@islandbitcoin
islandbitcoin merged commit c7ba94b into main Jul 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants