Skip to content

Conversation

@smagala
Copy link
Owner

@smagala smagala commented Jan 27, 2026

Summary

  • Update browser tab title from Vite default to "Voider - VOID Management Console"
  • Move System Information panel to the top of the Dashboard
  • Add "IDs Minted Today" card with backend minted_today field on /api/minter/statistics
  • Align page content to top instead of vertically centered
  • Remove redundant description from RequestBlock info card
  • Sort block size dropdown smallest-to-largest
  • Change pattern separator from / to . across RequestBlock and Statistics pages
  • Rename "Shoulder Allocations" to "Block Allocations" in nav, page title, and dashboard heading
  • Show combined shoulder.blade_pattern block identifier and add Capacity column in Allocations table
  • Add external use flag to allocations with bidirectional guard against minter initialization
  • PATCH endpoint for toggling external flag on allocations
  • Allocations page enhancements: Purpose column, External toggle, Initialize Minter action with dialog
  • Request Block form: external use checkbox
  • 8 new backend tests covering external allocation scenarios

Closes #32, closes #33, closes #34, closes #35, closes #36, closes #37, closes #38, closes #39

Test plan

  • yarn tsc --noEmit passes with no type errors
  • yarn build completes successfully
  • pytest passes all 104 backend tests (96 existing + 8 new)
  • Browser tab shows "Voider - VOID Management Console"
  • Dashboard: System Information panel appears at top of page
  • Dashboard: "IDs Minted Today" card appears in ID Minting section
  • All pages: content aligns to top, not vertically centered
  • Request Block: no description text in Selected Block Info card
  • Request Block: block sizes sorted smallest to largest in dropdown
  • Request Block + Statistics: pattern shown as shoulder.blade (dot separator)
  • Nav sidebar, Allocations page, Dashboard: "Block Allocations" label used
  • Allocations table: Block column shows shoulder.blade_pattern, Capacity column present
  • Hit /api/minter/statistics and confirm minted_today field is present
  • Request Block form shows "External use" checkbox
  • POST /api/authority/request with external: true returns external: true in response
  • PATCH /api/authority/allocations/{id} with external: true toggles flag
  • POST /api/minter/initialize for external allocation returns 403
  • Allocations page: Purpose, External toggle, and Actions columns visible
  • Allocations page: Initialize Minter dialog creates minter, row updates to "Minter Active"
  • Allocations page: External toggle disabled when minter active

🤖 Generated with Claude Code

smagala and others added 3 commits January 27, 2026 00:03
Improve the management console UI with layout, naming, and data
display refinements: update browser title, move system info to top of
dashboard, add minted-today count, align page content to top, sort
block sizes ascending, use dot separator for patterns, rename
shoulder allocations to block allocations, and show combined block
identifiers with capacity in the allocations table.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Allow any non-blank purpose text instead of enforcing a 20-character
minimum on the frontend and 10-character minimum on the backend.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…cations

Add bidirectional guard between external allocations and minter initialization:
- External flag on allocations prevents minter creation (403)
- Existing minters prevent marking allocation as external (400)
- PATCH endpoint for toggling external flag on allocations
- Allocations page shows Purpose, External toggle, and Initialize Minter action
- Request Block form includes external use checkbox
- 8 new backend tests covering all external allocation scenarios

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@smagala smagala mentioned this pull request Jan 27, 2026
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant