Skip to content

feat(dashboard): Kill Stuck button for failed sessions#351

Closed
Abhishekrajpurohit wants to merge 1 commit into
rmyndharis:mainfrom
Abhishekrajpurohit:feat/kill-stuck-button
Closed

feat(dashboard): Kill Stuck button for failed sessions#351
Abhishekrajpurohit wants to merge 1 commit into
rmyndharis:mainfrom
Abhishekrajpurohit:feat/kill-stuck-button

Conversation

@Abhishekrajpurohit

Copy link
Copy Markdown

Adds a Kill Stuck button to session cards with status === 'failed'.

Clicking shows a confirmation modal, then calls POST /api/sessions/:id/force-kill which triggers the engine-level forceDestroy() — killing Chromium processes holding the session's profile directory, then tearing down the client.

This PR was previously part of #317 (closed) which depended on a backend PR that was also closed. The backend is now on main as of v0.4.2+.

- Add Skull icon button on session cards with status 'failed'
- Confirmation modal before force-killing
- Call POST /sessions/:id/force-kill via new sessionApi.forceKill()
- i18n keys in all 9 locales
@rmyndharis

Copy link
Copy Markdown
Owner

Thanks @Abhishekrajpurohit! Heads-up: the backend this depends on (POST /api/sessions/:id/force-kill → engine forceDestroy()) wasn't actually on main — the original backend PR (#316/#329) was closed with an empty branch, so this button would currently 404.

I've just opened #352 with that backend, implemented the engine-neutral way: each adapter force-kills only its own resources (whatsapp-web.js SIGKILLs its own Chromium process — not a process-wide pkill that would take down other sessions; Baileys ends its socket), wrapped in the existing time-bounded/isolated teardown. The route + payload match what this PR calls.

Plan: merge #352 first, then this. Could you rebase on main once #352 lands so CI runs against the real endpoint? The dashboard side here looks good.

rmyndharis added a commit that referenced this pull request Jun 19, 2026
* fix(webhook): deliver session lifecycle events and key webhook hardening (#335)

* fix(security): pin outbound webhook and media fetches to validated IP (#338)

* fix(plugins): persist plugin enable/config and restore (#339)

* fix(message): persist bulk-sent messages, sanitize SSRF (#340)

* fix(engine): return the real id for forwarded messages (#341)

* fix(security): harden outbound requests, IPv6 SSRF (#344)

* fix(security): secret-file perms, key pepper, allowedIps (#345)

* fix(storage): bound tar imports, contain storage keys (#346)

* fix(session): reconcile late acks, serialize reactions (#348)

* fix(contract): webhook timeout, bounded shutdown, 501 (#350)

* feat(session): force-kill a stuck session (#352)

* merge #343

* merge #351

* chore(release): v0.4.3 — CHANGELOG, version bump (package.json/dashboard/swagger), README + docs
@rmyndharis

Copy link
Copy Markdown
Owner

Shipped in v0.4.3 (integrated via the release PR #354 and tagged v0.4.3). Thanks! 🎉

@rmyndharis rmyndharis closed this Jun 19, 2026
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.

2 participants