Commit Graph

136 Commits

Author SHA1 Message Date
gsxdsm
e10db81393 feat(dashboard): cli-agent terminal UI, task-card states, and notification banner support (U11)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 01:16:13 -07:00
gsxdsm
5d2add417e Merge main into fast-tests: take @fusion/i18n dashboard dep; keep promotion-gate test deletion over main's .slow rename 2026-06-03 23:54:09 -07:00
gsxdsm
6d39b9a325 merge main: workflow graph editor + needs-input status; re-applied i18n t() wrapping to restructured WorkflowStepManager header and TaskCard status chain 2026-06-03 21:33:06 -07:00
gsxdsm
3b42b843ff docs(test): record happy-dom canary rejection evidence (L2) 2026-06-03 21:12:24 -07:00
gsxdsm
dfef5dadbd merge main: branch-group promote/abandon gating + compound-engineering plugin; re-applied i18n t() wrapping to main's restructured promote sections 2026-06-03 20:56:05 -07:00
gsxdsm
c9191b733c test: close dashboard curated-gate and engine-slow coverage holes; add inventory harness
- 427 orphaned dashboard test files ran in NO gate; 395 now gated via self-maintaining backfill lanes (glob minus curated minus skip-list), 31 pre-existing failures + build-output skip-listed with reasons
- settings -t name-filter lanes replaced by one unfiltered lane (describe blocks can no longer fall through filters)
- scripts/check-test-inventory.mjs: --capture/--diff superset harness + --dashboard-curated completeness guard
- pr-checks.yml: engine-slow CI gate (non-empty assertion) + inventory guard job
- docs/testing.md: guard, skip-list policy, harness usage
2026-06-03 17:36:35 -07:00
gsxdsm
46f525bd28 Merge main: reconcile duplicate pausedReason persistence fix + dashboard deps
Main independently landed the same pausedReason persistence fix (column in
the task INSERT/upsert, TaskRow type, rowToTask mapping) with the column
ordered between paused and userPaused; adopt main's ordering and drop this
branch's duplicate entries so the values array stays aligned. Union the
dashboard package.json deps (main's compound-engineering plugin alongside
this branch's sorted pi-coding-agent/cli-printing-press/cursor-runtime).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 16:37:18 -07:00
gsxdsm
d071aecda6 feat(dashboard): visual graph node editor for workflows (U6, U7)
Add a React Flow (@xyflow/react) based WorkflowNodeEditor: a lazy-loaded modal
with a workflow list, a node palette (prompt/script/gate/merge-boundary),
drag-to-connect edges, a per-node inspector, and save with compile-validation
that surfaces non-linear graphs as a banner. Pure irToFlow/flowToIr mapping
round-trips the v1 IR plus editor layout. Reachable via a Graph editor button in
the Workflow Steps manager; mounted in AppModals behind a new modal-manager
flag. Adds a vendor-reactflow Vite chunk and a feature changeset.
2026-06-03 09:45:26 -07:00
gsxdsm
f707b62155 fix(i18n): address code-review findings
- Validate GlobalSettings.language at the write boundary (store.ts) via
  validateLocale, so invalid locales are dropped not persisted (api-contract P1).
- Fix detectEnvLocale: Traditional-script env tags (zh_Hant/zh_Hant_TW/zh_HK/
  zh_MO) now resolve to zh-TW instead of Simplified; use replaceAll for
  multi-underscore POSIX tags (adversarial P2). Add coverage.
- Agent-native parity: add 'language' to the CLI settings allowlist
  (VALID_SETTINGS + GLOBAL_ONLY + enum) so 'fn settings set language' works
  like the dashboard switcher.
- Document --lang in the bin.ts help table (api-contract P3).
- Derive the expected locale-chunk count from the locales dir instead of a
  hardcoded 5 (maintainability), and add prebuild:client so a raw vite build
  on a fresh clone still syncs catalogs (adversarial P2).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 08:51:41 -07:00
gsxdsm
cd71b92930 feat(dashboard): add i18n runtime with per-locale code-splitting (U3)
Initialize the browser i18next instance with lazy per-locale catalog loading,
localStorage->navigator->htmlTag detection, script-aware zh fallback, and the
shared @fusion/i18n config. Catalogs are synced from @fusion/i18n into a
gitignored app/locales/ (predev/prebuild) and imported app-relative so Vite
emits one chunk per locale/namespace (verified: 15 chunks, none inlined into
the main bundle). First paint is gated on i18nReady to avoid raw-key flashes;
<I18nextProvider> wraps the App provider stack; vendor-i18n manualChunk added.

A build-assertion script (verify:locale-chunks) guards the KTD3a splitting
invariant. Fallback/namespace behavior is covered by @fusion/i18n config tests;
the live instance is verified via the build assertion rather than a unit test
(the dynamic catalog backend is impractical to exercise in vitest).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 08:16:08 -07:00
gsxdsm
9072d71306 feat(i18n): add @fusion/i18n package, catalogs, and i18next-cli tooling (U2)
Create the @fusion/i18n package as the authored source-of-truth: shared
i18next config (namespace split, script-aware zh-CN/zh-TW fallback, plural
setup), en base catalogs, and a generated CLI static-import map so the
terminal surface is drop-in for new locales. Add the i18next-cli workflow
(extract/sync/types/status/lint) wired as root i18n:* scripts, install the
i18next stack into dashboard + CLI, strip @fusion/i18n from the published CLI
manifest, gitignore the generated dashboard catalog tree, and add a changeset.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 08:00:31 -07:00
gsxdsm
8bb459702c feat(compound-engineering): artifact hub view, discovery, read routes (U3)
Add allowlist-based artifact discovery over the conventional CE locations
(STRATEGY.md, docs/ideation, docs/brainstorms, docs/plans, docs/solutions,
CONCEPTS.md), grouped by stage, with error entries for unreadable artifacts and
no reads outside the allowlist. Add list/read/preview routes (self-contained
sandboxed HTML, data-section markers) and the primary CompoundEngineeringView
with explicit empty/partial/error states, viewport-gated fetch, and a short-TTL
cache. Bind the view via registerBundledPluginViews + dashboard workspace dep
(the real binding; manifest componentPath is cosmetic).
2026-06-02 19:25:54 -07:00
gsxdsm
e549d7af30 FN-5849: shard dashboard quality Vitest runs
Split the dashboard quality Vitest lane into bounded heap-managed shards to avoid signal exits.

- replace the single dashboard quality test command with sequential app and API shard scripts
- add a heap wrapper plus Vitest config shard definitions for foundation, component, App, ChatView, and SettingsModal coverage
- add guard tests for the sharded dashboard test configuration and restore spinner-animation.css.test.ts to foundation-ui coverage
- update the CLI package-config test expectations for the new dashboard test script layout

Files changed:
 packages/cli/src/__tests__/package-config.test.ts  |   8 +-
 packages/dashboard/package.json                    |  18 +-
 packages/dashboard/scripts/run-vitest-with-heap.mjs     |  41 ++++
 packages/dashboard/src/__tests__/dashboard-test-config-guard.test.ts  |  77 ++++++
 packages/dashboard/vitest.config.ts                | 273 ++++++++++++++++++++-
 5 files changed, 407 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-5849

Fusion-Task-Lineage: 522f3963-4647-4a59-bb6b-a3dacfbf620e
2026-06-02 00:53:39 -07:00
gsxdsm
de23db3789 FN-5862: bump pi coding agent dependencies to 0.78
Update Fusion to the latest pi coding agent and pi AI dependency release.

- bump @earendil-works/pi-coding-agent from ^0.77.0 to ^0.78.0 in the CLI, dashboard, and engine packages
- bump @earendil-works/pi-ai from ^0.77.0 to ^0.78.0 where it is consumed
- add a patch changeset documenting the published @runfusion/fusion update and refresh the lockfile

Files changed:
 .changeset/fn-5862-pi-coding-agent-0.78.md |   5 +
 packages/cli/package.json                  |   4 +-
 packages/dashboard/package.json            |   2 +-
 packages/engine/package.json               |   4 +-
 pnpm-lock.yaml                             | 193 +++++++++++++++++++----------
 5 files changed, 138 insertions(+), 70 deletions(-)

Fusion-Task-Id: FN-5862

Fusion-Task-Lineage: abdfa987-7ba5-45f7-8bea-3db3329a760c
2026-06-01 23:55:20 -07:00
gsxdsm
a8c920daf9 chore(release): v0.39.0
Version bump via changesets.
2026-05-31 20:05:32 -07:00
gsxdsm
f659a07a25 chore(release): v0.38.1
Version bump via changesets.
2026-05-30 00:18:41 -07:00
gsxdsm
45d22586dc chore(release): v0.38.0
Version bump via changesets.
2026-05-29 23:17:31 -07:00
gsxdsm
a960bb1031 chore(release): v0.37.0
Version bump via changesets.
2026-05-29 08:09:33 -07:00
gsxdsm
6c44ed16e7 chore(release): v0.36.0
Version bump via changesets.
2026-05-28 23:40:25 -07:00
gsxdsm
cec191eac3 FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope
Fusion-Task-Id: FN-5638

Fusion-Task-Lineage: 6e99c156-5f6c-42e6-bd26-618e08ffd05f
2026-05-28 21:23:48 -07:00
gsxdsm
0a04837e7a chore(release): v0.35.0
Version bump via changesets.
2026-05-28 08:20:50 -07:00
gsxdsm
2f80c6ea7b chore(release): v0.34.0
Version bump via changesets.
2026-05-26 23:45:59 -07:00
gsxdsm
2d04cbe09d chore(release): v0.33.0
Version bump via changesets.
2026-05-23 23:12:21 -07:00
gsxdsm
959f7cd4eb chore(release): v0.32.0
Version bump via changesets.
2026-05-19 22:09:26 -07:00
gsxdsm
6ab2c3430d chore(release): v0.31.0
Version bump via changesets.
2026-05-15 08:41:59 -07:00
Fusion
a9362c8f29 feat(FN-4605): complete Step 3 — add workspace-root bootstrap and pretest hooks
Fusion-Task-Id: FN-4605
Fusion-Task-Lineage: 472b0ccb-d015-4ff7-bdf2-1d5d05ae09e9
2026-05-15 08:22:44 -07:00
gsxdsm
ed5269d2a2 chore(release): v0.30.0
Version bump via changesets.
2026-05-15 01:50:08 -07:00
Fusion
a3b128ea9f feat(FN-4556): remove basic-setup dependency from dashboard
Removed the `basic-setup` dependency from `@fusion/dashboard` and regenerated the pnpm lockfile, completing the FN-4556 cleanup.

Fusion-Task-Id: FN-4556
2026-05-14 22:16:44 -07:00
Fusion
a9ce790fd6 feat(FN-4553): complete Step 1 — add codemirror language dependency
Fusion-Task-Id: FN-4553
Fusion-Task-Lineage: 67774ee2-9fb4-4432-b5cb-3c01c083b0fd
2026-05-14 22:16:44 -07:00
gsxdsm
f7eeb3b887 chore(release): v0.29.0
Version bump via changesets.
2026-05-13 21:39:15 -07:00
gsxdsm
8b5df5c79d chore(release): v0.28.1
Version bump via changesets.
2026-05-12 23:05:47 -07:00
gsxdsm
b967967e90 chore(release): v0.28.0
Version bump via changesets.
2026-05-12 22:53:17 -07:00
gsxdsm
9732f5f6f6 chore(release): v0.27.1
Version bump via changesets.
2026-05-12 07:48:21 -07:00
gsxdsm
35c0da57e3 chore(release): v0.27.0
Version bump via changesets.
2026-05-11 21:52:56 -07:00
Fusion
6769b836f6 feat(FN-3763): add cli printing press wizard plugin
Implements a new `fusion-plugin-cli-printing-press` plugin with a multi-step wizard UI for authoring CLI commands, including draft storage, route registration, and validation — plus integration wiring in the dashboard's plugin view registry. Includes TypeScript build and ESM import fixes for the plu

Fusion-Task-Id: FN-3763
2026-05-10 15:34:09 -07:00
gsxdsm
369b1ef572 chore(release): v0.26.0
Version bump via changesets.
2026-05-10 08:55:51 -07:00
gsxdsm
3958502f19 chore(release): v0.25.0
Version bump via changesets.
2026-05-09 17:07:29 -07:00
gsxdsm
5202b8e68f chore(release): v0.24.0
Version bump via changesets.
2026-05-09 13:56:53 -07:00
Fusion
31d257d4af feat(FN-3159): move roadmap ownership from core to fusion-plugin-roadmap pl
Moves roadmap ownership from `@fusion/core` to `fusion-plugin-roadmap`, deleting ~1,800 lines of roadmap store, types, ordering, and handoff logic from core and replacing it with ~760 lines of new route handlers in the plugin. The dashboard's roadmap routes and suggestions modules are substantially

Fusion-Task-Id: FN-3159
2026-05-08 09:35:45 -07:00
Fusion
7b6bc2e531 feat(FN-3711): consolidate graph position storage and remove scopedStorage
Consolidated graph position storage into a canonical shared helper (`projectStorage.ts`) with hardened persistence logic and removed the duplicate `scopedStorage` module. Updated integration tests and documented the canonical storage approach. A smaller fix (`FN-3628`) addressed mobile touch targets

Fusion-Task-Id: FN-3711
2026-05-07 13:29:26 -07:00
gsxdsm
3948a49eea Merge pull request #51 from Runfusion/codex/testing-suite-quality-prd
test: harden and slim local test workflow
2026-05-07 10:18:35 -07:00
gsxdsm
e3f2e4c3be fix: resume distributed task ID counter past existing IDs; extract plugin view types
The dashboard task-create route now uses the distributed task ID allocator
(FN-3450). On projects whose tasks had been allocated through the legacy
config.nextId counter, the allocator's `ensureStateRow` was seeding a fresh
prefix at sequence 1, so new tasks restarted at FN-001 even when FN-3700
already existed. ensureStateRow now seeds past:

- the legacy config.nextId counter (when configured taskPrefix matches), and
- one past the highest numeric suffix on any existing tasks/archivedTasks row
  for the prefix.

A regression test seeds FN-3700 in a fresh DB and asserts the next reservation
returns FN-3701, not FN-001.

Plugin dashboard view contracts are now exposed via a slim type-only module
(`@fusion/dashboard/app/plugins/types`). External plugin tsc builds previously
imported `pluginViewRegistry`, transitively pulling in dashboard runtime
sources (React components, CSS, lucide-react). The dependency-graph plugin's
import + path mapping is updated to use the new module.

Schema housekeeping: drop unused scaffolding tables left over from an earlier
migration via a new idempotent migration (v67). Fresh DBs see no change;
existing DBs that ran the older migration get the orphan tables dropped on
next init.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 09:41:42 -07:00
Aron Prins
eb1b3b6f5b test(FN-000): slim dashboard default tests 2026-05-07 17:27:16 +02:00
Aron Prins
f85b124125 test(FN-000): resolve dashboard test noise 2026-05-07 17:27:15 +02:00
Aron Prins
55d8e87cc4 test(FN-000): harden local test suite 2026-05-07 17:26:51 +02:00
Fusion
3735e0565a feat(FN-3396): bundle Cursor CLI as a plugin provider with dashboard auth w
Merges FN-3396's full Cursor CLI provider integration (Steps 1–4): defines a CLI-backed provider contract, adds the `fusion-plugin-cursor-runtime` plugin package with process management and runtime probes, wires dashboard auth flows and UI (ProviderCard, onboarding modal, settings), and bundles the

Fusion-Task-Id: FN-3396
2026-05-07 04:17:52 -07:00
gsxdsm
e9b0aa48de chore(release): v0.23.0
Version bump via changesets.
2026-05-06 22:47:53 -07:00
gsxdsm
1ada98b53f chore(release): v0.22.0
Version bump via changesets.
2026-05-06 00:11:20 -07:00
gsxdsm
59eeb68198 chore(release): v0.21.0
Version bump via changesets.
2026-05-05 15:31:33 -07:00
gsxdsm
e27e423194 chore(release): v0.20.0
Version bump via changesets.
2026-05-05 14:56:34 -07:00