@shardworks/spider-apparatus 0.1.267 → 0.1.269
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.
- package/README.md +3 -2
- package/dist/rig-view.d.ts +5 -1
- package/dist/rig-view.d.ts.map +1 -1
- package/dist/rig-view.js +28 -5
- package/dist/rig-view.js.map +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/static/spider-ui.test.ts +35 -0
- package/src/static/spider.js +17 -28
package/README.md
CHANGED
|
@@ -359,12 +359,13 @@ The Spider contributes books, tools, engines, and a role for rig inspection and
|
|
|
359
359
|
|
|
360
360
|
#### Rig view enrichment
|
|
361
361
|
|
|
362
|
-
`rig-list` and `rig-show` return `RigView` — the persisted `RigDoc` plus
|
|
362
|
+
`rig-list` and `rig-show` return `RigView` — the persisted `RigDoc` plus three derived fields aggregated from other books:
|
|
363
363
|
|
|
364
364
|
- `costSummary?: { costUsd, inputTokens?, outputTokens? }` — totals across every engine session in the rig. Absent when no engine has a `sessionId`; `inputTokens`/`outputTokens` are absent when no session reported token usage.
|
|
365
365
|
- `engineCosts?: Record<engineId, { costUsd, inputTokens?, outputTokens? }>` — per-engine cost entries. Only engines with a `sessionId` (i.e. anima engines) get an entry — clockwork and skipped engines are omitted. Engines whose sessions can't be resolved contribute zero.
|
|
366
|
+
- `writTitle?: string` — the current title of the rig's writ, joined from the `clerk/writs` book. Absent when the writ cannot be resolved (e.g. deleted). Never persisted on `RigDoc`; recomputed on every read so `writ-edit` title changes are reflected on the next dashboard poll.
|
|
366
367
|
|
|
367
|
-
The enrichment happens in the tool layer. `SpiderApi.list()` and `SpiderApi.show()` still return the persisted `RigDoc` shape for internal callers that don't need
|
|
368
|
+
The enrichment happens in the tool layer. `SpiderApi.list()` and `SpiderApi.show()` still return the persisted `RigDoc` shape for internal callers that don't need the derived fields.
|
|
368
369
|
|
|
369
370
|
### Block Types
|
|
370
371
|
|
package/dist/rig-view.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Rig view aggregator — builds the UI-facing RigView from a persisted
|
|
3
|
-
* RigDoc by joining against the Animator's per-session cost snapshot
|
|
3
|
+
* RigDoc by joining against the Animator's per-session cost snapshot and
|
|
4
|
+
* the Clerk writs book for the rig's writ title.
|
|
4
5
|
*
|
|
5
6
|
* Read-only. Pure derived fields; never persisted.
|
|
6
7
|
*
|
|
@@ -11,6 +12,9 @@
|
|
|
11
12
|
* zeros; sessions that are missing from the book are skipped silently.
|
|
12
13
|
* - tokenUsage fields are optional: when no contributing session has
|
|
13
14
|
* tokenUsage, the aggregate inputTokens/outputTokens are omitted.
|
|
15
|
+
* - writTitle is populated from the `clerk/writs` book via a direct book
|
|
16
|
+
* read. On a miss (book returns null/undefined), writTitle is left
|
|
17
|
+
* unset; the client renders an em-dash fallback for that one row.
|
|
14
18
|
*
|
|
15
19
|
* The cost data comes from AnimatorApi.getSessionCosts — the Animator owns
|
|
16
20
|
* the shape of cost answers, so consumers like this aggregator do not reach
|
package/dist/rig-view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rig-view.d.ts","sourceRoot":"","sources":["../src/rig-view.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rig-view.d.ts","sourceRoot":"","sources":["../src/rig-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,KAAK,EACV,MAAM,EACN,OAAO,EAGR,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgFjE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAEvE"}
|
package/dist/rig-view.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Rig view aggregator — builds the UI-facing RigView from a persisted
|
|
3
|
-
* RigDoc by joining against the Animator's per-session cost snapshot
|
|
3
|
+
* RigDoc by joining against the Animator's per-session cost snapshot and
|
|
4
|
+
* the Clerk writs book for the rig's writ title.
|
|
4
5
|
*
|
|
5
6
|
* Read-only. Pure derived fields; never persisted.
|
|
6
7
|
*
|
|
@@ -11,6 +12,9 @@
|
|
|
11
12
|
* zeros; sessions that are missing from the book are skipped silently.
|
|
12
13
|
* - tokenUsage fields are optional: when no contributing session has
|
|
13
14
|
* tokenUsage, the aggregate inputTokens/outputTokens are omitted.
|
|
15
|
+
* - writTitle is populated from the `clerk/writs` book via a direct book
|
|
16
|
+
* read. On a miss (book returns null/undefined), writTitle is left
|
|
17
|
+
* unset; the client renders an em-dash fallback for that one row.
|
|
14
18
|
*
|
|
15
19
|
* The cost data comes from AnimatorApi.getSessionCosts — the Animator owns
|
|
16
20
|
* the shape of cost answers, so consumers like this aggregator do not reach
|
|
@@ -24,6 +28,14 @@ import { guild } from '@shardworks/nexus-core';
|
|
|
24
28
|
* Does not mutate the rig. Safe to call on every read.
|
|
25
29
|
*/
|
|
26
30
|
export async function enrichRigView(rig) {
|
|
31
|
+
// Look up the writ title from the clerk/writs book. Direct book read —
|
|
32
|
+
// `book.get(id)` returns null/undefined on miss (no throw), matching the
|
|
33
|
+
// omit-field semantic (client falls back to em-dash for that one row).
|
|
34
|
+
const stacks = guild().apparatus('stacks');
|
|
35
|
+
const writsBook = stacks.readBook('clerk', 'writs');
|
|
36
|
+
const writTitlePromise = rig.writId
|
|
37
|
+
? writsBook.get(rig.writId).then((w) => (w && typeof w.title === 'string' ? w.title : undefined))
|
|
38
|
+
: Promise.resolve(undefined);
|
|
27
39
|
// Collect (engineId, sessionId) pairs to look up.
|
|
28
40
|
const pairs = [];
|
|
29
41
|
for (const engine of rig.engines || []) {
|
|
@@ -31,9 +43,14 @@ export async function enrichRigView(rig) {
|
|
|
31
43
|
pairs.push({ engineId: engine.id, sessionId: engine.sessionId });
|
|
32
44
|
}
|
|
33
45
|
}
|
|
34
|
-
// No engines with sessions: no cost data to report
|
|
46
|
+
// No engines with sessions: no cost data to report — but still attach
|
|
47
|
+
// the writ title if we resolved one.
|
|
35
48
|
if (pairs.length === 0) {
|
|
36
|
-
|
|
49
|
+
const writTitle = await writTitlePromise;
|
|
50
|
+
const view = { ...rig };
|
|
51
|
+
if (writTitle !== undefined)
|
|
52
|
+
view.writTitle = writTitle;
|
|
53
|
+
return view;
|
|
37
54
|
}
|
|
38
55
|
// Resolve the Animator via the same apparatus-resolution mechanism
|
|
39
56
|
// Spider's engines use elsewhere, and fetch cost snapshots in a single
|
|
@@ -41,7 +58,10 @@ export async function enrichRigView(rig) {
|
|
|
41
58
|
// (see AnimatorApi.getSessionCosts), which preserves the "missing = zero
|
|
42
59
|
// contribution" semantic this aggregator has always had.
|
|
43
60
|
const animator = guild().apparatus('animator');
|
|
44
|
-
const costs = await
|
|
61
|
+
const [costs, writTitle] = await Promise.all([
|
|
62
|
+
animator.getSessionCosts(pairs.map((p) => p.sessionId)),
|
|
63
|
+
writTitlePromise,
|
|
64
|
+
]);
|
|
45
65
|
const engineCosts = {};
|
|
46
66
|
let totalCostUsd = 0;
|
|
47
67
|
let totalInputTokens = 0;
|
|
@@ -73,11 +93,14 @@ export async function enrichRigView(rig) {
|
|
|
73
93
|
costSummary.inputTokens = totalInputTokens;
|
|
74
94
|
costSummary.outputTokens = totalOutputTokens;
|
|
75
95
|
}
|
|
76
|
-
|
|
96
|
+
const view = {
|
|
77
97
|
...rig,
|
|
78
98
|
costSummary,
|
|
79
99
|
engineCosts,
|
|
80
100
|
};
|
|
101
|
+
if (writTitle !== undefined)
|
|
102
|
+
view.writTitle = writTitle;
|
|
103
|
+
return view;
|
|
81
104
|
}
|
|
82
105
|
/**
|
|
83
106
|
* Enrich an array of rigs in parallel.
|
package/dist/rig-view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rig-view.js","sourceRoot":"","sources":["../src/rig-view.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rig-view.js","sourceRoot":"","sources":["../src/rig-view.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -142,14 +142,21 @@ export interface EngineCostSummary {
|
|
|
142
142
|
* - `engineCosts` maps engineId → per-engine cost snapshot. Contains an
|
|
143
143
|
* entry for every engine with a sessionId. Omitted when no engine has
|
|
144
144
|
* a sessionId.
|
|
145
|
+
* - `writTitle` is the current title of this rig's writ, joined from the
|
|
146
|
+
* `clerk/writs` book. Omitted when the writ cannot be resolved (e.g.
|
|
147
|
+
* deleted). Derived-only — never persisted on `RigDoc`; recomputed on
|
|
148
|
+
* every read so `writ-edit` title changes are reflected on the next
|
|
149
|
+
* dashboard poll.
|
|
145
150
|
*
|
|
146
|
-
*
|
|
151
|
+
* All derived fields are read-only reports — they are never persisted.
|
|
147
152
|
*/
|
|
148
153
|
export interface RigView extends RigDoc {
|
|
149
154
|
/** Rig-level cost aggregate (sum across all engine sessions). */
|
|
150
155
|
costSummary?: RigCostSummary;
|
|
151
156
|
/** Per-engine cost snapshot keyed by engine id. */
|
|
152
157
|
engineCosts?: Record<string, EngineCostSummary>;
|
|
158
|
+
/** Current title of this rig's writ, joined from `clerk/writs`. */
|
|
159
|
+
writTitle?: string;
|
|
153
160
|
}
|
|
154
161
|
/**
|
|
155
162
|
* Filters for listing rigs.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAIrC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAIhH;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,SAAS,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAID,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,gEAAgE;IAChE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,+BAA+B;IAC/B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,0GAA0G;IAC1G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2GAA2G;IAC3G,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shardworks/spider-apparatus",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.269",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -22,17 +22,17 @@
|
|
|
22
22
|
"hono": "^4.7.11",
|
|
23
23
|
"yaml": "^2.0.0",
|
|
24
24
|
"zod": "4.3.6",
|
|
25
|
-
"@shardworks/fabricator-apparatus": "0.1.
|
|
26
|
-
"@shardworks/clerk-apparatus": "0.1.
|
|
27
|
-
"@shardworks/
|
|
28
|
-
"@shardworks/
|
|
29
|
-
"@shardworks/
|
|
30
|
-
"@shardworks/
|
|
31
|
-
"@shardworks/
|
|
25
|
+
"@shardworks/fabricator-apparatus": "0.1.269",
|
|
26
|
+
"@shardworks/clerk-apparatus": "0.1.269",
|
|
27
|
+
"@shardworks/stacks-apparatus": "0.1.269",
|
|
28
|
+
"@shardworks/tools-apparatus": "0.1.269",
|
|
29
|
+
"@shardworks/codexes-apparatus": "0.1.269",
|
|
30
|
+
"@shardworks/loom-apparatus": "0.1.269",
|
|
31
|
+
"@shardworks/animator-apparatus": "0.1.269"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/node": "25.5.0",
|
|
35
|
-
"@shardworks/nexus-core": "0.1.
|
|
35
|
+
"@shardworks/nexus-core": "0.1.269"
|
|
36
36
|
},
|
|
37
37
|
"files": [
|
|
38
38
|
"dist",
|
|
@@ -1033,6 +1033,41 @@ describe('spider.js server-supplied engine cost', () => {
|
|
|
1033
1033
|
});
|
|
1034
1034
|
});
|
|
1035
1035
|
|
|
1036
|
+
// ── Server-supplied writ title (no client-side writ-list fetch) ─────────
|
|
1037
|
+
|
|
1038
|
+
describe('spider.js server-supplied writ title', () => {
|
|
1039
|
+
// Parallel to the cost-data migration above: the client no longer
|
|
1040
|
+
// fetches /api/writ/list or maintains a writLookup cache — the writ
|
|
1041
|
+
// title arrives on the rig payload itself via RigView.writTitle
|
|
1042
|
+
// (populated server-side by enrichRigView against the clerk/writs
|
|
1043
|
+
// book). Guarding against the old pattern prevents the
|
|
1044
|
+
// latest-100-writs-window bug from regressing into the Rigs tab.
|
|
1045
|
+
|
|
1046
|
+
it('no longer declares a writLookup cache', () => {
|
|
1047
|
+
assert.doesNotMatch(
|
|
1048
|
+
spiderJs,
|
|
1049
|
+
/writLookup/,
|
|
1050
|
+
'writLookup cache must not exist — writ title comes from the rig payload',
|
|
1051
|
+
);
|
|
1052
|
+
});
|
|
1053
|
+
|
|
1054
|
+
it('no longer defines a buildWritLookup helper', () => {
|
|
1055
|
+
assert.doesNotMatch(
|
|
1056
|
+
spiderJs,
|
|
1057
|
+
/buildWritLookup/,
|
|
1058
|
+
'buildWritLookup helper was removed with the client-side writ fetch',
|
|
1059
|
+
);
|
|
1060
|
+
});
|
|
1061
|
+
|
|
1062
|
+
it('UI never calls /api/writ/list for row titles', () => {
|
|
1063
|
+
assert.doesNotMatch(
|
|
1064
|
+
spiderJs,
|
|
1065
|
+
/\/api\/writ\/list/,
|
|
1066
|
+
'UI should not hit /api/writ/list — writ title is joined server-side onto each rig',
|
|
1067
|
+
);
|
|
1068
|
+
});
|
|
1069
|
+
});
|
|
1070
|
+
|
|
1036
1071
|
// ── Cost / token formatting via shared namespace ────────────────────────
|
|
1037
1072
|
|
|
1038
1073
|
describe('spider.js cost/token formatting delegates to window.NexusFormat', () => {
|
package/src/static/spider.js
CHANGED
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
var sortDir = 'desc';
|
|
15
15
|
var configData = null;
|
|
16
16
|
var currentStatusFilter = '';
|
|
17
|
-
var writLookup = {};
|
|
18
17
|
var sessionPollTimer = null;
|
|
19
18
|
var selectedTemplateName = null;
|
|
20
19
|
var rigListPollTimer = null;
|
|
@@ -142,13 +141,6 @@
|
|
|
142
141
|
return lines.join('\n');
|
|
143
142
|
}
|
|
144
143
|
|
|
145
|
-
function buildWritLookup(writs) {
|
|
146
|
-
writLookup = {};
|
|
147
|
-
for (var i = 0; i < writs.length; i++) {
|
|
148
|
-
writLookup[writs[i].id] = writs[i];
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
144
|
function stopSessionPoll() {
|
|
153
145
|
if (sessionPollTimer !== null) {
|
|
154
146
|
clearInterval(sessionPollTimer);
|
|
@@ -402,12 +394,8 @@
|
|
|
402
394
|
rigUrl += '&status=' + encodeURIComponent(currentStatusFilter);
|
|
403
395
|
}
|
|
404
396
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
Promise.all([rigPromise, writPromise]).then(function (results) {
|
|
409
|
-
rigs = Array.isArray(results[0]) ? results[0] : [];
|
|
410
|
-
buildWritLookup(Array.isArray(results[1]) ? results[1] : []);
|
|
397
|
+
fetch(rigUrl).then(function (r) { return r.json(); }).then(function (result) {
|
|
398
|
+
rigs = Array.isArray(result) ? result : [];
|
|
411
399
|
renderRigList();
|
|
412
400
|
|
|
413
401
|
// Re-evaluate whether polling should continue
|
|
@@ -495,16 +483,12 @@
|
|
|
495
483
|
rigUrl += '&status=' + encodeURIComponent(statusFilter);
|
|
496
484
|
}
|
|
497
485
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
Promise.all([rigPromise, writPromise]).then(function (results) {
|
|
502
|
-
rigs = Array.isArray(results[0]) ? results[0] : [];
|
|
503
|
-
buildWritLookup(Array.isArray(results[1]) ? results[1] : []);
|
|
486
|
+
fetch(rigUrl).then(function (r) { return r.json(); }).then(function (result) {
|
|
487
|
+
rigs = Array.isArray(result) ? result : [];
|
|
504
488
|
renderRigList();
|
|
505
489
|
startRigListPollIfNeeded();
|
|
506
490
|
}).catch(function (err) {
|
|
507
|
-
console.error('Failed to fetch rigs
|
|
491
|
+
console.error('Failed to fetch rigs:', err);
|
|
508
492
|
rigs = [];
|
|
509
493
|
renderRigList();
|
|
510
494
|
});
|
|
@@ -518,9 +502,11 @@
|
|
|
518
502
|
var dateTo = (document.getElementById('date-to') || {}).value || '';
|
|
519
503
|
|
|
520
504
|
var filtered = rigs.filter(function (rig) {
|
|
521
|
-
// WritId/writ title filter (case-insensitive)
|
|
505
|
+
// WritId/writ title filter (case-insensitive). Writ title is joined
|
|
506
|
+
// server-side onto the rig payload as `rig.writTitle` — no separate
|
|
507
|
+
// writ lookup window. A missing writTitle simply fails to match.
|
|
522
508
|
if (writFilter) {
|
|
523
|
-
var writTitle =
|
|
509
|
+
var writTitle = rig.writTitle || '';
|
|
524
510
|
var matchesId = (rig.writId || '').toLowerCase().includes(writFilter.toLowerCase());
|
|
525
511
|
var matchesTitle = writTitle.toLowerCase().includes(writFilter.toLowerCase());
|
|
526
512
|
if (!matchesId && !matchesTitle) return false;
|
|
@@ -627,7 +613,8 @@
|
|
|
627
613
|
tr.appendChild(statusTd);
|
|
628
614
|
|
|
629
615
|
// Cell 2: Writ title (rig-link anchor). Writ title text is written by
|
|
630
|
-
// updateRigRow on every poll (D9) so
|
|
616
|
+
// updateRigRow on every poll (D9) so server-joined title refreshes
|
|
617
|
+
// (e.g. after a writ-edit) are visible on the next poll.
|
|
631
618
|
var writTitleTd = document.createElement('td');
|
|
632
619
|
var writTitleAnchor = document.createElement('a');
|
|
633
620
|
writTitleAnchor.className = 'rig-link';
|
|
@@ -688,8 +675,8 @@
|
|
|
688
675
|
* call on every 2 s poll — writes only happen when values actually
|
|
689
676
|
* changed, mirroring the idempotent-write pattern used by setText /
|
|
690
677
|
* updatePipelineNode. Cells touched: status (badge class + text), writ
|
|
691
|
-
* title (anchor textContent —
|
|
692
|
-
* D9), cost, engines.
|
|
678
|
+
* title (anchor textContent — sourced from the server-joined
|
|
679
|
+
* `rig.writTitle` field on every call per D9), cost, engines.
|
|
693
680
|
*/
|
|
694
681
|
function updateRigRow(row, rig) {
|
|
695
682
|
// Status badge — class + text, both idempotent.
|
|
@@ -704,10 +691,12 @@
|
|
|
704
691
|
}
|
|
705
692
|
}
|
|
706
693
|
|
|
707
|
-
// Writ title —
|
|
694
|
+
// Writ title — sourced from the server-joined `rig.writTitle` field
|
|
695
|
+
// (populated by enrichRigView against the clerk/writs book). Falls
|
|
696
|
+
// back to an em-dash only when the join did not resolve. The
|
|
708
697
|
// writ-title anchor is the first .rig-link in the row; the rig-id
|
|
709
698
|
// anchor appears later and is not touched here.
|
|
710
|
-
var writTitle =
|
|
699
|
+
var writTitle = rig.writTitle || '\u2014';
|
|
711
700
|
var writTitleAnchor = row.querySelector('.rig-link');
|
|
712
701
|
if (writTitleAnchor && writTitleAnchor.textContent !== writTitle) {
|
|
713
702
|
writTitleAnchor.textContent = writTitle;
|