Skip to content

feat: personal and private packing categories#961

Open
robbedekien wants to merge 2 commits intomauriceboe:devfrom
robbedekien:feat/personal-packing-categories
Open

feat: personal and private packing categories#961
robbedekien wants to merge 2 commits intomauriceboe:devfrom
robbedekien:feat/personal-packing-categories

Conversation

@robbedekien
Copy link
Copy Markdown

@robbedekien robbedekien commented May 5, 2026

Description

Adds shared/personal/private packing categories so trip members can keep
items personal to themselves (own check state, visible to others) or
fully private (owner-only). Templates round-trip shared and personal
categories; private items stay with their owner.

Server:

  • Migration 123 promotes packing_items.category text → typed
    packing_categories table with type ∈ {shared, personal, private},
    adds packing_item_checks for per-user check state on non-shared
    categories, and re-keys packing_category_assignees from category
    name to category_id.
  • Migration 124 adds type to packing_template_categories so
    applyTemplate can recreate personal categories as personal owned by
    the applying user.
  • Routes: 4 new endpoints under /packing/categories. Per-user check
    toggles broadcast actor-only (Option B) so personal/private state
    doesn't leak to other clients.
  • Trip clone copies shared categories only; share links filter to shared.
  • MCP gains list/create/update/delete_packing_category tools.

Client:

  • Type pill in each category header, "Make shared/personal/private"
    menu items, type picker on Add Category, hint line under Save as
    Template explaining private exclusion.
  • Tooltips with sharper copy ("Visible to everyone, but each person
    tracks their own checks." etc) localised in 15 languages.
  • Robust state sync: panel re-fetches /categories when items
    reference unknown ids (covers post-applyTemplate flow); category
    delete mirrors the server-side cascade in the store.

Documentation:

  • Updated wiki/Packing-Lists.md with the new category types and
    template behavior.
  • Updated wiki/MCP-Addon-Tools.md with the 4 new tools.

Tests:

  • Server: 12 new packing tests (PACK-016..021, 017d, 017e) covering
    category CRUD, type validation, duplicate-409, private-category
    isolation, per-user check state, shared→personal conversion, and
    the save→apply round-trip preserving personal type for the applying
    user. All 36 integration + 30 unit packing tests pass.
  • Client: factory now derives a deterministic category_id per
    category name; existing 67 PackingListPanel tests pass plus updated
    assertions for the new POST/PATCH/DELETE category endpoints.

Related Issue or Discussion

https://discord.com/channels/1488298068427411591/1491808813240684615

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update

Checklist

  • I have read the Contributing Guidelines
  • My branch is up to date with dev
  • This PR targets the dev branch, not main (wiki-only PRs are exempt)
  • I have tested my changes locally
  • I have added/updated tests that prove my fix is effective or that my feature works
  • I have updated documentation if needed

Demo

Below are 2 screenshots of different users viewing the same trip. Showcasing separate checked state and private categories
Arc 2026-05-05 13 35 15
Arc 2026-05-05 13 35 03

@robbedekien robbedekien force-pushed the feat/personal-packing-categories branch from 422507b to ad98f3e Compare May 5, 2026 12:12
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