Skip to content

v0.5.1

Latest

Choose a tag to compare

@waffleflopper waffleflopper released this 24 Oct 05:32
· 50 commits to main since this release
1533011

What's Changed

  • refactor(ui): D06 Onboarding and Sign-in Rosters on the canonical UI foundation; a failed load shows Retry; baseline focus and state repairs by @waffleflopper in #1618
  • docs(stabilization): record D06 #1604 and D03 #1601 as merged; D05 in progress by @waffleflopper in #1619
  • refactor(ui): D05 Critical Tasks and Evals on the canonical UI foundation; failed loads show Retry; baseline focus, form and state repairs by @waffleflopper in #1620
  • refactor(ui): D07 Organization settings, creation, export and notices on the canonical UI foundation; errors stay in context and focus never drops by @waffleflopper in #1621
  • refactor(ui): D07 platform admin on the canonical UI foundation; errors stay in context, focus never drops, stale page links recover by @waffleflopper in #1622
  • refactor(ui): D08 public and marketing pages on the canonical UI foundation; dark and amber text meet AA, no Duty Roster claim by @waffleflopper in #1623
  • refactor(ui): D09 residual shared compositions on the canonical UI foundation; type lists work from the keyboard, one main and one Close, inventory fully dispositioned by @waffleflopper in #1625
  • fix(ui): R1 Calendar and Personnel load failures show Retry instead of a stuck skeleton; loading is announced by @waffleflopper in #1630
  • refactor(ui): R2 ConfirmDialog takes Button's variant names, unconsumed pattern parts deleted, UI docs describe only production by @waffleflopper in #1631
  • fix(ui): R3 shared text and controls meet AA contrast in light and dark by @waffleflopper in #1632
  • fix(ui): R4 menus fit the viewport, focus never drops, errors describe the current failure by @waffleflopper in #1633
  • fix(ui): R5 skip link first, truthful notification failure, focus after archive delete, matching tooltips, link focus ring by @waffleflopper in #1635
  • fix(ui): R6 every select listbox is named after its field; a held Ranks save keeps focus by @waffleflopper in #1637
  • docs(stabilization): Phase 10 integrated check accepted on ec04159 by @waffleflopper in #1638
  • test(verify): F01 setup-mail capture, provider faults and failing baseline (#1639, 1 of 2) by @waffleflopper in #1647
  • fix(identity): derive invitation-origin setup grants and add platform rescind (#1639, 2 of 2) by @waffleflopper in #1649
  • fix(organization): recoverable Organization creation with its owner and defaults in one retry-safe transaction by @waffleflopper in #1650
  • feat(ui): WorkspaceToolbar folds Critical Tasks controls into More by rank (#1624, slice 1) by @waffleflopper in #1648
  • fix(identity): keep session tokens server-side and close identity limit gaps (#1641, PR 1) by @waffleflopper in #1651
  • fix(identity): truthful password outcome, unused endpoint removed, identity proof completed (#1641, PR 2) by @waffleflopper in #1652
  • feat(ui): ICT soldier record, reports, task library and Evals use the fitted WorkspaceToolbar (#1624, slice 4) by @waffleflopper in #1654
  • feat(ui): Calendar pages use the fitted WorkspaceToolbar (#1624, slice 2) by @waffleflopper in #1653
  • feat(ui): Training matrix, reports, types and views use the fitted WorkspaceToolbar (#1624, slice 3) by @waffleflopper in #1655
  • fix(organization): close direct governance writes that bypass member-management rules (#1642, PR 1) by @waffleflopper in #1657
  • feat(ui): ranks, members, logs, account and the dashboard use the fitted WorkspaceToolbar (#1624, slice 5b) by @waffleflopper in #1656
  • fix(access): deny suspended Organizations' private data to page loads and direct database access (#1642, PR 2) by @waffleflopper in #1659
  • feat(ui): admin pages use the fitted WorkspaceToolbar (#1624, slice 6) by @waffleflopper in #1658
  • feat(ui): Personnel and onboarding use the fitted WorkspaceToolbar (#1624, slice 5a) by @waffleflopper in #1660
  • fix(access): make direct feature-record writes and deletion requests follow the app's authority (#1642, PR 3) by @waffleflopper in #1662
  • fix(access): limit Group catalogs to each member's scope and Group writes to Organization-wide configurers (#1642, PR 4) by @waffleflopper in #1663
  • refactor(ui): delete the legacy toolbar parts and close #1624 (slice 7) by @waffleflopper in #1661
  • fix(personnel): make file cleanup recoverable by @waffleflopper in #1666
  • feat(onboarding): redesigned Onboarding workspace (#1665) by @waffleflopper in #1672
  • docs(changelog): announce the Onboarding redesign by @waffleflopper in #1673
  • fix(personnel): commit archive lifecycle commands atomically by @waffleflopper in #1671
  • fix(onboarding): commit template commands atomically by @waffleflopper in #1676
  • fix(onboarding): stop a denied History request from crashing the server by @waffleflopper in #1675
  • docs(verification): reconcile the Onboarding recipes with the merged redesign by @waffleflopper in #1674
  • fix(stores): drop responses from an Organization lifetime the user has left by @waffleflopper in #1677
  • fix(imports): stop chunked imports that outlive their Organization by @waffleflopper in #1678
  • fix(sign-in-rosters): make scan changes recoverable and retain shared files by @waffleflopper in #1679
  • fix(calendar): make configuration commands atomic by @waffleflopper in #1682
  • fix(calendar): keep re-entry snapshots fresh without hiding confirmed changes by @waffleflopper in #1690
  • fix(critical-tasks): recover uncertain saves and reorder atomically by @waffleflopper in #1691
  • fix: finish retained mutation recovery for D05 by @waffleflopper in #1693
  • chore(vercel): reduce deployment build costs by @waffleflopper in #1695
  • fix: answer invalid, stale and conflicting writes with truthful 4xx (D06 PR 1) by @waffleflopper in #1696
  • fix: say when a save, delete, reorder or settings read fails (D06 PR 2) by @waffleflopper in #1698
  • fix: read operational today in the viewer's time zone (D06 PR 3) by @waffleflopper in #1700
  • fix: finish D06 with local completion days, import validation and refused-save reasons (D06 PR 4) by @waffleflopper in #1701
  • fix(calendar): explain failed clears and reconcile D08 acceptance by @waffleflopper in #1704
  • perf(verify): reproducible workload measurement for Phase 12 (D01 PR 1) by @waffleflopper in #1713
  • ci: run PR checks after review and deploy previews on request by @waffleflopper in #1714
  • feat(calendar): ship the Calendar redesign by @waffleflopper in #1721
  • feat(calendar): filter the duty picker by rank, role and MOS by @waffleflopper in #1722
  • ci: run CI on GitHub Actions until Depot minutes reset by @waffleflopper in #1732
  • fix(calendar): print the Calendar's bars instead of per-day cells by @waffleflopper in #1731
  • perf(verify): record the Phase 12 journey baseline and refine D02–D06 (D01) by @waffleflopper in #1733
  • perf(personnel): read the roster and detail Person once and refresh only owning loads (D03) by @waffleflopper in #1734
  • fix(identity): keep streamed responses alive across a session refresh (D04) by @waffleflopper in #1735
  • fix(ci): pass the Supabase image registry through to the database job by @waffleflopper in #1740
  • perf(rls): decide completion read visibility once per query (D04) by @waffleflopper in #1739
  • fix(rating-scheme): hide archived People's evaluations from Evals and due counts by @waffleflopper in #1744
  • perf(reports): take the Critical Tasks report off the workspace stream and order paged reads (D05) by @waffleflopper in #1748
  • feat(personnel): redesign the Personnel detail page by @waffleflopper in #1747
  • perf(rls): decide Calendar row visibility once per statement and scope the assignment save (D06) by @waffleflopper in #1769
  • chore(verify): sign verification actors in with a provider session by @waffleflopper in #1770
  • perf(calendar): read availability for visible days, keep the reloaded month and run a first visit's load once (D06) by @waffleflopper in #1771
  • docs(stabilization): close Phase 12 on per-repair evidence and run perf only on request (D07) by @waffleflopper in #1780
  • chore(stabilization): D01 code sweep, dispositions and src/features comments (1 of 2) by @waffleflopper in #1789
  • chore(stabilization): D01 comment cleanup in lib, routes and scripts (2 of 2) by @waffleflopper in #1790
  • feat(settings): redesign Unit settings and add unit-wide feature switches by @waffleflopper in #1796
  • docs(stabilization): aggressive documentation prune (D02) by @waffleflopper in #1797
  • feat(dashboard): frame 01, one viewer day and the section registry by @waffleflopper in #1798
  • feat(dashboard): strength band with bottom line, 14-day forecast and group strength by @waffleflopper in #1800
  • test(stabilization): targeted test pruning (D03) by @waffleflopper in #1802
  • feat(dashboard): Needs you queue and On duty (slice 3) by @waffleflopper in #1801
  • docs(stabilization): final check and process retirement (D04) by @waffleflopper in #1803
  • feat(dashboard): Quick add for Status, Training record and Start onboarding by @waffleflopper in #1804
  • feat(dashboard): Readiness row with Critical Tasks (slice 5) by @waffleflopper in #1806
  • feat(dashboard): act on Needs you rows in place by @waffleflopper in #1805
  • chore(dashboard): merge main into the dashboard integration branch by @waffleflopper in #1808
  • feat(dashboard): features off or not set up, per-source gates and security fixes (slice 7) by @waffleflopper in #1811
  • chore(agents): hook ship-it into finish-pr, add review guidelines and a Node guard by @waffleflopper in #1812
  • ci(database): check migration order and seed schema drift by @waffleflopper in #1813
  • refactor(verification): slim the verify skill and add owned-control helpers by @waffleflopper in #1814
  • fix(access): enforce Organization feature switches at the database boundary by @waffleflopper in #1810
  • chore(ci): bound test workers, clear run-ci per run, check docs against any base by @waffleflopper in #1815
  • docs(verify): correct the recipes the Dashboard redesign touched by @waffleflopper in #1816
  • fix(dashboard): final review UI fixes by @waffleflopper in #1818
  • fix(dashboard): final review non-UI fixes by @waffleflopper in #1817
  • chore(dashboard): sync main, drop Paper from the verify skill and announce the Dashboard by @waffleflopper in #1819
  • feat(dashboard): redesign the Dashboard as a morning brief by @waffleflopper in #1820
  • feat(calendar): add the duty roster count engine by @waffleflopper in #1823
  • fix(dashboard): long-absence returns, date-only Record class, On duty names, and #1799/#1821 cleanup by @waffleflopper in #1824
  • feat(calendar): add duty roster settings and DA 6 forms by @waffleflopper in #1825
  • feat(calendar): give status types an effect on duty rosters by @waffleflopper in #1829
  • feat(calendar): add the DA 6 view and print by @waffleflopper in #1830
  • feat(calendar): fill duty days from the roster and show roster counts by @waffleflopper in #1831
  • feat(calendar): find a replacement from the roster by @waffleflopper in #1832
  • feat(calendar): copy starting numbers from a paper DA 6 and lock them once duty is served by @waffleflopper in #1834
  • chore(calendar): merge main into duty rosters and fill Dashboard duty from the roster by @waffleflopper in #1836
  • feat(app-shell): announce duty rosters in What's New by @waffleflopper in #1838
  • fix(calendar): start the first DA 6 at its first recorded duty and bound roster history reads by @waffleflopper in #1840
  • fix(calendar): link the DA 6 from the planner and keep Find replacement's re-picks for Someone else by @waffleflopper in #1841
  • fix(dashboard): skip the swap counter write once the duty fill panel is gone by @waffleflopper in #1844
  • feat(training): color the Excel export by status on the export date by @waffleflopper in #1839
  • fix(calendar): close DA 6 forms only from the server by @waffleflopper in #1846
  • chore(calendar): merge main into duty rosters again by @waffleflopper in #1845
  • fix(calendar): wider type sheet, visible roster Fill, Someone else note by @waffleflopper in #1849
  • feat(import): rebuild every bulk import on one shared import flow by @waffleflopper in #1848
  • chore(calendar): sync duty rosters with main, reopen rosters after their predecessor by @waffleflopper in #1850
  • feat(calendar): duty rosters that fill duty days by DA PAM 220-45 and keep a DA 6 by @waffleflopper in #1843
  • fix(import): guard status import overlaps and keep corrected training names in retry files by @waffleflopper in #1852
  • feat(personnel): let Operators create active People in their Groups by @waffleflopper in #1854
  • fix(calendar): say whether a duty before the roster's DA 6 counts by @waffleflopper in #1856
  • chore(deps): bump SvelteKit, Vite and runtime deps to clear Dependabot alerts by @waffleflopper in #1855
  • fix(calendar): keep an assignment's identity when its assignee changes (#1321) by @waffleflopper in #1859
  • perf(calendar): keep Bulk status roster rows mounted through search (#1718) by @waffleflopper in #1860
  • chore(deps): bump zod and layerchart 2 to clear Dependabot alerts by @waffleflopper in #1861
  • chore(deps): bump happy-dom to 21 and fast-uri to 3.1.9 by @waffleflopper in #1863
  • feat(calendar): swap two people's duty days without changing the counts by @waffleflopper in #1865
  • feat(critical-tasks): open Defaults from the Task Library toolbar (#1416) by @waffleflopper in #1867

Full Changelog: v0.5-beta...v0.5.1