feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
gsxdsm
2026-04-02 09:10:42 -07:00
parent 1fa8837c6b
commit 566f531361
80 changed files with 857 additions and 652 deletions

View File

@@ -96,10 +96,12 @@ export class NtfyNotifier {
* Stop listening to store events and abort in-flight requests.
*/
stop(): void {
this.store.off("task:moved", this.handleTaskMoved);
this.store.off("task:updated", this.handleTaskUpdated);
this.store.off("task:merged", this.handleTaskMerged);
this.store.off("settings:updated", this.handleSettingsUpdated);
if (typeof this.store.off === "function") {
this.store.off("task:moved", this.handleTaskMoved);
this.store.off("task:updated", this.handleTaskUpdated);
this.store.off("task:merged", this.handleTaskMerged);
this.store.off("settings:updated", this.handleSettingsUpdated);
}
// Abort any in-flight requests
if (this.abortController) {

View File

@@ -265,7 +265,7 @@ describe("Scheduler", () => {
});
describe("filesystem validation", () => {
it("validates tasks using the .kb task directory layout", async () => {
it("validates tasks using the .fusion task directory layout", async () => {
const todoTask = createMockTask({ id: "FN-010", column: "todo" });
const moveTask = vi.fn().mockResolvedValue(undefined);
const updateTask = vi.fn().mockResolvedValue(undefined);

View File

@@ -264,7 +264,7 @@ export class Scheduler {
for (const depId of task.dependencies) {
const dep = allTasks.find((t) => t.id === depId);
if (dep && dep.column === "in-review" && dep.worktree) {
return `kb/${dep.id.toLowerCase()}`;
return `fusion/${dep.id.toLowerCase()}`;
}
}