sigrank 0.0.228 → 0.0.229
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/manifest.json +1 -1
- package/package.json +1 -1
- package/presentation/tui.mjs +52 -1
package/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/anthropics/mcpb/main/schemas/mcpb-manifest-v0.4.schema.json",
|
|
3
3
|
"manifest_version": "0.4",
|
|
4
4
|
"name": "sigrank",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.228",
|
|
6
6
|
"description": "Ranks AI coding operators by token cascade efficiency (Yield = cache_read \u00d7 output / input\u00b2). 23 tools for yield calculation, local token usage pulls, signed submission, and tokscale-powered analytics (market share, developer profiles, model trends, cost analysis, device profiles, MCP usage, competitive intelligence). Privacy-first: runs locally, only four token counts leave the machine.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "SunrisesIllNeverSee",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sigrank",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.229",
|
|
4
4
|
"author": "SunrisesIllNeverSee (https://github.com/SunrisesIllNeverSee)",
|
|
5
5
|
"description": "SigRank MCP server — AI operator evaluation and token cascade efficiency tools. The yield cascade + live leaderboard as MCP tools any agent can call.",
|
|
6
6
|
"mcpName": "io.github.SunrisesIllNeverSee/sigrank-mcp",
|
package/presentation/tui.mjs
CHANGED
|
@@ -2492,7 +2492,23 @@ export async function runTui({
|
|
|
2492
2492
|
// A2 (2026-06-27): paint the frame + a clear "reading your cascade…" status IMMEDIATELY,
|
|
2493
2493
|
// BEFORE the await — so the very first thing on screen is the table header + a live status,
|
|
2494
2494
|
// not a blank "loading dashboard…". renderDashboard tolerates this empty dashData (guarded).
|
|
2495
|
-
|
|
2495
|
+
// Animated signal pulse during initial load — shows the system is alive.
|
|
2496
|
+
const INIT_PULSE = [
|
|
2497
|
+
"▁▁▁▁▁", "▂▁▁▁▁", "▃▂▁▁▁", "▄▃▂▁▁", "▅▄▃▂▁",
|
|
2498
|
+
"▆▅▄▃▂", "▇▆▅▄▃", "█▇▆▅▄", "▇█▇▆▅", "▆▇█▇▆",
|
|
2499
|
+
"▅▆▇█▇", "▄▅▆▇█", "▃▄▅▆▇", "▂▃▄▅▆", "▁▂▃▄▅",
|
|
2500
|
+
"▁▁▂▃▄", "▁▁▁▂▃", "▁▁▁▁▂",
|
|
2501
|
+
];
|
|
2502
|
+
const initStart = Date.now();
|
|
2503
|
+
let initIdx = 0;
|
|
2504
|
+
const initTimer = setInterval(() => {
|
|
2505
|
+
const elapsed = ((Date.now() - initStart) / 1000).toFixed(1);
|
|
2506
|
+
const pulse = INIT_PULSE[initIdx % INIT_PULSE.length];
|
|
2507
|
+
initIdx++;
|
|
2508
|
+
status = `${gold(pulse)} reading your cascade… ${bold(`${elapsed}s`)}`;
|
|
2509
|
+
redraw();
|
|
2510
|
+
}, 150);
|
|
2511
|
+
status = `${gold("▁▁▁▁▁")} reading your cascade…`;
|
|
2496
2512
|
dashData = { active: [], _loading: true };
|
|
2497
2513
|
await redraw();
|
|
2498
2514
|
// FIX 0: progressive Dashboard load — claude first (fast), render it, THEN fill
|
|
@@ -2502,6 +2518,7 @@ export async function runTui({
|
|
|
2502
2518
|
status = `dashboard error: ${e.message}`;
|
|
2503
2519
|
return null;
|
|
2504
2520
|
});
|
|
2521
|
+
clearInterval(initTimer);
|
|
2505
2522
|
status = `last refreshed ${new Date().toLocaleTimeString("en-US", { hour12: false })}`;
|
|
2506
2523
|
await redraw();
|
|
2507
2524
|
// Keep a "filling other platforms…" status visible while fillDashboardRest runs.
|
|
@@ -2513,6 +2530,39 @@ export async function runTui({
|
|
|
2513
2530
|
status = "claude ready · filling other platforms…";
|
|
2514
2531
|
await redraw();
|
|
2515
2532
|
}
|
|
2533
|
+
// Animated signal pulse while the platform fill runs — shows the system
|
|
2534
|
+
// is alive, not frozen. Uses a rotating signal-bar animation + elapsed timer.
|
|
2535
|
+
const PULSE_FRAMES = [
|
|
2536
|
+
"▁▁▁▁▁",
|
|
2537
|
+
"▂▁▁▁▁",
|
|
2538
|
+
"▃▂▁▁▁",
|
|
2539
|
+
"▄▃▂▁▁",
|
|
2540
|
+
"▅▄▃▂▁",
|
|
2541
|
+
"▆▅▄▃▂",
|
|
2542
|
+
"▇▆▅▄▃",
|
|
2543
|
+
"█▇▆▅▄",
|
|
2544
|
+
"▇█▇▆▅",
|
|
2545
|
+
"▆▇█▇▆",
|
|
2546
|
+
"▅▆▇█▇",
|
|
2547
|
+
"▄▅▆▇█",
|
|
2548
|
+
"▃▄▅▆▇",
|
|
2549
|
+
"▂▃▄▅▆",
|
|
2550
|
+
"▁▂▃▄▅",
|
|
2551
|
+
"▁▁▂▃▄",
|
|
2552
|
+
"▁▁▁▂▃",
|
|
2553
|
+
"▁▁▁▁▂",
|
|
2554
|
+
];
|
|
2555
|
+
const fillStart = Date.now();
|
|
2556
|
+
let pulseIdx = 0;
|
|
2557
|
+
const pulseTimer = setInterval(() => {
|
|
2558
|
+
if (!dashData?._loading) return;
|
|
2559
|
+
const elapsed = ((Date.now() - fillStart) / 1000).toFixed(1);
|
|
2560
|
+
const pulse = PULSE_FRAMES[pulseIdx % PULSE_FRAMES.length];
|
|
2561
|
+
pulseIdx++;
|
|
2562
|
+
const platCount = dashData.active.length;
|
|
2563
|
+
status = `${gold(pulse)} scanning platforms… ${bold(`${elapsed}s`)} ${dim(`· ${platCount} found`)}`;
|
|
2564
|
+
redraw();
|
|
2565
|
+
}, 150);
|
|
2516
2566
|
[, boardData] = await Promise.all([
|
|
2517
2567
|
dashData?._remaining
|
|
2518
2568
|
? fillDashboardRest(dashData, {
|
|
@@ -2552,6 +2602,7 @@ export async function runTui({
|
|
|
2552
2602
|
: Promise.resolve(false),
|
|
2553
2603
|
loadBoardData(boardWindow).catch(() => null),
|
|
2554
2604
|
]);
|
|
2605
|
+
clearInterval(pulseTimer);
|
|
2555
2606
|
status = `last refreshed ${new Date().toLocaleTimeString("en-US", { hour12: false })}`;
|
|
2556
2607
|
await redraw();
|
|
2557
2608
|
};
|