diff --git a/.story_kit/problems.md b/.story_kit/problems.md index 6293b5b..a122129 100644 --- a/.story_kit/problems.md +++ b/.story_kit/problems.md @@ -2,9 +2,9 @@ Recurring issues observed during pipeline operation. Review periodically and create stories for systemic problems. -## 2026-03-18: Stories graduating to "done" with empty merges +## 2026-03-18: Stories graduating to "done" with empty merges (7 of 10) -Pipeline allows stories to move through coding → QA → merge → done without any actual code changes landing on master. The squash-merge produces an empty diff but the pipeline still marks the story as done. Confirmed affected: 247, 273, 280. Stories 274, 278, 279 appeared empty via merge commits but code was actually committed directly to master by agents (see next problem). Root cause: no check that the merge commit contains a non-empty diff before advancing to done. Frequency: 3+ confirmed cases out of 10 done stories. +Pipeline allows stories to move through coding → QA → merge → done without any actual code changes landing on master. The squash-merge produces an empty diff but the pipeline still marks the story as done. Affected stories: 247, 273, 274, 278, 279, 280, 92. Only 266, 271, 277, and 281 actually shipped code. Root cause: no check that the merge commit contains a non-empty diff. Filed bug 283 for the manual_qa gate issue specifically, but the empty-merge-to-done problem is broader and needs its own fix. ## 2026-03-18: Agent committed directly to master instead of worktree diff --git a/frontend/index.html b/frontend/index.html index db1fefc..a1d2e54 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,7 +4,7 @@ - Story Kit + Storkit diff --git a/frontend/src/components/Chat.tsx b/frontend/src/components/Chat.tsx index e30125b..a0709b0 100644 --- a/frontend/src/components/Chat.tsx +++ b/frontend/src/components/Chat.tsx @@ -819,7 +819,7 @@ export function Chat({ projectPath, onCloseProject }: ChatProps) { fontSize: "1.1rem", }} > - Welcome to Story Kit + Welcome to Storkit

{ expect(screen.getByText("Built: 2026-01-01 00:00")).toBeInTheDocument(); }); - it("displays Story Kit branding in the header", () => { + it("displays Storkit branding in the header", () => { render(); - expect(screen.getByText("Story Kit")).toBeInTheDocument(); + expect(screen.getByText("Storkit")).toBeInTheDocument(); }); it("labels the claude-pty optgroup as 'Claude Code'", () => { diff --git a/frontend/src/components/ChatHeader.tsx b/frontend/src/components/ChatHeader.tsx index c6ef6a1..0833e69 100644 --- a/frontend/src/components/ChatHeader.tsx +++ b/frontend/src/components/ChatHeader.tsx @@ -82,7 +82,7 @@ export function ChatHeader({ letterSpacing: "0.02em", }} > - Story Kit + Storkit

{ it("renders the title and description", () => { render(); - expect(screen.getByText("Story Kit")).toBeInTheDocument(); + expect(screen.getByText("Storkit")).toBeInTheDocument(); expect( screen.getByText("Paste or complete a project path to start."), ).toBeInTheDocument(); diff --git a/frontend/src/components/selection/SelectionScreen.tsx b/frontend/src/components/selection/SelectionScreen.tsx index eb16c6c..ecc6fdd 100644 --- a/frontend/src/components/selection/SelectionScreen.tsx +++ b/frontend/src/components/selection/SelectionScreen.tsx @@ -54,7 +54,7 @@ export function SelectionScreen({ className="selection-screen" style={{ padding: "2rem", maxWidth: "800px", margin: "0 auto" }} > -

Story Kit

+

Storkit

Paste or complete a project path to start.

{knownProjects.length > 0 && ( diff --git a/server/src/http/mod.rs b/server/src/http/mod.rs index b37d946..5a48cc8 100644 --- a/server/src/http/mod.rs +++ b/server/src/http/mod.rs @@ -102,7 +102,7 @@ pub fn build_openapi_service(ctx: Arc) -> (ApiService, ApiService) { ); let api_service = - OpenApiService::new(api, "Story Kit API", "1.0").server("http://127.0.0.1:3001/api"); + OpenApiService::new(api, "Storkit API", "1.0").server("http://127.0.0.1:3001/api"); let docs_api = ( ProjectApi { ctx: ctx.clone() }, @@ -116,7 +116,7 @@ pub fn build_openapi_service(ctx: Arc) -> (ApiService, ApiService) { ); let docs_service = - OpenApiService::new(docs_api, "Story Kit API", "1.0").server("http://127.0.0.1:3001/api"); + OpenApiService::new(docs_api, "Storkit API", "1.0").server("http://127.0.0.1:3001/api"); (api_service, docs_service) } diff --git a/server/src/matrix/bot.rs b/server/src/matrix/bot.rs index 9b6c3b5..e61f7d0 100644 --- a/server/src/matrix/bot.rs +++ b/server/src/matrix/bot.rs @@ -222,7 +222,7 @@ pub async fn run_bot( let mut login_builder = client .matrix_auth() .login_username(&config.username, &config.password) - .initial_device_display_name("Story Kit Bot"); + .initial_device_display_name("Storkit Bot"); if let Some(ref device_id) = saved_device_id { login_builder = login_builder.device_id(device_id);