dave
2dc77479ad
storkit: done 407_spike_fly_io_machines_for_multi_tenant_storkit_saas
2026-03-27 11:20:32 +00:00
Timmy
3571511349
restore: reset past source tree deletion, apply pending work
2026-03-27 10:49:39 +00:00
dave
b22e2b9274
storkit: done 401_bug_whatsapp_and_slack_missing_start_command_handler
2026-03-26 20:51:54 +00:00
dave
85e37e03a8
storkit: done 399_story_cli_port_flag_with_project_toml_persistence
2026-03-26 20:46:59 +00:00
dave
f22a2666b8
storkit: accept 396_story_whatsapp_bot_startup_announcement_after_restart
2026-03-26 20:23:33 +00:00
dave
507889627a
storkit: done 396_story_whatsapp_bot_startup_announcement_after_restart
2026-03-26 20:22:29 +00:00
dave
33cb363651
storkit: done 400_bug_whatsapp_and_slack_missing_reset_command_handler
2026-03-26 20:18:00 +00:00
dave
cf2faa9bff
storkit: create 402_bug_whatsapp_and_slack_missing_rebuild_command_handler
2026-03-26 20:04:02 +00:00
dave
92aa1ebccf
storkit: done 402_bug_whatsapp_and_slack_missing_rebuild_command_handler
2026-03-26 20:02:47 +00:00
Timmy
877f69c897
feat: browser-based OAuth login flow (story 406)
...
Add three HTTP endpoints for OAuth login without terminal access:
- GET /oauth/authorize — generates PKCE params, redirects to
claude.com/cai/oauth/authorize with code=true and full scopes
- GET /callback — exchanges auth code for tokens via JSON POST to
platform.claude.com/v1/oauth/token, writes ~/.claude/.credentials.json
- GET /oauth/status — returns current credential state as JSON
Uses SHA-256 (sha2 crate) for PKCE code challenge. The authorize URL
targets claude.com/cai/ (not platform.claude.com) which is required
for Max/Pro subscriptions to grant user:inference scope.
Users visit http://localhost:3001/oauth/authorize in their browser
to authenticate. Matrix/WhatsApp can send this link when auth fails.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-26 19:58:18 +00:00
Timmy
710b604b7c
feat: auto-refresh expired OAuth token for Claude Code PTY (story 405)
...
Detect authentication_failed errors from the Claude Code PTY stream
and automatically refresh the OAuth access token using the stored
refresh token in ~/.claude/.credentials.json.
- New module server/src/llm/oauth.rs: reads credentials, calls
platform.claude.com/v1/oauth/token with JSON body, writes back
- PTY provider detects "error":"authentication_failed" via AtomicBool
- chat_stream retries once after successful refresh
- Clear error message if refresh also fails
On success the retry is transparent. On failure the user sees:
"OAuth session expired. Please run claude login to re-authenticate."
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-26 19:58:04 +00:00
Timmy
e66149e07c
storkit: done 397_bug_selection_screen_directory_picker_unreadable_in_dark_mode
2026-03-26 11:16:24 +00:00
dave
faf8734ea8
storkit: accept 393_story_pipeline_stage_notifications_for_whatsapp_and_slack_transports
2026-03-25 19:35:57 +00:00
dave
862f0704be
storkit: accept 394_story_whatsapp_and_slack_permission_prompt_forwarding
2026-03-25 19:31:56 +00:00
dave
d3df1586c6
storkit: accept 395_refactor_fix_npm_deprecated_module_warnings
2026-03-25 19:27:55 +00:00
dave
8a1996e0e4
storkit: accept 390_bug_whatsapp_missing_async_command_handlers_for_start_rebuild_reset_rmtree_assign
2026-03-25 19:21:55 +00:00
dave
61f5a0c3be
storkit: accept 392_refactor_extract_shared_transport_utilities_from_matrix_module_into_chat_submodule
2026-03-25 17:59:45 +00:00
dave
d7bc785de1
storkit: accept 391_bug_strip_prefix_ci_panics_on_multi_byte_utf_8_characters
2026-03-25 17:54:45 +00:00
dave
eaac665a9f
storkit: accept 389_story_whatsapp_phone_number_allowlist_authorization
2026-03-25 17:39:44 +00:00
dave
d702aa59c4
storkit: accept 387_story_configurable_base_branch_name_in_project_toml
2026-03-25 17:30:43 +00:00
dave
47163d235c
storkit: done 390_bug_whatsapp_missing_async_command_handlers_for_start_rebuild_reset_rmtree_assign
2026-03-25 15:44:38 +00:00
dave
a7342fc9d3
storkit: done 393_story_pipeline_stage_notifications_for_whatsapp_and_slack_transports
2026-03-25 15:37:57 +00:00
dave
f5024b2648
storkit: done 394_story_whatsapp_and_slack_permission_prompt_forwarding
2026-03-25 15:34:54 +00:00
dave
65e3643655
storkit: done 395_refactor_fix_npm_deprecated_module_warnings
2026-03-25 15:31:30 +00:00
dave
64e2df20b7
storkit: create 390_bug_whatsapp_missing_async_command_handlers_for_start_rebuild_reset_rmtree_assign
2026-03-25 15:21:32 +00:00
dave
f05c6a42b0
storkit: done 392_refactor_extract_shared_transport_utilities_from_matrix_module_into_chat_submodule
2026-03-25 14:46:06 +00:00
dave
5a87d55dd4
storkit: done 391_bug_strip_prefix_ci_panics_on_multi_byte_utf_8_characters
2026-03-25 14:05:03 +00:00
dave
58ee82c988
storkit: done 390_bug_whatsapp_missing_async_command_handlers_for_start_rebuild_reset_rmtree_assign
2026-03-25 13:47:24 +00:00
dave
49ac23044a
storkit: done 389_story_whatsapp_phone_number_allowlist_authorization
2026-03-25 13:42:35 +00:00
dave
60c0c95f38
storkit: done 387_story_configurable_base_branch_name_in_project_toml
2026-03-25 13:33:45 +00:00
dave
25c8b1ec25
storkit: accept 386_story_unreleased_command_shows_list_of_stories_since_last_release
2026-03-25 02:13:11 +00:00
dave
bcb7cfabee
storkit: accept 385_story_slack_markdown_to_mrkdwn_formatting_conversion
2026-03-25 02:02:10 +00:00
dave
d4dad1d556
storkit: accept 384_story_whatsapp_markdown_to_whatsapp_formatting_conversion
2026-03-25 01:34:08 +00:00
dave
4394ab3fed
storkit: done 386_story_unreleased_command_shows_list_of_stories_since_last_release
2026-03-24 22:23:05 +00:00
dave
ac52a8bb4e
storkit: done 385_story_slack_markdown_to_mrkdwn_formatting_conversion
2026-03-24 22:12:39 +00:00
dave
6146a173f1
storkit: done 384_story_whatsapp_markdown_to_whatsapp_formatting_conversion
2026-03-24 21:54:19 +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
dave
0fa63e2de3
storkit: accept 382_story_whatsapp_transport_supports_twilio_api_as_alternative_to_meta_cloud_api
2026-03-24 21:33:45 +00:00
dave
752c3904bf
storkit: accept 380_story_assign_command_restarts_coder_when_story_is_already_in_progress
2026-03-24 19:02:42 +00:00
dave
bac53ac09a
storkit: accept 381_story_bot_command_to_delete_a_worktree
2026-03-24 18:49:41 +00:00
dave
b2ef2eca5f
storkit: accept 368_story_web_ui_oauth_flow_for_claude_authentication
2026-03-24 18:48:40 +00:00
dave
fb05f71e76
storkit: accept 379_bug_start_agent_ignores_story_front_matter_agent_assignment
2026-03-24 18:44:36 +00:00
dave
bd281fd749
storkit: done 383_refactor_reorganize_chat_system_into_chat_module_with_transport_submodules
2026-03-24 17:57:24 +00:00
dave
7223fa2f10
storkit: done 382_story_whatsapp_transport_supports_twilio_api_as_alternative_to_meta_cloud_api
2026-03-24 17:36:35 +00:00
dave
88b02cf746
storkit: done 380_story_assign_command_restarts_coder_when_story_is_already_in_progress
2026-03-24 15:05:55 +00:00
dave
a904cda629
storkit: done 381_story_bot_command_to_delete_a_worktree
2026-03-24 15:02:54 +00:00
dave
a8630f3e1b
storkit: done 379_bug_start_agent_ignores_story_front_matter_agent_assignment
2026-03-24 14:59:32 +00:00
dave
0b3ce0f33e
storkit: done 368_story_web_ui_oauth_flow_for_claude_authentication
2026-03-24 14:54:30 +00:00
dave
ed3c5f9c95
storkit: accept 376_story_rename_mcp_whatsup_tool_to_status_for_consistency
2026-03-24 11:10:25 +00:00
dave
59d1a2c069
storkit: done 376_story_rename_mcp_whatsup_tool_to_status_for_consistency
2026-03-24 11:09:21 +00:00