@maka/maka-cli 5.216.0 → 5.217.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.
|
|
3
|
+
"version": "5.217.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.",
|
|
@@ -1138,5 +1138,30 @@
|
|
|
1138
1138
|
// because that is what narrowing means. One candidate is not a
|
|
1139
1139
|
// cycle -- a key that rewrites the box to what it already holds
|
|
1140
1140
|
// looks broken.
|
|
1141
|
-
|
|
1141
|
+
// 1.76.0 (2026-09-16): THE WAN IS DRAWN AS A TREE (RXBaewsjGDZqqW8ba,
|
|
1142
|
+
// Maka: "the heiarchy is confusing when using 'look' in the matrix.
|
|
1143
|
+
// What 'host' does camera cluster attach to? it says 'live, feeding
|
|
1144
|
+
// the site's host'. If we're allowed to know which host it's attached
|
|
1145
|
+
// to, then let's make this a 'tree' view"). The list was flat: a host
|
|
1146
|
+
// in one section, the devices hanging off it in another, nothing
|
|
1147
|
+
// joining them, and the only clue a phrase that named no host. The
|
|
1148
|
+
// structure was in the model all along and only the rendering hid it.
|
|
1149
|
+
// - HOSTS OVERHEAD now indents a host's slaves beneath it with box
|
|
1150
|
+
// drawing, and ICONS IN REACH holds only what answers to nobody.
|
|
1151
|
+
// - The camera line NAMES its master, from the same cameraMasterHost
|
|
1152
|
+
// tap.ts uses to decide what is on the other end of the cable.
|
|
1153
|
+
// - WHAT COUNTS AS A SLAVE is p.233's rule, not "everything nearby":
|
|
1154
|
+
// "the slaves must be devices and the master must be a host". So the
|
|
1155
|
+
// room's devices and its camera cluster branch off the host; a
|
|
1156
|
+
// person's commlink is THEIR PAN and a persona is nobody's slave,
|
|
1157
|
+
// and both stay at top level.
|
|
1158
|
+
// - "IF WE'RE ALLOWED TO KNOW" IS THE REPORTER'S OWN CONDITIONAL, and
|
|
1159
|
+
// it was RAG-checked rather than assumed. Matrix Perception does NOT
|
|
1160
|
+
// list a device's master among what a hit buys you (p.235), so this
|
|
1161
|
+
// must not become a way to learn one -- and it is not. The engine
|
|
1162
|
+
// already disclosed that these icons answered to "the site's host",
|
|
1163
|
+
// and a room with a node has exactly one; the tree says the same
|
|
1164
|
+
// thing in a shape that can be read. A watched room with NO node
|
|
1165
|
+
// still names no master, pinned as a test.
|
|
1166
|
+
export const ENGINE_VERSION = '1.76.0';
|
|
1142
1167
|
//# sourceMappingURL=engine-version.js.map
|
|
@@ -4,7 +4,7 @@ import { hostsInReach, hostLine, roomsInReach, gridVicinity } from './grid-reach
|
|
|
4
4
|
import { NPC } from '../models/npc.js';
|
|
5
5
|
import { hostLabel, hostPurposeFor } from './grid-names.js';
|
|
6
6
|
import { isLinked } from './comm-style.js';
|
|
7
|
-
import { isWatched, camerasLive, canSnoopFeeds } from './surveillance.js';
|
|
7
|
+
import { isWatched, camerasLive, canSnoopFeeds, cameraMasterHost } from './surveillance.js';
|
|
8
8
|
/**
|
|
9
9
|
* The grid's icon inventory for one room -- everything a persona can
|
|
10
10
|
* ACT on, each with its verb (player rulings 2026-08-23/24: "it's hard
|
|
@@ -277,7 +277,16 @@ export function gridIcons(scene, actor, room) {
|
|
|
277
277
|
// catch is that a persona cannot hold a cable -- so this reads as
|
|
278
278
|
// something your BODY could do, which is the price the rule
|
|
279
279
|
// charges. See commands/tap.ts.
|
|
280
|
-
|
|
280
|
+
// NAME THE MASTER (RXBaewsjGDZqqW8ba, Maka: "What 'host' does
|
|
281
|
+
// camera cluster attach to? it says 'live, feeding the site's
|
|
282
|
+
// host'"). Nothing new is disclosed -- the line already said these
|
|
283
|
+
// lenses answer to a host, and cameraMasterHost is the same
|
|
284
|
+
// function tap.ts uses to decide what is on the other end of the
|
|
285
|
+
// cable. It simply refused to say WHICH, in a district that has
|
|
286
|
+
// exactly one, so the reader was left to guess at a fact the
|
|
287
|
+
// engine had already handed them.
|
|
288
|
+
const owner = cameraMasterHost(scene.getRooms(), room);
|
|
289
|
+
icons.push(`◎ Camera cluster -- live, feeding ${owner ? hostLabel(owner) : `the site's host`}. Loud acts here travel. (own the host to loop them -- or walk in and "tap" a lens in the flesh: slaved to the host means a key to the host)`);
|
|
281
290
|
}
|
|
282
291
|
}
|
|
283
292
|
// THE DIVIDER (eJANPpm7qCaCAJBJw). Only when there is a host to be
|
|
@@ -562,9 +571,6 @@ export function gridIconBlock(scene, actor, room, rooms) {
|
|
|
562
571
|
}
|
|
563
572
|
const out = [];
|
|
564
573
|
const hosts = hostsInReach(rooms, actor);
|
|
565
|
-
out.push(hosts.length > 0
|
|
566
|
-
? `{light-blue-fg}HOSTS OVERHEAD:{/light-blue-fg}\n${hosts.map(h => ` {light-blue-fg}${hostLine(h, actor)}{/light-blue-fg}`).join('\n')}`
|
|
567
|
-
: `{light-blue-fg}Nothing overhead -- no host stands over this district.{/light-blue-fg}`);
|
|
568
574
|
// THE DIVIDER DIVIDES NOTHING HERE. gridIcons puts the host's own icon
|
|
569
575
|
// first and splices a "-- and NEAR it ... --" heading after it; this
|
|
570
576
|
// block then pulls the host line OUT (it has its own HOSTS OVERHEAD
|
|
@@ -577,9 +583,51 @@ export function gridIconBlock(scene, actor, room, rooms) {
|
|
|
577
583
|
const near = gridIcons(scene, actor, gridVicinity(actor))
|
|
578
584
|
.filter(i => !isHostLine(i))
|
|
579
585
|
.filter((i, idx) => !(idx === 0 && isNearDivider(i)));
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
586
|
+
// THE WAN IS DRAWN AS A TREE (RXBaewsjGDZqqW8ba, Maka: "the heiarchy
|
|
587
|
+
// is confusing when using 'look' in the matrix. What 'host' does
|
|
588
|
+
// camera cluster attach to? ... let's make this a 'tree' view").
|
|
589
|
+
//
|
|
590
|
+
// The list was flat, so a host and the devices hanging off it sat in
|
|
591
|
+
// two separate sections with nothing joining them, and the only clue
|
|
592
|
+
// was the phrase "the site's host" -- which names no host. The
|
|
593
|
+
// structure was in the model the whole time and only the rendering
|
|
594
|
+
// hid it.
|
|
595
|
+
//
|
|
596
|
+
// WHAT IS ACTUALLY SLAVED, and the line is not "everything nearby":
|
|
597
|
+
// a WAN's slaves are DEVICES (p.233 -- "the slaves must be devices and
|
|
598
|
+
// the master must be a host"), which here means the room's own
|
|
599
|
+
// devices and its camera cluster. A person's commlink is their PAN,
|
|
600
|
+
// not the host's, and a persona is nobody's slave; those stay at top
|
|
601
|
+
// level where they belong.
|
|
602
|
+
//
|
|
603
|
+
// AND NOTHING NEW IS DISCLOSED. Checked against the books rather than
|
|
604
|
+
// assumed: Matrix Perception does NOT list a device's master among
|
|
605
|
+
// what a hit buys you (p.235), so this must not become a way to learn
|
|
606
|
+
// one. It doesn't -- the engine already told you these icons answered
|
|
607
|
+
// to "the site's host", and a room with a node has exactly one. The
|
|
608
|
+
// tree says the same thing in a shape that can be read; it does not
|
|
609
|
+
// reach for a relationship the player did not already have.
|
|
610
|
+
const hereRoom = gridVicinity(actor);
|
|
611
|
+
const master = hosts.find(h => h === hereRoom);
|
|
612
|
+
const isSlave = (i) => i.startsWith('▤') || i.startsWith('◎');
|
|
613
|
+
const slaved = master ? near.filter(isSlave) : [];
|
|
614
|
+
const loose = master ? near.filter(i => !isSlave(i)) : near;
|
|
615
|
+
out.push(hosts.length > 0
|
|
616
|
+
? `{light-blue-fg}HOSTS OVERHEAD:{/light-blue-fg}\n${hosts.map(h => {
|
|
617
|
+
const line = ` {light-blue-fg}${hostLine(h, actor)}{/light-blue-fg}`;
|
|
618
|
+
if (h !== master || slaved.length === 0)
|
|
619
|
+
return line;
|
|
620
|
+
// Box-drawing, so the last child closes the branch and the eye can
|
|
621
|
+
// see where the WAN ends.
|
|
622
|
+
const kids = slaved.map((i, idx) => ` {light-blue-fg}${idx === slaved.length - 1 ? '└─' : '├─'} ${i}{/light-blue-fg}`);
|
|
623
|
+
return [line, ...kids].join('\n');
|
|
624
|
+
}).join('\n')}`
|
|
625
|
+
: `{light-blue-fg}Nothing overhead -- no host stands over this district.{/light-blue-fg}`);
|
|
626
|
+
out.push(loose.length > 0
|
|
627
|
+
? `{light-blue-fg}ICONS IN REACH${slaved.length > 0 ? ' -- answering to nobody up there' : ''}:{/light-blue-fg}\n${loose.map(i => ` {light-blue-fg}${i}{/light-blue-fg}`).join('\n')}`
|
|
628
|
+
: slaved.length > 0
|
|
629
|
+
? `{light-blue-fg}Nothing else near -- everything around you hangs off the host.{/light-blue-fg}`
|
|
630
|
+
: `{light-blue-fg}Nothing near -- background noise around your signal.{/light-blue-fg}`);
|
|
583
631
|
// FARTHER OUT, WITHOUT AN ADDRESS (SR5 p.235, p.243): Matrix Perception
|
|
584
632
|
// never tells you where a device physically sits -- that is Trace Icon,
|
|
585
633
|
// two marks and an opposed test. So far icons are listed by the noise
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.217.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.",
|