From 39558171e9bfb64651faaa2b2d24864dcc803068 Mon Sep 17 00:00:00 2001 From: BlackMark Date: Tue, 23 Jun 2026 13:31:08 +0200 Subject: [PATCH] Add reconnect + graceful-disconnect tasks to the roadmap Split the roadmap into Current tasks and Future work. Current tasks (new, this session): - Graceful disconnect asks the DLL to disable all subsystems (game runs vanilla, DLL stays injected/dormant), on an explicit Disconnect and on graceful exit. - Reconnect to an already-injected DLL, including across a tool restart/crash, by detecting the live DLL via its IPC heartbeat and re-attaching to the same per-pid section without re-injecting. DLL self-cleanup on host crash is out of scope by design. Future work: the pre-existing open directions (per-game profiles, multi-guest pad mapping, raw-mouse movement forwarding, native-D3D12 capture path), moved under their own subsection so they read as deferred rather than active. Co-Authored-By: Claude Opus 4.8 --- README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fee84de..cc8a2d1 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,21 @@ default** and covers anything the hooked path doesn't. ## Roadmap -Open tasks (completed work lives in **Lessons learned** + the test suite, not here): +Completed work lives in **Lessons learned** + the test suite, not here. + +### Current tasks + +- **Graceful disconnect unhooks everything.** On an explicit *Disconnect* and on a graceful tool + exit, ask the injected DLL to disable *all* subsystems so the game runs exactly as if it was never + hooked (every hook's original bytes restored). The DLL stays injected but dormant — ready for a + later reconnect. Today neither path tells the DLL anything, so the hooks are left active/frozen. +- **Reconnect to an already-injected DLL.** Support disconnect → reconnect reusing the DLL that's + already in the game, *including across a tool restart or crash*: the host detects the live DLL + (via its advancing IPC heartbeat on the per-pid section), re-attaches to the same shared section, + and resumes control without re-injecting. (DLL self-cleanup on host *crash* is explicitly **not** + required — relaunch, reconnect, then disconnect gracefully to clean up.) + +### Future work - **Per-game profiles** — persist each game's subsystem / capture-mode / audio choices and re-apply them on attach.