From 4945b936d3d3e9f003f16c5e27ca5eaba4f502de Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 15 Oct 2026 11:32:38 +0000 Subject: [PATCH] Remove the Heists tab: no heist cooldown worth tracking Research on issue #12 found only one sourced heist cooldown worth a timer (Cayo Perico). Decision 021 records it; the tab and the heist wording in README, package and link preview go. Co-Authored-By: Claude Opus 5.5 --- README.md | 4 ++-- docs/decisions/021-no-heist-tracker.md | 19 +++++++++++++++++++ docs/decisions/README.md | 1 + index.html | 2 +- package.json | 2 +- src/lib/tabs.test.ts | 2 +- src/lib/tabs.ts | 3 +-- 7 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 docs/decisions/021-no-heist-tracker.md diff --git a/README.md b/README.md index eaf201d..afe7f8e 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ > ([Claude Code](https://claude.com/claude-code)). A GTA Online companion that runs in your browser. Keep it open while you play, and it tracks your -businesses, safes and cooldowns, so you know when stock is full, a safe needs emptying or a heist -is ready again. +businesses, safes and cooldowns, so you know when stock is full or a safe needs +emptying. > **Status:** early development. Not usable yet; see the [issues](https://github.com/ToothyDev/LSOS/issues) for what's planned. diff --git a/docs/decisions/021-no-heist-tracker.md b/docs/decisions/021-no-heist-tracker.md new file mode 100644 index 0000000..bf3523b --- /dev/null +++ b/docs/decisions/021-no-heist-tracker.md @@ -0,0 +1,19 @@ +# 021: No heist cooldown tracker, no Heists tab + +2026-10-15, issue #12. + +## Decision + +- **No heist cooldowns are tracked**, and the Heists tab is removed. An old `#/heists` link + opens the default tab. +- The research (sources on issue #12) found one cooldown worth a timer: Cayo Perico, 144 minutes + solo or 48 with a crew, on real time. Every other heist has 48 minutes with a crew and no + sourced solo value, or no cooldown at all. +- **Not modelled:** the weekly completion bonus from The Kortz Center Heist update (more money for + the first finale each week), and the 7-day Cayo Perico period with worse loot. The second + would need its own separate tracker. + +## Why + +A list for one real cooldown is not worth a tab. A new issue can bring the tab back if one of the +items above turns out to be worth tracking. diff --git a/docs/decisions/README.md b/docs/decisions/README.md index 2046958..89c5c65 100644 --- a/docs/decisions/README.md +++ b/docs/decisions/README.md @@ -31,3 +31,4 @@ free number, add one line below. **Replacing one:** write a new decision, then m - [018](018-money-fronts.md) Money Fronts: one Car Wash safe card on the Safes tab, paid by the fronts and other businesses, heat per front (est.), missions and legal jobs - [019](019-owned-value-bonus.md) Money Front value bonus: owning Car Wash or Smoke on the Water adds 35% to Counterfeit Cash or Weed, far value adds the bonuses (est.), Helitours left out - [020](020-shut-down.md) Shut-down businesses: a Running/Shut down button next to Owned for biker businesses and the Bunker; shutting down clears the stock; no production, card greyed, nightclub goods locked, nothing to the Money Fronts safe +- [021](021-no-heist-tracker.md) No heist cooldown tracker: only Cayo Perico has one worth a timer; Heists tab removed diff --git a/index.html b/index.html index 9455491..4c30756 100644 --- a/index.html +++ b/index.html @@ -19,7 +19,7 @@ diff --git a/package.json b/package.json index 5af73ba..0a1b0c2 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "private": true, "license": "MIT", "version": "0.0.0", - "description": "Los Santos Operating System: a GTA Online business, heist and cooldown tracker that runs in your browser.", + "description": "Los Santos Operating System: a GTA Online business and cooldown tracker that runs in your browser.", "type": "module", "engines": { "node": ">=22" diff --git a/src/lib/tabs.test.ts b/src/lib/tabs.test.ts index 874fc26..4679b65 100644 --- a/src/lib/tabs.test.ts +++ b/src/lib/tabs.test.ts @@ -7,7 +7,7 @@ describe('tabFromHash', () => { }) it('accepts a hash without the slash', () => { - expect(tabFromHash('#heists')).toBe('heists') + expect(tabFromHash('#safes')).toBe('safes') }) it('falls back to the default tab for empty or unknown hashes', () => { diff --git a/src/lib/tabs.ts b/src/lib/tabs.ts index f34bcc1..5f334f5 100644 --- a/src/lib/tabs.ts +++ b/src/lib/tabs.ts @@ -2,7 +2,6 @@ export const TABS = [ { id: 'overview', label: 'Overview' }, { id: 'businesses', label: 'Businesses' }, { id: 'safes', label: 'Safes' }, - { id: 'heists', label: 'Heists' }, { id: 'weekly', label: 'Weekly' }, { id: 'settings', label: 'Settings' }, ] as const @@ -11,7 +10,7 @@ export type TabId = (typeof TABS)[number]['id'] export const DEFAULT_TAB: TabId = 'overview' -/** Maps a location hash like `#/heists` to a tab id, falling back to the default tab. */ +/** Maps a location hash like `#/safes` to a tab id, falling back to the default tab. */ export function tabFromHash(hash: string): TabId { const id = hash.replace(/^#\/?/, '') return TABS.find((tab) => tab.id === id)?.id ?? DEFAULT_TAB