Split The code is public; the app answers only to the crew.
Rebuy: one button that buys what you had last round, for the twelve freeze times you spend clicking #59
API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN)
Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)
API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN)
Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)
Correction after #87 (pull #92): the body says renderBuy in src/client/main.ts rebuilds the grid, and that function no longer exists. The buy menu is now a pure src/client/buy.ts — buyMenu(world, player) returns rows with a state of ok | owned | poor | side | closed and a why string — and main.ts only paints them (paintBuy, buildBuyGrid, rebuilt only when the set of items changes).
This makes the issue smaller and its home obvious: the rebuy rule belongs in buy.ts beside buyMenu, as a pure function from a remembered loadout and the money to hand, to the list of items to buy in order — with buy.test.ts already there to extend. main.ts gains a button and the call, nothing more. Everything else in the body still stands.
A competitive match is up to twenty-four freeze times, and each one is the same four clicks: rifle, kevlar, kit, grenade.
renderBuyinsrc/client/main.tsrebuilds a grid of every buyable thing and that is the only way to spend money — there is no rebuy, no autobuy, and nothing remembers what you had when you died. CS has had both for twenty years because the buy menu is not the game.Done looks like:
BuyItems to buy in priority order — armour before a rifle when both will not fit, the rifle before the grenade, nothing that is already carried, nothing that cannot be afforded. It buys as much of last round as the money allows and says what it skipped.moneyand never buys the other side's gun.bun testgreen, README's Playing names the key.Not in this issue: a full autobuy that decides a loadout from the money alone, buy binds per item, and any change to prices or to what
buyaccepts.Files I expect to change: a new
src/client/rebuy.ts+ its test,src/client/world.ts(the remembered loadout),main.ts(the panel and the key),input.ts(the key),src/pages/game.ts(the pad button and the hint),README.md.Risks:
world.ts'sstartRoundis where the loadout has to be read and written, next to the ammo re-arm that #24 tuned and the grenade rule #36 just added — do not disturb either, and add a test that a gun taken off a body last round is what gets rebought.main.ts's buy panel is also touched by #43 (pausing) and #38 (difficulty in the overlays); keep to the panel's top row and the key.Who: scout — a pure decision, a panel button and a key.