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
|
||||
|
||||
## 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
|
||||
|
||||
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",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"license": "MIT",
|
||||
"description": "Launch Fusion with `npx runfusion.ai` — tiny alias for @runfusion/fusion.",
|
||||
"homepage": "https://runfusion.ai",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @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
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@runfusion/fusion",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"license": "MIT",
|
||||
"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",
|
||||
|
||||
@@ -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 () => {
|
||||
const boundaryDescription = "a".repeat(201);
|
||||
const mockOnSummarize = vi.fn().mockResolvedValue("AI Title");
|
||||
|
||||
Reference in New Issue
Block a user