Skip to content

feat: Collections, multi-set AI context (v2.7.4)#13

Merged
cgbarlow merged 1 commit into
mainfrom
feature/collections
Mar 25, 2026
Merged

feat: Collections, multi-set AI context (v2.7.4)#13
cgbarlow merged 1 commit into
mainfrom
feature/collections

Conversation

@cgbarlow
Copy link
Copy Markdown
Owner

Summary

  • Collections — higher-level grouping for Sets with full CRUD, thumbnails, dashboard stats, collection-scoped filtering, and header breadcrumb (ADR-102)
  • Multi-set AI context — Ask AI supports selecting 1+ Sets as context via dropdown selector with new POST /api/ai/ask endpoint
  • Collection pill badges on Sets page, collection filter on Diagrams/Elements pages
  • 37 files changed, 2627 insertions, 16 new tests (792 total passing)

Test plan

  • Backend: python -m pytest -v — 792 passed, 2 skipped
  • Frontend: Navigate to /collections, create/edit/delete collections
  • Dashboard: 4-column stats row with Collections card
  • Header: Iris / Collection / Set breadcrumb when both active
  • Ask AI: Multi-set selector with collection filter
  • Diagrams/Elements: Collection filter dropdown

🤖 Generated with Claude Code

…ing (v2.7.4)

- Collections as optional superset of Sets with full CRUD, thumbnails,
  and DB-backed persistence (ADR-102, SPEC-102-A)
- 4-column dashboard stats: Collections | Sets | Diagrams | Elements
- Header breadcrumb: Iris / Collection / Set
- Collection pill badges on Sets page (list + gallery views)
- Collection filter dropdown on Diagrams and Elements pages
- Multi-set AI context: Ask AI supports 1+ Sets via dropdown selector
  with new POST /api/ai/ask endpoint and build_multi_set_context()
- Collection assignment on Set detail page
- Active collection store (session-persisted, inferred from active set)
- Collections nav item with Phosphor folder icon
- 16 new backend tests (13 collection CRUD + 3 multi-set AI context)
- 792 total backend tests passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@cgbarlow cgbarlow merged commit 231aa07 into main Mar 25, 2026
cgbarlow pushed a commit that referenced this pull request Apr 20, 2026
Three Playwright probes under frontend/tests/probes/ that were used to
characterise the ADR-118 fix and empirically pick target-distance constants.
They are investigation tooling, not part of the regression suite:

- spread-slider-probe.ts — fresh-reload baseline at each spread value.
- spread-slider-live.ts — loads once then mutates charge+link forces in-place
  via window.__irisGraph.d3Force.
- spread-slider-ui.ts — loads once then drives the real <input type="range">
  spread slider via DOM events, matching the user-reported transition.

Shared auth+settings init-script builders and the in-browser metric computer
live in probe-utils.ts; all three scripts reuse getAuthToken and
ADMIN_PASSWORD from tests/e2e/fixtures.ts (DRY per protocol #13). Probes
require VITE_IRIS_DEBUG=1 at build time to see window.__irisGraph.

Adds npm scripts test:probe, test:probe:live, test:probe:ui, and the tsx
devDep (tsx@^4.21.0, latest stable at install time). Probe output lands in
tests/probes/output/ which is gitignored.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
cgbarlow added a commit that referenced this pull request May 8, 2026
…uard, round-trip evidence (#69)

Builds on the Wave A drag-connect fix with the related ledger items and
the unit-level round-trip integration test.

Wave B — BPMN-04/08:
- Extracted appendBpmnNodeWithEdge as the shared helper (DRY per
  protocol #13). ContextPad append actions and CommandPalette
  append-mode pick now both POST /api/relationships alongside the
  canvas edge — matching handleBpmnConnect's drag-handle path.
  Pre-fix /elements/<id>'s Relationships panel was empty for
  ContextPad-/CommandPalette-appended nodes, identical to the
  pre-v5.4.1 BPMN-02 bug shape.
- BPMN-08 entityId-on-failure guard locked in via
  bpmnEntityIdGuard.test.ts. The behaviour was already correct
  (every node-creation path bails on null Element via
  `if (!element) return`); the new test fails loud if any path
  drops the guard before mutating canvasNodes.

Phase 3 — round-trip evidence:
- bpmnDragConnectRoundTrip.test.ts asserts the full chain:
  xyflow auto-add (typeless edge) → handleSvelteFlowConnect
  patches type → validateBpmn clears warning → handleBpmnConnect
  POSTs /api/relationships → edge gets relationshipId. Includes
  one test that explicitly demonstrates the BPMN-03 bug shape
  (validator still warns when the edge is type-less) so any
  regression of the patch step trips the assertion immediately.

Phase 4 — release prep:
- frontend/package.json: 5.6.1 → 5.6.2.
- CHANGELOG.md: [Unreleased] → [5.6.2] - 2026-05-08, with full
  Wave A + Wave B notes and explicit acknowledgement that the
  earlier "claimed-fixed" entries didn't stick because the tests
  were static-parser only.

Verification:
- Full vitest suite: 921/924 pass (3 unchanged pre-existing baseline
  failures; verified failing on main without these changes).
- BPMN unit suite: 110/110 pass across 21 files.
- svelte-check: 164 errors = unchanged baseline (0 new errors).

Closes BPMN-01/02/03/04/08/09 from the issue #69 consolidated bug
ledger. Medium-priority items (BPMN-05/07/11/12/13/14/15/16/17)
verified green via the existing test suite — none have the
"static-parser-passes-but-runtime-broken" failure mode that hit
BPMN-03; visible UI bugs that would have been re-reported if
regressed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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