dave
5516ec4595
storkit: merge 448_story_send_oauth_login_link_via_chat_when_credentials_are_missing
2026-03-31 10:28:02 +00:00
dave
10be86587a
storkit: merge 447_bug_element_tab_completion_display_name_breaks_bot_command_matching
2026-03-31 10:18:21 +00:00
dave
fec417cb16
storkit: merge 433_story_setup_wizard_interviews_user_on_bare_projects_with_no_existing_code
2026-03-29 00:46:05 +00:00
dave
5992f9bd19
storkit: merge 438_story_slash_command_autocomplete_in_web_ui_text_input
2026-03-28 22:27:40 +00:00
dave
ddc4a57cd2
storkit: merge 444_refactor_extract_shared_test_helpers_test_ctx_write_story_file_make_api
2026-03-28 19:51:17 +00:00
dave
8cd881c8f1
storkit: merge 440_refactor_consolidate_is_permission_approval_into_chat_util
2026-03-28 19:47:33 +00:00
dave
8ee59f5dc1
storkit: merge 439_refactor_unify_story_stuck_states_into_a_single_status_field
2026-03-28 18:36:42 +00:00
dave
08db28d9d6
storkit: merge 437_bug_strip_prefix_ci_panics_on_multi_byte_utf_8_input
2026-03-28 16:33:26 +00:00
dave
be0036922a
fix: unblock command also clears merge_failure field
...
Previously unblock only checked for blocked=true. Stories stuck in
merge with a merge_failure field were not considered "blocked" and
unblock refused to act. Now it clears both blocked and merge_failure,
and reports which fields were cleared.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-28 15:33:01 +00:00
dave
49b78f3642
storkit: merge 432_story_complete_setup_wizard_with_mcp_tools_and_agent_driven_file_generation
2026-03-28 14:23:59 +00:00
dave
fe0a032e8e
storkit: merge 430_bug_status_command_traffic_light_dots_not_coloured_in_matrix
2026-03-28 13:57:38 +00:00
dave
ebdcf18134
feat(424): rate-limit traffic-light dots and hard-block alerts
...
- Add HardBlock variant to WatcherEvent (story_id, agent_name, reset_time)
- In pty.rs, distinguish allowed_warning (throttle) from hard blocks;
emit RateLimitWarning for throttles, HardBlock for actual 429s
- Add `throttled: bool` field to StoryAgent / AgentInfo
- Pool spawns a background listener that sets throttled=true on
RateLimitWarning or HardBlock events and fires AgentStateChanged
- Status command shows traffic-light dots: ○ idle, ● running, ◑ throttled, ✗ blocked
- Read blocked flag from story front matter for the ✗ dot
- Notifications: RateLimitWarning silenced (too noisy); HardBlock sends
urgent chat notification with optional reset time
- Tests added for traffic_light_dot, read_story_blocked, status output,
and all notification paths
2026-03-28 11:33:01 +00:00
dave
52513b55ff
storkit: merge 427_story_server_side_text_normalization_for_chat_message_line_breaks
2026-03-28 10:41:43 +00:00
dave
b44f3a33e3
feat(423): auto-schedule timer on rate limit to resume after reset
...
- pty.rs: detect rate_limit_event hard blocks, parse reset_at, emit
WatcherEvent::RateLimitHardBlock with story_id, agent_name, reset_at
- watcher.rs: add RateLimitHardBlock variant to WatcherEvent enum
- timer.rs: add TimerStore::upsert (add-or-update-to-later) and
spawn_rate_limit_auto_scheduler (listens for RateLimitHardBlock,
upserts timer for the blocked story)
- notifications.rs: handle RateLimitHardBlock events with a debounced
chat notification including the scheduled resume time;
add format_rate_limit_hard_block_notification helper
- matrix/mod.rs: subscribe second watcher_rx for auto-scheduler,
pass it to run_bot
- matrix/bot/run.rs: wire spawn_rate_limit_auto_scheduler into bot startup
Tests cover: AC1 (hard block detection in pty), AC2 (auto-scheduler
adds timer), AC3 (upsert deduplication), AC5 (chat notification sent),
AC6 (worktree preserved — timer fires start_agent on existing worktree)
2026-03-28 10:11:08 +00:00
dave
6c6bc35785
feat: add unblock command and MCP tool to reset blocked stories
...
- Add `unblock` bot command (chat + web UI slash command) that clears the
`blocked` flag and resets `retry_count` to 0 in story front matter
- Works across all pipeline stages (1_backlog through 6_archived)
- Returns confirmation with story name and ID, or clear error if story
is not found or not blocked
- Expose `unblock_story` MCP tool for programmatic use by agents
- Make `chat::commands::unblock` module pub(crate) so story_tools can
call `unblock_by_number`
- Add 8 unit tests covering registration, validation, core logic, and
edge cases (not-found, not-blocked, any stage, story ID in response)
- Update MCP tools list test: 49 → 50 tools
2026-03-28 10:05:51 +00:00
dave
98b5475160
storkit: merge 425_story_chat_notification_when_a_story_blocks_with_reason
2026-03-28 09:38:47 +00:00
dave
1193b7ac9a
storkit: merge 419_bug_matrix_bot_crashes_on_transient_network_error_instead_of_retrying
2026-03-28 09:11:26 +00:00
dave
cf5424f9a6
storkit: merge 421_story_timer_command_for_deferred_agent_start
2026-03-28 09:02:20 +00:00
dave
d6f82393f5
storkit: merge 420_story_loc_for_a_specified_file_bot_command_and_web_ui_slash_command
2026-03-28 08:58:57 +00:00
dave
665c036a56
storkit: merge 417_refactor_split_matrix_bot_rs_into_focused_modules
2026-03-28 08:30:01 +00:00
dave
e88b9bbc63
storkit: merge 414_story_loc_command_filters_out_known_huge_files
2026-03-27 15:37:51 +00:00
dave
16853328fa
storkit: merge 413_refactor_split_slack_rs_into_focused_modules
2026-03-27 15:29:23 +00:00
dave
a9cdd3a354
storkit: merge 404_bug_whatsapp_and_slack_missing_assign_command_handler
2026-03-27 15:09:50 +00:00
dave
f6d632139e
storkit: merge 410_story_loc_bot_command_top_files_by_line_count
2026-03-27 14:36:07 +00:00
Timmy
02d08faaa2
Fixing build/test errors in master/
2026-03-27 12:31:08 +00:00
Timmy
3571511349
restore: reset past source tree deletion, apply pending work
2026-03-27 10:49:39 +00:00
dave
24b1aa6e7f
storkit: merge 401_bug_whatsapp_and_slack_missing_start_command_handler
2026-03-26 20:51:52 +00:00
dave
cd3ded278d
storkit: merge 400_bug_whatsapp_and_slack_missing_reset_command_handler
2026-03-26 20:17:57 +00:00
Timmy
61f6fd60a8
storkit: merge 402_bug_whatsapp_and_slack_missing_rebuild_command_handler
2026-03-26 11:20:55 +00:00
Timmy
108a697483
storkit: merge 397_bug_selection_screen_directory_picker_unreadable_in_dark_mode
2026-03-26 11:16:21 +00:00
dave
5dd8feb75c
storkit: merge 393_story_pipeline_stage_notifications_for_whatsapp_and_slack_transports
2026-03-25 15:37:54 +00:00
dave
6521c83eec
storkit: merge 394_story_whatsapp_and_slack_permission_prompt_forwarding
2026-03-25 15:34:50 +00:00
dave
077288e7b7
storkit: merge 392_refactor_extract_shared_transport_utilities_from_matrix_module_into_chat_submodule
2026-03-25 14:46:02 +00:00
dave
0457fbfecc
storkit: merge 391_bug_strip_prefix_ci_panics_on_multi_byte_utf_8_characters
2026-03-25 14:04:59 +00:00
dave
84a775be77
storkit: merge 389_story_whatsapp_phone_number_allowlist_authorization
2026-03-25 13:42:31 +00:00
dave
11bbfca3da
storkit: merge 386_story_unreleased_command_shows_list_of_stories_since_last_release
2026-03-24 22:23:01 +00:00
dave
18755aac96
storkit: merge 385_story_slack_markdown_to_mrkdwn_formatting_conversion
2026-03-24 22:12:31 +00:00
dave
821345d266
storkit: accept 383_refactor_reorganize_chat_system_into_chat_module_with_transport_submodules
2026-03-24 21:41:42 +00:00
Timmy
721d12bcfe
Fixing code warnings
2026-03-24 21:26:48 +00:00
Timmy
a24e4c5c85
Making Matrix config fields optional to meet Twilio login needs
2026-03-24 21:05:35 +00:00
dave
79edc28334
storkit: merge 383_refactor_reorganize_chat_system_into_chat_module_with_transport_submodules
2026-03-24 17:57:21 +00:00