@maka/maka-cli 5.209.0 → 5.210.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.209.0",
3
+ "version": "5.210.0",
4
4
  "type": "module",
5
5
  "summary": "A command line tool for scaffolding Meteor 3.x applications using either React.",
6
6
  "description": "A command line tool for scaffolding Meteor 3.x applications using React.",
@@ -4,10 +4,11 @@ import { rollPool, formatRoll } from '../utilities/dice.js';
4
4
  import { ownedDrones } from '../utilities/owned-drones.js';
5
5
  /**
6
6
  * The free road to STUN recovery (stim patches are the fast, risky one --
7
- * see use.ts): catch your breath somewhere safe. "Safe" means somewhere
8
- * that houses you -- a Residence-type room, or a room whose seed says it
9
- * quarters your lifestyle tier -- or a room with no one else in it:
10
- * nobody naps in front of an audience in the sprawl.
7
+ * see use.ts): catch your breath somewhere safe. "Safe" means your own
8
+ * hideout (a Residence-type room) or a room with no one else in it:
9
+ * nobody naps in front of an audience in the sprawl. Only the hideout
10
+ * counts as SLEEP -- the tier's rest dice, the sleep debt and the
11
+ * fatigue unlock are all a bed-that-is-yours thing.
11
12
  *
12
13
  * Each rest is SR5 p.207's Stun half: Body + Willpower, one box per hit.
13
14
  * A night in a bed that's yours is also the day of NATURAL RECOVERY for
@@ -60,25 +61,27 @@ export class RestCommand extends Command {
60
61
  .map(d => d.item)
61
62
  .filter(i => i.droneDamage > 0);
62
63
  const othersHere = this.scene.getActorsInRoom(room).filter(a => a !== actor);
63
- // WHERE THIS RUNNER SLEEPS, NOT WHERE THE ENGINE KEEPS ITS HOME ROOM
64
- // (YxFKFqmXMgAvxwpce). 'Residence' is the roomType of Game._homeRoom
65
- // and of nothing else -- and _homeRoom is only ever added to the
66
- // scene on a SOLO boot (game.ts: `if (!options.sharedRun && ...)`).
67
- // headless.ts hard-codes sharedRun: true, so every browser session,
68
- // hub included, ran with no residence room in the world at all:
69
- // isResidence was permanently false, markSlept() could never fire,
70
- // the sleep-locked fatigue floor in Player.healStun never lifted,
71
- // and rest printed a roll and "0 stun recovered" with nothing to
72
- // explain it.
64
+ // A BED IS A BED, AND A STREET IS NOT ONE.
73
65
  //
74
- // The seed already says where a runner of a given tier beds down --
75
- // supportedLifestyles.residenceTypes, which the hub's own start room
76
- // carries ("Street", "Squatter"). A room that houses your lifestyle
77
- // IS your doss, whoever is hosting the session.
78
- const tier = this.game?.lifestyleTier;
79
- const housesMe = !!tier && (room.supportedLifestyles?.residenceTypes ?? [])
80
- .some(t => t.toLowerCase() === tier.toLowerCase());
81
- const isResidence = room.roomType?.toLowerCase() === 'residence' || housesMe;
66
+ // 'Residence' is the roomType of Game._homeRoom and of nothing else,
67
+ // which is exactly right: going home to sleep IS the mechanic.
68
+ //
69
+ // This briefly also accepted any room whose seed listed your
70
+ // lifestyle tier in supportedLifestyles.residenceTypes, on the
71
+ // belief that a hosted session had no hideout to go to. That belief
72
+ // was wrong -- see the note on IMainGameConfig.sharedRun -- and the
73
+ // cost was real: the hub's own Neon Strip carries ["Street",
74
+ // "Squatter"], so a runner on either tier could bed down IN THE
75
+ // STREET and collect a night's sleep, the fatigue unlock and the
76
+ // lifestyle rest dice for it. scenes/scene1.json:119 carries the
77
+ // same field, so it landed there too.
78
+ //
79
+ // supportedLifestyles means something else in any case: its reader
80
+ // is Scene.validateLifestyleSupport, which checks an actor's
81
+ // lifestyleChoices residence against the rooms the seed provides.
82
+ // It answers "may someone of this tier live in this scene", never
83
+ // "is this particular room your bedroom".
84
+ const isResidence = room.roomType?.toLowerCase() === 'residence';
82
85
  if (actor.stunTaken === 0 && actor.damageTaken === 0 && damagedDecks.length === 0 && damagedDrones.length === 0) {
83
86
  // Nothing to heal -- but sleeping is its own point now (needs
84
87
  // system: edge refills only fed-and-slept, see Game.
@@ -797,14 +797,14 @@
797
797
  // - REST WAS SHORT AN ATTRIBUTE AND LONG A FREE BOX
798
798
  // (YxFKFqmXMgAvxwpce). p.207's Stun half is Body + Willpower, one
799
799
  // box per hit; this rolled Body alone and paid hits + 1. The free
800
- // box is why nobody measured the missing attribute. And 'Residence'
801
- // is the roomType of Game._homeRoom alone, which is only added to
802
- // the scene on a SOLO boot -- headless.ts hard-codes sharedRun, so
803
- // every browser session had no bed in the world at all: no sleep, no
804
- // unlock for sleep-locked fatigue (p.172), a roll that moved
805
- // nothing, and no line saying why. A room whose seed quarters your
806
- // lifestyle tier is now your doss, and blocked recovery names what
807
- // is blocking it.
800
+ // box is why nobody measured the missing attribute. Blocked
801
+ // recovery also names what is blocking it now: fatigue boxes are
802
+ // locked to their need (p.172), so a runner whose stun IS hunger or
803
+ // exhaustion watched a roll happen and the track not budge, with no
804
+ // line connecting the two.
805
+ // WHAT THIS NOTE CLAIMED AND 1.68.0 TAKES BACK: that no hosted
806
+ // session had a bed. See the 1.68.0 entry -- it was read off one of
807
+ // two headless entry points and was wrong.
808
808
  // - BREACH COULD NOT REACH A DOOR (Gfx5RFFpHJdKB87Bh, "I cant Breach
809
809
  // East"). BypassCommand lists room.openableDevices(), which knows
810
810
  // only Device objects, so a plain keyed Door matched nothing and
@@ -927,5 +927,34 @@
927
927
  // ONE list (utilities/nameables.ts), which is what that module always
928
928
  // claimed. The refusal listed hosts only, under a sentence promising
929
929
  // it had looked for a PAN and a camera too.
930
- export const ENGINE_VERSION = '1.69.0';
930
+ // 1.70.0 (2026-09-16): A STREET IS NOT A BEDROOM -- taking back half of
931
+ // what 1.67.0 did to rest, because the premise under it was wrong.
932
+ // 1.67.0 widened rest's "am I somewhere I can sleep" test to accept any
933
+ // room whose seed listed the runner's lifestyle tier in
934
+ // supportedLifestyles.residenceTypes. The belief was that a hosted
935
+ // session had no hideout to go home to. It does.
936
+ // - HOW THE MISTAKE WAS MADE, because that is the reusable part: there
937
+ // are TWO headless entry points and only one was read.
938
+ // createHeadlessSession (a shared JOB) sets sharedRun: true
939
+ // unconditionally; createHeadlessHub (the browser's hub, 1.51.0)
940
+ // never sets it, so a hosted hub takes the ordinary branch, gets its
941
+ // hideout and its door, and the runner wakes on their own cot.
942
+ // Generalising the first to "every hosted session" produced the
943
+ // claim. What settled it: a live web hub renders `@D` beside the
944
+ // player, and the reporter's own CLI log walks `go down` into a
945
+ // High-tier hideout with a working Footlocker.
946
+ // - WHAT IT COST. The hub's Neon Strip carries ["Street","Squatter"],
947
+ // so a runner on either tier could bed down IN THE STREET and take a
948
+ // night's sleep, the fatigue unlock and the lifestyle rest dice for
949
+ // it; scene1.json's start room carries the same field. Going home to
950
+ // sleep IS the mechanic, and this quietly removed the going-home.
951
+ // supportedLifestyles was never a bedroom flag: its reader is
952
+ // Scene.validateLifestyleSupport, which asks whether someone of a
953
+ // tier may LIVE IN THIS SCENE, not which room is your cot.
954
+ // - WHAT STAYS, because it was right on its own terms: Body +
955
+ // Willpower and one box per hit (p.207), the line that names the
956
+ // fatigue floor when recovery is refused, and the isDown() narrowing.
957
+ // A shared JOB still has no hideout -- deliberate and unchanged: the
958
+ // crew rode to the jobsite, and nobody's cot is stapled to it.
959
+ export const ENGINE_VERSION = '1.70.0';
931
960
  //# sourceMappingURL=engine-version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.209.0",
3
+ "version": "5.210.0",
4
4
  "type": "module",
5
5
  "summary": "A command line tool for scaffolding Meteor 3.x applications using either React.",
6
6
  "description": "A command line tool for scaffolding Meteor 3.x applications using React.",