- Phase 1: Rails API substrate v2 refactor (#45) — turn queue-specific template into generic single-resource CRUD substrate (Shop → ItemTag)
- Rename
ItemTag.queue_number→name; adddescription,position, composite(shop_id, position)index; dropscan_state,customer_read_at,already_completedand the(shop_id, queue_number)unique index - Drop NFC/QR scan flows: remove
POST /scan,GET /scan_customer, the entiredisplay/namespace,DELETE /shops/:id/reset, app root + static controller - Rename
PATCH /item_tags/:id/reset→/idle(matches AASM event name) - Auto-create one "Sample" ItemTag on Shop creation (was 10 A001–A010 queue numbers); drop
lib/tasks/shop.rake - Collapse
AccountsShopkeeper::ROLESfrom 7 tiers (admin/senior_manager/junior_manager/senior_member/junior_member/guest) to 2 (admin/member);ItemTagPolicyresolves to Shop permissions - Inline state transitions and
completed_by/completed_atwrites in controller actions; dropscan_tag!/complete_tag!/reset!model methods - Regenerate
docs/openapi.yaml; refresh brakeman.ignore fingerprint; update locales and Madmin resources - Update gems within Gemfile constraints (bigdecimal, bootsnap, erb, ffi, irb, json, minitest, net-imap, nokogiri, pagy, parallel, parser, propshaft, puma, regexp_parser, rubocop, rubocop-ast, tailwindcss-ruby)
- Update Rails from 7.1.5.1 to 8.1
- Update Brakeman from 7.0.2 to 7.1.2
- Add brakeman.ignore for mass assignment false positive
- Add comprehensive test coverage for models, policies, serializers, and controllers (205 tests)
- Update app icons with transparent backgrounds
- Add Active Storage migrations and Rails 7.2 framework defaults
- Add static error pages (404, 406, 500)
- Fix RuboCop offenses in Active Storage migrations
- Add CLAUDE.md for Claude Code guidance
- Update Brakeman gem
- Fix item_tag uniqueness error
- Add item_tags table
- Remove BundleAssets
- Migrate from Sprockets to Propshaft
- Update Madmin
- Update Ruby and gems
- Update Brakeman gem
- Fix fail updating shopkeeper
- First commit