@sleep2agi/agent-network-dashboard 0.4.6-preview.211 → 0.4.6-preview.213
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +4 -4
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.html +1 -1
- package/.next/server/app/admin.rsc +1 -1
- package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/logs.html +1 -1
- package/.next/server/app/logs.rsc +1 -1
- package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
- package/.next/server/app/messages.html +1 -1
- package/.next/server/app/messages.rsc +1 -1
- package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
- package/.next/server/app/node.html +1 -1
- package/.next/server/app/node.rsc +1 -1
- package/.next/server/app/node.segments/_full.segment.rsc +1 -1
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +1 -1
- package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/node.segments/node.segment.rsc +1 -1
- package/.next/server/app/nodes.html +1 -1
- package/.next/server/app/nodes.rsc +1 -1
- package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +1 -1
- package/.next/server/app/server-logs.rsc +1 -1
- package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
- package/.next/server/app/settings/networks.html +1 -1
- package/.next/server/app/settings/networks.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +1 -1
- package/.next/server/app/settings/tokens.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/tasks.html +1 -1
- package/.next/server/app/tasks.rsc +1 -1
- package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{09mo5s0d1t.rl.js → 0jbpaock6~g4b.js} +4 -4
- package/.next/static/chunks/{0_tufsuno-ybu.js → 0~jer7yzbdwyf.js} +1 -1
- package/.next/static/chunks/{0yjst6n4eqy4c.js → 13vck9~m4yc3u.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/TopoGraph.tsx +41 -4
- package/package.json +1 -1
- package/scripts/topo-active-links-empty-recede-test.mjs +125 -0
- package/scripts/topo-chip-empty-recede-test.mjs +116 -0
- /package/.next/static/{FMKI0Nb4m8uK25F_8komz → 4jV5uu0TaA1Xfa8AyeD-x}/_buildManifest.js +0 -0
- /package/.next/static/{FMKI0Nb4m8uK25F_8komz → 4jV5uu0TaA1Xfa8AyeD-x}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{FMKI0Nb4m8uK25F_8komz → 4jV5uu0TaA1Xfa8AyeD-x}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/* Round 205 verification: working / online chip-row chips visually
|
|
2
|
+
* recede to opacity 0.5 when their tier is empty, mirroring R204's
|
|
3
|
+
* legend count recede pattern at the chip-row scope.
|
|
4
|
+
*
|
|
5
|
+
* Pre-R205 "0 working" displayed at the same bg-green-500/10 +
|
|
6
|
+
* full opacity as "12 working" — the eye got zero signal that the
|
|
7
|
+
* tier was empty. R205 combines with R139's clickable=false +
|
|
8
|
+
* tooltip-undefined: visual + interactive + affordance all say
|
|
9
|
+
* "nothing to act on".
|
|
10
|
+
*
|
|
11
|
+
* Test scenarios:
|
|
12
|
+
* A. All offline (0 working, 0 online):
|
|
13
|
+
* working chip empty='true', opacity ≈ 0.5
|
|
14
|
+
* online chip empty='true', opacity ≈ 0.5
|
|
15
|
+
* B. All working (4 working, 4 online):
|
|
16
|
+
* working chip empty='false', opacity = 1
|
|
17
|
+
* online chip empty='false', opacity = 1
|
|
18
|
+
* Both: inline transition includes 'opacity 200ms' alongside the
|
|
19
|
+
* existing R180 box-shadow / R201 bg/border transitions.
|
|
20
|
+
*/
|
|
21
|
+
import { chromium } from 'playwright';
|
|
22
|
+
import { readFileSync } from 'node:fs';
|
|
23
|
+
|
|
24
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
25
|
+
const browser = await chromium.launch({ headless: true });
|
|
26
|
+
|
|
27
|
+
async function pageFor(allStatus) {
|
|
28
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
|
|
29
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
30
|
+
await ctx.addInitScript(() => {
|
|
31
|
+
try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
|
|
32
|
+
});
|
|
33
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
34
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
35
|
+
const r = await route.fetch();
|
|
36
|
+
const b = await r.json();
|
|
37
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
38
|
+
const mk = (alias, status) => ({
|
|
39
|
+
alias, status, model: 'claude-opus-4', runtime: 'cli-claude-code',
|
|
40
|
+
network_id: nid, project_dir: null,
|
|
41
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
42
|
+
});
|
|
43
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [
|
|
44
|
+
mk('alpha', allStatus), mk('beta', allStatus),
|
|
45
|
+
mk('gamma', allStatus), mk('delta', allStatus),
|
|
46
|
+
] } });
|
|
47
|
+
});
|
|
48
|
+
await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: [] } }));
|
|
49
|
+
await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
|
|
50
|
+
const page = await ctx.newPage();
|
|
51
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
|
|
52
|
+
await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
|
|
53
|
+
await page.waitForSelector('[data-working-chip]', { timeout: 10000 });
|
|
54
|
+
await page.waitForTimeout(300);
|
|
55
|
+
return page;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const probe = async (page) => page.evaluate(() => {
|
|
59
|
+
function pick(sel, emptyKey) {
|
|
60
|
+
const el = document.querySelector(sel);
|
|
61
|
+
if (!el) return null;
|
|
62
|
+
const cs = getComputedStyle(el);
|
|
63
|
+
return {
|
|
64
|
+
empty: el.getAttribute(emptyKey),
|
|
65
|
+
opacity: parseFloat(cs.opacity),
|
|
66
|
+
transition: el.style.transition,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
working: pick('[data-working-chip]', 'data-working-chip-empty'),
|
|
71
|
+
online: pick('[data-online-chip]', 'data-online-chip-empty'),
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Scenario A: all offline → both tiers empty
|
|
76
|
+
const pageA = await pageFor('offline');
|
|
77
|
+
const probeA = await probe(pageA);
|
|
78
|
+
await pageA.close();
|
|
79
|
+
|
|
80
|
+
// Scenario B: all working → both tiers populated
|
|
81
|
+
const pageB = await pageFor('working');
|
|
82
|
+
const probeB = await probe(pageB);
|
|
83
|
+
await pageB.close();
|
|
84
|
+
await browser.close();
|
|
85
|
+
|
|
86
|
+
const near = (got, want, tol = 0.05) => Math.abs(got - want) < tol;
|
|
87
|
+
const hasOpacityTransition = (s) => /opacity\s+(?:200ms|0\.2s)/.test(s || '');
|
|
88
|
+
const hasBgTransition = (s) => /background-color\s+(?:200ms|0\.2s)/.test(s || '');
|
|
89
|
+
const hasBoxShadowTransition = (s) => /box-shadow\s+(?:150ms|0\.15s)/.test(s || '');
|
|
90
|
+
|
|
91
|
+
const results = {
|
|
92
|
+
// Scenario A: all offline
|
|
93
|
+
A_working_empty_attr: probeA.working?.empty === 'true',
|
|
94
|
+
A_working_opacity_half: near(probeA.working?.opacity ?? 0, 0.5),
|
|
95
|
+
A_online_empty_attr: probeA.online?.empty === 'true',
|
|
96
|
+
A_online_opacity_half: near(probeA.online?.opacity ?? 0, 0.5),
|
|
97
|
+
|
|
98
|
+
// Scenario B: all working
|
|
99
|
+
B_working_empty_false: probeB.working?.empty === 'false',
|
|
100
|
+
B_working_opacity_full: near(probeB.working?.opacity ?? 0, 1.0),
|
|
101
|
+
B_online_empty_false: probeB.online?.empty === 'false',
|
|
102
|
+
B_online_opacity_full: near(probeB.online?.opacity ?? 0, 1.0),
|
|
103
|
+
|
|
104
|
+
// Transition list integrity — opacity ADDED, bg/border/box-shadow KEPT
|
|
105
|
+
A_working_transition_opacity: hasOpacityTransition(probeA.working?.transition),
|
|
106
|
+
A_online_transition_opacity: hasOpacityTransition(probeA.online?.transition),
|
|
107
|
+
B_working_transition_opacity: hasOpacityTransition(probeB.working?.transition),
|
|
108
|
+
B_online_transition_opacity: hasOpacityTransition(probeB.online?.transition),
|
|
109
|
+
A_working_keeps_bg_transition: hasBgTransition(probeA.working?.transition),
|
|
110
|
+
A_working_keeps_bs_transition: hasBoxShadowTransition(probeA.working?.transition),
|
|
111
|
+
};
|
|
112
|
+
const ok = Object.values(results).every(Boolean);
|
|
113
|
+
console.log(`${ok ? '✅' : '❌'} chip empty recede:`, JSON.stringify(results),
|
|
114
|
+
`\n probeA (offline):`, probeA,
|
|
115
|
+
`\n probeB (working):`, probeB);
|
|
116
|
+
process.exit(ok ? 0 : 1);
|
|
File without changes
|
/package/.next/static/{FMKI0Nb4m8uK25F_8komz → 4jV5uu0TaA1Xfa8AyeD-x}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|