Repository navigation
v1.25.0
v1.25.0 — The Void, and the Great Rebalance
The biggest release since the arena landed. Two headline features and a world that grew underneath them.
First: The Void — a daily, procedurally-generated dungeon that opens through a portal in your home directory. A real maze of directories on your disk, a hidden scroll buried deep inside it, and a once-a-day shot at Rare-or-better loot for the player who finds it.
Second: the Great Rebalance — a full, simulation-validated retune of the game from level 1 to level 150. Leveling was too fast. Fresh characters were too strong. High-level characters were functionally immortal. The arena tiers paid out like a slot machine stuck on win. Bosses were flavor, not threats. Every one of those was diagnosed against the real numbers, fixed, and re-validated against a Docker-isolated simulation harness that drove thousands of characters through the game. None of these numbers are guesses.
And underneath both: 22 new zones and ~70 new recognized commands that landed during this cycle, widening the world your shell maps onto.
🌀 The Void — A Daily Procedural Dungeon
There is a new command: sq quest.
Run it from your home directory and a quest-giver opens a portal — a rift at $HOME that leads into The Void, a procedurally-generated maze of directories that materializes under ~/.shellquest/the_void. It is a real on-disk labyrinth: bounded in depth, threaded with one-way symlinks, strictly contained inside the shellquest home so it can never escape into the rest of your filesystem.
Somewhere deep in that maze, at a leaf the generator chose, a lost_scroll waits. Your job is to find it.
~ $ sq quest
🌀 A portal tears open in the corner of your home directory...
The Void yawns. Somewhere inside, a lost scroll holds the day's phrase.
~ $ cd ~/.shellquest/the_void
# ...wander the maze, read directories, hunt the scroll...
~ $ cat .../null_gallery/lost_scroll_4271.txt
"the prompt flickers"
~ $ cd ~ && sq quest answer "the prompt flickers"
💎 The Void yields. You claim a Rare-or-better relic, XP, and gold.The rules of the Void:
- It reshuffles every UTC midnight. Each day is a fresh maze with a fresh scroll and a fresh phrase. The old maze is blown away — no orphaned dungeons pile up on your disk.
- One claim per day. Answer correctly and the day's reward is yours. Come back tomorrow for a new one.
- Wrong answers cost nothing. Guess as many times as you like; the Void is patient.
- The reward floor is Rare. No Common scraps from the Void — only Rare, Epic, or Legendary loot, plus bonus XP and gold.
The Void is also a combat zone. While you crawl the maze, you face an 18-strong roster of Void-native horrors — the Null Wraith, the Echo Eater, the Orphaned Inode, the Rift-Mouthed Daemon, the Zero-Width Horror, and more — whose difficulty scales with both your level and how deep into the maze you've wandered. The deeper you go, the more dangerous it gets.
There's a manual for all of it: sq help quest (also reachable as sq help void).
⚖️ The Great Rebalance
A player noticed something while playing: a brand-new character hit level 3 in about five minutes, and a level-2 Ranger had an attack stat that felt absurd. That observation kicked off a full diagnostic pass over the entire progression curve, early game to end game. Every number below was validated against a simulation harness — one Docker container per character, thousands of runs — before it shipped. The fixes confirmed the data.
Leveling is no longer candy
The early XP curve was trivially generous. A single affinity event (a git commit, a cargo build) handed out ~25–37 XP, and the level-1 threshold was just 25 — so one good command was an entire level. Reaching level 6 took roughly 28 commands.
Two things changed. First, the early curve was steepened: the level-1 threshold is now 70 XP, and the early band grows as level × 30 + 40 (up from level × 15 + 10). Reaching level 6 took roughly 63 commands after that change alone — and the whole curve, all the way to 150, was re-checked to climb monotonically: no level is ever cheaper to clear than the one before it. (The previous early-curve patch had accidentally made level 11 easier than level 10; that discontinuity is gone.)
Second, on top of the steeper curve, every XP award in the game is now halved at the source — a single global knob divides the XP you earn from overworld events, combat kills, the Void, bosses, quests, and the arena. The number you see is the number you gain (display and reality always match), and a successful event never grants nothing — the smallest award still floors at 1 XP. Where a git commit used to hand you most of a level, it now hands you a healthy chunk of one.
| Reach | Old cumulative XP | New cumulative XP |
|---|---|---|
| Level 2 | 25 | 70 |
| Level 3 | 65 | 170 |
| Level 4 | 120 | 300 |
| Level 6 | 275 | 870 |
The threshold table above is only half the story — because XP income is also cut, the real-world climb is slower still than the cumulative numbers alone suggest. Leveling now feels earned from the very first command instead of raining down like candy.
Fresh characters aren't over-powered
Attack power used to read STR + DEX/2 + gear. For the DEX-built classes (Ranger, Rogue) that double-dipped a high DEX into both their dodge and their attack, so a level-2 Dwarf Ranger swung for 21 with no weapon equipped.
The DEX contribution to attack was reduced to a third: attack_power = STR + DEX/3 + gear. That same Dwarf Ranger now reads ATK 17 at level 1 — strong, but no longer a bare-handed powerhouse. Your status sheet reflects the new math directly.
Combat is dangerous again — at every level
This was the deepest fix. In simulation, high-level characters were effectively immortal: across 198 overworld encounters at level 100, the death rate was 0%. Not low — zero. The cause was mechanical: a high-level character's DEX had grown so large that it collapsed every enemy's chance to hit down to a natural-20-only roll. Stack enough dodge and nothing could touch you.
So enemy accuracy now has a floor that high player DEX cannot fully erase — a cap on how much dodge advantage you can hold over an enemy in the overworld. The result, measured at level 100 after the change:
| Class | Death rate before | Death rate after |
|---|---|---|
| Necromancer | 0% | 3.3% |
| Ranger | 0% | 7.1% |
| Rogue | 0% | 6.5% |
| Warrior | 0% | 4.9% |
| Wizard | 0% | 2.6% |
Every class now takes real risk at high level, and — critically — the risk is fair across classes. No build is immortal; no build is a death-trap. The early and mid game were validated the same way: levels 1–20 land in a healthy 3–10% death band, with the monster-danger scaling and per-level HP floors retuned to keep the pressure consistent as you climb.
The arena pays out like a gamble, not a guarantee
The five arena tiers were re-simulated end to end. The Pit was paying out negative on average (the entry fee outran the reward). The deeper tiers were the opposite — the Colosseum cleared at a 2% knockout rate while handing over thousands of gold. Neither is a gamble.
All five tiers were retuned so each is a genuine risk/reward decision at its unlock level — meaningful knockout risk, an economy that rewards a clean run and stings on a wipe, and deeper tiers that demand more and pay more. The wave escalation from v1.24 stays; the fee and reward curves around it were rebalanced against the data.
Bosses are threats, not flavor
A world boss used to be a cutscene. In simulation, a level-100 character beat bosses taking near-zero damage — 74 boss fights, all wins, no danger. Boss HP and attack were lifted substantially (the roster now runs 440–540 HP), and the same dodge-advantage cap was applied to boss fights. A mid-to-high-level character can still win — but now a boss costs you something on the way down.
🗺️ A Wider World
Two changes from earlier in this cycle ship here too:
- +22 new themed zones. The filesystem map your
$PWDlands on grew — more of your real directories now have their own danger level, color, and flavor, from system paths to caches to build artifacts. - +~70 new recognized commands. Many more of the commands you actually type now trigger class-aware events, each with its own flavor per class.
🔧 Behind the Scenes
None of the rebalance above would have been trustworthy without tooling. This cycle the balance simulator was rebuilt and extended:
- Dockerized simulation — one container per simulated character, for true filesystem isolation now that
sqreaches the real disk (the Void needed this). - Pre-leveled and pre-prestiged character seeding — the simulator can now spawn a character directly at level 100, or level 150 with prestige 3, instead of grinding one there from scratch. This made end-game and Godslayer-tier validation tractable (minutes instead of hours).
SQ_DEBUGtelemetry,sq items --json/sq bestiary --jsoncatalog dumps, and an interactive A/B-compare dashboard — the instrumentation that turned "it feels too easy" into a table of numbers.
These are developer tools; they are not shipped in the sq binary and don't change how you play. They're why the numbers in this release are claims you can check rather than vibes.
One Honest Caveat
The Godslayer's Court — the 50-round, level-150, prestige-3 endgame tier — was validated for entry and deep-round survival, but its crown-clear (winning all 50 rounds) was not provable in simulation: the sim's strategy never voluntarily cashes out, so it can't model the deliberate human decision of when to bank and walk. Entry, escalating risk, and the economy are confirmed by data. Whether a perfectly-played human clears the crown is, as it should be, left to you.
Every fight harder than the last. Every level earned. And a portal in your home directory that wasn't there yesterday.