Commit Graph

200 Commits

Author SHA1 Message Date
Dave
894231428e story-kit: merge 236_story_show_test_results_for_a_story_in_expanded_work_item 2026-02-28 09:38:51 +00:00
Dave
7574e3b4bc story-kit: done 225_story_surface_merge_conflicts_and_failures_in_the_web_ui 2026-02-27 16:41:20 +00:00
Dave
1433115f9b fix: add missing closing brace and #[test] attribute in context.rs
The permission_decision_equality test was missing its closing brace,
causing it to swallow the not_found_returns_404_status test function.
This was likely caused by a bad merge conflict resolution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 11:22:42 +00:00
Dave
101bfd78fe story-kit: merge 224_story_expand_work_item_to_full_screen_detail_view 2026-02-27 11:21:46 +00:00
Dave
f8c13ec274 story-kit: merge 230_story_prevent_duplicate_stage_agents_on_same_story 2026-02-27 11:05:24 +00:00
Dave
38a2de472b story-kit: merge 232_story_fix_incorrect_bug_tool_descriptions_in_mcp_tools_list 2026-02-27 10:57:35 +00:00
Dave
0fe894c5a4 story-kit: merge 231_bug_agent_silently_disappears_when_worktree_creation_fails 2026-02-27 10:53:09 +00:00
Dave
850ca15a6c story-kit: merge 226_bug_mergemaster_accepts_stories_without_squash_merging_code 2026-02-27 10:39:45 +00:00
Dave
f8bbe1ea31 story-kit: merge 225_story_surface_merge_conflicts_and_failures_in_the_web_ui 2026-02-27 10:26:28 +00:00
Dave
eeec745abc story-219: add Always Allow button to web UI permission dialog
Cherry-pick from feature branch — code was never squash-merged
despite story being accepted (bug 226).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 10:00:33 +00:00
Dave
8f0624f012 story-kit: merge 216_story_merge_quality_gates_should_use_project_toml_components_and_script_test_instead_of_hardcoded_frontend_pnpm 2026-02-26 19:33:21 +00:00
Dave
80904dc2d1 fix: permission-prompt-tool response format and scaffold .claude/settings.json
- Return { behavior: "allow", updatedInput: <input> } from prompt_permission
  to match the Claude Code SDK expected format (was returning just
  { behavior: "allow" } which failed validation)
- Scaffold .claude/settings.json with sensible permission defaults (Edit,
  Write, common Bash commands, mcp__story-kit__*) so fresh projects don't
  trigger constant permission prompts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 19:02:11 +00:00
Dave
733b92337e story-kit: merge 217_story_scaffold_generates_claude_md 2026-02-26 18:31:36 +00:00
Dave
2148531a46 fix: auto-assign after merge, persistent server logs, remove duplicate pnpm install
- Call auto_assign_available_work at end of merge_agent_work so the next
  story gets picked up without waiting for the PTY exit handler
- Add persistent file logging to .story_kit/logs/server.log so server
  logs survive restarts
- Remove duplicate pnpm install block in run_squash_merge

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:24:27 +00:00
Dave
c952341fc8 story-kit: merge 214_story_scaffold_creates_complete_project_structure 2026-02-26 17:19:11 +00:00
Dave
d908a54fc4 story-kit: merge 180_bug_web_ui_permissions_handling_unreliable 2026-02-26 17:10:54 +00:00
Dave
ac087f1a58 chore: add MERGE-DEBUG traces for project_root lifecycle
Temporary diagnostic logging to track why project_root becomes None
during merge pipeline operations. Tagged with MERGE-DEBUG for easy
grep-and-remove once the root cause is confirmed fixed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 17:01:38 +00:00
Dave
774a731042 bug-210: prevent pipeline from moving story to done when mergemaster reports failure
The pipeline advancement logic was ignoring report_merge_failure and
blindly trusting the server-owned completion gates_passed result. Now
report_merge_failure sets a flag on the agent entry that the pipeline
checks before advancing — stories stay in 4_merge/ when merge fails.

Squash merge of feature/story-210

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 16:12:23 +00:00
Dave
930708ebac fix: add missing port argument to open_project test calls
The merge of story-209 (positional path argument) added a port parameter
to open_project, but two test call sites were not updated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:46:36 +00:00
Dave
8e0082f6cd story-209: accept optional positional path argument on startup
Add CLI path argument support: `story-kit-server /path/to/project` opens
the given project directly (scaffolding .story_kit/ if needed) instead of
relying on auto-detection. Resolves conflict with story-208's port parameter.

Squash merge of feature/story-209

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 15:17:40 +00:00
Dave
17fd3b2dc2 story-kit: merge 208_bug_project_scaffold_does_not_write_mcp_json_to_project_root 2026-02-26 14:59:19 +00:00
Dave
40d96008c9 feat(story-200): auto-prune worktrees when stories are archived
- Add `prune_worktree_sync` to worktree.rs: removes a story's worktree
  if it exists, delegating to `remove_worktree_sync` (best-effort,
  failures logged internally)
- Update `sweep_done_to_archived` to accept `git_root` and call
  `prune_worktree_sync` after promoting a story from 5_done to 6_archived
- Add Part 2 to the sweep: scan 6_archived and prune any stale worktrees
  for stories already there (catches items archived before this feature)
- All worktree removal failures are logged but never block file moves
- Add 5 new tests: prune noop, prune real worktree, sweep-on-promote,
  sweep-stale-archived, sweep-not-blocked-by-removal-failure

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 14:58:52 +00:00
Dave
81065a3ada fix: replace fast-forward with cherry-pick in mergemaster squash-merge
The mergemaster pipeline used git merge --ff-only to apply the squash
commit from a merge-queue branch onto master. This raced with the
filesystem watcher which auto-commits pipeline file moves to master,
causing the fast-forward to fail. The mergemaster agent would then
improvise by manually moving stories to done without the code merge.

- Replace --ff-only with cherry-pick so concurrent watcher commits
  don't block the merge
- Add report_merge_failure MCP tool for explicit failure handling
- Update mergemaster prompt to forbid manual file moves
- Fix cleanup_merge_workspace to handle stale directories

Squash merge of feature/story-205

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 14:16:35 +00:00
Dave
819b72523f story-kit: merge 203_story_move_story_to_current_before_checking_agent_availability_in_start_agent 2026-02-26 12:41:12 +00:00
Dave
77547972c4 feat(story-193): clickable code references in frontend 2026-02-26 12:34:57 +00:00
Dave
2dbfd42c6e story-kit: done 199_story_web_ui_submits_all_queued_items_at_once 2026-02-26 12:16:07 +00:00
Dave
08e23e3830 feat: enable Matrix E2EE with cross-signing verification on bot
Add end-to-end encryption support to the Matrix bot using the matrix-sdk
crypto features. The bot now:
- Enables E2EE on the Matrix client with cross-signing bootstrapping
- Auto-verifies its own cross-signing identity on startup
- Handles key verification requests from other users automatically
- Sends encrypted messages in E2EE-enabled rooms
- Adds MATRIX_STORE_PATH config for persistent crypto store

Squash merge of feature/story-194_story_enable_matrix_e2ee_with_cross_signing_verification_on_bot

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 10:41:29 +00:00
Dave
d20f9b8018 Fixed up @ mentions on the bot 2026-02-25 17:00:29 +00:00
Dave
0361322361 story-kit: merge 192_bug_code_fences_lose_newlines_when_pasted_from_agent_output 2026-02-25 16:47:34 +00:00
Dave
ae4fb3ae2c feat(matrix): bot only responds when directly addressed
Story 191: Matrix bot should only respond when directly addressed.
The bot now checks if it was mentioned by name or replied to before
responding, preventing it from answering every message in a room.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:33:30 +00:00
Dave
411653ab15 story-kit: merge 190_story_auto_select_available_agent_for_stage_in_start_agent 2026-02-25 16:17:38 +00:00
Dave
d4f23051aa feat(matrix): render bot messages with HTML formatting
Add HTML formatted_body to Matrix bot messages so that markdown-style
formatting (code blocks, bold, italic, lists) renders properly in Matrix
clients. Uses the pulldown-cmark crate to convert markdown to HTML and
sets the message format to org.matrix.custom.html.

Story: 188_story_render_matrix_bot_messages_with_html_formatting
2026-02-25 16:08:57 +00:00
Dave
4b4d221d6c story-kit: merge 182_story_matrix_bot_conversation_context_and_multi_room 2026-02-25 15:25:13 +00:00
Dave
ebcd627a45 Fix: remove agent from pool immediately on completion and add Matrix bot user allowlist 2026-02-25 14:59:20 +00:00
Dave
e682b64890 Stream Matrix bot responses on double-newline paragraph boundaries
Instead of waiting for the full LLM response and sending it as a single
message, stream bot responses to Matrix as they are generated. Paragraphs
are delimited by double-newline boundaries, giving users incremental
feedback while the model is still thinking.

Story: 184_story_stream_bot_responses_to_matrix_on_double_newline_boundaries
2026-02-25 14:17:55 +00:00
Dave
23e1830da2 Adding some Matrix bot debug code 2026-02-25 13:46:20 +00:00
Dave
a1d25d756b story-kit: merge 183_story_refactor_matrix_bot_to_use_claude_code_provider_instead_of_direct_anthropic_api 2026-02-25 12:42:11 +00:00
Dave
aa423cae22 story-kit: merge 177_bug_no_mcp_tool_to_edit_story_acceptance_criteria 2026-02-25 11:34:37 +00:00
Dave
073ec03afe story-kit: merge 171_story_persist_test_results_to_story_files 2026-02-25 09:50:31 +00:00
Dave
42c40209d2 story-kit: merge 174_story_constrain_thinking_traces_in_chat_panel 2026-02-25 09:32:48 +00:00
Dave
d70285adda story-kit: merge 176_bug_stories_moved_to_current_get_supervisor_instead_of_coder 2026-02-25 09:30:15 +00:00
Dave
51fad34a6a story-kit: merge 173_bug_pipeline_board_lozenges_dont_update_on_agent_state_changes 2026-02-24 23:57:07 +00:00
Dave
150f654e04 story-kit: merge 166_story_add_done_column_to_pipeline_board
Add Done column to pipeline board. Adds the 'done' stage to
PipelineState, exposes it via the WebSocket and REST API, and
renders a Done column in the frontend pipeline board view.

Squash merge from feature/story-166_story_add_done_column_to_pipeline_board.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:42:59 +00:00
Dave
ba8dde1aa8 story-kit: merge 172_bug_setup_command_failure_prevents_agent_from_starting_creating_unrecoverable_deadlock 2026-02-24 23:29:56 +00:00
Dave
dc631d1933 story-kit: merge 149_bug_web_ui_does_not_update_when_agents_are_started_or_stopped 2026-02-24 23:09:13 +00:00
Dave
2b5766aaf3 story-kit: merge 167_bug_thinking_trace_height_constraint_not_working_in_web_ui 2026-02-24 19:35:06 +00:00
Dave
7b3853bad0 story-kit: merge 165_bug_pipeline_log_message_says_archived_instead_of_done 2026-02-24 18:38:13 +00:00
Dave
d62f679fed story-kit: merge 164_bug_dev_process_readme_documents_wrong_pipeline_stages 2026-02-24 18:21:32 +00:00
Dave
464b1e5530 story-kit: merge 160_story_constrain_thinking_trace_height_in_agent_stream_ui 2026-02-24 18:03:08 +00:00
Dave
e6662c8f8e story-kit: merge 159_bug_server_restart_leaves_orphaned_claude_code_pty_processes_running 2026-02-24 17:56:40 +00:00