chore(deps): bump lucide-react from 0.475.0 to 0.577.0#5
Closed
dependabot[bot] wants to merge 1 commit into
Closed
chore(deps): bump lucide-react from 0.475.0 to 0.577.0#5dependabot[bot] wants to merge 1 commit into
dependabot[bot] wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
a93d9e9 to
adee592
Compare
adee592 to
5ff2b9f
Compare
jukka-matti
added a commit
that referenced
this pull request
Mar 19, 2026
Update adr-021-security-evaluation.md: - Key Vault and managed identity gaps marked RESOLVED (e56298d) - Risk matrix #5: LOW/AMBER -> GREEN/GREEN Update traceability.md: - Module map: ai/promptTemplates -> ai/prompts/* Update ai-data-flow.md: - Mermaid diagram: promptTemplates -> prompts/* modules Update adr-025-internationalization.md: - File reference -> prompts/ with note about split modules Update ai-integration-evaluation.md: - Added [NOTE] explaining post-evaluation refactor - P0-1 and P1-1 file references updated to new module paths Update architecture.md: - Added ai/prompts/ and ai/ to core module table - Added channelType to Teams context detection table
5ff2b9f to
b2e7c99
Compare
Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 0.475.0 to 0.577.0. - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/0.577.0/packages/lucide-react) --- updated-dependencies: - dependency-name: lucide-react dependency-version: 0.577.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
b2e7c99 to
924c224
Compare
Owner
|
Applied this update directly on main in a consolidated dependency bump commit (all 13 Dependabot updates at once). Closing this PR. |
Contributor
Author
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
jukka-matti
added a commit
that referenced
this pull request
Apr 18, 2026
…aching panel
First concrete deliverable from the FRAME umbrella (ADR-070). Fixes the
silent-empty-chart bug on every seeded sample, replaces Minitab-mimicking
toggle labels with story-matching ones, and adds a static coaching panel
that surfaces the existing CoScout capability-mode knowledge in the UI
without requiring an AI call.
Changes:
- Seed subgroupConfig: { method: 'fixed-size', size: 5 } on 15 seeded samples
(coffee, injection, cookie-weight, investigation-showcase, mango-export,
journey + journeyBefore + journeyAfter, textiles, avocado, sock-mystery,
hospital-ward, pizza, delivery, packaging, weld-defects, call-wait).
Previously only syringe-barrel-weight seeded this; the capability chart
now renders non-empty on load for any capability-eligible sample.
- Rename CapabilityMetricToggle labels from "Values" / "Capability" to
"Measurements" / "Cpk stability" to match the ADR-038 story (Cpk plotted
as a control chart across subgroups). Update the disabled-state tooltip
to match.
- New CapabilityCoachingPanel component (packages/ui/src/components/
CapabilityCoachingPanel/) — static educational content explaining the
two capability numbers, centering-vs-spread diagnostics, and why
rational subgroups matter. Content distilled from
packages/core/src/ai/prompts/coScout/modes/capability.ts:54-81.
Pure presentational, no AI call required; safe in all tiers including
PWA free. Dashboard integration is deferred to PR #5 (capability-leg
wiring + end-to-end verification) per the FRAME plan.
Tests: 1164 ui tests pass (adds 6 for CapabilityCoachingPanel).
pr-ready-check.sh green (tests + lint + docs:check).
Stacked on feat/syringe-barrel-demo (PR #65) since that PR added the
subgroupConfig?/displayOptions?/separateParetoData? fields to SampleConfig.
When PR #65 merges to main, this branch rebases cleanly.
Plan: /Users/.../plans/i-was-interviewing-greg-dynamic-umbrella.md
Spec: docs/superpowers/specs/2026-04-18-frame-process-map-design.md
ADR: docs/07-decisions/adr-070-frame-workspace.md
Co-Authored-By: ruflo <ruv@ruv.net>
4 tasks
jukka-matti
added a commit
that referenced
this pull request
Apr 18, 2026
Third deliverable from the FRAME umbrella (ADR-070). Adds the interactive component the FRAME workspace will render, consuming the core primitives from PR #70. No app integration in this PR — FrameView + nav tab insertion land in PR #5 alongside capability-leg wiring and end-to-end verification. Changes: - packages/ui/src/components/ProcessMap/ProcessMapBase.tsx — the interactive component. Renders three regions on one canvas: • left→right spine of process-step cards (SIPOC / temporal) • tributaries (little xs) as checkbox rows on each step, with the checkbox doubling as the rational-subgroup-axis toggle • an ocean card at the right carrying the CTS (customer-felt outcome) dropdown + target / LSL / USL inputs Plus a hunches panel (pin to step or tributary, promoted to SuspectedCause hubs later in the investigation workspace) and a gap strip at the bottom rendering the global gaps from detectGaps(). Step-scoped gaps render inline next to the affected step card. V1 interactions are deliberately structured (buttons, dropdowns, inline inputs) — not a freeform drag-and-drop canvas. That comes in V2+ per ADR-070. Props-based. Parent owns state; the component is a thin controller over the existing ProcessMap type. data-testid on every interactive surface for RTL + future E2E selectors. - packages/ui/src/components/ProcessMap/__tests__/ProcessMapBase.test.tsx — 21 tests covering step CRUD (add / rename / remove with order re-packing and orphan cleanup of tributaries + hunches), tributary CRUD + subgroup- axis toggling (both directions), CTS + specs wiring, hunch add/remove with pinning, gap rendering (global gap strip + step-scoped inline), and disabled mode hiding destructive controls. - packages/ui/src/index.ts — export ProcessMapBase + type. Tests: 1179 ui tests pass (+21 from this PR). Lint clean (0 errors; 15 pre-existing warnings unchanged). packages/hooks/src/__tests__/ index.test.ts flaked under turbo's concurrent run (known issue per MEMORY.md — passes when run alone). Stacked on feat/frame-data-model (PR #70) — imports ProcessMap, Gap, ProcessMapTributary, ProcessMapHunch from @variscout/core/frame. Plan: .claude/plans/i-was-interviewing-greg-dynamic-umbrella.md Spec: docs/superpowers/specs/2026-04-18-frame-process-map-design.md ADR: docs/07-decisions/adr-070-frame-workspace.md Co-Authored-By: ruflo <ruv@ruv.net>
3 tasks
jukka-matti
added a commit
that referenced
this pull request
Apr 18, 2026
Third deliverable from the FRAME umbrella (ADR-070). Adds the interactive component the FRAME workspace will render, consuming the core primitives from PR #70. No app integration in this PR — FrameView + nav tab insertion land in PR #5 alongside capability-leg wiring and end-to-end verification. Changes: - packages/ui/src/components/ProcessMap/ProcessMapBase.tsx — the interactive component. Renders three regions on one canvas: • left→right spine of process-step cards (SIPOC / temporal) • tributaries (little xs) as checkbox rows on each step, with the checkbox doubling as the rational-subgroup-axis toggle • an ocean card at the right carrying the CTS (customer-felt outcome) dropdown + target / LSL / USL inputs Plus a hunches panel (pin to step or tributary, promoted to SuspectedCause hubs later in the investigation workspace) and a gap strip at the bottom rendering the global gaps from detectGaps(). Step-scoped gaps render inline next to the affected step card. V1 interactions are deliberately structured (buttons, dropdowns, inline inputs) — not a freeform drag-and-drop canvas. That comes in V2+ per ADR-070. Props-based. Parent owns state; the component is a thin controller over the existing ProcessMap type. data-testid on every interactive surface for RTL + future E2E selectors. - packages/ui/src/components/ProcessMap/__tests__/ProcessMapBase.test.tsx — 21 tests covering step CRUD (add / rename / remove with order re-packing and orphan cleanup of tributaries + hunches), tributary CRUD + subgroup- axis toggling (both directions), CTS + specs wiring, hunch add/remove with pinning, gap rendering (global gap strip + step-scoped inline), and disabled mode hiding destructive controls. - packages/ui/src/index.ts — export ProcessMapBase + type. Tests: 1179 ui tests pass (+21 from this PR). Lint clean (0 errors; 15 pre-existing warnings unchanged). packages/hooks/src/__tests__/ index.test.ts flaked under turbo's concurrent run (known issue per MEMORY.md — passes when run alone). Stacked on feat/frame-data-model (PR #70) — imports ProcessMap, Gap, ProcessMapTributary, ProcessMapHunch from @variscout/core/frame. Plan: .claude/plans/i-was-interviewing-greg-dynamic-umbrella.md Spec: docs/superpowers/specs/2026-04-18-frame-process-map-design.md ADR: docs/07-decisions/adr-070-frame-workspace.md Co-Authored-By: ruflo <ruv@ruv.net>
jukka-matti
added a commit
that referenced
this pull request
Apr 18, 2026
…nt (#71) Third deliverable from the FRAME umbrella (ADR-070). Adds the interactive component the FRAME workspace will render, consuming the core primitives from PR #70. No app integration in this PR — FrameView + nav tab insertion land in PR #5 alongside capability-leg wiring and end-to-end verification. Changes: - packages/ui/src/components/ProcessMap/ProcessMapBase.tsx — the interactive component. Renders three regions on one canvas: • left→right spine of process-step cards (SIPOC / temporal) • tributaries (little xs) as checkbox rows on each step, with the checkbox doubling as the rational-subgroup-axis toggle • an ocean card at the right carrying the CTS (customer-felt outcome) dropdown + target / LSL / USL inputs Plus a hunches panel (pin to step or tributary, promoted to SuspectedCause hubs later in the investigation workspace) and a gap strip at the bottom rendering the global gaps from detectGaps(). Step-scoped gaps render inline next to the affected step card. V1 interactions are deliberately structured (buttons, dropdowns, inline inputs) — not a freeform drag-and-drop canvas. That comes in V2+ per ADR-070. Props-based. Parent owns state; the component is a thin controller over the existing ProcessMap type. data-testid on every interactive surface for RTL + future E2E selectors. - packages/ui/src/components/ProcessMap/__tests__/ProcessMapBase.test.tsx — 21 tests covering step CRUD (add / rename / remove with order re-packing and orphan cleanup of tributaries + hunches), tributary CRUD + subgroup- axis toggling (both directions), CTS + specs wiring, hunch add/remove with pinning, gap rendering (global gap strip + step-scoped inline), and disabled mode hiding destructive controls. - packages/ui/src/index.ts — export ProcessMapBase + type. Tests: 1179 ui tests pass (+21 from this PR). Lint clean (0 errors; 15 pre-existing warnings unchanged). packages/hooks/src/__tests__/ index.test.ts flaked under turbo's concurrent run (known issue per MEMORY.md — passes when run alone). Stacked on feat/frame-data-model (PR #70) — imports ProcessMap, Gap, ProcessMapTributary, ProcessMapHunch from @variscout/core/frame. Plan: .claude/plans/i-was-interviewing-greg-dynamic-umbrella.md Spec: docs/superpowers/specs/2026-04-18-frame-process-map-design.md ADR: docs/07-decisions/adr-070-frame-workspace.md Co-authored-by: ruflo <ruv@ruv.net>
jukka-matti
added a commit
that referenced
this pull request
Apr 18, 2026
…aching panel
First concrete deliverable from the FRAME umbrella (ADR-070). Fixes the
silent-empty-chart bug on every seeded sample, replaces Minitab-mimicking
toggle labels with story-matching ones, and adds a static coaching panel
that surfaces the existing CoScout capability-mode knowledge in the UI
without requiring an AI call.
Changes:
- Seed subgroupConfig: { method: 'fixed-size', size: 5 } on 15 seeded samples
(coffee, injection, cookie-weight, investigation-showcase, mango-export,
journey + journeyBefore + journeyAfter, textiles, avocado, sock-mystery,
hospital-ward, pizza, delivery, packaging, weld-defects, call-wait).
Previously only syringe-barrel-weight seeded this; the capability chart
now renders non-empty on load for any capability-eligible sample.
- Rename CapabilityMetricToggle labels from "Values" / "Capability" to
"Measurements" / "Cpk stability" to match the ADR-038 story (Cpk plotted
as a control chart across subgroups). Update the disabled-state tooltip
to match.
- New CapabilityCoachingPanel component (packages/ui/src/components/
CapabilityCoachingPanel/) — static educational content explaining the
two capability numbers, centering-vs-spread diagnostics, and why
rational subgroups matter. Content distilled from
packages/core/src/ai/prompts/coScout/modes/capability.ts:54-81.
Pure presentational, no AI call required; safe in all tiers including
PWA free. Dashboard integration is deferred to PR #5 (capability-leg
wiring + end-to-end verification) per the FRAME plan.
Tests: 1164 ui tests pass (adds 6 for CapabilityCoachingPanel).
pr-ready-check.sh green (tests + lint + docs:check).
Stacked on feat/syringe-barrel-demo (PR #65) since that PR added the
subgroupConfig?/displayOptions?/separateParetoData? fields to SampleConfig.
When PR #65 merges to main, this branch rebases cleanly.
Plan: /Users/.../plans/i-was-interviewing-greg-dynamic-umbrella.md
Spec: docs/superpowers/specs/2026-04-18-frame-process-map-design.md
ADR: docs/07-decisions/adr-070-frame-workspace.md
Co-Authored-By: ruflo <ruv@ruv.net>
jukka-matti
added a commit
that referenced
this pull request
Apr 18, 2026
…aching panel (#69) First concrete deliverable from the FRAME umbrella (ADR-070). Fixes the silent-empty-chart bug on every seeded sample, replaces Minitab-mimicking toggle labels with story-matching ones, and adds a static coaching panel that surfaces the existing CoScout capability-mode knowledge in the UI without requiring an AI call. Changes: - Seed subgroupConfig: { method: 'fixed-size', size: 5 } on 15 seeded samples (coffee, injection, cookie-weight, investigation-showcase, mango-export, journey + journeyBefore + journeyAfter, textiles, avocado, sock-mystery, hospital-ward, pizza, delivery, packaging, weld-defects, call-wait). Previously only syringe-barrel-weight seeded this; the capability chart now renders non-empty on load for any capability-eligible sample. - Rename CapabilityMetricToggle labels from "Values" / "Capability" to "Measurements" / "Cpk stability" to match the ADR-038 story (Cpk plotted as a control chart across subgroups). Update the disabled-state tooltip to match. - New CapabilityCoachingPanel component (packages/ui/src/components/ CapabilityCoachingPanel/) — static educational content explaining the two capability numbers, centering-vs-spread diagnostics, and why rational subgroups matter. Content distilled from packages/core/src/ai/prompts/coScout/modes/capability.ts:54-81. Pure presentational, no AI call required; safe in all tiers including PWA free. Dashboard integration is deferred to PR #5 (capability-leg wiring + end-to-end verification) per the FRAME plan. Tests: 1164 ui tests pass (adds 6 for CapabilityCoachingPanel). pr-ready-check.sh green (tests + lint + docs:check). Stacked on feat/syringe-barrel-demo (PR #65) since that PR added the subgroupConfig?/displayOptions?/separateParetoData? fields to SampleConfig. When PR #65 merges to main, this branch rebases cleanly. Plan: /Users/.../plans/i-was-interviewing-greg-dynamic-umbrella.md Spec: docs/superpowers/specs/2026-04-18-frame-process-map-design.md ADR: docs/07-decisions/adr-070-frame-workspace.md Co-authored-by: ruflo <ruv@ruv.net>
jukka-matti
added a commit
that referenced
this pull request
Apr 27, 2026
F-6 closes the Phase 6 acceptance gate. All 8 acceptance criteria covered: - AC #1 visually confirmed in chrome — flipping investigation status to `resolved` renders the "Set up sustainment cadence" prompt in the editor (Coffee Moisture sample, vite at :5173). - AC #1-#5 functionally covered by 78 component/page/service tests (SustainmentEditors, ProcessHubSustainmentRegion, ProcessHubFormat.sustainment, Dashboard.processHub, Editor.sustainment, blobClient). - AC #5 also covered by 39 core sustainment tests (selectSustainmentBuckets + path constructors). - AC #6 vacuously satisfied — no sustainment fields wired into AI context builders yet (consistent with spec open-question #4 deferring CoScout proactivity). No PII surface. - AC #7 covered by 14 schema.v6 + sustainmentStorage migration tests. - AC #8 confirmed: process-hubs/{hubId}/sustainment/... path constructors at packages/core/src/sustainment.ts:307-343, consumed by apps/azure/src/services/blobClient.ts:444-470. Total deterministic verification: 153 tests across @variscout/core, @variscout/azure-app components/pages/services. All green. Index reconciliation in docs/superpowers/specs/index.md is intentionally deferred — the file already carries unstaged operating-model workstream edits that the user wants kept on a separate branch. Deferred to a follow-up interactive walk (file as F-8 if regressions surface): full Flow A configuration, Flow B-D execution (verdict logging, drifting+escalate, handoff record), bucket-split visual rendering colors, mobile/dark/fi locale spot checks, duplicate-render quirk visual confirmation. Functional contract for all of these is covered by the 78 Phase 6 component/page tests. Co-Authored-By: ruflo <ruv@ruv.net>
jukka-matti
added a commit
that referenced
this pull request
Apr 27, 2026
Sequenced TDD plan for Phase 2 V2 closure: - PR #4: response-path routing (ResponsePathAction in core, actionToHref in azure, panel refactor with required actions contract, Dashboard wiring + telemetry) - PR #5: evidence chip from findingCounts (linkFindingsToStateItems pure aggregator, chip render in panel, Azure consumer wires resolver + chip click) Documents two pragmatic divergences from spec: 1. linkFindingsToStateItems takes findingsByInvestigationId Map (not flat Finding[]) since Finding has no direct investigationId field 2. EvidenceSheet full-list rendering deferred (Dashboard doesn't load findings hub-wide today); chip click navigates instead Spec amended with implementation-plan back-link. Co-Authored-By: ruflo <ruv@ruv.net>
6 tasks
jukka-matti
added a commit
that referenced
this pull request
Apr 27, 2026
* feat(core): add ResponsePathAction discriminated union + deriveResponsePathAction Pure mapping from a state item's response-path to a domain action. Exhaustive on ProcessStateResponsePath. Returns 'unsupported' for paths with no current Azure surface (monitor → informational, MSA → planned). Phase 2 V2 PR #4, Task 5. Co-Authored-By: ruflo <ruv@ruv.net> * test(core): add compile-time exhaustiveness guard for deriveResponsePathAction Adds a @ts-expect-error test that fails to compile if a future ProcessStateResponsePath variant is added without a matching case in deriveResponsePathAction. Phase 2 V2 PR #4, code-review followup. Co-Authored-By: ruflo <ruv@ruv.net> * feat(azure): add actionToHref URL adapter for ResponsePathAction Thin Azure-side adapter mapping ResponsePathAction discriminated union to URL strings. Single URL source — adding a new ResponsePathAction variant in core triggers a TS build error here via the exhaustive switch. Phase 2 V2 PR #4, Task 7. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(azure): move processHubRoutes from routing/ to lib/ Honors apps/azure/CLAUDE.md FSD rule: 'Don't introduce new top-level directories. Feature-Sliced Design: features/, hooks/, components/, services/, auth/, db/, lib/.' Phase 2 V2 PR #4, code-review followup. Co-Authored-By: ruflo <ruv@ruv.net> * feat(azure): add safeTrackEvent wrapper for no-PII telemetry events Try/catch'd facade over App Insights trackEvent. Silently swallows failures so telemetry can never block UX. Caller is responsible for ADR-059 no-PII compliance in the payload (enum values, opaque IDs, integers only). Phase 2 V2 PR #4, Task 8. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(ui): require actions + evidence contracts on ProcessHubCurrentStatePanel Refactors panel to take 3 required props (state, actions, evidence) instead of 1 (state). State-item cards become clickable affordances when the action is supported; 'monitor' and 'measurement-system-work' paths render as 'Informational' / 'Planned' pills with no click affordance. evidence contract is unused in this PR (passes through stubbed); PR #5 wires the chip count + click. Per feedback_no_backcompat_clean_architecture memory: required props by default. The Azure consumer (ProcessHubReviewPanel) is refactored in the next subagent task to pass these contracts. Adds keyboard activation (Enter/Space), aria-label, and tooltip text on planned/informational cards. 8 existing tests rewired + 6 new action-behavior tests = 14 tests. Phase 2 V2 PR #4, Tasks 9-10. Co-Authored-By: ruflo <ruv@ruv.net> * test(ui): add Space-key activation test + a11y TODO on title tooltip Code-review followups for ProcessHubCurrentStatePanel: - Add a Space-key keyboard activation test to mirror the Enter-key test (ARIA button convention). - Document the title-attribute tooltip's accessibility limitation (touch unreachable, screen-reader unreliable per WCAG 1.3.3 / 4.1.2) as an inline TODO. Pill text already conveys the state visually; upgrade to a Tooltip primitive when the design system grows one. Phase 2 V2 PR #4, code-review followup. Co-Authored-By: ruflo <ruv@ruv.net> * feat(azure): wire ProcessHubReviewPanel + Dashboard to ProcessHubCurrentStatePanel actions ProcessHubReviewPanel now passes the required actions + evidence contracts to the panel. Adds defaultInvestigationId memo (most-recent investigation heuristic) and actionFor closure that calls deriveResponsePathAction. Dashboard wires handleResponsePathAction with safeTrackEvent telemetry (hubId/responsePath/lens/severity — no PII per ADR-059) and routes via the existing onOpenProject callback. evidence contract is stubbed in this PR (passes empty findingsFor + no-op onChipClick); PR #5 wires the chip count + click. Phase 2 V2 PR #4, Tasks 11-12. Co-Authored-By: ruflo <ruv@ruv.net> * fix(azure): pass real hubId to telemetry instead of investigation ID ADR-059 forbids logging customer-meaningful identifiers. The previous handler labeled an investigation ID as 'hubId' in the telemetry payload, which is a real leak. Now ProcessHubReviewPanel passes rollup.hub.id (an admin-assigned slug) explicitly to the Dashboard handler. Also: - Add safeTrackEvent to handleResponsePathAction useCallback deps - Document the intentional empty-string defaultInvestigationId fallback Phase 2 V2 PR #4, code-review followup. Co-Authored-By: ruflo <ruv@ruv.net> * chore(core): commit assertNever helper that powers exhaustive switches The assertNever function was added to types.ts and exported from index.ts as part of the ResponsePathAction work, but the types.ts change was inadvertently left uncommitted while the export and its consumers landed across several commits. Local tests passed because the working directory had it; CI would have failed with an unresolved export. Phase 2 V2 PR #4, missing-commit recovery. Co-Authored-By: ruflo <ruv@ruv.net> --------- Co-authored-by: ruflo <ruv@ruv.net>
6 tasks
jukka-matti
added a commit
that referenced
this pull request
Apr 27, 2026
* feat(core): add linkFindingsToStateItems pure aggregator Pure 2-input join: state items × findings (pre-grouped by investigation ID). Caller provides a resolver implementing the per-item-type linkage rules. Findings filtered to RELEVANT_FINDING_STATUSES (analyzed, improving, resolved). Phase 2 V2 PR #5, Tasks 1-3. Co-Authored-By: ruflo <ruv@ruv.net> * test(core): replace Math.random with sequential counter in processEvidence tests Per packages/core/CLAUDE.md hard rule: never Math.random in tests. The finding-ID factory now uses a module-scoped sequential counter for deterministic test fixtures. Phase 2 V2 PR #5, code-review followup. Co-Authored-By: ruflo <ruv@ruv.net> * feat(ui): add evidence chip to ProcessHubCurrentStatePanel state-item cards Each state-item card now renders a small evidence chip in the lower-right showing the count of linked findings (analyzed / improving / resolved). Chip click fires evidence.onChipClick with the item + resolved findings; event.stopPropagation prevents the card click from also firing. Chip is independent of action support — Planned/Informational cards still show evidence counts when present. Chip is omitted when findings is empty. The evidence prop, previously stubbed in PR #4, is now wired through. Azure consumer still passes a stub findingsFor (() => []), so the chip won't render in the running app until the next subagent task wires findingsFor to ProcessHubInvestigationMetadata.findingCounts. 5 new chip tests added (count display, singular/plural, empty omit, click fires + stops propagation, renders on unsupported cards too). Phase 2 V2 PR #5, Tasks 4-5. Co-Authored-By: ruflo <ruv@ruv.net> * feat(azure): wire evidence chip to findingCounts in ProcessHubReviewPanel Replaces the PR #4 stub evidence contract with a real wiring: - findingsFor: derives chip count from ProcessHubInvestigationMetadata.findingCounts (relevant statuses analyzed + improving + resolved). Returns synthetic Finding-shaped placeholder objects (only id surface) — chip uses .length. - onChipClick: emits 'process_hub.evidence_chip_click' App Insights event with no-PII payload (hubId, responsePath, lens, evidenceCount) and navigates to the most-recent linked investigation via the existing onOpenInvestigation callback. Pragmatic divergence from spec: Dashboard doesn't load full Finding[] objects today. The EvidenceSheet with finding labels is deferred to a follow-up PR — see plan PR #5 future work. Phase 2 V2 PR #5, Task 6. Co-Authored-By: ruflo <ruv@ruv.net> * docs(azure): clarify ProcessHubReviewPanel evidence wiring shortcuts Two reviewer-flagged comment additions: 1. The Finding[] cast in findingsFor is intentionally narrow — chip only reads .length. Adds a TODO referencing the follow-up EvidenceSheet PR that will introduce a Pick<Finding, 'id'> narrow type at the panel's evidence-contract boundary, removing the cast. 2. Documents the per-investigation item.investigationIds[0] navigation target — typically a single linked investigation, so most-recency is moot. Hub-aggregate items already fall back to the most-recent via defaultInvestigationId. No code changes — comments only. Phase 2 V2 PR #5, code-review followup. Co-Authored-By: ruflo <ruv@ruv.net> --------- Co-authored-by: ruflo <ruv@ruv.net>
jukka-matti
added a commit
that referenced
this pull request
May 8, 2026
8-task TDD-shaped plan executing the spec at docs/superpowers/specs/2026-05-07-canvas-hypothesis-arrow-drawing-design.md. Tasks (bottom-up): 1. useHypothesisDrawTool state machine + endpoint resolver (hooks) 2. activeCanvasTool field + auto-enable hypotheses overlay (hooks) 3. HypothesisDrawToolButton chrome component (ui) 4. HypothesisDraftPopover form (ui, hand-rolled positioning) 5. StepNodeMarker promoted-hypothesis pip (ui, Lucide Flag) 6. CanvasStepCard updates: replace badge, data-arrow-endpoint, gate click during draw 7. Canvas chrome integration: button + pointer handlers + rubber-band SVG + state-machine wiring through CanvasWorkspace 8. CanvasStepOverlay Remove button + investigations.md resolution + manual chrome walk steps Plan-time deferrals locked: column resolution via card.metricColumn (Risk #1); return-to-select after Save (Risk #2); hand-rolled positioning, no new dep (Risk #5); Lucide Flag with status colors (Risk #6). Subagent-driven dispatch per master plan D6 + feedback_subagent_driven_default. Sonnet for >=70% of dispatches; Opus for final review only. Master plan section 4 8d entry updated with forward link to this plan. Co-Authored-By: ruflo <ruv@ruv.net>
9 tasks
jukka-matti
added a commit
that referenced
this pull request
May 14, 2026
…leanup workstream) (#166) * fix(8f-followup): delete legacy variscout-wall-layout Dexie DB on init Closes 8f followup HIGH #3 — pre-8f users carried an orphan IndexedDB forever after the wallLayoutStore → canvasViewportStore shape change. Mirror PwaHubRepository's legacy-DB cleanup pattern. Tightens the existing test that lied about asserting deletion. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(8f-followup): migrate canvas UI strings to typed message catalogs Closes 8f followup HIGH #5 — 47 hardcoded English strings across SystemLevelView, CanvasLensPicker, MobileLevelPicker, NoFocalStepPrompt, AuthorL3View, LocalMechanismView now route through MessageCatalog. CANVAS_LENS_REGISTRY labels/descriptions translated at render time in CanvasLensPicker via LENS_LABEL_KEY / LENS_DESC_KEY maps; the hooks registry keeps English for non-UI consumers. Non-English locales receive English placeholders pending a translation pass (TODO(i18n) comment). Co-Authored-By: ruflo <ruv@ruv.net> * fix(8f-followup): migrate Canvas empty-state to message catalog Closes the i18n reviewer's flagged follow-up: Canvas/index.tsx:1042 rendered the lens registry's English label and a local CANVAS_LEVEL_LABELS map as user-facing copy, bypassing i18n. - Export LENS_LABEL_KEY from CanvasLensPicker for cross-component reuse - Reuse canvas.mobile.{system,process,step} for level labels - Add canvas.lensPicker.invalidAtLevel parameterized key (32 locales, English placeholder elsewhere per the catalog's translation pass plan) - Drop CANVAS_LEVEL_LABELS + remove now-unused CANVAS_LENS_REGISTRY import Co-Authored-By: ruflo <ruv@ruv.net> * test(8f-followup): cover CanvasLensPicker lens × level predicate Closes 8f followup LOW #20 — load-bearing CanvasLensPicker had no dedicated test. 18 enabled/disabled cells (3 levels × 6 lenses) + click-dispatch + aria-label assertions. Co-Authored-By: ruflo <ruv@ruv.net> * docs(8f-followup): refresh stale wallLayoutStore references in store comments Closes 8f followup LOW #18 — viewStore.ts:140 + preferencesStore.ts:178 still mentioned wallLayoutStore in doc-strings after the PR1 rename to canvasViewportStore. Co-Authored-By: ruflo <ruv@ruv.net> * docs(8f-followup): fix plan frontmatter category to allowed enum value * refactor(8f-followup): extract getStepColumnAssignments to @variscout/core/frame Closes 8f followup HIGH #2 — AuthorL3View's private focalStepColumns helper duplicates business logic that should live in core/frame. The helper now lives at packages/core/src/frame/stepColumns.ts with 6 unit tests; AuthorL3View imports it. Per ADR-074 amendment + ADR-081: Canvas embeds owner-surface computation, doesn't re-derive. Co-Authored-By: ruflo <ruv@ruv.net> * fix(8f-followup): tie L1 specLimits to outcome's own measureSpecs entry Closes 8f followup MEDIUM #8 — SystemLevelView trusted a flat specLimits prop without ADR-073-anchored contract. Now accepts measureSpecs keyed by column and derives from measureSpecs[map.ctsColumn] internally; old prop renamed to specLimitsOverride (advisory/debug only, deprecated). Canvas passes { [ctsColumn]: { usl, lsl, target, cpkTarget } } as measureSpecs. Two regression tests assert the leak scenario: wrong-column measureSpecs key produces '--' Cpk, not a silently wrong value. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(8f-followup): replace LocalMechanismView's focalStepColumns duplicate Same ADR-074 amendment violation that PR2 fixed in AuthorL3View. The private helper now delegates to getStepColumnAssignments from @variscout/core/frame (introduced in the prior commit), flattening the structured result into the string[] this view needs. Co-Authored-By: ruflo <ruv@ruv.net> * docs(8f-followup): resolve lens × level matrix gap via spec amend Closes 8f followup HIGH #4 via AMEND path (not expand). Git blame shows both `performance` and `yamazumi` lenses were introduced with `enabled: false` AND registry descriptions explicitly labeling them as "Future ... lens" — intentional V2 placeholders, not bugs. Spec §10 was over-promised at original ship. - Spec §10 matrix amended: 6 cells marked `(V2 — deferred; lens not enabled in V1)` instead of pretending they ship enabled - V2 expansion path documented inline - investigations.md entry marked RESOLVED 2026-05-13 with rationale Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): replace setViewportLevel throw with warn + no-op (4.4) l3 without focalStepId now emits console.warn and returns the viewport unchanged instead of throwing. fitToContent guards the same path. Updated test asserts warn was called and state did not change. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(8f-followup): co-locate level math constants in core/canvas/viewport (4.7) Move FIT_TO_CONTENT_ZOOM_BY_LEVEL from canvasViewportStore into @variscout/core/canvas/viewport.ts and re-export it through the barrel. Add LOD_SNAP_BOUNDARIES (L2_OVERVIEW_LOW=0.5, L2_DETAIL_HIGH=1.8) for the upcoming snap-to-LOD feature. Single source of truth for level math. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): enforce 6px click-vs-drag deadband via clickDistance(6) (4.3) Adds .clickDistance(6) to the d3-zoom behavior in useCanvasViewportInput. Pointer moves ≤5px are treated as clicks; ≥6px as drags. Matches spec §6.3. Co-Authored-By: ruflo <ruv@ruv.net> * chore(8f-followup): delete dead worldToWallSvg + document CanvasViewport (4.5/4.6) worldToWallSvg was an identity function with no callers outside its own test; deleted function and test. CanvasViewport is used in Canvas/index.tsx — added JSDoc comment explaining its role so the seam is documented. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): snap-to-LOD on wheel-stop via d3-zoom end handler (4.2) Adds a 'end' listener to the zoom behavior. When the user releases the wheel with zoom in [0.3, 0.5) or [1.8, 2.0), the viewport eases back to 0.5 or 1.8 respectively over 150ms. Exports snapTarget() for unit testing. LOD_SNAP_BOUNDARIES lives in @variscout/core/canvas/viewport alongside LOD_THRESHOLDS. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): real LOD cross-fade + d3-transition snap (4.1/4.2 final) LODSwitcher now renders both outgoing and incoming renderers in stacked absolute divs during a 150ms window, then unmounts the outgoing. Uses useState+useEffect+setTimeout — no external animation library needed. useCanvasViewportInput snap-to-LOD uses d3-transition via selection.transition().duration(150).call(zoomBehavior.transform, ...). Adds d3-transition + @types/d3-transition to @variscout/hooks deps. Tests: 4 LODSwitcher tests assert dual-render during transition and single-render after 150ms via fake timers. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): per-Hub canvas viewport blob helpers in blobClient Closes 8f followup HIGH #1 part 1/2 — adds loadBlobCanvasViewport + saveBlobCanvasViewport mirroring the updateBlobEvidenceSnapshots ETag-conditional pattern. Per ADR-081 §2 (Azure = IndexedDB + Blob sync with ETag per ADR-079) and ADR-079. Also adds getLocalViewportUpdatedAt to @variscout/stores so the Azure lifecycle hook can compare timestamps without reading Dexie directly. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): wire Azure canvas viewport lifecycle to Blob sync Closes 8f followup HIGH #1 part 2/2 — useCanvasViewportLifecycle (Azure) now rehydrates from Blob after Dexie cache, debounced-persists to both Dexie and Blob with ETag, and treats precondition-failed as last-write- wins per spec §11 with App Insights telemetry on the conflict path. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): expose 4 remaining response-path CTAs at L3 column granularity Closes 8f followup MEDIUM #9 — LocalMechanismView previously only exposed Quick Action. Spec §5.3.a lists 5 CTAs at column-mechanism granularity (Quick Action / Focused Investigation / IP / Sustainment / Handoff). Threaded the 4 step-level callbacks already on CanvasProps through to LocalMechanismView; per-column button row added with new i18n keys (8 new MessageCatalog keys across 32 locale files). Parent callbacks are step-only; column is visible only within the card row. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): mobile L3 without focalStepId navigates to step-list Closes 8f followup MEDIUM #10 — MobileLevelPicker previously called setLevel('l2') before setZoom(2.5) as an explicit l2 redirect comment implied. The final committed state was already l3 (setZoom(2.5) fires inferLevel→l3), but the intent was undocumented. Updated comment to clarify the atomicity: both calls run synchronously before React re-renders, so the final state is l3 with no focalStepId, and canvas renders NoFocalStepPrompt (the step-list surface) per spec §7. Co-Authored-By: ruflo <ruv@ruv.net> * perf(8f-followup): selector-scope canvasViewport subscribe in d3-zoom hook Closes 8f followup MEDIUM #11 — useCanvasViewportInput previously subscribed to the whole canvasViewportStore; every unrelated mutation (setRailOpen, setViewMode, openChartCluster, etc.) fired syncElementToStoreViewport (which has its own diff-check guard, but still did needless work). Now tracks prevViewportRef and short-circuits on reference equality of state.viewports[hubId] — sync is skipped entirely when the hub's viewport slice hasn't changed. Test added: setRailOpen → d3 element __zoom unchanged. Co-Authored-By: ruflo <ruv@ruv.net> * chore(8f-followup): rename canvasViewport STORE_LAYER to annotation-per-hub Closes 8f followup LOW #15 — canvasViewportStore state is keyed by hubId not projectId since the 8f shape change. The annotation-per-project label was technically truthful (per-project umbrella, hub-keyed inside) but invited confusion. Renamed to annotation-per-hub; layerBoundary test + packages/stores/CLAUDE.md table updated. 'annotation-per-project' is now in the reserved/unused set; 'annotation-per-hub' is live. Co-Authored-By: ruflo <ruv@ruv.net> * docs(8f-followup): mark 19 of 20 findings RESOLVED on followup branch --------- Co-authored-by: ruflo <ruv@ruv.net>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps lucide-react from 0.475.0 to 0.577.0.
Release notes
Sourced from lucide-react's releases.
... (truncated)
Commits
f6c0d06chore(deps): bump rollup from 4.53.3 to 4.59.0 (#4106)67c0485feat(scripts): added helper script to automatically update OpenCollective bac...b6ed43dfeat(packages): Added aria-hidden fallback for decorative icons to all packag...076e0bbchore(dependencies): Update dependencies (#3809)80d6f73fix(icons): Rename fingerprint icon to fingerprint-pattern (#3767)1cfb3ffchore(deps-dev): bump vite from 6.3.5 to 6.3.6 (#3611)e71198dchore: icon alias improvements (#2861)3e644fdchore(scripts): Refactor scripts to typescript (#3316)19fa01bbuild(deps-dev): bump vite from 6.3.2 to 6.3.4 (#3181)03eb862use implicit return in react package (#2325)Maintainer changes
This version was pushed to npm by [GitHub Actions](https://www.npmjs.com/~GitHub Actions), a new releaser for lucide-react since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)