Skip to content

Feat/tags - #680

Merged
mnindrazaka merged 15 commits into
mainfrom
feat/tags
Oct 2, 2026
Merged

mnindrazaka merged 15 commits into
mainfrom
feat/tags

Conversation

@mnindrazaka

Copy link
Copy Markdown
Collaborator

No description provided.

mnindrazaka and others added 15 commits October 1, 2026 16:57
* docs: add PRD for product tags and order app highlight sections

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DFf8Zw5nWptg6TQFcXnQ6X

* docs: settle product tags open questions

Highlighted tags become filter chips, highlight entries sort newest-tagged
first, and sections stay uncapped carousels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DFf8Zw5nWptg6TQFcXnQ6X

---------

Co-authored-by: Claude <noreply@anthropic.com>
Phase 1 of docs/prd-product-tags.md: tags table migration, Tag domain
entity with colour palette validation, case-insensitive unique name
check, MySQL repository, REST handler/routes under CheckAuth, and the
/tags contract.


Claude-Session: https://claude.ai/code/session_01TvErk6zGfrEZmJLbQVmtLA

Co-authored-by: Claude <noreply@anthropic.com>
Phase 2 of product tags (docs/prd-product-tags.md). Adds variants.image_url
(migration 000045), threads imageUrl through the Go domain, MySQL and REST
layers, the OpenAPI contract, and the POS variant form. No reader uses it yet.


Claude-Session: https://claude.ai/code/session_01EqQBJZutniFv8dssVNZE1t

Co-authored-by: Claude <noreply@anthropic.com>
Add the variant_tags join table, PUT /tags/{tagId}/variants and optional
VariantRequest.tagIds. Both write paths diff against the stored pairs so
untouched rows keep their created_at, which later orders highlight
entries by taggedAt. Omitted tagIds leave a variant's tags alone.

Variant reads preload their tags, and tag reads return variantCount for
the delete confirmation.

Also renumber add_variant_image_url to 000046: it collided with
000045_create_tags, which golang-migrate rejects as a duplicate version.


Claude-Session: https://claude.ai/code/session_01FXmvmGqaJhBHmyYxbbeHoX

Co-authored-by: Claude <noreply@anthropic.com>
Add ProductTag and ResolveProductTags, derive product vs variant scope
over live variants, and expose Product.tags on authenticated and public
product endpoints.


Claude-Session: https://claude.ai/code/session_01FQbRptVGsQxpRkvxiR3fwN

Co-authored-by: Claude <noreply@anthropic.com>
Add TagList/TagCreate/TagUpdate screens, handlers and composition roots,
TagFormView with colour swatch picker, TagListItem, TagDeleteAlert, POS
pages under /tags and a Tags sidebar entry. Tag gains variantCount for the
list item and the delete confirmation.


Claude-Session: https://claude.ai/code/session_01LcTrodMYofppndzqZwi9mC

Co-authored-by: Claude <noreply@anthropic.com>
Phase 8 of product tags (docs/prd-product-tags.md). The variant form gains a
tag multi-select; create and update handlers load tags via TagListUsecase.
tagIds is sent on every submit, and create pre-fills the parent product's
product-scope tags (D4) once Product.tags is populated.


Claude-Session: https://claude.ai/code/session_01NBJmPLfgeRgnjk2NNGueuK

Co-authored-by: Claude <noreply@anthropic.com>
Add TagAssignmentUsecase (load all variants, TOGGLE_VARIANT, tri-state
TOGGLE_PRODUCT, SEARCH, SAVE via TagRepository.setTagVariants),
TagAssignmentScreen grouped by category > product > variants with
single-variant products collapsed to one checkbox, handler, composition
root, page at /tags/[tagId]/assign and an "Assign products" action on
the tag list item.


Claude-Session: https://claude.ai/code/session_01438CoGpchErzXVWnCgQi6A

Co-authored-by: Claude <noreply@anthropic.com>
Render one horizontal carousel per highlighted tag above the category
groups, only while the search box is empty and no category is selected.
SELECT_ITEM now carries an optional variantId so tapping a variant card
opens the item sheet with that variant's option values preselected.


Claude-Session: https://claude.ai/code/session_01GWVBoUtiTrYsEwcM4T6hgo

Co-authored-by: Claude <noreply@anthropic.com>
Render one chip per highlighted tag with entries between Semua and the
categories, in the tag's colour. Selecting a tag shows that tag's entries
as a vertical list of full-width cards, newest-tagged first, replacing the
category groups. MenuListUsecase gains selectedTagId, mutually exclusive
with selectedCategoryId.


Claude-Session: https://claude.ai/code/session_01TLnh5DyR2sQw11gzZEMbFW

Co-authored-by: Claude <noreply@anthropic.com>
- docs-site: Tags page with screenshot, wired into the Catalog sidebar
- pos-web-e2e: create a tag, assign it to a product, see the badge in the
  transaction item picker, delete it
- order-web-e2e: highlight section above categories, variant card
  pre-selects its option, tag chip filters the menu, sections hide on search
- fix(ui): add missing tags to createMenuVariants mock so order-web builds


Claude-Session: https://claude.ai/code/session_01GCdTMSXXkEz4QkhzwCkQJ6

Co-authored-by: Claude <noreply@anthropic.com>
@mnindrazaka mnindrazaka self-assigned this Oct 2, 2026
@vercel

vercel Bot commented Oct 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

3 Skipped Deployments
Project Deployment Actions Updated
gatherloop-order Ignored Ignored Oct 2, 2026 4:18am UTC
gatherloop-pos Ignored Ignored Oct 2, 2026 4:18am UTC
gatherloop-ui-storybook Ignored Ignored Oct 2, 2026 4:18am UTC

@mnindrazaka
mnindrazaka merged commit 2f59254 into main Oct 2, 2026
7 checks passed
@mnindrazaka
mnindrazaka deleted the feat/tags branch October 2, 2026 05:38
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.

1 participant