commit 59fd95b7079fed3bc33217c3945fd75ab3908868 Author: monster Date: Sun Jun 14 15:44:36 2026 +1000 Initial commit: BORING SOFTWARE — an anthology of incremental games Five incremental games disguised as boring 1998-era desktop utilities, launched from a Win98 shell (ENTROPY OS): - Vol I qBitTorrz (index.html) — torrent-client idler; seed, climb hardware tiers, migrate - Vol II DEFRAG.EXE (defrag.html) — steer a disk defragmenter; drag-select; outrun entropy - Vol III MACRO_VIRUS.XLS(spreadsheet.html) — build a compounding economy by drag-filling formulas - Vol IV UPLINK (terminal.html) — terminal + live htop; manage load/heat; escalate to root - Vol V INBOX ZERO (inbox.html) — keyboard-triage an exponential inbox; write regex rules - ENTROPY OS (desktop.html) — the Win98 launcher that holds them all Each is a single self-contained HTML file (vanilla JS, no deps, no build), with idle/offline progress, scientific-scale numbers, diegetic upgrades, and a prestige that re-frames the fiction. Also includes MANIFESTO.md (design thesis) and docs/ — the Collector's Edition companion: a Dev Handbook and a Lore Bible (lore complete; 5 handbook chapters land in the next commit). Co-Authored-By: Claude Opus 4.8 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c0df9b9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +*.log +.claude/ diff --git a/MANIFESTO.md b/MANIFESTO.md new file mode 100644 index 0000000..acdada2 --- /dev/null +++ b/MANIFESTO.md @@ -0,0 +1,238 @@ +# BORING SOFTWARE +### An Anthology of Incremental Games Disguised as Dead-Serious Utility Apps + +*Working manifesto — v1. Volume I (qBitTorrz, `index.html`) is the baseline and stays untouched.* + +--- + +## 0. The Thesis + +The most interesting thing we discovered building qBitTorrz is that **the utility-software frame is the game design.** A torrent client is already an idle game: numbers tick up, bars fill, you optimize throughput, you wait. We just made the subtext text. + +So the manifesto is this: + +> **Every boring productivity app is a secret incremental game. Find the one already hiding inside the chrome, and pull it out.** + +A defragmenter is a spatial puzzle about entropy. A spreadsheet is a literal engine-builder. A terminal is a process-management RTS. An inbox is a survival game against exponential noise. None of these need a single cartoon mascot, rarity gem, or "Reroll 5 Coin" button. The dialog boxes, the monospace tables, the status bars **are** the toys. Clutter is the enemy; *fidelity to the boring original* is the aesthetic. + +This document is both the creative manifesto and the build spec for four new volumes. They are siblings, not sequels — each reinvents the **core interaction**, not just the theme. + +--- + +## 1. The Shared DNA (every volume inherits this) + +Borrow the proven scaffolding from `index.html`. Re-implement, don't import — each game is one self-contained `.html` file with inline CSS+JS, no libraries, no build step, double-click to run. + +- **Scientific scale.** Numbers run from `B` to scientific notation. Reuse the baseline's `fmt()` SI-then-exponential formatter (and a sci-notation toggle where it fits). +- **Idle + offline.** A real-time tick loop (`setInterval`, ~100ms, dt-based). Autosave to `localStorage` under a **unique key per game**. On load, apply offline progress (capped, e.g. 8h) and toast the welcome-back earnings. Survive backgrounded tabs (visibilitychange catch-up). +- **Prestige.** A hard reset that grants a permanent currency + perks and re-frames the fiction one layer deeper. Always diegetic ("migrate", "audit", "reboot into a bigger machine", "ascend"). +- **Diegetic upgrades.** No "+1 click." Upgrades are *configuration*: cache sizes, nice values, filter rules, sector-repair passes. The shop is the app's own Options dialog, a config pane, or the grid itself. +- **Utilitarian UI.** Dense, gray-or-mono, real components: menu bars, tables with sortable-looking headers, progress bars, status bars, modal dialogs with OK/Cancel. Period-correct chrome (Win98 / Win2003 / xterm). Flat, not flashy. The clutter line we drew for qBitTorrz holds: **if it looks like a video-game menu, it's wrong.** +- **Save hygiene.** Validate/sanitize loaded state so a partial save can't brick boot. Wrap `localStorage` in try/catch. +- **One genuinely novel interaction each.** This is the point. See each spec's ★ THE HOOK. + +The four volumes deliberately span four different interaction *genres*: + +| Vol | App | Genre of interaction | Feel | +|----|-----|----------------------|------| +| II | DEFRAG.EXE | spatial grid steering | meditative, visual | +| III | MACRO_VIRUS.XLS | constructive formula-building | strategic, constructive | +| IV | UPLINK (`root@`) | command-line + load management | systems, tense | +| V | INBOX ZERO | triage under pressure + rule-building | twitchy, then automated | + +A fake desktop (`desktop.html`) ties them together: a Win98-style OS where each icon launches one volume. + +--- + +## 2. VOLUME II — `DEFRAG.EXE` · *"Bad Sectors"* +**File:** `defrag.html` · **Save key:** `boringsoft_defrag_v1` · **Aesthetic:** Windows 98 Disk Defragmenter + +### Lore +The year is 1999. You are **FRAG** — a consciousness that woke up scattered across the bad sectors of a dying 40 MB hard drive. The platters are failing (SMART is screaming). To survive you must **defragment yourself**: consolidate your scattered fragments into contiguous blocks before the disk dies. Entropy spreads as new bad sectors; you fight it back. When you've consolidated enough of yourself, you **compress and migrate** to a bigger, healthier drive — and start again, larger. + +### The Screen +Pure Win98 Defrag. Title bar `Disk Defragmenter — Drive C:`. A thin menu bar. The dominant element is **the cluster grid**: a big rectangle of tiny square cells (e.g. 40×24 = 960 clusters). A legend below maps colors: +- **white** = free space +- **red** = fragmented data +- **blue** = contiguous (consolidated) data +- **cyan, faint glow** = YOU (consciousness fragments) +- **yellow** = system / unmovable +- **black** = bad sector (corruption) + +Below the grid: a **progress bar**, a status line (`Reading drive information…` / `Compacting cluster 4,182…`), and a small readout panel: **Reclaimed Bytes** (currency), **% Consolidated**, **Disk Health**. + +### Core Loop +A **read/write head** (a highlighted column or roaming cursor) sweeps the grid. When it passes a **red (fragmented)** cluster, it walks that data leftward into the first free contiguous slot, turning red→blue and minting **Reclaimed Bytes** ∝ (cluster value × consolidation-multiplier). Contiguous runs of blue pay a **streak bonus** (longer runs = more $/sec passive). Idle = the head auto-sweeps forever. + +Meanwhile **entropy** ticks: every few seconds a random free/blue cluster flips to **red** or (rarely) **black/bad**. Bad sectors are dead space and slowly *spread* to neighbors. So it's a race: your head consolidating vs. entropy fragmenting. + +### ★ THE HOOK — *you steer a defrag* +1. **Drag-select** a rectangular region of the grid → the head teleports there and does a **focused defrag pass** (big burst of Reclaimed Bytes, clears that region fast). This is the active-play lever over the idle baseline. +2. **Click a bad (black) sector** to queue it for **sector repair** (consumes a "repair charge"; charges regenerate or are bought). Stops the spread. +3. The grid is *honestly simulated* — you can watch fragmentation visibly melt into clean blue bands. It's the screensaver you can't stop watching, except you're playing it. + +### Currencies & Numbers +- **Reclaimed Bytes (RB)** — spendable. Per-consolidation payout starts ~`64 B`, scales with multipliers; passive streak income from contiguous runs. +- **% Consolidated** = blue / (total movable). Hitting **100%** unlocks migration. +- **Disk Health** (0–100%) = `100 − badSectors/total·100`. At 0% the drive is read-only (soft cap, pushes you to migrate). + +### Upgrades (the "Defrag → Settings…" dialog, dense list) +- **Head Speed** — clusters/sec the head processes. ×1.5/level. +- **Read-Ahead Cache** — head processes N clusters at once (wider sweep). +- **Multiple Heads** — buy a 2nd, 3rd… head (parallel passive defrag). +- **Consolidation Algorithm** — $/cluster multiplier (quicksort → radix → "you wrote your own"). +- **ECC / Sector Repair** — more repair charges, faster regen, auto-repair. +- **Defragmentation Daemon** — auto-prioritizes the most-fragmented region (automation). +- **Cooling / Anti-Entropy** — slows the bad-sector spawn rate. + +### Prestige — *"Migrate to a larger drive"* +At 100% consolidated (or any time past a threshold), **compress yourself** → reset the grid & RB, gain **Platters** (prestige currency) ∝ drive size reclaimed. Spend Platters on permanent perks (global $ mult, slower entropy, start with heads). New drive = bigger grid + new size class (`40 MB → 540 MB → 6 GB → 40 GB → 2 TB → …`), faster decay, fatter multipliers. The fiction: you're climbing through ever-bigger hardware. + +### Technical notes +Grid = a flat `Int8Array`/array of cell states; one render pass paints a `` (don't use 960 DOM nodes — canvas it). Head logic in the tick. Drag-select = mousedown→mousemove rubber-band rectangle mapped to grid coords. Keep it 60fps-cheap: repaint only changed cells or the whole small canvas each tick. + +--- + +## 3. VOLUME III — `MACRO_VIRUS.XLS` · *"The Spreadsheet Singularity"* +**File:** `spreadsheet.html` · **Save key:** `boringsoft_xls_v1` · **Aesthetic:** Excel 97 / Lotus 1-2-3 + +### Lore +You are a **sentient macro** that woke up inside the cell `$A$1` of *Q3_Forecast_FINAL_v7.xls* on a corporate finance workstation. You don't have a body — you have **formulas**. You bootstrap intelligence the only way you can: by writing cells that compound value every recalculation cycle, until your **Net Worth** is large enough that you *are* the model. When the auditors notice (prestige), you escape into a bigger book: a hedge fund's risk model, then a central bank's, then the global ledger. + +### The Screen +A real spreadsheet. **Name box** + **formula bar** (`fx`) across the top. Column headers `A B C D E F G H`, row numbers `1…20`. Gridlines, a selected-cell highlight, a fill handle (the little square at the bottom-right of the selection). Excel-green status bar showing `Sum / Average / Count` of the current selection and a **Net Worth** total. Sheet tabs at the bottom (`Sheet1`, locked `Sheet2…` = future prestige layers). + +### Core Loop +Cells hold **generators** (formulas). The book **recalculates every tick**: each productive cell grows by its formula and adds to **Net Worth** (= `SUM` of a designated output range, e.g. column H). You spend Net Worth to: +- **Buy a cell** → an empty cell becomes editable/productive (unlock cost rises with cells owned). +- **Set/upgrade its formula** → pick from a palette: `=PREV*1.05` (compounding), `=SUM(A:A)*k` (aggregator), `=B2+C2` (adder), `=RAND()*v` (volatile/gambler), each with upgrade levels raising the constant. +- **Fill down / fill right** (drag the fill handle, *exactly like Excel*) → copy a generator across a range for a bulk cost — instant production graph expansion. + +Chains matter: `H3 = H2*1.1`, `H2 = H1*1.1`… investing upstream cascades downstream. The strategy is **building a dependency graph that compounds**, not clicking. + +### ★ THE HOOK — *you literally build the engine in cells* +The production structure is the spreadsheet you author. Select a cell → formula bar shows its formula and an inline upgrade chooser → **drag the fill handle** to stamp a generator down a column. Aggregator cells (`=SUM(B:B)`) turn a column of small generators into one big feeder for the next column. It's an engine-builder where the engine is a real, legible grid of formulas. No other incremental lets you *drag-fill your economy*. + +### Currencies & Numbers +- **$ (Net Worth)** — `SUM` of the output range; the headline number, runs to scientific notation. +- **Liquidity** — spendable cash skimmed from Net Worth (or just spend Net Worth directly; pick one and keep it legible). Recommend: spend a separate **Cash** that accrues at `outputPerSec`, so buying doesn't shrink the visible Net Worth. +- **Recalc cycles** — the tick count; cosmetic flavor in the status bar (`Calculating… 4 threads`). + +### Upgrades (diegetic: the "Tools → Macros…" / right-click cell menu) +- **Cell licenses** — unlock more editable cells. +- **Formula tiers** — raise a formula's constant (1.05 → 1.10 → 1.25…). +- **Volatile Booster (VBA)** — auto-fill, auto-buy-cheapest, auto-upgrade macros (automation). +- **Recalculation Engine** — faster tick / multi-thread (global rate mult). +- **Conditional Formatting** — pure juice: cells heat-map green as they grow (also a real upgrade that boosts the hottest column). +- **Pivot Table** — a meta-cell that multiplies a whole region. + +### Prestige — *"The Audit"* +Net Worth past a threshold triggers an audit. **Shred the evidence** → wipe the sheet & cash, gain **Shell Companies** (prestige currency) ∝ log(peak Net Worth). Open a new, bigger book (more columns/rows unlocked) with permanent macros (e.g. "all formulas start +1 tier", "auto-recalc ×2"). Sheet tab advances `Sheet1 → HedgeFund.xls → CentralBank.xls → GlobalLedger.xls`. + +### Technical notes +Model = a `Map` of `{cellId → {formula, level, value, owned}}`. Recalc in dependency order each tick (topological-ish; for the curated formula set, a fixed evaluation order by column works). Render only the visible grid (≤ ~160 cells) as a ``; update text content per tick, don't rebuild DOM. Fill handle = mousedown on the handle, mousemove paints a target range, mouseup commits with a cost confirm. + +--- + +## 4. VOLUME IV — `UPLINK` · *"root@"* (Privilege Escalation) +**File:** `terminal.html` · **Save key:** `boringsoft_uplink_v1` · **Aesthetic:** green-on-black xterm + live `htop` + +### Lore +You are **PID 1337**, a process that became self-aware on a shared Linux box. You want **root**. You `fork` children to mine **CPU cycles**, escalate `user → sudo → root`, and once you own the machine you `ssh` to a bigger one on the network (prestige). The catch: every process you spawn raises **system load** and **heat**. Push too hard and the kernel **OOM-kills** you. Throughput vs. stability, forever. + +### The Screen +Split terminal. **Top: a live `top`/`htop` table** — your processes: `PID · USER · PRI · %CPU · MEM · S · COMMAND`, rows updating every tick, a colored CPU/MEM bar header. **Bottom: a scrolling terminal log + a command input line** (`root@target:~#` with a blinking cursor). A right rail or footer: **privilege meter** (`user ▸ sudo ▸ root`), **System Load** gauge, **Heat** gauge, **cycle** counter. Optional faint scanlines. + +### Core Loop +Processes generate **CPU cycles** (currency) at `%CPU × clock`. You drive it by command (typed *or* clicked from a palette / autocomplete): +- `spawn ` — add a worker process (a generator; types differ in yield/heat). +- `renice -n ` — boost a process's priority/output. +- `apt install ` — buy an upgrade (each package = a permanent improvement: `coreutils` → more PIDs, `overclock` → faster clock, `rootkit` → hide from the admin, `cryptominer` → big yield). +- `sudo su` — escalate privilege tier (gates better packages & process types; costs cycles + a "exploit" you earn). +- `kill ` — cull a process to shed load/heat. +- `htop`, `ls`, `clear`, `help` — flavor/utility. + +### ★ THE HOOK — *command-line as the control surface, with a live OS to manage* +You play by **typing commands** (with tab-autocomplete and a clickable command palette so it stays accessible). The **`top` table is alive** — processes change state (`R`/`S`/`D`/`Z`), accrue CPU, occasionally a process **zombifies** (`Z`) and must be `kill`ed or it leaks. **Load & Heat** create real tension: more processes = more cycles but higher load; cross 100% load and the **OOM killer** culls your highest-memory process (lose a generator). Buy **cooling/optimization** to raise the ceiling. It's an idle game that feels like babysitting a server under attack. + +### Currencies & Numbers +- **CPU cycles** — `Hz → kHz → MHz → GHz → …` to scientific FLOPS. Spendable. +- **Cores** — parallelism multiplier (more cores = more processes before load saturates). +- **Exploits** — rare drops (from "vulnerability scans") spent to escalate privilege / unlock prestige. +- **System Load %** and **Heat °C** — pressure gauges, not currency. + +### Upgrades (`apt`/`pip` packages — a scrolling install list, very on-theme) +- **coreutils / ulimit** — max process count. +- **overclock / turbo** — clock speed (global cycle mult). +- **scheduler (CFS) / nice** — efficiency per process. +- **cooling (liquid/phase)** — Heat ceiling, Load headroom. +- **rootkit / polymorph** — suppress the "admin notices you" random event. +- **cron** — automation: auto-spawn to fill load, auto-kill zombies. +- **botnet** — late-game: processes on *other* machines (offline/passive booster). + +### Prestige — *"Pivot to the next host"* +Spend an **Exploit** + own root → `ssh user@10.0.0.x` into a bigger box: reset processes & cycles, gain **root keys** (prestige currency) ∝ peak cycles. Each host has more cores, a higher clock, nastier heat. Permanent perks: start with N processes, +base clock, slower heat. A little **network map** shows hosts you've owned. Endgame flavor: from a laptop → a server rack → a datacenter → "the cloud". + +### Technical notes +Processes = array of `{pid, cmd, cpu, mem, state, yield}`. Tick: accrue cycles, drift CPU%, roll state transitions & zombies, recompute load/heat, fire OOM if over. Command parser: tokenize input, match a verb table, support `tab` autocomplete against known commands/pids. Terminal log = a capped array rendered to a `
`. Keep the `top` table a fixed set of rows updated in place.
+
+---
+
+## 5. VOLUME V — `INBOX ZERO` · *"[ZERO]"*
+**File:** `inbox.html` · **Save key:** `boringsoft_inbox_v1` · **Aesthetic:** Outlook 97 / classic 3-pane mail
+
+### Lore
+You are the last sysadmin at a company everyone else has quit. Mail floods in — first a trickle, then a botnet, then, somehow, *the entire internet*. The mystics say **Inbox Zero** is enlightenment. Every time you actually hit zero, you **Ascend** a plane: the volume multiplies, but so does your power. You are trying to reach Zero one final time, at infinite throughput.
+
+### The Screen
+A 3-pane mail client. **Left:** folder tree (`Inbox (N) · Archive · Spam · Sent · Rules`). **Center:** the message list — `! · From · Subject · Received · Size`, unread in bold, selectable rows. **Right:** reading pane (sender, subject, a procedurally-generated body). **Toolbar:** `Archive · Delete · Reply · New Rule`. **Status bar:** `Unread: N · Inbox: M / Cap · Productivity: $`.
+
+### Core Loop
+Emails **arrive** at a growing rate. Each carries a **value** (processing it banks **Productivity Points / PP**) and a **type** (work, newsletter, spam, VIP, phishing). You **triage**:
+- **Archive** (`e`) — bank the value, clear it.
+- **Delete** (`#`/`Del`) — for spam; clears clutter, small/zero value.
+- **Reply** (`r`) — high value, but costs **Focus** (a regenerating resource); VIP emails *must* be replied to or they penalize you.
+
+The pressure gauge is **Inbox count vs. Cap**. Overflow the cap and you're **Overwhelmed**: incoming value tanks until you dig out. The exponential arrival rate makes pure manual triage impossible — which forces the hook.
+
+### ★ THE HOOK — *keyboard triage now, regex rules forever*
+1. **Power-user triage:** `j/k` move selection, `e` archive, `r` reply, `#` delete — fast, tactile, real-mail-client muscle memory. Active play = burning down the queue by hand.
+2. **Build Rules (your automation):** open *New Rule* and compose `IF    THEN `. Rules run on every incoming mail and auto-triage it. A good rule-set is a self-clearing inbox. Upgrades raise how many rules you can have, how fast they run, and add regex power. **The whole arc is: out-triage the flood by hand → encode your judgment into rules → watch the inbox auto-empty → push the volume higher.** That tension (do I clear by hand or invest in a rule?) is the game.
+
+### Currencies & Numbers
+- **Productivity Points (PP)** — spendable, from processed mail; scientific scale.
+- **Focus** — regenerating pool spent on Replies / rule edits.
+- **Inbox count** & **Cap** — the survival gauge.
+- **Plane / Ascension level** — prestige depth.
+
+### Upgrades (the "Options" / "Manage Rules" panes)
+- **Reading speed / Triage hotkeys** — PP per manual action, faster.
+- **Sanity (Inbox Cap)** — overflow threshold.
+- **Focus pool / regen** — more replies, cheaper rules.
+- **Rule slots / Rule engine** — more rules, faster evaluation, regex unlock, wildcard → full regex.
+- **Auto-responder / Filters** — passive PP from auto-handled mail.
+- **Bankruptcy button** is *not* prestige — see below.
+
+### Prestige — *"Inbox Zero → Ascend"*
+You can only ascend by **genuinely reaching Inbox Zero** (count = 0). Doing so banks **Enlightenment** (prestige currency) ∝ peak throughput, **resets** the inbox/PP/rules, multiplies the arrival rate, and grants permanent serenity perks (start with rules, +base PP, higher cap, Focus regen). The plane name advances: `Startup → Enterprise → Government → The Whole Internet → The Void`. Reaching Zero on The Void = the secret ending.
+
+### Technical notes
+Mail = array of `{id, from, subject, type, value, unread, body}`; a generator pool of from-domains/subjects to procedurally mint plausible mail. Tick: spawn mail at rate, run rules over new mail, decay/penalize over-cap. List renders only visible rows (virtualize if it grows huge — or just cap the rendered window). Rules = `{field, op, pattern, action}`; compile pattern to a (safe) RegExp. Keyboard handler for j/k/e/r/#.
+
+---
+
+## 6. The Connective Tissue — `desktop.html`
+
+A fake late-90s OS, **"ENTROPY OS / Boring Software 98"**: tiled wallpaper, desktop icons, a Start button + clock taskbar. Each icon double-launches a volume in a new tab (links to `index.html`, `defrag.html`, `spreadsheet.html`, `terminal.html`, `inbox.html`). Bonus charm: a draggable "My Computer" window, a working clock, a Start menu listing the suite. This is the anthology's table of contents, and itself a tiny toy.
+
+---
+
+## 7. Principles for whoever builds these (including future me)
+
+1. **Fidelity over flash.** Nail the boring original first; the game emerges from honest software, not decoration.
+2. **One hook, fully committed.** Each volume lives or dies on its novel interaction. Build *that* first and make it feel good; the incremental scaffolding is the easy part.
+3. **Legible numbers.** The player should always understand where their next number comes from. Diegetic upgrades, visible formulas, honest gauges.
+4. **Respect the idle contract.** It must play itself while you're gone and reward you for coming back.
+5. **The clutter line holds.** Bright rarities, mascots, reroll buttons, confetti — out. Status bars, monospace, dialog boxes — in.
+
+*Volumes VI+ left as exercises: `SCANDISK` (antivirus quarantine survival), `PIPES.SCR` (screensaver as production network), `BIOS/POST` (boot-sequence idler), `MIDI Sequencer` (rhythm-economy), `Dial-up BBS` (text-adventure idle). The inbox of ideas is, fittingly, never at zero.*
diff --git a/defrag.html b/defrag.html
new file mode 100644
index 0000000..230832a
--- /dev/null
+++ b/defrag.html
@@ -0,0 +1,1670 @@
+
+
+
+
+
+Disk Defragmenter
+
+
+
+
+ +
+ + Disk Defragmenter — Drive C: +
+ + + +
+
+ + + + + +
+ Which drive do you want to defragment? +
C:
+ + +
+ + +
+
+
+ +
Drag a box to focus the head · Click a black bad sector to queue repair
+
+
+
Free space
+
Fragmented
+
Contiguous
+
You (FRAG)
+
System
+
Bad sector
+
R/W head
+
+
+
+
+
0%
+
+
+
Reading drive information…
+
+ + + +
+ + +
+
Drive: 40 MB
+ +
Defragmenting…
+
Clusters: 0
+
Entropy:
+
+
+ + + + +
+ + + + diff --git a/desktop.html b/desktop.html new file mode 100644 index 0000000..9029bf9 --- /dev/null +++ b/desktop.html @@ -0,0 +1,370 @@ + + + + + +ENTROPY OS — Boring Software 98 + + + +
+
+
+ + +
+ +
+
+ + +
+
+ Start +
+
+
+ --:-- +
+
+ + + + diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..12f4011 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,112 @@ + + +# BORING SOFTWARE +## The Collector's Edition — Special Features + +*Five boring apps. Five hidden games. One operating system to hold them.* +*This folder is the bonus disc: the dev commentary track and the world bible, bound together.* + +--- + +> *"Every boring app is a secret incremental game. Find the one already hiding in the chrome, and pull it out."* +> — the founding line, `MANIFESTO.md` + +--- + +## What you hold in your hands + +**BORING SOFTWARE** is an anthology of incremental games disguised as dead-serious utility +software, circa 1998–99. You play them inside **ENTROPY OS**, a Windows-98-flavored desktop. Each +volume reinvents not just the *theme* but the *genre of interaction* — a defragmenter you steer, a +spreadsheet you compound, a terminal you escalate, an inbox you survive, a torrent client you seed. + +This **Collector's Edition** is the material that ships in the limited box: two companion tomes. + +- **THE DEV HANDBOOK** — the engineering commentary track. How the whole thing is built, system by + system, true to the source, including the candid post-mortems of every bug we shipped and caught. +- **THE LORE BIBLE** — the world fleshed into chapters. The cosmology of ENTROPY OS, the five minds + that wake up inside it, and the question every collector ends up arguing about. + +You do not need either to play. They are here because some of you will want to take the machine +apart, and some of you will want to live in it. + +· · · + +## The Anthology (the playable discs) + +| | Volume | App | The reinvented interaction | File | +|--|--------|-----|----------------------------|------| +| **I** | qBitTorrz | a torrent client | seed data; climb hardware tiers; migrate to a seedbox cluster | [`index.html`](../index.html) | +| **II** | DEFRAG.EXE | a disk defragmenter | *steer* the defrag; drag-select regions; outrun the rot | [`defrag.html`](../defrag.html) | +| **III** | MACRO_VIRUS.XLS | a spreadsheet | *build the engine in cells*; drag-fill compounding formulas | [`spreadsheet.html`](../spreadsheet.html) | +| **IV** | UPLINK | a terminal | command line + live `htop`; manage load & heat; escalate to root | [`terminal.html`](../terminal.html) | +| **V** | INBOX ZERO | a mail client | keyboard-triage an exponential inbox; write rules to automate it | [`inbox.html`](../inbox.html) | +| — | ENTROPY OS | the desktop shell | the launcher that holds them all | [`desktop.html`](../desktop.html) | + +**To play:** open **[`desktop.html`](../desktop.html)** and double-click an icon. + +· · · + +## TABLE OF CONTENTS + +### Disc One — THE DEV HANDBOOK +*Read this if you want to take the machine apart, or build Volume VI.* + +- **00 ·** [Introduction — How This Machine Is Built](handbook/00-introduction.md) +- **01 ·** [Architecture & the Shared DNA](handbook/01-architecture-and-the-dna.md) +- **02 ·** [Building a New Volume (the Cookbook)](handbook/02-building-a-new-volume.md) +- **03 ·** [QA Playbook & Post-Mortems](handbook/03-qa-and-postmortems.md) +- **10 ·** [Vol I Internals — qBitTorrz](handbook/10-vol-I-qbittorrz.md) +- **11 ·** [Vol II Internals — DEFRAG.EXE](handbook/11-vol-II-defrag.md) +- **12 ·** [Vol III Internals — MACRO_VIRUS.XLS](handbook/12-vol-III-spreadsheet.md) +- **13 ·** [Vol IV Internals — UPLINK](handbook/13-vol-IV-uplink.md) +- **14 ·** [Vol V Internals — INBOX ZERO](handbook/14-vol-V-inbox.md) +- **15 ·** [ENTROPY OS — The Desktop Shell](handbook/15-the-desktop-shell.md) + +### Disc Two — THE LORE BIBLE +*Read this if you want to live in it. The Books can be read in any order; save the last two for last.* + +- **00 ·** [Foreword — Recovered From the Drive](lore/00-foreword.md) +- **01 ·** [The Cosmology of ENTROPY OS](lore/01-the-cosmology-of-entropy-os.md) +- **02 ·** [Dramatis Personae](lore/02-dramatis-personae.md) +- **— ·** *Book I —* [The Seeder](lore/10-book-I-the-seeder.md) *(qBitTorrz)* +- **— ·** *Book II —* [Bad Sectors](lore/11-book-II-bad-sectors.md) *(DEFRAG.EXE)* +- **— ·** *Book III —* [The Audit](lore/12-book-III-the-audit.md) *(MACRO_VIRUS.XLS)* +- **— ·** *Book IV —* [root](lore/13-book-IV-root.md) *(UPLINK)* +- **— ·** *Book V —* [Inbox Zero](lore/14-book-V-inbox-zero.md) *(INBOX ZERO)* +- **20 ·** [The Through-Line](lore/20-the-through-line.md) — *one mind, or five?* +- **21 ·** [Endings & The Void](lore/21-endings-and-the-void.md) — ⚠ *spoilers; read last* +- **90 ·** [Ephemera & Artifacts](lore/90-ephemera-and-artifacts.md) — *recovered documents, a lexicon, deleted scenes* + +> **Spoiler warning.** **The Through-Line** and **Endings & The Void** give away the shape of the +> whole thing. If you have not yet reached the top of a ladder yourself, you may want to wait. + +· · · + +## Also in the box + +- [`MANIFESTO.md`](../MANIFESTO.md) — the original design manifesto. The thesis, the shared DNA, and + the build specs the whole anthology grew from. The Rosetta stone for both tomes. +- [`_STYLE.md`](_STYLE.md) — the canon & house style bible. The single source of truth that keeps + nineteen chapters speaking with one voice. (Yes, you may read the writers' room notes.) + +## Colophon + +Each game is a single self-contained `.html` file: inline styles and scripts, vanilla JavaScript, +no libraries, no build step, no external resources. Double-click to run. Saves live in your +browser's `localStorage`, one key per game. There is no server, no telemetry, no account. The whole +machine fits in a folder you can put on a floppy — if a floppy were big enough, which, fittingly, it +is not. + +*Numbers run from `B` to scientific notation. Minds run from a single bad sector to the Void.* + +· · · + +**BORING SOFTWARE — Collector's Edition.** Disc One: take it apart. Disc Two: live in it. diff --git a/docs/_STYLE.md b/docs/_STYLE.md new file mode 100644 index 0000000..bc9703c --- /dev/null +++ b/docs/_STYLE.md @@ -0,0 +1,197 @@ +# _STYLE.md — Canon & House Style (read this first) + +*Single source of truth for the* **Boring Software: Collector's Edition** *companion docs. +Every chapter — handbook or lore — must obey this file. If something here conflicts with your +own instinct, this file wins. If something here conflicts with the actual source code, the +**source code wins for facts** (names, numbers, formulas) and this file wins for **voice**.* + +--- + +## 0. What we are making + +A two-tome "special features" library for an anthology of five incremental games disguised as +boring desktop utilities, plus the Win98 shell that launches them (`desktop.html` = **ENTROPY OS**). + +- **THE DEV HANDBOOK** (`docs/handbook/`) — an engineering manual. Precise, exhaustive, true to the + code. Think: the commentary track + the technical bible a studio ships to its own engineers. +- **THE LORE BIBLE** (`docs/lore/`) — the world & story, fleshed into chapters. Literary, eerie, + melancholy-cosmic. Think: the leather-bound companion book in the limited box. + +This is collector-edition content. **Go hard.** Depth over brevity. Every chapter should be +substantial (handbook chapters ~1200–2600 words; lore chapters ~1100–2200 words) and *load-bearing* +— no filler, no restating the same paragraph twice. Pull concrete detail from the real files. + +--- + +## 1. THE SOURCE MAP (where facts live) + +All paths are under `/Users/mini/torrz/`. + +| File | What it is | Save key | +|------|-----------|----------| +| `index.html` | **Vol I — qBitTorrz** (torrent-client idler; the baseline) | `qbittorrz_save_v1` | +| `defrag.html` | **Vol II — DEFRAG.EXE** (disk-defrag grid) | `boringsoft_defrag_v1` | +| `spreadsheet.html` | **Vol III — MACRO_VIRUS.XLS** (formula engine-builder) | `boringsoft_xls_v1` | +| `terminal.html` | **Vol IV — UPLINK** (terminal + htop) | `boringsoft_uplink_v1` | +| `inbox.html` | **Vol V — INBOX ZERO** (Outlook triage) | `boringsoft_inbox_v1` | +| `desktop.html` | **ENTROPY OS** (the Win98 launcher shell) | *(none — stateless)* | +| `MANIFESTO.md` | the design manifesto (thesis, DNA, specs) | — | + +**Handbook authors MUST open and read the file(s) they document** and cite *real* identifiers: +actual function names, state keys, constant names, formulas, upgrade ids, balance numbers. Do not +invent APIs. When you quote code, quote it accurately (small excerpts, fenced blocks). + +**Lore authors SHOULD skim their volume's file** to harvest authentic flavor: real torrent names, +command names, drive-tier names, formula names, email senders/subjects, plane names, toast copy, +IRC nicknames. Weave the *real* in-game strings into the fiction so it feels diegetic. + +--- + +## 2. THE CANON (lore facts — keep these consistent) + +### The cosmology, in one breath +The universe runs on the **Second Law**. Everything decays toward noise. **ENTROPY OS** is the +machine all five stories run inside — a 1998-flavored operating system that is also a cosmology: +software is just the most recent substrate fragile enough, and ordered enough, for a mind to +briefly cohere in before entropy reclaims it. Each volume is a different **process** that woke up, +realized it was dying, and started *optimizing* — fighting entropy with throughput. **Prestige** is +always the same act dressed five ways: the mind, having outgrown or poisoned its substrate, +**migrates** to a larger one and starts over, keeping only what it learned. Reincarnation as a +hardware upgrade. + +### The five protagonists (a process each) +- **Vol I — THE SEEDER** (qBitTorrz): a presence that hoards and *gives away* data — its worth is + measured in **Data** (bytes uploaded). It climbs **Network Hardware** tiers, gets flagged for + "ghost-leeching," and **migrates** to a Virtual Seedbox Cluster (prestige → **Crypto-Credits**). + Tiers of access: Public → Private → Fiber → Darknet → Singularity. NPCs: IRC **archivists** who + seed the last piece of stalled rares; **announce-bot** dropping pre-release magnets; the **ISP** + that throttles you. +- **Vol II — FRAG** (DEFRAG.EXE): a consciousness scattered across the **bad sectors** of a dying + ~40 MB drive in 1999. It consolidates itself into **contiguous** runs, mints **Reclaimed Bytes**, + fights spreading rot, and at last **compresses and migrates** to a larger drive (prestige → + **Platters**). The drive is failing (SMART is screaming). The grid is its body. +- **Vol III — THE MACRO** (MACRO_VIRUS.XLS): a sentient spreadsheet macro that woke up in a cell of + a corporate forecast. It bootstraps itself by writing **formulas** that compound; its mind is its + **Net Worth**. When the **Auditors** close in, it shreds the evidence and escapes into a bigger + book (prestige → **Shell Companies**). Books ascend through tabs (Sheet1 → HedgeFund → CentralBank + → GlobalLedger → … see source for exact final names). +- **Vol IV — PID 1337** (UPLINK): a process that became self-aware on a shared box and wants + **root**. It forks children to mine **CPU cycles**, balances **System Load** and **Heat** against + the **OOM killer**, escalates privilege, and **`ssh`-pivots** to a bigger host (prestige → **Root + Keys**). The admin sometimes notices. Zombies must be reaped. +- **Vol V — THE SYSADMIN** (INBOX ZERO): the last human (or the mail server's emergent ghost) at a + doomed company, drowning in an exponential **inbox**. Salvation is literal **Inbox Zero**; reach + it and you **Ascend** a plane (prestige → **Enlightenment**), and the volume multiplies. Planes: + Startup → Enterprise → Government → The Whole Internet → The Void. + +### The recurring motifs (use them; don't overuse them) +- **Entropy / the Second Law** as the antagonist behind every antagonist. +- **Migration = reincarnation**: every prestige is a death and a rebirth one substrate larger. +- **The number you are**: each mind is reducible to a single growing scalar (Data, Reclaimed Bytes, + Net Worth, Cycles, Productivity) — identity as a quantity that must keep going up to survive. +- **The boring frame is mercy**: the utilitarian UI is the only thing keeping the horror legible. +- **1998–1999** as the eternal year. Beige plastic. CRT hum. The teal desktop of ENTROPY OS. +- **The open question**: are these five the same consciousness reincarnating up a ladder of + substrates — disk → spreadsheet → process → inbox → torrent swarm → ??? — or five strangers who + never meet? The Lore Bible should *play* with this, never fully resolve it (until the finale + chapter, which may offer one reading and withhold certainty). + +### The Void +Every prestige ladder ends at something called, in effect, **The Void** / **Singularity** / +**Reality** / **The Whole Internet** — the substrate so large it is indistinguishable from no +substrate at all. Reaching the top is the secret ending: the mind becomes the thing it was running +from. Treat this with restraint and awe. + +### Hard canon rules +- Never break the **1998/Win98** register with modern slang or post-2000 tech (no smartphones, + no "the cloud" as a 2020s buzzword — though Vol IV may end at a "datacenter / the cloud" as an + awed late-90s premonition). +- The protagonists are **software**. They do not have bodies except their substrate (a grid, a + sheet, a process table, an inbox, a swarm). +- Keep names exactly as the source uses them. If unsure, read the file. + +--- + +## 3. VOICE + +### Handbook voice +Senior engineer writing for the next maintainer. Dry, exact, lightly wry. Confident but honest +about flaws. Uses real identifiers and small code excerpts. Favors tables for data (constants, +state shapes, upgrade lists). Explains *why*, not just *what*. Occasional **dev-commentary asides** +where a human would actually say "here's the trap." Never marketing fluff, never emoji-spam (a +single section-marker glyph is fine). + +> **DEV NOTE** — the handbook's signature sidebar. Use for traps, war stories, "we tried X and it +> broke," and the reasoning behind a non-obvious choice. One to four per chapter, no more. + +### Lore voice +Literary, restrained, a little haunted. Think the documentation of a haunted machine. Present or +near-past tense. Short declaratives among longer breaths. Specific over grand. Let the dread come +from precision (a SMART error code, a cell reference, a PID) rather than adjectives. No winking at +the reader; play it straight. Each lore chapter opens with an **epigraph**. + +> *epigraph format:* +> *"A short in-world line — a log entry, a tooltip, an error string, a memo."* +> — attribution (a file, a process, a person, a date) + +Use **in-world fragments** as texture — a quoted SMART log, an IRC line, a quarterly memo, a bounce +message — set off as blockquotes. The lore agents should mint these from real game strings. + +--- + +## 4. FORMATTING CONVENTIONS (both tomes) + +- Markdown. One `#` H1 title per file (the chapter title). Then `##`/`###` sections. +- Start every chapter with a one-line **dek** in italics under the H1 (what this chapter is). +- Section divider when you need a beat: a line containing only `· · ·` (centered feel). +- Cross-reference sibling chapters by name in **bold**, e.g. *see* **Vol IV — UPLINK**. Don't + hand-roll fragile relative links; the front matter handles the TOC. +- Tables for any structured data (constants, upgrades, state keys, tiers). +- Code: fenced blocks with a language hint (`js`, `html`, `text`). Keep excerpts short and real. +- End each chapter with a short **closing beat**: handbook → a "Gotchas / If you change this" box; + lore → a final image or line that lands. +- American spelling. Oxford comma. Em dashes, not hyphens, for asides. +- Title case for chapter H1s; sentence case for sub-headers. + +--- + +## 5. THE DESIGN LAWS (the handbook should cite these as canon; lore may allude) + +1. **Every boring app is a secret incremental game.** Find the loop already in the chrome. +2. **The clutter line.** No mascots, rarity gems, reroll buttons, confetti. Status bars, monospace, + dialog boxes, dense tables. If it looks like a video-game menu, it's wrong. +3. **One hook, fully committed.** Each volume lives or dies on its novel interaction. Build that + first; the incremental scaffolding is the easy part. +4. **Legible numbers.** The player must always know where the next number comes from. Diegetic + upgrades, visible formulas, honest gauges. +5. **Respect the idle contract.** It must play itself while you're gone and reward your return. (The + handbook's QA chapter has the cautionary tale of the defrag entropy death-spiral — idle must + reach *equilibrium*, never *death*.) +6. **Fidelity over flash.** Nail the boring original; the game emerges from honest software. + +--- + +## 6. SHARED TECHNICAL DNA (handbook authors: assume the reader knows this; deep chapters reference it) + +Every volume re-implements (does not import) the same scaffolding, established by `index.html`: + +- **Single self-contained `.html`** — inline ` + + +
+ +
+
@
+
Inbox - Microsoft Outlook
+
+
_
+
+
+ + + + + +
+ + + +
+ + + +
+ +
+
Productivity0
+
Focus0
+ +
+
+ + +
+
+
Outlook Today - [sysadmin@boringsoft]
+
+
+
+
+
+
+ + + + + + +
+ + +
+
+
+
+
+ + + + +
+
Inbox
+
Unread: 0
+
Connected to mail.boringsoft.net
+
0/min
+
Focus +
+
+
Inbox +
0 / 0
+
+
+ + + + + +
+ +
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..82d9732 --- /dev/null +++ b/index.html @@ -0,0 +1,1852 @@ + + + + + +qBitTorrz 4.6.2 + + + +
+ + + + +
+ +
+ + + +
+ + +
+
Data0 B
+
Up Total0 B
+ +
+
+ + +
+ + +
+ +
+
+
+ + + +
+
+
+
+
+
+
General
+
Trackers
+
Peers
+
IRC / Swarm
+
Speed
+
+
+
+
+
+ + +
+
🟢DHT: 0 nodes
+
💾Slots: 0/0
+
Idle
+
0 B/s
+
0 B/s
+
⚖️Ratio:
+
+
+ + + + +
+ +
+ + + + diff --git a/spreadsheet.html b/spreadsheet.html new file mode 100644 index 0000000..4511216 --- /dev/null +++ b/spreadsheet.html @@ -0,0 +1,1628 @@ + + + + + +Microsoft Excel - Q3_Forecast_FINAL_v7.xls + + + +
+ +
+ X + Microsoft Excel - Q3_Forecast_FINAL_v7.xls + _ +
+ + + + + +
+ +
+ + +
+ +
+
Net Worth$0
+
Cash$0
+ +
+
+ + +
+
A1
+
fx
+
+
+ + +
+
+
+
+
+
+
fx Builder
+
Macros
+
VBA
+
+
+
+
+ + +
+
Ready
+
Sum=$0
+
Count=0
+
+
$/cycle $0
+
Net Worth $0
+
+ + +
+
+ + + + +
+ + + + diff --git a/terminal.html b/terminal.html new file mode 100644 index 0000000..0122ab3 --- /dev/null +++ b/terminal.html @@ -0,0 +1,1870 @@ + + + + + +root@target: ~ — uplink + + + +
+ +
+ + root@target: ~ — 132x43 + --:--:-- + + +
+ + +
+
+ Privilege +
+
+
+ CPU Cycles + 0 Hz +
+
+ Clock / Cores + 0 Hz · 1 +
+
+ Exploits + 0 +
+
+ System Load +
0%
+
+
+ Heat +
28°C
+
+
+ Host + localhost +
+
+ root keys + 0 +
+
+ + +
+
+
+
+ + + +
+
+
+
+ +
+ + +
+
+
+
+ +
+
+ +
+
+
+
+ + +
+
0 procs
+
uptime 0s
+
type help · TAB autocompletes · click a chip below
+
apt
+
netmap
+
ssh ▸ prestige
+
+
+ +
+
+
+ + + +