Skip to content

Add project tags with sidebar filtering and editing#4

Closed
kevinher7 wants to merge 14 commits into
mainfrom
feature/allow_taging_projects
Closed

Add project tags with sidebar filtering and editing#4
kevinher7 wants to merge 14 commits into
mainfrom
feature/allow_taging_projects

Conversation

@kevinher7
Copy link
Copy Markdown
Owner

Summary

  • Added a tag catalog to the orchestration snapshot and persistence layers, including migrations and projector support for create/rename/delete events.
  • Added project tag controls in the chat header plus a tag editor flow for creating and editing project tags.
  • Added sidebar tag filtering and updated sidebar/project grouping logic to resolve tag edits against live data.
  • Improved PR generation to use the repository’s pull request template when present.
  • Tightened editor launch behavior by pre-resolving available commands at startup and removing the redundant pre-flight availability check.

Testing

  • bun fmt
  • bun lint
  • bun typecheck
  • bun run test

kevinher7 and others added 14 commits April 19, 2026 14:43
Pass the git user's first name through to branch name generation so
branches follow the format <type>/<username>/<slug>, and update the
prompt rules to enforce a conventional type prefix (feature, fix, chore,
docs, refactor, test).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Read .github/pull_request_template.md from the repository root and pass
it through the text generation pipeline so all providers (Claude, Codex,
Cursor, OpenCode) instruct the model to follow the project's PR template
structure when generating PR body content.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…redundant availability checks

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds a custom Migrator runner that uses set-difference semantics over
effect_sql_migrations instead of the stock max-id strategy, plus a
banded-id convention (upstream 1..999, downstream-only >= 5000) so a
downstream-only migration cannot silently shadow a future upstream
migration during merges.

Also lands the first downstream migration, 5001_ProjectionTags, which
creates the projection_tags table and adds a tags_json column to
projection_projects (DEFAULT '[]').

The MigrationsRunner integration test resets all user tables between
sibling it.effect blocks because @effect/vitest's `it.layer` builds the
layer with `Effect.cached`, sharing the in-memory SQLite across the
suite.
* Add tag catalog support to orchestration

- Project tag catalog into snapshots and projections
- Add tag invariants, persistence, and schema plumbing
- Update tests and read models for tag-aware data

* Replace sidebar tag chips with dropdown menus

- Swap inline tag chips for a compact filter dropdown
- Add project tag assignment and tag management actions
- Cover new tag toggling logic with tests

* Refactor sidebar tag filter into collapsible pills

- Replace the tag filter dropdown with inline selectable pills
- Add pill context menus for rename and delete actions
- Keep clear/new tag actions in the sidebar header

* Refactor sidebar section headers and tag filter layout

- Reuse a shared header component for sidebar sections
- Simplify tag filter pills and align tag/project controls

* chore: delete plan.md

* Refine tag filter pill styling

- Increase tag pill text size for better readability
- Add foreground tint to the default unpressed state

* Extract sidebar tag-filter UI into focused files

- Move TagFilterPills (renamed SidebarTagFilter), the project-tag editor
  menu (renamed ProjectTagsEditor), and the shared SidebarSectionHeader
  out of Sidebar.tsx into apps/web/src/components/sidebar/
- Drop now-unused imports from Sidebar.tsx (XIcon, Toggle, Collapsible*,
  MenuItem, MenuCheckboxItem, cn)
- Sidebar.tsx shrinks by ~330 lines; the new components are short,
  single-purpose, and easy to review on their own

No behavior change. Dialog state, store selectors, and command-dispatch
handlers stay in Sidebar.tsx; props on the call sites are unchanged.

* Flatten sidebar/ subdirectory into components/

Co-locate the sidebar-specific components with their siblings (PlanSidebar,
AppSidebarLayout, etc.) so the components/ folder follows the same flat
layout used by the rest of the app.

- git mv four files out of components/sidebar/ into components/
- Re-anchor relative imports (../../foo -> ../foo, ../ui/x -> ./ui/x)
- Update Sidebar.tsx imports to drop the ./sidebar/ path prefix
- Remove the now-empty sidebar/ subdirectory

* Reformat tag filter components

- Rewrap menu and collapsible imports
- Tighten component and popup formatting
- No behavior change

* Use Object.assign for sortable sidebar projects

- Preserve project shape while overriding the sortable id
- Keep project tag filtering and thread sorting logic unchanged
The symlink target was AGENTS.md\n (10 bytes) instead of AGENTS.md
(9 bytes), making it a broken symbolic link. Mirrors upstream
pingdotgg#2052, which was inadvertently reverted by pingdotgg#2080.
- Show project tags in the chat header
- Wire tag toggling to project meta updates
- Share tag-create dialog state between sidebar and chat
- Rehydrate the tag editor target from current sidebar snapshots
- Close the editor if the project no longer exists
- Keep tag updates using the latest member state
- Pin devcontainer feature versions
- Keep local dev environment reproducible
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels May 5, 2026
@kevinher7
Copy link
Copy Markdown
Owner Author

already merged #3 on personal branch

@kevinher7 kevinher7 closed this May 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant