privateboard 0.1.0 → 0.1.3
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/dist/cli.js +5281 -989
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/public/agent-overlay.js +3 -3
- package/public/agent-profile.css +5 -4
- package/public/agent-profile.js +35 -9
- package/public/app.js +4408 -580
- package/public/avatar-skill.js +6 -9
- package/public/home.html +1750 -0
- package/public/{prototype-dashboard.html → index.html} +2426 -321
- package/public/onboarding.js +40 -13
- package/public/quote-cta.css +269 -0
- package/public/quote-cta.js +553 -0
- package/public/report/spines/a16z-thesis.css +234 -87
- package/public/report/spines/anthropic-essay.css +587 -191
- package/public/report/spines/boardroom-dark.css +141 -67
- package/public/report/spines/gartner-note.css +105 -23
- package/public/report/spines/mckinsey-deck.css +102 -15
- package/public/report/spines/openai-paper.css +117 -20
- package/public/report.html +3882 -148
- package/public/room-settings.css +6 -4
- package/public/room-settings.js +19 -13
- package/public/themes.css +15 -2
- package/public/user-settings.css +37 -8
- package/public/user-settings.js +68 -164
package/package.json
CHANGED
package/public/agent-overlay.js
CHANGED
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
<div class="lock-icon">▰</div>
|
|
239
239
|
<div class="lock-text">
|
|
240
240
|
in-room notes are private to each thinker.
|
|
241
|
-
<a href="
|
|
241
|
+
<a href="/" class="lock-link">sign in →</a>
|
|
242
242
|
to see what they have said and where their stance shifted.
|
|
243
243
|
</div>
|
|
244
244
|
</div>
|
|
@@ -248,8 +248,8 @@
|
|
|
248
248
|
<footer class="agent-card-foot">
|
|
249
249
|
<div class="meta private-only">tenure · <span class="lime agent-tenure"></span></div>
|
|
250
250
|
<div class="meta public-only">first room · <span class="lime">free</span></div>
|
|
251
|
-
<a href="
|
|
252
|
-
<a href="
|
|
251
|
+
<a href="/#convene" class="agent-card-cta private-only">[ ◆ Convene with them ]</a>
|
|
252
|
+
<a href="/#convene" class="agent-card-cta public-only">[ → Sign in to convene ]</a>
|
|
253
253
|
</footer>
|
|
254
254
|
</div>
|
|
255
255
|
</div>
|
package/public/agent-profile.css
CHANGED
|
@@ -1063,7 +1063,8 @@
|
|
|
1063
1063
|
cursor: pointer;
|
|
1064
1064
|
transition: background 0.1s;
|
|
1065
1065
|
}
|
|
1066
|
-
.ap-id-menu-item:last-child
|
|
1066
|
+
.ap-id-menu-item:last-child,
|
|
1067
|
+
.ap-id-menu-item:has(+ .ap-id-menu-divider) { border-bottom: none; }
|
|
1067
1068
|
.ap-id-menu-item:hover { background: var(--panel-2); }
|
|
1068
1069
|
.ap-id-menu-mark { font-family: var(--mono); font-size: 11px; color: var(--lime); }
|
|
1069
1070
|
/* Disabled state · used for the chair's locked-avatar row. Looks like
|
|
@@ -1315,7 +1316,7 @@
|
|
|
1315
1316
|
}
|
|
1316
1317
|
|
|
1317
1318
|
/* ─── Skills v2 · uploaded Skill.md files ────────────────────────────
|
|
1318
|
-
Replaces the
|
|
1319
|
+
Replaces the legacy inventory grid. Pattern · radar at top,
|
|
1319
1320
|
per-skill rows below, drop-zone at the foot. PRD: docs/PRD-skills.md. */
|
|
1320
1321
|
.ap-skills-v2 {
|
|
1321
1322
|
display: flex;
|
|
@@ -1977,7 +1978,7 @@
|
|
|
1977
1978
|
/* Popover — anchored under the trigger. Mirrors the room composer's
|
|
1978
1979
|
.cmp-dd-pop dropdown: tight rows, mono micro-type hint inline with
|
|
1979
1980
|
the label, provider section headers, hairline scrollbar. One
|
|
1980
|
-
coherent dropdown vocabulary across the
|
|
1981
|
+
coherent dropdown vocabulary across the app. */
|
|
1981
1982
|
.ap-model-picker {
|
|
1982
1983
|
position: fixed;
|
|
1983
1984
|
z-index: 9100;
|
|
@@ -2813,7 +2814,7 @@
|
|
|
2813
2814
|
|
|
2814
2815
|
.ap-memory-row.editing .ap-memory-actions { visibility: hidden; }
|
|
2815
2816
|
|
|
2816
|
-
/* ─── Memory · legacy
|
|
2817
|
+
/* ─── Memory · legacy tile gallery (kept for callers
|
|
2817
2818
|
that still pass `p.memory` shape). v1 profiles render the
|
|
2818
2819
|
.ap-memory list above and never enter this block. */
|
|
2819
2820
|
.ap-memory-gallery {
|
package/public/agent-profile.js
CHANGED
|
@@ -605,7 +605,7 @@
|
|
|
605
605
|
|
|
606
606
|
function renderMetrics(p, slug) {
|
|
607
607
|
const m = p.metrics || {};
|
|
608
|
-
// Real model takes precedence over
|
|
608
|
+
// Real (live) model takes precedence over any hardcoded fallback.
|
|
609
609
|
const model = liveModelFor(slug) || m.model || { name: "—", deck: "" };
|
|
610
610
|
const cell = (lbl, vHTML, opts) => `
|
|
611
611
|
<div class="cell">
|
|
@@ -1209,7 +1209,7 @@
|
|
|
1209
1209
|
}
|
|
1210
1210
|
|
|
1211
1211
|
/* ─── Skills v2 · uploaded Skill.md files ────────────────────────────
|
|
1212
|
-
Replaces the
|
|
1212
|
+
Replaces the legacy localStorage skill grid. Skills are real,
|
|
1213
1213
|
server-persisted, and feed both the ability radar and the Pass-1
|
|
1214
1214
|
orchestrator router. PRD: docs/PRD-skills.md. */
|
|
1215
1215
|
|
|
@@ -2362,7 +2362,8 @@
|
|
|
2362
2362
|
return {
|
|
2363
2363
|
room: document.querySelector('[data-main-view="room"]'),
|
|
2364
2364
|
agent: document.querySelector('[data-main-view="agent"]'),
|
|
2365
|
-
reports: document.querySelector('[data-main-view="reports"]')
|
|
2365
|
+
reports: document.querySelector('[data-main-view="reports"]'),
|
|
2366
|
+
notes: document.querySelector('[data-main-view="notes"]'),
|
|
2366
2367
|
};
|
|
2367
2368
|
}
|
|
2368
2369
|
|
|
@@ -2373,11 +2374,17 @@
|
|
|
2373
2374
|
v.agent.setAttribute("hidden", "");
|
|
2374
2375
|
v.agent.innerHTML = "";
|
|
2375
2376
|
}
|
|
2376
|
-
//
|
|
2377
|
-
//
|
|
2378
|
-
//
|
|
2377
|
+
// Hide every other top-level pane so its content / placeholder
|
|
2378
|
+
// doesn't bleed through under the room view. Each view is just
|
|
2379
|
+
// the same `.main-view` CSS box — without explicitly hiding the
|
|
2380
|
+
// siblings, two of them stack and the user sees a leaked
|
|
2381
|
+
// "All Notes" / "All Reports" empty state.
|
|
2379
2382
|
if (v.reports) v.reports.setAttribute("hidden", "");
|
|
2383
|
+
if (v.notes) v.notes.setAttribute("hidden", "");
|
|
2380
2384
|
document.querySelectorAll(".agent-row.active").forEach((r) => r.classList.remove("active"));
|
|
2385
|
+
document.querySelectorAll("[data-notes-trigger].active").forEach((el) => el.classList.remove("active"));
|
|
2386
|
+
document.querySelectorAll("[data-reports-trigger].active").forEach((el) => el.classList.remove("active"));
|
|
2387
|
+
currentlyOpenSlug = null;
|
|
2381
2388
|
}
|
|
2382
2389
|
|
|
2383
2390
|
/** Build a minimal profile object from a live /api/agents record so
|
|
@@ -2423,7 +2430,15 @@
|
|
|
2423
2430
|
};
|
|
2424
2431
|
}
|
|
2425
2432
|
|
|
2433
|
+
// Track the currently-open profile so other modules (user-settings)
|
|
2434
|
+
// can ask us to re-fetch skill state after they mutate keys. Without
|
|
2435
|
+
// this, the web-search toggle row keeps its `data-key-configured="0"`
|
|
2436
|
+
// attribute baked from the first render and the user gets the
|
|
2437
|
+
// "configure key" prompt forever after they actually configured it.
|
|
2438
|
+
let currentlyOpenSlug = null;
|
|
2439
|
+
|
|
2426
2440
|
function open(slug) {
|
|
2441
|
+
currentlyOpenSlug = slug;
|
|
2427
2442
|
let p = PROFILES[slug];
|
|
2428
2443
|
// Live agent record (DB row · includes seeded directors too,
|
|
2429
2444
|
// since they live in the agents table). Custom directors created
|
|
@@ -2449,10 +2464,14 @@
|
|
|
2449
2464
|
if (!v.agent) return;
|
|
2450
2465
|
v.agent.innerHTML = pageHTML(p, slug);
|
|
2451
2466
|
if (v.room) v.room.setAttribute("hidden", "");
|
|
2452
|
-
//
|
|
2453
|
-
//
|
|
2454
|
-
//
|
|
2467
|
+
// Hide the other top-level panes (All Reports / All Notes) so
|
|
2468
|
+
// their placeholder / list doesn't render under the agent profile.
|
|
2469
|
+
// Without these, opening agent profile from "All Notes" leaks the
|
|
2470
|
+
// notes empty-state through the agent view.
|
|
2455
2471
|
if (v.reports) v.reports.setAttribute("hidden", "");
|
|
2472
|
+
if (v.notes) v.notes.setAttribute("hidden", "");
|
|
2473
|
+
document.querySelectorAll("[data-notes-trigger].active").forEach((el) => el.classList.remove("active"));
|
|
2474
|
+
document.querySelectorAll("[data-reports-trigger].active").forEach((el) => el.classList.remove("active"));
|
|
2456
2475
|
v.agent.removeAttribute("hidden");
|
|
2457
2476
|
// Centralized sidebar-focus handler · also clears New room /
|
|
2458
2477
|
// New agent highlights and any stale session-row highlight, since
|
|
@@ -3320,6 +3339,13 @@
|
|
|
3320
3339
|
|
|
3321
3340
|
window.openAgentProfile = open;
|
|
3322
3341
|
window.closeAgentProfile = showRoom;
|
|
3342
|
+
// Re-fetch the open profile's skills (incl. per-skill keyConfigured
|
|
3343
|
+
// flags) so the web-search toggle row's cached `data-key-configured`
|
|
3344
|
+
// refreshes after the user adds a key in Preferences. No-op when no
|
|
3345
|
+
// profile is currently open.
|
|
3346
|
+
window.refreshAgentProfileSkills = function () {
|
|
3347
|
+
if (currentlyOpenSlug) loadSkillsForV2(currentlyOpenSlug);
|
|
3348
|
+
};
|
|
3323
3349
|
|
|
3324
3350
|
if (document.readyState === "loading") {
|
|
3325
3351
|
document.addEventListener("DOMContentLoaded", init);
|