Skip to content

chore(release): back-merge v0.2.4 into develop#150

Merged
fedorovvvv merged 13 commits into
developfrom
chore/backmerge-v0.2.4-into-develop
May 25, 2026
Merged

chore(release): back-merge v0.2.4 into develop#150
fedorovvvv merged 13 commits into
developfrom
chore/backmerge-v0.2.4-into-develop

Conversation

@fedorovvvv
Copy link
Copy Markdown
Collaborator

Summary

Back-merge of v0.2.4 from main into develop — propagates the 0.2.4 version bump so subsequent feature branches start at the published SHA.

Branch release/v0.2.4 was auto-deleted after merging PR #149; this branch was created off main to perform the same back-merge per CLAUDE.md Release procedure §10.

Why

Standard final step of the release flow.

Notes

  • v0.2.4 tag pushed on main
  • GitHub Release v0.2.4 published ✅
  • release.yml ran but npm publish returned 404 PUT @forgeplan/web — likely NPM_TOKEN repo secret needs rotation. Tag is intact; can rerun the workflow after the secret is refreshed, or publish manually. NOT a blocker for this PR.

Refs: PRD-033, RFC-027, EVID-039

explosivebit and others added 13 commits May 6, 2026 12:53
## Summary

Release **v0.1.8** rolling up the overnight + audit cycle:

- **F11** (PRD-006 + RFC-005) — body preview + decision impact
drill-down across 5 graph views.
- **F12** (PRD-007 + RFC-006) — stale + blind-spot push notifications
via Notification API.
- **F13** (tactical) — Copy as markdown button in ArtifactPanel.
- **Hotfix** — break `effect_update_depth_exceeded` in HomePage
health-poll diff (`prevHealthSnapshot` demoted from `$state` to plain
`let`).
- **F14** (post-audit cleanup) — 7 HIGH + 7 MEDIUM/LOW findings closed
(5-expert audit on F11/F12/F13). Includes lazy-load of `marked +
DOMPurify` (-21 KB gzip first-paint), Matrix impact-mode CSS fix, iframe
Notification guards, branded SafeHtml type, clipboard fallback,
reduced-motion broadening, DOMPurify `noopener` hook (CWE-1022).

## Forgeplan artifacts

| Artifact | Status | R_eff |
|---|---|---|
| PRD-006 | active | > 0 (EVID-014) |
| RFC-005 | active | > 0 (EVID-014) |
| PRD-007 | active | > 0 (EVID-015) |
| RFC-006 | active | > 0 (EVID-015) |
| EVID-014 | active | F11 acceptance — CL3 / test |
| EVID-015 | active | F12 acceptance — CL3 / test |

## Verify

- svelte-check 0/0/436.
- vitest 70/70 (40 baseline + 13 F11 + 9 F12 + 6 F13 + 2 F14).
- npm run smoke PASS.
- Playwright DOM check: 0 console errors.
- npm audit (--omit=dev): 0 vulnerabilities.

## Test plan

- [ ] CI smoke matrix (3-OS × Node 22) green.
- [ ] After merge: tag `v0.1.8` annotated on `main`, Draft GitHub
Release → publish fires `release.yml` → `npm publish --provenance`.
- [ ] Back-merge `release/v0.1.8` → `develop` so version bump and any
release-only fixes propagate.

## Backlog (not in this release)

Deferred from F14 audit:
- UX-H2 mermaid latent (no current artifact uses mermaid; ADR for
diagram renderer when needed).
- TS cosmetic refactors (`getOrInit` helper sweep, `Omit` patterns).
- SEC-L2 secret-pattern redaction in body excerpt (needs thoughtful
regex set — separate artifact).
- SEC-L3 kindFilter/statusFilter validation against known list.
- FE-L2..L4 rare edge cases.

Strategic deferrals from earlier sessions: time-travel (forgeplan
journal slider), semantic search (Lance index), "what changed" diff
view, annotation layer.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary

**v0.1.9** — bug-fix release responding to user-reported issues on a
real 289-artifact workspace.

### CRITICAL (runtime crash)
- **`each_key_duplicate`** runtime error cascaded across Force / Tree /
Radial / Lanes / Matrix views when workspace contained legitimately
duplicate edges (two evidence packs both informing same PRD with same
relation). Fixed by deduplicating in `lib/filter.ts#filterEdges` at the
single chokepoint.
- 4 unit tests added (visibility filter, exact dedup, relation
preservation, ordering).

### UX
- **HealthBar** chips restructured: monospace tabular-nums values +
uppercase 0.12em labels. Reads as "30 TOTAL · 27 ACTIVE · 3 DRAFT"
instead of mashed text.
- **ArtifactPanel default width 380 → 658 px** (+73%). MAX_RATIO 0.6 →
0.7. Drag-resize handle on left edge with localStorage persist.
- **"📋 Copy as markdown" moved** into body-actions row next to Hide/Show
body.
- **Body section opens by default** with race-safe `bodyHydrated` guard.
- **`.ghost` button rule** added inside ArtifactPanel (was missing —
buttons were browser-default).
- **Sticky-stack panel sections + meta-trail** — as user scrolls, each
section pins below header with escalating z-index; the depth +
updated_at values fade-slide into right side of body-actions when its
sticky line is reached.
- **No nested scroll containers** — `.artifact-body` and `.links ul`
lost their `max-height: Xvh; overflow-y: auto`. The outer panel scrolls.
- **Page shell** `.root { overflow: hidden }` — no horizontal/vertical
scroll on page level.

### Polish
- Chrome 132+ devtools probe 404 suppressed via
`template/static/.well-known/appspecific/com.chrome.devtools.json = {}`.

## Verify

- svelte-check 0/0/437.
- vitest 74/74 (70 baseline + 4 filter dedup tests).

## Test plan

- [ ] CI smoke matrix (3-OS × Node 22) green.
- [ ] After merge: tag `v0.1.9` annotated on `main`, Draft GitHub
Release → publish fires `release.yml` → `npm publish --provenance`.
- [ ] Back-merge `release/v0.1.9` → `develop`.
- [ ] User runs `npx @forgeplan/web init --force` against the real
289-artifact workspace — crash gone, panel comfortable to read PRD
bodies.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary

**v0.1.10** — F16 ships infinite-feel zoom + minimap with
click-teleport.

- **scaleExtent [0.3, 3] → [0.05, 50]** on Force / Tree / Radial / Lanes
/ Matrix / Sunburst (~167× dynamic range). Sankey unchanged
(fixed-grid).
- **Minimap** in bottom-right of `.canvas-body`: 180×120 SVG miniature
with viewport rect overlay; click or drag teleports canvas to that point
at `k=1`. Active for Force / Tree / Radial / Lanes; Matrix / Sankey /
Sunburst show muted "MINIMAP N/A" stub.
- New `lib/minimap-math.ts` — pure functions + 7 unit tests.
- View teleport API: `onViewState` callback prop + `panTo()` method via
`bind:this` on supported views.

## Verify

- svelte-check 0/0/440.
- vitest 81/81 (74 baseline + 7 minimap-math).

## Test plan

- [ ] CI smoke matrix (3-OS × Node 22) green.
- [ ] After merge: tag `v0.1.10` on main, Draft GitHub Release → publish
fires `release.yml` → `npm publish --provenance`.
- [ ] Back-merge `release/v0.1.10` → `develop`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary

**v0.1.11** — F17 ships minimap to Matrix / Sankey / Sunburst (was N/A
in v0.1.10).

- Each view projects its layout-specific positions into canvas-space and
emits `onViewState`.
- Click-teleport via `panTo(canvasX, canvasY, k=1)` — works on all 7
views.

## Verify

- svelte-check 0/0/440.
- vitest 81/81.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
… light theme (#65)

## Summary

Bundles three feature streams from develop into v0.1.12:

- **F18 Time-travel slider — SINGLE mode** (PR #63) —
`/api/snapshot?at=ISO`, `/api/timeline-events`, `widgets/timeline/`,
canvas snapshot hydration. PRD-008 / RFC-007 / EVID-020 active.
- **`init --experimental` flag** (PR #60) — opt-in to esbuild
single-file bundle, ~9× smaller `dist/`. PRD-014 / RFC-013 / EVID-018
active. Closes the verification ask in #59.
- **Multi-graph mosaic dashboard** (PR #64) — split-pane layout with
persistent layout, addresses #61.
- **Version display footer** (PR #57) — `getForgeplanVersion()` +
`compareSemver`. PRD-012 / RFC-011 / EVID-016 active.
- **Shared UI primitives + npm update notification** (PR #58) — modal
manager + update checker. PRD-013 / RFC-012 / EVID-017 active.
- **Light theme** (PR #62) — dual-token CSS + `data-theme` attribute.
PRD-015 / RFC-014 / EVID-019 active.

COMPARE mode for time-travel (Alt-drag two scrubbers + diff overlay)
intentionally deferred — endpoint returns 501 with TODO marker.

## Why

Five feature PRs accumulated on develop since v0.1.11 (May 6). Cutting
them as a single minor-patch release rather than gating on the v0.2.0
milestone (full proactive-surfacer arc) keeps the cadence steady and
ships the bundle-size win + multi-graph layout to users now.

## Test plan

- [x] `npm run check` — 0 errors / 0 warnings across 486 files
- [x] `npx vitest run` — 14 files / 127 tests pass
- [x] PR #63 CI matrix (3 OS, node 22) — green before merge
- [ ] release/v0.1.12 CI matrix — pending on this PR
- [ ] Manual smoke after tag → GitHub Release fires `release.yml`
workflow

## Refs

PRDs activated since v0.1.11: PRD-008, PRD-012, PRD-013, PRD-014,
PRD-015.
RFCs activated: RFC-007, RFC-011, RFC-012, RFC-013, RFC-014.
Evidence: EVID-016 / EVID-017 / EVID-018 / EVID-019 / EVID-020.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary

Release branch for v0.1.13. Cuts from `develop` (38 commits ahead of
`main`).

## Highlights

- **shared/ui catalogue** (PRD-018 / RFC-016) — 20+ primitives based on
`bits-ui`, showcased on `/playground` in light + dark themes.
- **Rule 24** — `shared/ui` ownership and customisation discipline.
Forbids `:global()` re-skins of primitive internals from upper FSD
layers; ships a verification grep snippet.
- **Audit-driven primitive variants**: `Button.variant=ghost-mono`,
`Button.size=icon`, `Badge.variant=mono`,
`Toggle/ToggleGroup.variant=outline-mono`, `Alert.tone=banner`,
`TabsList.wrap`. Replaces hand-rolled markup across widgets.
- **`orch` theme** — third palette (Orchestra-inspired), exposed as a
hidden 5-click easter egg with a 2 s freeze after unlock.
- **Dense-graph render-resilience** for Sankey + Tree at 100+ artifacts.
- **Adopt `svelte-sonner`** for toasts.
- **Revert** Force 3D experimental Threlte view mode (#103, reverted in
#105). `dist-experimental` cap stays at 6M.

## Test plan

- [x] `npm run build` — both `dist/` and `dist-experimental/` build
clean (dist-experimental: 2.43M)
- [x] `npm run smoke` — passes against scratch workspace
- [ ] CI matrix (ubuntu / macos / windows) green
- [ ] No host-isolation regressions (rule 20)
- [ ] No template-purity regressions (rule 21)
- [ ] No mutating subcommands behind `/api/*` (rule 22)

Refs: PRD-018, RFC-016, EVID-022, EVID-023, EVID-024, PRD-019

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary

First minor release on top of 0.1.13.

- Multi-instance registry + `/api/instances` + HealthBar switcher
(PRD-027 / RFC-023 / SPEC-003 / ADR-004)
- `init --scope user|project` with workspace-agnostic user scope
(PRD-025 / RFC-021 / ADR-004)
- `bin/` adopts citty (^0.2.2) and splits into `cli/`, `commands/`,
`lib/` (ADR-003)
- Feature-flag + image system; bundle approach is now the universal
artifact form. `--experimental` is a deprecated alias for `--image
nightly` (removed in 0.3.0) (PRD-030 / RFC-026 / ADR-005)
- Multi-tab artifact viewing (Shift+click), `Combobox` primitive in
`shared/ui/`, `adapter-node` precompress disabled

## Why

19 commits on `develop` since 0.1.13, multiple `feat` entries → MINOR
bump per Conventional Commits + SemVer (`guides/GIT-FLOW-GUIDE.ru.md`
§6).

`Refs: PRD-025, PRD-027, PRD-030`

## Test plan

- [ ] CI matrix green (ubuntu / macos / windows)
- [ ] `npm run build` succeeds locally; `dist/` + `dist-nightly/`
regenerated, both ≤ 3 MB
- [ ] `npm run smoke` exercises both `stable` and `nightly` images
- [ ] `node bin/forgeplan-web.mjs init -y` against a scratch dir copies
the new image
- [ ] `node bin/forgeplan-web.mjs --version` prints `0.2.0`

## Release procedure

After merge (per CLAUDE.md):

1. `git checkout main && git pull`
2. `git tag -a v0.2.0 -m "release v0.2.0" && git push origin v0.2.0`
3. GitHub UI → Releases → Draft a new release → tag `v0.2.0`, target
`main` → Publish (fires `release.yml` → `npm publish --provenance`).
4. Back-merge: `git checkout develop && git merge --no-ff release/v0.2.0
&& git push origin develop`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Release v0.2.1 — patch fixes for instance switcher (Popover+Command rewrite), registry heartbeat race, and Timeline toggle regression.
## Summary

- `feat(health-bar)`: instance switcher rebuilt — Popover → Dialog,
skeleton loading, live status + validation, refresh on open
- `fix(button)`: center SVG icons in flex layout

## Why

Patch release: accumulates health-bar instance switcher improvements
shipped on `develop` since v0.2.1.

## Test plan

- [ ] CI matrix (ubuntu / macos / windows) green
- [ ] `npm run smoke` passes post-merge
- [ ] Instance switcher opens as Dialog, shows skeleton on load,
refreshes on re-open

Refs: release/v0.2.2

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary
Release `v0.2.3` — multi-instance switcher bugfixes.

**Changes since v0.2.2:**
- fix(health-bar): normalise `localhost` → `127.0.0.1` so current
instance is correctly excluded from switcher list
- fix(health-bar): split reactive `$effect`s to eliminate 2 255 req/s
flood loop caused by `otherInstances` tracking inside `switcherOpen`
effect
- fix(instance-status): add CORS headers so cross-port status fetches
are not blocked by the browser
- fix(registry): reduce server-side cache TTL from 2 000 ms to 500 ms
for faster instance discovery

## Test plan
- [ ] CI matrix green (ubuntu / macos / windows × node 22)
- [ ] `npm run smoke` green locally

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary

Patch release **v0.2.4** — graph layout normalization.

- ForceView no longer drifts between renders (mulberry32-seeded init).
- All 5 views sort nodes by connection degree as a secondary key.
- Sankey / Sunburst untouched (already deterministic).

## Changes since v0.2.3

- `feat(dependency-graph): normalize node layout — seeded init +
degree-first sort` (PR #148) — Refs PRD-033, RFC-027, EVID-039

## Test plan

- [x] PR #148 → develop: CI matrix green (ubuntu / macos / windows ×
Node 22)
- [ ] CI matrix on this PR (release → main)
- [ ] After merge: tag `v0.2.4` on `main`, publish GitHub Release →
triggers `release.yml` → `npm publish --provenance`
- [ ] Back-merge release → develop

Refs: PRD-033, RFC-027, EVID-039
@fedorovvvv fedorovvvv enabled auto-merge May 25, 2026 18:42
@fedorovvvv fedorovvvv merged commit 984f567 into develop May 25, 2026
6 of 7 checks passed
@fedorovvvv fedorovvvv deleted the chore/backmerge-v0.2.4-into-develop branch May 25, 2026 18:44
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.

2 participants