@phren/cli 0.0.18 → 0.0.19
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/mcp/dist/capabilities/cli.js +1 -1
- package/mcp/dist/capabilities/mcp.js +1 -1
- package/mcp/dist/capabilities/vscode.js +1 -1
- package/mcp/dist/capabilities/web-ui.js +1 -1
- package/mcp/dist/memory-ui-graph.js +9 -19
- package/mcp/dist/memory-ui-page.js +6 -6
- package/mcp/dist/memory-ui-scripts.js +17 -1
- package/package.json +1 -1
|
@@ -257,8 +257,8 @@ export function renderGraphScript() {
|
|
|
257
257
|
/* ease-in-out via sine curve over the full trip distance */
|
|
258
258
|
var t = phren.tripDist > 0 ? Math.min(1, phren.tripProgress / phren.tripDist) : 1;
|
|
259
259
|
var easeInOut = 0.5 - 0.5 * Math.cos(Math.PI * t);
|
|
260
|
-
var baseSpeed = Math.max(
|
|
261
|
-
var speed = Math.max(
|
|
260
|
+
var baseSpeed = Math.max(0.8, phren.tripDist * 0.03);
|
|
261
|
+
var speed = Math.max(0.4, baseSpeed * (0.15 + 0.85 * easeInOut));
|
|
262
262
|
/* clamp speed to remaining distance — prevents overshoot oscillation */
|
|
263
263
|
if (speed >= dist) {
|
|
264
264
|
phren.x = wx;
|
|
@@ -338,10 +338,10 @@ export function renderGraphScript() {
|
|
|
338
338
|
/* sprite rendering */
|
|
339
339
|
if (phrenImgReady) {
|
|
340
340
|
ctx.save();
|
|
341
|
-
/*
|
|
342
|
-
var spriteScreenSize =
|
|
341
|
+
/* scale-aware sprite: 32px at default zoom, shrinks when zoomed out, caps at 40px */
|
|
342
|
+
var spriteScreenSize = Math.min(40, Math.max(16, 32 * Math.sqrt(scale)));
|
|
343
343
|
if (phren.arriving && phren.arriveTimer < 0.4) {
|
|
344
|
-
spriteScreenSize
|
|
344
|
+
spriteScreenSize += 6 * (1 - phren.arriveTimer / 0.4);
|
|
345
345
|
}
|
|
346
346
|
var spriteSize = spriteScreenSize * s; /* convert to graph coords */
|
|
347
347
|
/* bob up/down when walking — sine wave synced to walk progress */
|
|
@@ -366,18 +366,7 @@ export function renderGraphScript() {
|
|
|
366
366
|
ctx.translate(-px, -py);
|
|
367
367
|
}
|
|
368
368
|
ctx.drawImage(phrenImg, px - spriteSize / 2, py - spriteSize / 2 + totalYOffset, spriteSize, spriteSize);
|
|
369
|
-
/*
|
|
370
|
-
if (phren.arriving && phren.arriveTimer < 0.6) {
|
|
371
|
-
var ringAlpha = 0.6 * (1 - phren.arriveTimer / 0.6);
|
|
372
|
-
ctx.beginPath();
|
|
373
|
-
ctx.arc(px, py + totalYOffset, spriteSize * 0.55, 0, Math.PI * 2);
|
|
374
|
-
ctx.strokeStyle = 'rgba(0,229,255,' + ringAlpha + ')';
|
|
375
|
-
ctx.lineWidth = 2 * s;
|
|
376
|
-
ctx.shadowColor = 'rgba(0,229,255,' + (ringAlpha * 0.5) + ')';
|
|
377
|
-
ctx.shadowBlur = 8;
|
|
378
|
-
ctx.stroke();
|
|
379
|
-
ctx.shadowBlur = 0;
|
|
380
|
-
}
|
|
369
|
+
/* no glow ring — phren stands clean next to the node */
|
|
381
370
|
ctx.restore();
|
|
382
371
|
}
|
|
383
372
|
}
|
|
@@ -1362,9 +1351,10 @@ export function renderGraphScript() {
|
|
|
1362
1351
|
/* ── detail panel ───────────────────────────────────────────────────── */
|
|
1363
1352
|
function renderGraphDetails(node) {
|
|
1364
1353
|
selectedNode = node;
|
|
1365
|
-
/* phren moves toward the selected node,
|
|
1354
|
+
/* phren moves toward the selected node, stopping just beside it (not on top) */
|
|
1366
1355
|
if (node && typeof node.x === 'number' && typeof node.y === 'number') {
|
|
1367
|
-
|
|
1356
|
+
var nr = nodeRadius(node) + 12; /* offset by node radius + margin */
|
|
1357
|
+
phrenMoveTo(node.x + nr, node.y - nr * 0.5, node);
|
|
1368
1358
|
}
|
|
1369
1359
|
/* fire external callback so VS Code extension can react to selection */
|
|
1370
1360
|
if (_nodeSelectCb && node) {
|
|
@@ -96,7 +96,7 @@ ${TASK_UI_STYLES}
|
|
|
96
96
|
</label>
|
|
97
97
|
<span id="review-filter-count" class="text-muted" style="font-size:var(--text-sm);margin-left:auto"></span>
|
|
98
98
|
<label id="review-select-all" style="display:none;align-items:center;gap:6px;font-size:var(--text-sm);color:var(--muted);cursor:pointer;user-select:none">
|
|
99
|
-
<input type="checkbox"
|
|
99
|
+
<input type="checkbox" id="review-select-all-cb" style="width:14px;height:14px;cursor:pointer;accent-color:var(--accent)" />
|
|
100
100
|
Select all
|
|
101
101
|
</label>
|
|
102
102
|
<span id="review-sync-status" class="review-sync-dot" title="Sync status">
|
|
@@ -106,9 +106,9 @@ ${TASK_UI_STYLES}
|
|
|
106
106
|
|
|
107
107
|
<div id="batch-bar" class="batch-bar">
|
|
108
108
|
<span id="batch-count" class="batch-bar-count"></span>
|
|
109
|
-
<button class="btn btn-sm btn-approve"
|
|
110
|
-
<button class="btn btn-sm btn-reject"
|
|
111
|
-
<button class="btn btn-sm"
|
|
109
|
+
<button class="btn btn-sm btn-approve" data-batch-action="approve">Approve selected</button>
|
|
110
|
+
<button class="btn btn-sm btn-reject" data-batch-action="reject">Reject selected</button>
|
|
111
|
+
<button class="btn btn-sm" data-batch-action="clear">Clear</button>
|
|
112
112
|
</div>
|
|
113
113
|
|
|
114
114
|
<div class="review-cards" id="review-cards-list">
|
|
@@ -320,10 +320,10 @@ ${renderSkillUiEnhancementScript(h(authToken || ""))}
|
|
|
320
320
|
${renderProjectReferenceEnhancementScript(h(authToken || ""))}
|
|
321
321
|
</script>
|
|
322
322
|
<script${nonceAttr}>
|
|
323
|
-
${renderTasksAndSettingsScript(
|
|
323
|
+
${renderTasksAndSettingsScript(authToken || "")}
|
|
324
324
|
</script>
|
|
325
325
|
<script${nonceAttr}>
|
|
326
|
-
${renderSearchScript(
|
|
326
|
+
${renderSearchScript(authToken || "")}
|
|
327
327
|
</script>
|
|
328
328
|
<script${nonceAttr}>
|
|
329
329
|
${renderEventWiringScript()}
|
|
@@ -592,8 +592,9 @@ export function renderReviewQueueEditSyncScript() {
|
|
|
592
592
|
return "";
|
|
593
593
|
}
|
|
594
594
|
export function renderTasksAndSettingsScript(authToken) {
|
|
595
|
+
const safeToken = JSON.stringify(authToken).slice(1, -1);
|
|
595
596
|
return `(function() {
|
|
596
|
-
var _tsAuthToken = '${
|
|
597
|
+
var _tsAuthToken = '${safeToken}';
|
|
597
598
|
var _allTasks = [];
|
|
598
599
|
var esc = window._phrenEsc;
|
|
599
600
|
|
|
@@ -1595,6 +1596,21 @@ export function renderEventWiringScript() {
|
|
|
1595
1596
|
var highlightBtn = document.getElementById('highlight-only-btn');
|
|
1596
1597
|
if (highlightBtn) highlightBtn.addEventListener('change', function() { filterReviewCards(); });
|
|
1597
1598
|
|
|
1599
|
+
var selectAllCb = document.getElementById('review-select-all-cb');
|
|
1600
|
+
if (selectAllCb) selectAllCb.addEventListener('change', function() { toggleSelectAll(this.checked); });
|
|
1601
|
+
|
|
1602
|
+
// Batch bar buttons
|
|
1603
|
+
document.addEventListener('click', function(e) {
|
|
1604
|
+
var target = e.target;
|
|
1605
|
+
if (!target || typeof target.closest !== 'function') return;
|
|
1606
|
+
var actionEl = target.closest('[data-batch-action]');
|
|
1607
|
+
if (!actionEl) return;
|
|
1608
|
+
var action = actionEl.getAttribute('data-batch-action');
|
|
1609
|
+
if (action === 'approve') { batchAction('approve'); }
|
|
1610
|
+
else if (action === 'reject') { batchAction('reject'); }
|
|
1611
|
+
else if (action === 'clear') { clearBatchSelection(); }
|
|
1612
|
+
});
|
|
1613
|
+
|
|
1598
1614
|
// --- Graph controls ---
|
|
1599
1615
|
var graphZoomIn = document.getElementById('graph-zoom-in');
|
|
1600
1616
|
if (graphZoomIn) graphZoomIn.addEventListener('click', function() { graphZoom(1.2); });
|