chore(release): v0.1.2
Version bump via changesets.
This commit is contained in:
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@runfusion/fusion": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add a `planning-awaiting-input` ntfy notification event so users can opt in to alerts when planning sessions pause for user input.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@runfusion/fusion": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Improve dashboard shutdown observability by logging non-fatal diagnostics when `CentralCore.close()` fails during dispose, normal signal shutdown, or dev-mode shutdown cleanup.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@runfusion/fusion": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Route dashboard runtime diagnostics through the shared injected runtime logger so TTY sessions can capture server/package logs in the TUI while preserving readable non-TTY startup banner output.
|
|
||||||
@@ -1,5 +1,16 @@
|
|||||||
# runfusion.ai
|
# runfusion.ai
|
||||||
|
|
||||||
|
## 0.1.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [9bf2981]
|
||||||
|
- Updated dependencies
|
||||||
|
- Updated dependencies [94473c8]
|
||||||
|
- Updated dependencies
|
||||||
|
- Updated dependencies [c01892d]
|
||||||
|
- @runfusion/fusion@0.1.2
|
||||||
|
|
||||||
## 0.1.1
|
## 0.1.1
|
||||||
|
|
||||||
Catch-up version bump so `runfusion.ai` stays in sync with `@runfusion/fusion`. The two packages are now grouped under changesets `fixed` in `.changeset/config.json` and will always share a version number from here on.
|
Catch-up version bump so `runfusion.ai` stays in sync with `@runfusion/fusion`. The two packages are now grouped under changesets `fixed` in `.changeset/config.json` and will always share a version number from here on.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "runfusion.ai",
|
"name": "runfusion.ai",
|
||||||
"version": "0.1.1",
|
"version": "0.1.2",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"description": "Launch Fusion with `npx runfusion.ai` — tiny alias for @runfusion/fusion.",
|
"description": "Launch Fusion with `npx runfusion.ai` — tiny alias for @runfusion/fusion.",
|
||||||
"homepage": "https://runfusion.ai",
|
"homepage": "https://runfusion.ai",
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
# @runfusion/fusion
|
# @runfusion/fusion
|
||||||
|
|
||||||
|
## 0.1.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 9bf2981: Add a `planning-awaiting-input` ntfy notification event so users can opt in to alerts when planning sessions pause for user input.
|
||||||
|
- Fix the CLI init command import path for the Claude skills runner so tsup can resolve it during build.
|
||||||
|
- 94473c8: Improve dashboard shutdown observability by logging non-fatal diagnostics when `CentralCore.close()` fails during dispose, normal signal shutdown, or dev-mode shutdown cleanup.
|
||||||
|
- Fix dashboard and serve command plugin store initialization to support task store implementations that expose `getFusionDir()` without `getRootDir()`.
|
||||||
|
- c01892d: Route dashboard runtime diagnostics through the shared injected runtime logger so TTY sessions can capture server/package logs in the TUI while preserving readable non-TTY startup banner output.
|
||||||
|
|
||||||
## 0.1.1
|
## 0.1.1
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@runfusion/fusion",
|
"name": "@runfusion/fusion",
|
||||||
"version": "0.1.1",
|
"version": "0.1.2",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"description": "Fusion CLI: HTTP API server, daemon, dashboard launcher, and task tooling for the Fusion AI coding agent.",
|
"description": "Fusion CLI: HTTP API server, daemon, dashboard launcher, and task tooling for the Fusion AI coding agent.",
|
||||||
"homepage": "https://github.com/Runfusion/Fusion#readme",
|
"homepage": "https://github.com/Runfusion/Fusion#readme",
|
||||||
|
|||||||
@@ -7906,6 +7906,50 @@ Task with acceptance criteria
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("logs outer promise-chain failure when inner warning logger throws", async () => {
|
||||||
|
const syntheticError = "Synthetic warn logger failure";
|
||||||
|
// Throw inside warn logging so the failure escapes the inner summarize try/catch
|
||||||
|
// and is handled by the outer Promise.resolve().then(...).catch(...) branch.
|
||||||
|
const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {
|
||||||
|
throw new Error(syntheticError);
|
||||||
|
});
|
||||||
|
const errorSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
||||||
|
const mockOnSummarize = vi.fn().mockRejectedValue(new Error("AI service failed"));
|
||||||
|
|
||||||
|
try {
|
||||||
|
const task = await store.createTask(
|
||||||
|
{ description: "a".repeat(201) },
|
||||||
|
{ onSummarize: mockOnSummarize, settings: { autoSummarizeTitles: true } }
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(task.id).toMatch(/^FN-\d+$/);
|
||||||
|
expect(task.title).toBeUndefined();
|
||||||
|
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 10));
|
||||||
|
|
||||||
|
const updatedTask = await store.getTask(task.id);
|
||||||
|
expect(updatedTask.title).toBeUndefined();
|
||||||
|
|
||||||
|
const outerErrorCall = errorSpy.mock.calls.find(([message]) =>
|
||||||
|
typeof message === "string"
|
||||||
|
&& message.includes("[task-store] Unexpected title summarization promise-chain failure")
|
||||||
|
);
|
||||||
|
expect(outerErrorCall).toBeDefined();
|
||||||
|
|
||||||
|
const [message, context] = outerErrorCall as [string, Record<string, unknown>];
|
||||||
|
expect(message).toContain("[task-store] Unexpected title summarization promise-chain failure");
|
||||||
|
expect(context).toMatchObject({
|
||||||
|
taskId: task.id,
|
||||||
|
descriptionLength: 201,
|
||||||
|
autoSummarizeEnabled: true,
|
||||||
|
error: syntheticError,
|
||||||
|
});
|
||||||
|
} finally {
|
||||||
|
warnSpy.mockRestore();
|
||||||
|
errorSpy.mockRestore();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
it("should trigger summarization at exactly 201 characters", async () => {
|
it("should trigger summarization at exactly 201 characters", async () => {
|
||||||
const boundaryDescription = "a".repeat(201);
|
const boundaryDescription = "a".repeat(201);
|
||||||
const mockOnSummarize = vi.fn().mockResolvedValue("AI Title");
|
const mockOnSummarize = vi.fn().mockResolvedValue("AI Title");
|
||||||
|
|||||||
Reference in New Issue
Block a user