v0.45 — DRAG-AND-DROP LAYOUT
New: FREE-FORM LAYOUT — OPTIONS → PANEL LAYOUT now offers two modes. GRID is the tidy default column layout. FREE-FORM lets you place every panel exactly where you want it.
New: ARRANGE MODE — hit ARRANGE ▸ to enter edit mode. Drag any panel by its header to move it; drag the corner grip to resize it. A toolbar across the top lets you LOCK everything in place, toggle SNAP-to-grid, RESET to the default arrangement, or finish with DONE.
New: LOCK — freeze your layout so a stray drag never disturbs it during play. Toggle any time from the arrange toolbar.
New: SNAP — moves and resizes snap to a tidy grid by default; turn it off for pixel-precise placement.
New: Your arrangement, sizes, lock and snap preferences all persist between sessions. Resizing the browser keeps panels on-screen automatically.
Note: Mobile Mode always uses the stacked layout — free-form is a desktop feature. GRID mode is unchanged, so nothing moves unless you choose to move it.
v0.44 — LAYOUT & INTERFACE PASS
New: CUSTOMIZABLE LAYOUT — four regions (TOP BAR / LEFT / CENTER / RIGHT) and seven movable panels. OPTIONS → PANEL LAYOUT → ARRANGE: ◀ ▶ moves a panel between regions, ▲ ▼ reorders it within one. The grid does the aligning, so panels can never overlap or strand themselves. Your arrangement is saved between sessions; RESET DEFAULT is always one click away.
New: DEFAULT ARRANGEMENT — the Activity Tracker now runs across the top, Location / Location Actions / Travel stack down a wider left column (location names read in full again), the Market takes the center, and Heat-Rep / Stash hold the right.
New: MARQUEE SPEED — a speed button sits beside the collapse arrow: ‖ (paused) → ¼× → ½× → 1× → 2× → 3×. The default scroll is now half its old speed. Current setting is shown on the button and persists.
Polish: tighter, more consistent spacing across every panel; the layout uses the full width of the browser; travel labels and district headers are readable again at the new column width.
v0.43 — PHASE D: STANDING & NEW YEAR'S EVE
New: STANDING — eight named faces (Max, Nutbar, Jackal, Zoe, Tommy Salami, Chimes, Biscuit, Washy) each track how they feel about you. Do their contracts (+3) or just be a regular on their block (+1 a day). KNOWN → TRUSTED → FAMILY, shown as a permanent strip under your stash.
New: STANDING PAYS — on their block: KNOWN keeps 20% more product on hand for you, TRUSTED finds 20% more buyers, FAMILY gives you 5% better prices on everything.
New: NEW YEAR'S EVE — day 45 is no longer just the last day. On the morning of Dec 31 you commit to one night: THE BLOWOUT (needs REP 60 and two people who count you TRUSTED — everything you hold moves at party prices, and heat with it), THE QUIET SCORE (needs $25k banked or two people who know your name), or LIE LOW (always open — cools 30 heat, keeps what you have).
New: MIDNIGHT — at the century's end, whatever you're still carrying moves at your chosen night's rate, then Y2K swings your entire net worth. THE BLOWOUT swings ±40%; LIE LOW barely moves. The night can cost you badly. It never kills you.
New: NYE countdown appears in the location panel in the final week; your night and who stood with you are recorded in the run summary and your career history.
v0.42 — PHASE C: THE MARKET ENGINE
New: FINITE STOCK — every spot has limited units per drug, per block (cheap drugs plentiful, top-shelf scarce). Weak spots sometimes run DRY. Supply follows the party clock and weekends.
New: DEMAND CAPS — each spot only absorbs so many units per block (hover SELL to see it). Party demand peaks at NIGHT. Selling is a routing puzzle now, not a button.
New: ONE-CLICK TRADING — the trade modal is gone. BUY takes the most the street gives you (stock × cash × front limit); SELL moves the most it absorbs. ½ chips halve either. Hover any button for the numbers.
New: DEALER FRONT LIMITS — carry capacity is GONE. What limits a buy is how much dealers will front you: grows with REP (15 → 90), plus bags: Fanny +5, Duffel +10, Massive Duffel +20 (keeps its +25% heat), Reinforced Case +25.
New: STREET SATURATION — dump too much in one spot and you dent it (SAT tag): price and demand dip until it recovers (~halves nightly). Spread your sales.
New: WEATHER FORECAST — tomorrow's weather shows in the location panel, with PARTY NIGHT / SLOW SUNDAY notes. Weather price effects doubled so the forecast is worth reading.
New: CITY TRAITS — every run rolls 2 hidden quirks (a dry Riverside, a weed glut, extra downtown patrols…). The street hints at them on day 2. No two runs trade the same.
Removed: stash capacity, the trade modal and its chips, and pre-engine saves. ⚠ ALPHA SAVE WIPE.
Fix: the three-zone dashboard now actually engages on wide screens — a wrapper div was swallowing the grid, squeezing the whole game into the left rail.
v0.41 — PHASE B: DASHBOARD / MOUSE-ONLY / DISTRICT IDENTITY
New: FULL-SCREEN DASHBOARD (desktop ≥1150px) — three fixed zones: where you are & how you move (left), the market with room to breathe (center), your state & the log (right). Every panel has a permanent address.
New: DISTRICT CROSSING heads-up — before a 2-block crossing on foot, a quick prompt shows the cost and your arrival time. [CROSS], [STAY], or [CROSS — AND DON'T ASK AGAIN]. Vehicle crossings (1 block) never prompt. Toggle any time: OPTIONS → DISTRICT WARNINGS.
New: DISTRICT COLORS — Center City cyan, Northwest gold, Riverside magenta, Outskirts green. Applied to the travel columns, the location panel border, and a district label by the location name. You always know where you are.
New: MOUSE-ONLY STANDARD — the bank is chip-based now (25% / 50% / ALL — no typing), trade quantities have -10/-1/+1/+10/HALF/MAX chips, Zoe's pawn counter gained HALF, and the name screen has [ ⚄ RANDOM NAME ]. Typing is never required anywhere. Scrollbars and number fields wear the terminal aesthetic — no native browser chrome.
v0.40 — PHASE A: THE CALENDAR ERA (time, districts)
New: REAL CALENDAR — the run is Wed NOV 17 → Fri DEC 31, 1999. Weekends are real weekends. Day 45 is New Year's Eve (the NYE finale lands in a later phase).
New: TIME BLOCKS — each day is MORNING / AFTERNOON / EVENING / NIGHT. Travel spends blocks; prices re-roll every block. Party drugs peak at NIGHT (Riverside hardest, FRI/SAT nights on top). Sundays slump. Night patrols are thicker; Mondays run quiet.
New: DISTRICTS — Center City, Northwest, Riverside, Outskirts (4 spots each). Inside a district travel costs 1 block; crossing costs 2. Vehicles now cut crossing costs: Scooter = first cross of the day 1 block; Dirt Bike / Honda / Sports Car = all crossings 1; SUPER CAR = all trips 1 and the FIRST trip each day is FREE.
New: [ ▸ WAIT ] passes one block in place (catch the night market where you stand). [ 🌙 END DAY ] ends the day anywhere — at your hideout it means sleeping safe: HEAT -5 to -12.
Changed: Uncle's rescue now covers $10,000 of debt (extra days don't exist — NYE is immovable).
Removed: the entire moves-per-day economy, hideout WAIT (superseded), and pre-calendar save data. ⚠ ALPHA SAVE WIPE — new save era begins.
v0.34 — UI STABILITY PASS
New: LOCATION ACTIONS panel — Shop, Bank, and every specialist (Max, Nutbar, Jackal, Zoe, Deli, Chimes, Biscuit, Washy, Hideout) moved out of the location box into a dedicated 3-slot bar above the market. Slots are FIXED: specialist / shop / bank — empty slots show a dim placeholder so nothing ever shifts.
Changed: TRAVEL grid is now layout-stable — every button is one line, identical size in every state. Your current location greys out with a magenta tint; the locked Hideout shows 🔒 (hover for the REP requirement). No more [HERE] / REP 10 second lines.
Changed: MOVE COUNTER — bigger, on its own fixed-height row above the travel grid. Pips left, status right; the LAST MOVE warning changes color, not layout.
Changed: WAIT at the hideout now cools HEAT 5–12 (was 1–3). A full day should be worth something.
Removed: the duplicate heat mini-bar in the HEAT panel header (the detailed display remains; mobile keeps its sticky-header readout).
Note: New standing principle — interface elements stay in fixed positions; only the Activity log is expected to move. Spatial memory is a feature.
v0.33 — NPC CONTRACTS (H1)
New: CONTRACT SYSTEM — 26 unique jobs from named faces around the circuit (Corvus, Max, Zoe, Nutbar, Wally, Chimes, Mr. Fire Blast, and more). One active at a time.
New: Offers find you while you travel — pick Option A, Option B, or WALK AWAY. Walking can cost you: rep, cash, stash, even a salami. Consequences weigh what you have to lose.
New: 8 job types — deliveries, drops (reach a spot carrying goods, or carrying HEAT), sell quotas, quiet buy-ups, cash targets, lay-low stretches, holding someone's share, hideout warehousing.
New: Every offer posts its REWARD, RISK, DEADLINE, and DIFFICULTY (● EASY / ●● RISKY / ●●● HARD) before you accept. Fail penalties short on cash become DEBT.
New: Active Contract tracker in the STASH panel — expandable like ITEMS, shows objective, progress, and days left; turns red on the final day.
Note: Contracts are modular — new jobs are single template entries. More coming.
v0.32 — DESIGN-REVIEW CLEANUP PASS (C1–C8)
Changed: TRAVEL IS FREE — the $5–70 cash costs were noise against the economy. Moves are the real currency; a new MOVE TICKER in the Travel panel shows moves left and warns when your LAST move will end the day.
Changed: SUBWAY near-death — the 1% instant death broke our fairness rule. Now a brutal near-miss: lose half your carried stash, HEAT +15. Only at LETHAL heat does the tunnel finish the job.
Changed: LUCKY MIRRORS now visibly deflect 30% of bad events (watch for the 🪞 flash in the log) instead of an imperceptible 12% weight shave.
Changed: BISCUIT treats/feeding capped at once per DAY (was per visit — a Super Car made him a rep printer). Petting stays per visit.
Changed: Your uncle's one-time rescue now also buys you +2 EXTRA DAYS on the circuit.
Removed: TREND sparkline column (fourth redundant price signal — click a product name for the real chart) and the dead price-trend machinery behind it.
Removed: COMPACT MARKET option (superseded by per-drug hiding and Mobile Mode) and dead state (hotdog item key).
Note: C8 values audit — no rebalance; existing prices, caps, and rates confirmed and kept as-is.
v0.31 — MOBILE MODE
New: MOBILE MODE — a dedicated phone layout, selectable on the main menu and in Options. Auto-detected on first load (touch + narrow screen).
New: Bottom tab bar (MARKET / TRAVEL / SPOT / STASH / LOG) — one section at a time, no scrolling hunts. Arriving somewhere jumps you to MARKET.
New: Sticky condensed header on mobile — day, cash, bank, debt, stash, moves, and a live HEAT readout always visible.
New: Mobile market rows are touch cards — product, price, held on one line; big BUY/ALL/SELL/ALL buttons below. Tap a product name for its full price chart.
Changed: Text is auto-boosted ~45% on mobile (your Text Size setting still applies on top). UI Scale is desktop-only.
Note: Desktop Mode is unchanged — same layout, same behavior. One shared codebase; both modes run the same game logic.
v0.30 — NEW ITEMS / EVENT HISTORY / UI PASS
New: 5 items — POLICE SCANNER (Max, $120k: encounters -20%), KEVLAR VEST (Jackal, $90k: +15% shootout/lethal survival), SMUGGLER'S CASE (Zoe, $130k: seizures take half as much), LAWYER ON RETAINER (Nutbar, $100k: fines -30%), DIRT BIKE (Chimes, $200k: 3 moves/day, no breakdown, heat +10%).
New: EVENT HISTORY — click any underlined Activity log entry to re-read the original event window. Replays are read-only: no rewards, penalties, or rolls are ever reapplied.
New: In-game confirm dialogs — hideout upgrades (with full cost/benefit breakdown), END RUN, new-run save overwrite, and career clearing no longer use browser popups.
Changed: UI sizing pass — all interactive buttons now ≥7px (SHOP/BANK/action buttons, topbar, Options controls, MAP, hideout buttons); labels ≥6px; 5px reserved for footnotes.
v0.29 — PRICE MEMORY / ENDGAME ARCS / QOL
New: PRICE HISTORY — click any product name (or its trend line) for a stock-style chart of every price you've seen, plus a best-price-first "last seen by location" table.
New: ENDGAME ARC — one guaranteed finale per run in the last stretch: The Last Score (big buyer, 2× avg price), Final Challenge (rival showdown — rep & weapons matter), or Crackdown (4-day police surge, prices +20%, REP +10 for surviving).
New: REP PERKS past 150 — dealer hookups 60%/65% off and up to 40 units; hideout pushers sell +5%/+10% higher at REP 150/200.
New: BUY [ALL] button — instantly buy the max you can afford, mirroring Sell [ALL]. All Buy/Sell controls now identical in size and alignment.
New: FLAVOR POPUPS toggle in Options — OFF sends flavor-only events to the Activity log instead of a modal. Anything with choices or gameplay effects always pops up.
v0.28 — AUDIT & STABILITY PASS
Fix: Event threads (Rival/Cop Shadow/VIP) now survive save/load — they previously vanished on every autosave.
Fix: Text Size no longer double-applies (zoom + transform stacked in Chrome/Edge/Safari; 120% rendered as 144%).
Fix: FIT-to-screen UI scale math corrected.
Fix: REP milestone warnings now match actual mechanics (police chance +4%/+8% at 80/150; heat gain +10%/+20% at 150/200).
Fix: "Tapped Out" no longer triggers while you still have drugs stashed at the hideout or uncollected pusher earnings.
Fix: Pusher daily-cap accounting — units removed from stash now always match cash credited.
Fix: Old saves auto-migrate (market cycles, price history, event counters, hideout drug keys).
Fix: Graveyard "Word From the Dead" now cools heat at REP 150+ instead of silently doing nothing.
Changed: News ticker rebuilds once per day instead of on every move (messages actually finish scrolling).
Changed: Travel tip corrected — the day advances on your LAST move, not the first.
Changed: HELP scoring line now describes the real formula (net worth × rep × days × hideout + items).
Polish: Activity log capped at 150 DOM entries (long runs no longer accumulate thousands of nodes).
Polish: Quick-sell [ALL] button font readable; quick sells log their rep gain like normal trades.
Polish: Mini heat bar shows the full green→red gradient instead of stopping at orange.
Polish: Panel headers keyboard-operable (Tab + Enter/Space); OS reduced-motion setting respected.
Polish: Starting a new run warns before erasing an existing save.
Cleanup: Removed dead code — unused items modal (superseded in v0.21), tradesForLevel(), unused variables.
v0.27 — PHASES 2-5: EVENTS, MARKET, ECONOMY
New: Persistent multi-stage event threads — Rival Takeover, Cop Shadow, VIP Contact (3 stages each, ~2-3 days apart).
New: Dynamic market cycles — droughts (price x2-3.2) and floods (price x0.3-0.55) per drug, 3-5 day duration.
New: Loan shark escalation — Day 5 penalty, Day 8 collector takes 30% cash + HEAT, Day 10 death (unchanged).
New: Reputation consequences — REP 80+/150+/200+ milestones increase heat gain and police attention.
New: Price history sparklines — mini trend graph per drug in the market table (last 5 prices).
New: Quick-sell [ALL] button — instant sell of full held quantity without opening the trade modal.
New: Hideout pusher income balancing — $150k/day earnings cap, saturation penalty above 80/150 units.
New: Location event density weighting — under-visited locations get up to +60% unique event chance.
v0.26b — FONT SCALE FIX
Fix: Text Size controls now work correctly — uses CSS zoom (Chrome/Edge/Safari) with transform:scale fallback (Firefox).
Fix: Default fontScale=1.0 restored; corrupted/out-of-range settings auto-corrected on load.
New: [ RESET ALL SETTINGS ] button in Options resets everything to defaults.
New: Settings validation on load prevents corrupted scale values from breaking layout.
v0.26 — OPTIONS MENU / UI SETTINGS
Changed: Font sizes reverted to original proportions (v025 +2px bump removed).
New: OPTIONS button replaces SAVE in topbar. SAVE moved inside Options menu.
New: Text Size controls — A- / A+ / Reset (60%–180% range, persists in localStorage).
New: UI Scale controls – / + / Fit to Screen / Reset (50%–150%, transforms game viewport).
New: Resolution presets — Compact (1280×720), Standard (1920×1080), Large (2560×1440).
New: Animations toggle — disable all transitions/animations for performance.
New: Compact Market toggle — hides VS AVG and trend columns for cleaner table.
New: Log Lines control — set 5–50 max visible activity log lines.
New: All UI settings persist between sessions via localStorage.
v0.25 — READABILITY + TRAVEL POLISH
Changed: All font sizes increased +2px across the entire UI for improved readability.
Changed: Travel buttons now show location name left-aligned and cost right-aligned on one line.
Changed: Travel grid changed to 4-column layout for balanced compact display.
v0.24 — UI POLISH PASS
Fix: Hidden drugs now have a working [+] restore button — always visible and clickable.
Fix: HIGH/LOW market labels no longer clip — VS AVG column has enforced min-width.
Fix: hiddenDrugs Set now serializes/deserializes correctly in save/load.
New: Log entries animate in (slide + fade).
New: Panel toggles give brief border-flash feedback.
New: Market rows animate in when restored from hidden state.
New: Music panel open/close uses double-rAF for reliable CSS transition.
Polish: All collapsible panels use unified 350ms transition timing.
Polish: Hidden drug rows dim to 45% opacity, brighten on hover; restore btn stays full opacity.
Polish: Mini heat pips sized correctly for compact header display.
Polish: Travel buttons have :active scale feedback. Modal scrollbars unified.
New: Collapsible panels — Location, Activity, Heat/Rep, Stash, Market, Travel all collapse individually.
New: Heat mini-bar always visible even when Heat/Rep panel is collapsed.
New: Drug hide/show buttons in market — collapse individual rows to reduce clutter.
New: Music player replaced with floating FAB button (bottom-right) + expandable panel.
New: News ticker is collapsible into a thin strip.
New: Travel grid redesigned — 8-column compact layout, all locations fit one row.
Changed: Player name truncated to 8 chars in topbar to prevent layout break.
Changed: Topbar stats use fixed-width columns, never wrap or shift.
Changed: Action buttons in location panel are shorter labels (BANK, MAX, NUTBAR, etc.).
v0.23s — STABILIZATION PASS
Fix: Duplicate volatile weekend price spike removed (was ×1.44, now correct ×1.20).
Fix: Hideout robbery reduction now correctly multiplicative (-25% per hire, was flat -0.02).
Fix: Old saves missing new drug keys now auto-migrate via ensureHideoutDrugKeys().
Fix: window._hcost/_rcost global leakage replaced with G-scoped state.
Fix: Removed stale BETA/PLANNED text from title screen.
Fix: startGame log updated to v0.23.
Cleanup: Removed dead CSS (.action-btn-col, .rep-bar, .items-row, .btn-lime, .item-badge).
Cleanup: Defensive null guards in pusher sales and hideout stash access.
v0.23 — EVENT THROTTLING / NEW DRUGS / CAREER PAGE / REP TITLES
New: Event repetition throttling — recently fired events are suppressed to avoid repetition.
New: 4 new drugs: CLOVE (volatile weed), CHROMA (volatile shine), FLYTE (volatile lucy), JAFFA (stable classic).
New: Career page — browser-based run history, sorted by score with date/time.
New: Rep titles extended to Level 420. ★ THE GOAT ★ is the final title.
New: Rep title now always shown on the game-over card.
Fixed: High school ex event no longer names the ex with an NPC name.
Changed: Hideout tier rep requirements spaced out (10/30/60/90/130/175/230/300).
Changed: Mansion renamed to Mio's Mansion.
New: Rent payment section in hideout modal.
Changed: Hideout flavor text updated (removed mattress/lightbulb lines).
v0.22 — HIDEOUT SYSTEM
New: Full HIDEOUT system. Unlocks at REP 10. 8 upgrade tiers (Dark Alleyway → Mansion).
New: Stash drugs at hideout, withdraw up to your stash cap.
New: WAIT action at hideout — spends 1 day, cools HEAT 1-3, resets moves.
New: RENT system — accrues daily, deducted from final score.
New: PUSHERS — Stefan, B-Rad, Wally sell from hideout stash passively each day.
New: SECURITY — Toby (dog) and Ruby King reduce robbery chance.
New: Hideout robbery events — 8% daily base chance when stash is non-empty.
New: PUSHER EARNINGS — collected at hideout with 10% dealer cut.
New: Score bonus — +10% per hideout level (max +80% at Level 8).
New: Hideout greyed/locked in travel grid until REP Level 10.
v0.21 — VEHICLE DISPLAY / ITEMS INLINE / HONDA COST / TIPS PASS / WASHY+BISCUIT FLAVOR
New: Current vehicle shown in stash panel with bonus moves label.
New: Items inline in stash panel as an expandable button section.
Changed: Mio's Honda repair cost 3x (was $250-850, now $750-2550).
Changed: Tips and mouse whispers updated for accuracy (rep unlocks, vehicle moves, etc.).
Changed: More flavor variety for Washy poetry/advice/romance, Biscuit reactions.
Changed: Patch notes renamed to v0.xx format.
v0.20 — NEW TITLES / NEW EVENTS / BALANCE
New: 11 new rep titles (250-340), final title shifted to 350.
New: Positive events — Recognized by Old Ravers, Busker Performance, BrayCo Envelope.
New: Negative events — Teenagers Mock Your Outfit, Rival Dealer Rumors, Officer Dill Returns.
New: Neutral events — Bus Stop Stranger, Off-Duty Compliment, High School Ex, Hot Dog Chris.
New: Graveyard events — The Gnomes, Bad Energy.
Changed: Random bag upgrade now +5 stash (was +20), rarer weight.
v0.19 — 4-COL HUD / FIXED TRAVEL / AUTOSAVE / ITEMS MODAL
New: 4-column top row: Location+Actions | Activity | Heat+Rep | Stash.
New: Heat and Rep moved to own labeled panel (3rd column).
New: Travel grid positions fixed — current location shows [HERE], buttons never shuffle.
New: Autosave on every travel (silent, no popup).
New: Items shown as compact clickable button — opens modal with full effect descriptions.
New: HELP and QUIT buttons moved to topbar next to SAVE.
New: Actions embedded inside Location panel.
v0.18 — BANK SAFETY / LAYOUT / HIDEOUT / UI POLISH
New: Bank is now FULLY protected. Muggings, police fines, and debt collectors can only take cash-on-hand. Bank your money.
New: Bank access restricted to locations with no shops: Roosevelt, U Street, Dupont, Georgetown, Foggy Bottom, Navy Yard.
Changed: Activity log moved to split row alongside location box (above street market, left of stash column).
Changed: Hideout market shows ??? prices instead of a banner.
Changed: Travel section separator removed. MAP button larger with slow pulsing glow.
Changed: HOW TO PLAY fully rewritten and simplified.
v0.17 — SCORE REBALANCE / PRICE CAPS / DEATH CARD
Rep bonus reduced (÷150). Hard per-drug price caps. Night Club demand reduced. Spike probability cut 18%→10%.
Death now routes to end-game card with -50% score penalty. Rep title shown on end card.
v0.16 — POLICE REWORK / HEAT CAP 100
HEAT_MAX=100. Police tiered: minor/stop/raid/lethal. Lethal heat risks jail/death. Weapon upgrade logic.
v0.15 — SURGE REMOVAL / BALANCE
Surge system removed. CLR button in trade modal. Trade rep applies buy and sell.
v0.14 and earlier
Biscuit, Washy, vehicle overhaul, save system, pawn buyback, rep system, scoring, locations.