v0.4.1 — Product Catalogue, Stock Levels & Members
Patch release building on v0.4.0 (rate engine). Focuses on the product catalogue, stock-level, and members domain slices, plus an oss-maintainer + PR review pass.
Product Catalogue & Stock
- Product show-page redesign; products/groups/stock UX polish
- Auto stock level for bulk products; bulk serialised stock entry
- Stock-level show page: badges, ledger, transaction modals, skeletons
- Serialised/bulk rules, opening balances, and a "bulk product must keep ≥1 stock level" guard
- Entity-specific custom views (per-entity ViewBuilder)
Members
- User-type member restrictions (name / active state / location type managed from the user profile)
- Related-member avatars; merge/anonymise webhooks + API; module-audit gap closure
- Searchable, bounded merge picker
API
- Expanded token ability picker (Phase-2 / rate scopes, edit scopes, grouped UI)
- Ransack / include / custom_fields consistency fixes
- ViewResolver now honours cf.* custom-field filters alongside saved views
- stock_transaction.deleted registered as a subscribable webhook event
- Scramble @apiresponse annotations on member/schema endpoints
UI, Navigation & Auth
- Top-navigation restructure; search palette images; combobox styling; data-list link/badge/mono
- Split auth layout with component montage
- Component-library compliance pass (design tokens, stat-card, stock-method-badge, x-signals.field)
Quality
- Custom-field schema cache invalidation (UAT D6); security & API test coverage
- oss-maintainer + PR review follow-ups: simplicity refactors, docs (new product-groups platform page, bulk-entry docs), and added test coverage
- Gates: PHPStan level 6 clean, Pint clean, full suite + env-writing group green
🤖 Generated with Claude Code