From 0b3ce0f33e0cf015b1b1c553ae8f23ef2c572f94 Mon Sep 17 00:00:00 2001 From: dave Date: Tue, 24 Mar 2026 14:54:30 +0000 Subject: [PATCH] storkit: done 368_story_web_ui_oauth_flow_for_claude_authentication --- ...coder_when_story_is_already_in_progress.md | 20 --------------- ..._story_bot_command_to_delete_a_worktree.md | 20 --------------- ...ui_oauth_flow_for_claude_authentication.md | 25 +++++++++++++++++++ 3 files changed, 25 insertions(+), 40 deletions(-) delete mode 100644 .storkit/work/1_backlog/380_story_assign_command_restarts_coder_when_story_is_already_in_progress.md delete mode 100644 .storkit/work/1_backlog/381_story_bot_command_to_delete_a_worktree.md create mode 100644 .storkit/work/5_done/368_story_web_ui_oauth_flow_for_claude_authentication.md diff --git a/.storkit/work/1_backlog/380_story_assign_command_restarts_coder_when_story_is_already_in_progress.md b/.storkit/work/1_backlog/380_story_assign_command_restarts_coder_when_story_is_already_in_progress.md deleted file mode 100644 index 86720b7..0000000 --- a/.storkit/work/1_backlog/380_story_assign_command_restarts_coder_when_story_is_already_in_progress.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: "Assign command restarts coder when story is already in progress" ---- - -# Story 380: Assign command restarts coder when story is already in progress - -## User Story - -As a user, I want `assign X opus` on a running story to stop the current coder, update the front matter, and start the newly assigned agent, so that I can switch models mid-flight without manually stopping and restarting. - -## Acceptance Criteria - -- [ ] When assign is called on a story with a running coder, the current coder agent is stopped -- [ ] The story's front matter `agent` field is updated to the new agent name -- [ ] The newly assigned agent is started on the story automatically -- [ ] When assign is called on a story with no running coder, it behaves as before (just updates front matter) - -## Out of Scope - -- TBD diff --git a/.storkit/work/1_backlog/381_story_bot_command_to_delete_a_worktree.md b/.storkit/work/1_backlog/381_story_bot_command_to_delete_a_worktree.md deleted file mode 100644 index b2f5019..0000000 --- a/.storkit/work/1_backlog/381_story_bot_command_to_delete_a_worktree.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: "Bot command to delete a worktree" ---- - -# Story 381: Bot command to delete a worktree - -## User Story - -As a user, I want a bot command to delete a worktree so that I can clean up orphaned or unwanted worktrees without SSHing into the server. - -## Acceptance Criteria - -- [ ] A new bot command (e.g. `rmtree `) deletes the worktree for the given story -- [ ] The command stops any running agent on that story before removing the worktree -- [ ] The command returns a confirmation message on success -- [ ] The command returns a helpful error if no worktree exists for the given story - -## Out of Scope - -- TBD diff --git a/.storkit/work/5_done/368_story_web_ui_oauth_flow_for_claude_authentication.md b/.storkit/work/5_done/368_story_web_ui_oauth_flow_for_claude_authentication.md new file mode 100644 index 0000000..005b80d --- /dev/null +++ b/.storkit/work/5_done/368_story_web_ui_oauth_flow_for_claude_authentication.md @@ -0,0 +1,25 @@ +--- +name: "Web UI OAuth flow for Claude authentication" +agent: "coder-opus" +--- + +# Story 368: Web UI OAuth flow for Claude authentication + +## User Story + +As a new user running storkit in Docker, I want to authenticate Claude through the web UI instead of running `claude login` in a terminal inside the container, so that the entire setup experience stays in the browser after `docker compose up`. + +## Acceptance Criteria + +- [ ] Backend exposes /auth/start endpoint that generates the Claude OAuth URL with redirect_uri pointing to localhost:3001 +- [ ] Backend exposes /auth/callback endpoint that receives the OAuth token and stores it where Claude Code expects it +- [ ] Backend exposes /auth/status endpoint that reports whether valid Claude credentials exist +- [ ] Frontend shows a setup screen when no Claude auth is detected on first visit +- [ ] Setup screen has a 'Connect Claude Account' button that initiates the OAuth flow +- [ ] OAuth redirect returns to the web UI which confirms success and dismisses the setup screen +- [ ] Credentials are persisted in the claude-state Docker volume so they survive container restarts +- [ ] The entire flow works without any terminal interaction after docker compose up + +## Out of Scope + +- TBD