Windows App - Gidntsquia/deadlock-street-brawl-helper GitHub Wiki
Windows App
The packaged Windows build (electron/) skips the capture picker and draws the advice straight onto the Deadlock window, with no floating overlay window to place by hand.
npm run dist # Windows only; builds release/*.exe (installer + portable)
Start Deadlock in borderless windowed mode, then launch the exe: capture starts on its own once the Deadlock window is found, no picker dialog. The advice (ranked cards, RE-ROLL banner, ability order) is drawn in a small always-on-top panel, so you never have to alt-tab. Ctrl+Shift+O toggles the overlay; the tray icon also has a Quit item. Every offered card gets a small plate above it with its tier letter and Score: <n> (the app's score). The item to take has a teal-filled plate and a 3 px teal outline around the card; the others get a charcoal plate with a thin teal border. Hover a plate to see where its score comes from (win rate, pick rate, hero fit, and so on, as signed numbers that add up to the score); the overlay never takes clicks or focus. The control window is a frameless dark window with its own title strip; it remembers its size and position.
The overlay is blank (its window hidden) at all other times: it only appears while the item draft screen is up, and for about 15 seconds after the draft closes, when a picture of the game's ability points panel shows this round's standard points highlighted (earlier rounds greyed with a check). The app reads the game through Chromium's older window capturer, so there is no yellow capture outline around the Deadlock window. If Deadlock isn't running, the app says "Deadlock window not found" instead of capturing some other window (matched by the game's exact window title, so the app's own window is never mistaken for it). The browser path still works cross-platform and needs no packaging.
First-run check
The first time the app opens it shows three checks: Borderless, window size, and capture, each with Show me (test
mode). The tray entry First-run check opens it again. Borderless and true fullscreen both have no title bar, so the
app cannot tell them apart from the window alone. If the screen reads solid black for 10 seconds in a row while
Deadlock is in front and fills its monitor, the capture line shows the hint Capture reads black. If Deadlock is in Fullscreen, switch to Borderless Windowed. A short dark screen (loading, lobby, a fade) never shows it: any picture,
draft, round banner or loading-screen name clears it at once. (Before, 3 black reads in a row were enough, so a
borderless loading screen got the fullscreen verdict.) The debug log records each change as probe.black.
Developing from WSL
npm run dev:electron run inside WSL boots Linux Electron under WSLg, which can never find or capture the Deadlock window. Use npm run win:dev instead: it syncs the repo to a native Windows path and launches real Windows electron.exe from there. (Running dev:electron from an actual Windows terminal, in that synced copy, also works.) npm run win:e2e runs the same way end to end and writes a pass/fail report to logs/win-e2e.json. npm run win:demo -- choice1 (or choice2) runs test mode invisibly and saves what the overlay drew to logs/win-demo.png; nothing appears on screen while it runs, and it refuses to run if a real window titled "Deadlock" is open.
Test mode
In the app's control window press Test mode (dummy Deadlock window). A dummy window titled "Deadlock" opens on your monitor showing a real draft screenshot, and the app treats it as the game: it captures it, reads the cards, advises, and draws the overlay on top. Pick hero/round as in a real game; use the Screenshot menu next to the button to switch between the available screenshots (public/demo/*.png) and the cards, advice and overlay follow. Turn test mode off closes the dummy. If a real Deadlock window is open, test mode refuses and says so in the app.
Detect now (F8) and the status dot
Detect now. If the app misses a draft screen, press F8 (works while Deadlock has focus) or the Detect now (F8) button next to Start capture (the tray menu has it too). It makes one try: it reads the game window once, right then. If the draft screen is there, the usual advice and plates appear within about 2 seconds. If not, the app window says "No draft found" and the app goes back to automatic detection. Nothing is drawn on the game either way except the normal plates. F8 is registered only while a Deadlock window exists, so it stays free for other programs; if another program already holds F8 the app window says "F8 is in use by another program" and the button still works.
Status dot. A small dot sits in the top-left corner of the game window while you are not in a match (launch, lobby, menus), so you can see the app is running. Teal: watching for a draft. Amber: reading a draft. Grey: the game was found but capture failed. Point at it to see one line, e.g. "Brawl Helper: watching for draft. F8 = detect now". It hides once the first draft of a match is read (automatically or by F8), comes back after 10 minutes with no draft or when Deadlock restarts, and is hidden whenever Deadlock is not the foreground window. Clicks go through it to the game.