Skip to content

feat: sign in again to a saved way in, and a Delete button under every Slack message - #14

Merged
dohooo merged 1 commit into
mainfrom
feat/sign-in-again-and-slack-delete
Oct 16, 2026
Merged

dohooo merged 1 commit into
mainfrom
feat/sign-in-again-and-slack-delete

Conversation

@dohooo

@dohooo dohooo commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Requested by Caspian

Before: when a saved sign-in expired (the Dosu project's GitHub session, which blocked the 10-15 scheduled run), the console offered no way to renew it: the GitHub row always read ready, and "Add a way in" hid the ways the Project already had. A Journey blocked before its first frame showed a collapsed recording area with no reason. ShipBash's Slack messages could only be removed by a workspace admin.

After: every saved way in except "Account + password" has Sign in again, which opens the sign-in browser on the Project's saved state and saves the new session onto that same row (its Projects, its run binding and, for the same GitHub account, its TOTP authenticator stay). A blocked Journey shows its dark cover with the reason and "Hand off to agent". Every message ShipBash posts in Slack carries a 🗑 Delete at its foot that anyone in the conversation can use after a confirm dialog.

How:

  • Sign in again: completeSignInTakeoverContract takes an optional signInId; the shared takeoverRow() resolves it to the Project's bound row (404 unbound, 409 while it is being checked or on a method mismatch) or creates a new one, and both the local gateway and production-sign-in-takeover.ts save through it. The add page doubles as /settings/sign-ins/[signIn]/again, and the team Sign-ins list links to it per row.
  • Blocked walk cover: when the cover is shown, the empty-frame placeholder keeps its 240px box (visibility: hidden on its text instead of display: none), so the cover has room.
  • Slack Delete: slack-delete-row.ts builds the context_actions row (trash icon_button with a confirm) and withDeleteRow() keeps it last. Alerts, recordings and the connection message add it at delivery; the @ShipBash adapter wraps chat.postMessage / chat.update / chat.stopStream on each of its Web API clients. The click deletes the message as the bot (and any shared recording file), tells only the clicker if that fails, and forgetSlackMessageInternal closes alert threads opened under the message and drops a deleted to-do reply in one transaction. Slack's message_deleted event runs the same cleanup, so an admin's delete is covered too.

…y Slack message

- Sign in again: every saved way in except account + password can be signed in to again; the finished takeover saves onto the same row (takeoverRow), keeping its Projects, its run binding and, for the same GitHub account, its TOTP authenticator.
- Blocked walk cover: the empty-frame placeholder keeps its box under the cover, so a Journey blocked before its first frame shows its reason instead of collapsing.
- Slack Delete row: every message ShipBash posts carries a confirmed Delete at its foot; the click deletes the message (and any shared recording) as the bot, and the store closes alert threads and drops to-do replies hung from it, also on Slack's message_deleted event.
@dohooo dohooo self-assigned this Oct 16, 2026
@dohooo
dohooo merged commit 7b0203c into main Oct 16, 2026
3 checks passed
@dohooo
dohooo deleted the feat/sign-in-again-and-slack-delete branch October 16, 2026 02:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant