@maka/maka-cli 5.159.0 → 5.160.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.159.0",
3
+ "version": "5.160.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.",
@@ -1237,7 +1237,18 @@ export class Player extends AbstractPlayer {
1237
1237
  // Edge is a per-job pool: spend a point (see commands/edge.ts) to arm a
1238
1238
  // boost that supercharges your next strike. Refreshed to `edge` on every
1239
1239
  // new job (see Game.continueToNextScene).
1240
- edgeRemaining = 0;
1240
+ // AN ACCESSOR, like weaponDrawn (ZpgTTPgX4Hn7qL5M7, 2026-09-10): the
1241
+ // play page's HUD header shows edge remaining, and a browser run has
1242
+ // no mid-run save to carry a spend -- only the beat can. Source-
1243
+ // compatible: every `edgeRemaining =` still works; it now reports.
1244
+ _edgeRemaining = 0;
1245
+ get edgeRemaining() { return this._edgeRemaining; }
1246
+ set edgeRemaining(v) {
1247
+ if (this._edgeRemaining === v)
1248
+ return;
1249
+ this._edgeRemaining = v;
1250
+ this.noteConditionChanged();
1251
+ }
1241
1252
  edgeBoostArmed = false;
1242
1253
  // Physical condition monitor, straight from SR5: 8 + (Body / 2, rounded
1243
1254
  // up) boxes. Damage fills boxes; a full track is death.
@@ -2075,7 +2086,17 @@ export class Player extends AbstractPlayer {
2075
2086
  // Karma: the advancement currency, earned per completed job (see
2076
2087
  // Scene.checkWinCondition) and spent in the hideout via "advance" --
2077
2088
  // gear stops being the only progression axis.
2078
- karma = 0;
2089
+ // AN ACCESSOR (2026-09-10, same reason as edgeRemaining): the web's
2090
+ // HUD header follows a karma award through the beat, since a browser
2091
+ // run's save summary never moves mid-job. `karma +=` still works.
2092
+ _karma = 0;
2093
+ get karma() { return this._karma; }
2094
+ set karma(v) {
2095
+ if (this._karma === v)
2096
+ return;
2097
+ this._karma = v;
2098
+ this.noteConditionChanged();
2099
+ }
2079
2100
  /**
2080
2101
  * The effective rating for a skill: explicit rating if set; otherwise
2081
2102
  * combat skills fall back to the legacy `combatSkill` attribute (which
@@ -4189,6 +4210,10 @@ export class Player extends AbstractPlayer {
4189
4210
  break;
4190
4211
  }
4191
4212
  this._currency += remaining;
4213
+ // The wallet moved: the web's HUD header reads nuyen off the beat
4214
+ // (2026-09-10) -- a payout, a fare, a purchase all land here.
4215
+ if (delta !== 0)
4216
+ this.noteConditionChanged();
4192
4217
  }
4193
4218
  }
4194
4219
  //# sourceMappingURL=player.js.map
@@ -166,6 +166,15 @@ export function buildConditionReport(player, deps) {
166
166
  // The ONE honest AR answer (2026-09-01): muted, cut, and no-rig
167
167
  // all collapse into arSightUp, computed at fire time.
168
168
  ar: arSightUp(player),
169
+ // THE HEADER'S NUMBERS (contract 2026-09-10, web accepted first;
170
+ // ZpgTTPgX4Hn7qL5M7: the play page's HUD shows the sheet header). A
171
+ // browser run writes no mid-run save and its roster summary is
172
+ // frozen for the whole job, so an edge spend, a payout, or a karma
173
+ // award reaches the web only through the beat. The engine's own
174
+ // fields, verbatim; edge is BOTH halves or neither on the web side.
175
+ karma: player.karma,
176
+ nuyen: player.currency,
177
+ edge: { remaining: player.edgeRemaining, max: player.edge },
169
178
  // THE ROOM'S OTHER DOTS (user: the map becomes a tactical
170
179
  // readout). Current room only, read at fire time; spot-seated
171
180
  // actors carry `spot` and the web places them on the grid it
@@ -218,6 +227,7 @@ function noteRoster(report) {
218
227
  const ADDITIVE_FIELDS = [
219
228
  'ar', 'actors', 'deckLine', 'deckDamage', 'astralPerceiving', 'bodyRoom', 'sustainingPenalty',
220
229
  'matrix', 'panMarks', 'hostMarksOnYou', 'marksPlaced', 'marksOnYou', 'deckStored', 'droneDamage', 'companions', 'pools', 'initiative',
230
+ 'karma', 'nuyen', 'edge',
221
231
  ];
222
232
  /** Refusal reasons already written to the session log -- one line each. */
223
233
  const announcedRefusals = new Map();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.159.0",
3
+ "version": "5.160.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.",