@jossuealcala/madre 0.7.1 → 1.0.0
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/CHANGELOG.md +833 -1
- package/README.md +92 -28
- package/SECURITY.md +1 -0
- package/bin/madre.mjs +30 -10
- package/docs/REFERENCE.md +158 -79
- package/docs/SDK.md +23 -19
- package/package.json +1 -1
- package/public/app.js +11599 -4186
- package/public/assets/brand/Geist-latin-ext.woff2 +0 -0
- package/public/assets/brand/Geist-latin.woff2 +0 -0
- package/public/assets/brand/GeistMono-latin-ext.woff2 +0 -0
- package/public/assets/brand/GeistMono-latin.woff2 +0 -0
- package/public/assets/brand/JetBrainsMono-latin-ext.woff2 +0 -0
- package/public/assets/brand/JetBrainsMono-latin.woff2 +0 -0
- package/public/assets/brand/OFL-Geist.txt +93 -0
- package/public/assets/brand/OFL-GeistMono.txt +93 -0
- package/public/assets/brand/OFL-JetBrainsMono.txt +93 -0
- package/public/assets/brand/OFL-Sora.txt +93 -0
- package/public/assets/brand/Sora-latin-ext.woff2 +0 -0
- package/public/assets/brand/Sora-latin.woff2 +0 -0
- package/public/assets/brand/madre-app-180.png +0 -0
- package/public/assets/brand/madre-app-192.png +0 -0
- package/public/assets/brand/madre-app-512.png +0 -0
- package/public/assets/brand/madre-app.svg +1 -0
- package/public/assets/brand/madre-favicon.svg +1 -0
- package/public/assets/news/1.0/alerts.webp +0 -0
- package/public/assets/news/1.0/bar.webp +0 -0
- package/public/assets/news/1.0/finder.webp +0 -0
- package/public/assets/news/1.0/github.webp +0 -0
- package/public/assets/news/1.0/intents.webp +0 -0
- package/public/assets/news/1.0/looks.webp +0 -0
- package/public/assets/news/1.0/modules.webp +0 -0
- package/public/assets/news/1.0/mother.webp +0 -0
- package/public/assets/news/1.0/nostromo.webp +0 -0
- package/public/assets/news/1.0/permissions.webp +0 -0
- package/public/assets/news/1.0/room.webp +0 -0
- package/public/assets/news/1.0/settings.webp +0 -0
- package/public/assets/wallpapers/biznaga.webp +0 -0
- package/public/assets/wallpapers/canela.webp +0 -0
- package/public/assets/wallpapers/jarrito.webp +0 -0
- package/public/assets/wallpapers/magna.webp +0 -0
- package/public/assets/wallpapers/oceano.webp +0 -0
- package/public/assets/wallpapers/paraiso.webp +0 -0
- package/public/assets/wallpapers/quila.webp +0 -0
- package/public/assets/wallpapers/tradicion.webp +0 -0
- package/public/assets/wallpapers/tropical.webp +0 -0
- package/public/assets/wallpapers/urbania.webp +0 -0
- package/public/assets/wallpapers/ventura.webp +0 -0
- package/public/assets/wallpapers/xico.webp +0 -0
- package/public/brands.js +28 -2
- package/public/editor.js +744 -0
- package/public/es.js +2863 -1008
- package/public/i18n.js +1 -1
- package/public/index.html +201 -175
- package/public/inquiry.js +11 -11
- package/public/loader.js +79 -0
- package/public/macroverso.js +1497 -0
- package/public/manifest.webmanifest +14 -0
- package/public/nostromo-engine.js +2222 -0
- package/public/resay.js +24 -0
- package/public/review-ask.js +85 -0
- package/public/salas-mac.css +787 -0
- package/public/salas-mac.html +154 -0
- package/public/salas-mac.js +3264 -0
- package/public/salas.css +85 -0
- package/public/salas.html +47 -0
- package/public/salas.js +200 -0
- package/public/styles.css +6303 -414
- package/public/touch.js +83 -0
- package/public/tour-chapters.js +342 -0
- package/public/tour.js +510 -0
- package/public/troubleshooting.js +159 -140
- package/src/adapters/claude.mjs +4 -3
- package/src/adapters/codex.mjs +49 -8
- package/src/adapters/gemini.mjs +30 -10
- package/src/adapters/madre.mjs +110 -18
- package/src/adapters/process.mjs +42 -2
- package/src/auth-probe.mjs +2 -2
- package/src/bridge/devices.mjs +202 -0
- package/src/bridge/handoff.mjs +45 -0
- package/src/bridge/host.mjs +82 -0
- package/src/bridge/network.mjs +133 -0
- package/src/bridge/policy.mjs +89 -0
- package/src/bridge/qr.mjs +287 -0
- package/src/bridge/server.mjs +269 -0
- package/src/capabilities.mjs +5 -9
- package/src/chats.mjs +59 -22
- package/src/checkpoint.mjs +137 -35
- package/src/choices.mjs +45 -6
- package/src/cli-args.mjs +12 -1
- package/src/commands.mjs +15 -15
- package/src/config.mjs +73 -9
- package/src/conversation-context.mjs +5 -2
- package/src/dataset.mjs +3 -1
- package/src/directives.mjs +0 -5
- package/src/enlaces.mjs +451 -0
- package/src/event-store.mjs +55 -10
- package/src/exam.mjs +5 -5
- package/src/extensions.mjs +0 -2
- package/src/file-ops.mjs +42 -0
- package/src/files.mjs +52 -2
- package/src/github.mjs +407 -0
- package/src/json-file.mjs +63 -0
- package/src/lease.mjs +2 -2
- package/src/lobby-work.mjs +103 -0
- package/src/looks.mjs +55 -0
- package/src/maturity.mjs +3 -3
- package/src/mcp/github-server.mjs +164 -0
- package/src/mcp/image-server.mjs +1 -1
- package/src/mcp/memory-server.mjs +11 -3
- package/src/memory.mjs +38 -12
- package/src/models.mjs +109 -1
- package/src/modules/ahp.mjs +4 -4
- package/src/modules/ash.mjs +1 -1
- package/src/modules/bishop-plan.mjs +207 -0
- package/src/modules/bishop.mjs +645 -0
- package/src/modules/choices.mjs +2 -2
- package/src/modules/correo.mjs +1 -1
- package/src/modules/enlaces.mjs +255 -0
- package/src/modules/git-pulse.mjs +2 -2
- package/src/modules/github.mjs +322 -0
- package/src/modules/image-studio.mjs +3 -3
- package/src/modules/index.mjs +19 -4
- package/src/modules/intents-calibration.mjs +338 -0
- package/src/modules/intents-desk.mjs +481 -0
- package/src/modules/intents-observe.mjs +266 -0
- package/src/modules/intents-policy.mjs +414 -0
- package/src/modules/intents-try.mjs +91 -0
- package/src/modules/intents.mjs +145 -0
- package/src/modules/ollama.mjs +9 -5
- package/src/modules/playwright.mjs +121 -11
- package/src/modules/ripley.mjs +1 -1
- package/src/modules/runs.mjs +34 -0
- package/src/modules/sdk.mjs +10 -4
- package/src/ollama.mjs +25 -1
- package/src/outbound.mjs +19 -17
- package/src/override.mjs +100 -0
- package/src/ports.mjs +23 -1
- package/src/prices.mjs +72 -0
- package/src/privacy.mjs +30 -11
- package/src/quota-sources.mjs +0 -8
- package/src/request-guard.mjs +1 -1
- package/src/review-ask.mjs +111 -0
- package/src/room/archivist.mjs +55 -37
- package/src/room/budget.mjs +17 -5
- package/src/room/control.mjs +88 -8
- package/src/room/economy.mjs +35 -7
- package/src/room/escalation.mjs +2 -0
- package/src/room/guard.mjs +26 -2
- package/src/room/prompt.mjs +32 -13
- package/src/room/runs.mjs +151 -0
- package/src/room/vectors.mjs +19 -4
- package/src/room.mjs +402 -54
- package/src/router.mjs +3 -1
- package/src/runs.mjs +137 -0
- package/src/salas.mjs +313 -0
- package/src/sentinel-errors.mjs +1 -1
- package/src/server-sentinel.mjs +124 -0
- package/src/server.mjs +1578 -167
- package/src/setup.mjs +1 -0
- package/src/tour.mjs +159 -0
- package/src/updates.mjs +48 -8
- package/src/usage-sentinel.mjs +1 -1
- package/src/verdict.mjs +7 -7
- package/src/whats-new.mjs +160 -0
package/public/index.html
CHANGED
|
@@ -4,64 +4,88 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
|
6
6
|
<title>MADRE</title>
|
|
7
|
+
<link rel="icon" type="image/svg+xml" href="/assets/brand/madre-favicon.svg">
|
|
7
8
|
<link rel="stylesheet" href="/styles.css">
|
|
9
|
+
<!-- Arriving from another MADRE page (a room, Home): a veil of the theme's ground over the first
|
|
10
|
+
frame, lifted as the page rises (styles.css, madre-arriving). Not on a reload, nor on Back. -->
|
|
11
|
+
<script>try { var nav = performance.getEntriesByType('navigation')[0]; var from = document.referrer ? new URL(document.referrer) : null; if (nav && nav.type === 'navigate' && from && /^(127\.0\.0\.1|localhost)$/.test(from.hostname) && from.href !== location.href) { var theme = localStorage.getItem('pulse.theme'); var light = theme === 'light' || (theme !== 'dark' && matchMedia('(prefers-color-scheme: light)').matches); var root = document.documentElement; root.style.setProperty('--arrive-veil', light ? '#f4f5f2' : '#050605'); root.classList.add('madre-arriving'); setTimeout(function () { root.classList.remove('madre-arriving'); }, 900); } } catch (e) {}</script>
|
|
12
|
+
<!-- The logo draws itself when MADRE starts, not on every reload of a room already running:
|
|
13
|
+
a tab that has seen it once holds it still until the page learns the process restarted. -->
|
|
14
|
+
<script>try { if (sessionStorage.getItem('madre.boot')) document.documentElement.classList.add('logo-still'); } catch {}</script>
|
|
15
|
+
<script>/* Through the phone bridge (src/bridge/server.mjs, BRIDGE_PORT 4316) the page is on a phone from its first frame, so the Mac's bar never shows there while the room's state is on its way; app.js confirms it or takes it back. */ if (location.port === '4316') document.documentElement.classList.add('via-phone');</script>
|
|
8
16
|
</head>
|
|
9
17
|
<body>
|
|
10
18
|
<div class="shell">
|
|
11
|
-
<header class="bar">
|
|
19
|
+
<header id="bar" class="bar">
|
|
12
20
|
<div class="bar-left">
|
|
21
|
+
<a id="salas-link" class="salas-link" href="/salas" hidden aria-label="Home" title="Home">
|
|
22
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M12.5 4.5 7 10l5.5 5.5" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"/></svg><span>Home</span>
|
|
23
|
+
</a>
|
|
13
24
|
<a class="brand" href="https://madre.run" target="_blank" rel="noopener noreferrer" aria-label="MADRE · madre.run" title="MADRE · madre.run">
|
|
14
|
-
<svg class="brand-
|
|
15
|
-
|
|
16
|
-
<circle class="beat-dot" cx="60" cy="10" r="3" fill="currentColor"/>
|
|
17
|
-
</svg>
|
|
18
|
-
<span class="brand-word">MADRE</span>
|
|
25
|
+
<svg class="brand-logo" viewBox="-4.8 -4.8 377.1 49.6" aria-hidden="true"><g fill="none" stroke-linecap="round" stroke-linejoin="round"><g class="pulse" transform="translate(0 0) scale(2.5) translate(0 -2)"><path class="beat" d="M1 10H16L20 10L23.5 2L28 18L32 10L35 10L37 6L39 10H52" stroke-width="1.92" pathLength="100"/><circle class="beat-dot" cx="60" cy="10" r="3" stroke="none"/></g><g class="word" transform="translate(193.5 7)" stroke-width="4.8"><path d="M0 26V0L14 14.3L28 0V26"/><path transform="translate(36.5 0)" d="M0 26V7.8A7.8 7.8 0 0 1 7.8 0H17.2A7.8 7.8 0 0 1 25 7.8V26M0 15.6H25"/><path transform="translate(71.5 0)" d="M0 0H16A12 12 0 0 1 28 12V14A12 12 0 0 1 16 26H0Z"/><path transform="translate(110.5 0)" d="M0 26V0H20.85A7.15 7.15 0 0 1 28 7.15V7.15A7.15 7.15 0 0 1 20.85 14.3H0M15.12 14.3L28 26"/><path transform="translate(146 0)" d="M28 0H0V26H28M0 13H21"/></g></g></svg>
|
|
26
|
+
<svg class="brand-icon" viewBox="-4.8 -4.8 167.1 49.6" aria-hidden="true"><g fill="none" stroke-linecap="round" stroke-linejoin="round"><g class="pulse" transform="translate(0 0) scale(2.5) translate(0 -2)"><path d="M1 10H16L20 10L23.5 2L28 18L32 10L35 10L37 6L39 10H52" stroke-width="1.92"/><circle class="beat-dot" cx="60" cy="10" r="3" stroke="none"/></g></g></svg>
|
|
19
27
|
</a>
|
|
20
|
-
<span id="project" class="project" title="Project
|
|
28
|
+
<span id="project" class="project" title="Project"></span>
|
|
29
|
+
</div>
|
|
30
|
+
<div id="connection" class="connection" data-state="connecting" role="status" aria-label="connecting">
|
|
31
|
+
<span class="connection-icon" aria-hidden="true"><svg class="bar-glyph" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="1.7" fill="currentColor"/><path d="M6.7 6.7a4.7 4.7 0 0 0 0 6.6M13.3 6.7a4.7 4.7 0 0 1 0 6.6M4.2 4.2a8.2 8.2 0 0 0 0 11.6M15.8 4.2a8.2 8.2 0 0 1 0 11.6" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="connection-dot"></span></span><span class="connection-label">connecting</span>
|
|
21
32
|
</div>
|
|
22
33
|
<div id="agents" class="agents" aria-label="Agents"></div>
|
|
23
|
-
<button id="agents-compact" class="bar-icon agents-compact" type="button" title="
|
|
24
|
-
<svg viewBox="0 0 20 20" aria-hidden="true"><
|
|
34
|
+
<button id="agents-compact" class="bar-icon agents-compact" type="button" title="Agents" aria-label="Agents">
|
|
35
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="8" cy="7" r="2.8" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M3.2 16.4a4.8 4.8 0 0 1 9.6 0" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M12.6 4.6a2.6 2.6 0 0 1 0 5M14.4 12.3a4.6 4.6 0 0 1 2.4 4.1" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
25
36
|
<span id="agents-count" class="bar-count"></span>
|
|
26
37
|
</button>
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
38
|
+
<button id="steps-pill" class="stop-all steps-pill" type="button" hidden aria-haspopup="dialog" aria-expanded="false"><svg class="steps-ring" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="7.2" fill="none" stroke="currentColor" stroke-width="2" opacity=".22"/><circle class="steps-arc" cx="10" cy="10" r="7.2" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" pathLength="1" transform="rotate(-90 10 10)"/></svg><span class="steps-label">First steps</span><span class="steps-count"></span></button>
|
|
39
|
+
<span id="tour-pill-slot" class="tour-pill-slot" hidden></span>
|
|
40
|
+
<button id="handoff-pill" class="stop-all handoff-pill" type="button" hidden><svg class="bar-glyph" viewBox="0 0 20 20" aria-hidden="true"><rect x="6" y="2.8" width="8" height="14.4" rx="2.2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M9 14.6h2" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><span class="handoff-words"></span></button>
|
|
30
41
|
<button id="update-pill" class="stop-all update-pill" type="button" hidden title="A newer MADRE is on npm"></button>
|
|
31
|
-
<button id="stop-all" class="stop-all" type="button" title="
|
|
32
|
-
<
|
|
42
|
+
<button id="stop-all" class="stop-all" type="button" title="STOP ALL · halt every plan and every agent turn" hidden>
|
|
43
|
+
<svg class="bar-glyph" viewBox="0 0 20 20" aria-hidden="true"><rect class="ic-f" x="4" y="4" width="12" height="12" rx="3.4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>STOP ALL
|
|
44
|
+
</button>
|
|
45
|
+
<button id="modules-button" class="mother-button" type="button" title="Modules · optional integrations for this project" aria-haspopup="dialog" aria-pressed="false">
|
|
46
|
+
<span class="mother-glyph modules-glyph" aria-hidden="true"></span><svg class="bar-glyph" viewBox="0 0 20 20" aria-hidden="true"><path class="ic-f" d="M2.75 8.45a2.2 2.2 0 0 1 2.2-2.2h2a1.9 1.9 0 1 1 2.6 0h2a2.2 2.2 0 0 1 2.2 2.2v2a1.9 1.9 0 1 1 0 2.6v2a2.2 2.2 0 0 1-2.2 2.2h-2a1.9 1.9 0 1 0-2.6 0h-2a2.2 2.2 0 0 1-2.2-2.2z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>MODULES<span id="modules-count" class="modules-count" hidden></span>
|
|
33
47
|
</button>
|
|
34
|
-
<button id="
|
|
35
|
-
<span class="mother-glyph
|
|
48
|
+
<button id="mother-button" class="mother-button" type="button" title="Troubleshooting · Diagnostics" aria-haspopup="dialog" aria-pressed="false">
|
|
49
|
+
<span class="mother-glyph" aria-hidden="true"></span><svg class="bar-glyph" viewBox="0 0 20 20" aria-hidden="true"><circle class="ic-disc" cx="10" cy="10" r="9"/><path class="ic-k" d="M1.8 10h3.4l1.6-4.6 2.6 9.2 2-4.6h1.5l1.3-2.6 1.2 2.6h2.8" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><path class="ic-beat" pathLength="1" d="M1.8 10h3.4l1.6-4.6 2.6 9.2 2-4.6h1.5l1.3-2.6 1.2 2.6h2.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>DIAGNOSTICS<span id="mother-count" class="mother-count" hidden></span>
|
|
36
50
|
</button>
|
|
37
|
-
<button id="
|
|
38
|
-
<
|
|
51
|
+
<button id="nostromo-bar" class="tree-button nostromo-bar" type="button" title="Memory map · memory research" aria-label="Memory map" aria-haspopup="dialog">
|
|
52
|
+
<svg class="bar-glyph brain-glyph" viewBox="0 0 20 20" aria-hidden="true"><path class="ic-f" d="M9.2 4.6A2.5 2.5 0 0 0 4.9 5.9a2.6 2.6 0 0 0-1.4 4.2 2.7 2.7 0 0 0 1.6 4.1 2.5 2.5 0 0 0 4.1 1.6z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path class="ic-f" d="M10.8 4.6a2.5 2.5 0 0 1 4.3 1.3 2.6 2.6 0 0 1 1.4 4.2 2.7 2.7 0 0 1-1.6 4.1 2.5 2.5 0 0 1-4.1 1.6z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path d="M6.2 9.4c.9 0 1.6.6 1.8 1.4M13.8 9.4c-.9 0-1.6.6-1.8 1.4M7.2 6.6c.5.2.9.6 1 1.1M12.8 6.6c-.5.2-.9.6-1 1.1" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>
|
|
39
53
|
</button>
|
|
40
|
-
<button id="
|
|
41
|
-
|
|
42
|
-
<svg class="t-auto" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="6.2" fill="none" stroke="currentColor" stroke-width="1.7"/><path d="M10 3.8v12.4A6.2 6.2 0 0 0 10 3.8z" fill="currentColor"/></svg>
|
|
43
|
-
<svg class="t-light" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="3.6" fill="none" stroke="currentColor" stroke-width="1.7"/><path d="M10 2.5v2M10 15.5v2M2.5 10h2M15.5 10h2M4.7 4.7l1.4 1.4M13.9 13.9l1.4 1.4M4.7 15.3l1.4-1.4M13.9 6.1l1.4-1.4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg>
|
|
44
|
-
<svg class="t-dark" viewBox="0 0 20 20" aria-hidden="true"><path d="M15.5 12.4A6.5 6.5 0 0 1 7.6 4.5a6.5 6.5 0 1 0 7.9 7.9z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"/></svg>
|
|
54
|
+
<button id="reload-button" class="tree-button reload-button" type="button" aria-label="Reload the page">
|
|
55
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M16 10a6 6 0 1 1-1.76-4.24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/><path d="M16.1 3.6v3.6h-3.6" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
45
56
|
</button>
|
|
46
|
-
<button id="browser-button" class="tree-button" type="button" aria-pressed="false" aria-controls="browser" title="
|
|
47
|
-
<svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="7.2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M2.
|
|
57
|
+
<button id="browser-button" class="tree-button" type="button" aria-pressed="false" aria-controls="browser" title="Your servers · local servers and the web" aria-label="Your servers">
|
|
58
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><circle class="ic-f" cx="10" cy="10" r="7.2" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><path class="ic-k" d="M2.9 10h14.2M10 2.8c1.9 2 2.9 4.6 2.9 7.2s-1 5.2-2.9 7.2c-1.9-2-2.9-4.6-2.9-7.2s1-5.2 2.9-7.2z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><circle class="ic-ring" cx="10" cy="10" r="7.2" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
48
59
|
</button>
|
|
49
60
|
<button id="tree-button" class="tree-button" type="button" title="Project files panel" aria-pressed="false" aria-controls="tree">
|
|
50
|
-
<svg viewBox="0 0 20 20" aria-hidden="true"><
|
|
61
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path class="ic-f" d="M2.75 6.5A2.25 2.25 0 0 1 5 4.25h2.6c.55 0 1.05.24 1.4.65l.9 1.1H15a2.25 2.25 0 0 1 2.25 2.25v5.75A2.25 2.25 0 0 1 15 16.25H5a2.25 2.25 0 0 1-2.25-2.25z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/><path class="ic-k" d="M3.1 8.6h13.8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path class="ic-open" d="M2.9 15.9 5.2 10.1a1.4 1.4 0 0 1 1.3-.9h11.3c.7 0 1.2.7.9 1.4l-2 5.3" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
62
|
+
</button>
|
|
63
|
+
<button id="phone-button" class="tree-button phone-button" type="button" aria-haspopup="dialog" aria-expanded="false" aria-label="MADRE on your phone" title="MADRE on your phone · use it from your phone">
|
|
64
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><rect class="ic-f" x="5.6" y="2.6" width="8.8" height="14.8" rx="2.4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path class="ic-k" d="M8.8 14.6h2.4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>
|
|
65
|
+
</button>
|
|
66
|
+
<button id="custom-button" class="tree-button custom-button" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="settings" aria-label="Settings">
|
|
67
|
+
<svg class="gear-glyph" viewBox="0 0 20 20" aria-hidden="true"><path class="ic-f" fill-rule="evenodd" d="M8.65 3.85L8.92 1.97L11.08 1.97L11.35 3.85L13.40 4.69L14.91 3.56L16.44 5.09L15.31 6.60L16.15 8.65L18.03 8.92L18.03 11.08L16.15 11.35L15.31 13.40L16.44 14.91L14.91 16.44L13.40 15.31L11.35 16.15L11.08 18.03L8.92 18.03L8.65 16.15L6.60 15.31L5.09 16.44L3.56 14.91L4.69 13.40L3.85 11.35L1.97 11.08L1.97 8.92L3.85 8.65L4.69 6.60L3.56 5.09L5.09 3.56L6.60 4.69ZM12.6 10a2.6 2.6 0 1 1-5.2 0a2.6 2.6 0 1 1 5.2 0Z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/></svg>
|
|
51
68
|
</button>
|
|
52
69
|
</header>
|
|
70
|
+
<!-- The second bar (2026-10-09): Salas, reload and settings, apart from the keys you arrange.
|
|
71
|
+
On the Mac only; filled by app.js (homeBar). A phone keeps its one bar. -->
|
|
72
|
+
<nav id="bar-home" class="bar bar-home" aria-label="Home, reload and settings" hidden></nav>
|
|
73
|
+
<!-- Arriving from RELOAD: the curtain is put back before the first frame with its loader (the
|
|
74
|
+
same markup as loader.js) at the share the page that left had reached, so the room never
|
|
75
|
+
flashes between the two; app.js fills the bar with the boot and lifts it. -->
|
|
76
|
+
<script>try { var kept = sessionStorage.getItem('madre.curtain'); if (kept) { sessionStorage.removeItem('madre.curtain'); var p = parseFloat(kept); if (!(p > 0 && p < 1)) p = 0.3; var curtain = document.createElement('div'); curtain.className = 'reload-curtain arrived'; curtain.id = 'reload-curtain'; curtain.innerHTML = '<div class="madre-loader" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="' + Math.round(p * 100) + '" data-p="' + p + '" style="--p: ' + p + '"><span class="madre-loader-mark"><svg viewBox="-2 -1 66 22" aria-hidden="true"><path class="madre-loader-trace" d="M1 10H16L20 10L23.5 2L28 18L32 10L35 10L37 6L39 10H52" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path class="madre-loader-beat" d="M1 10H16L20 10L23.5 2L28 18L32 10L35 10L37 6L39 10H52" pathLength="100" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><circle class="madre-loader-dot" cx="60" cy="10" r="3" fill="currentColor"/></svg></span><span class="madre-loader-bar"><i></i></span><span class="madre-loader-pct"></span><span class="madre-loader-said"></span></div>'; curtain.querySelector('.madre-loader-pct').textContent = Math.round(p * 100) + ' %'; if (curtain.showPopover) curtain.popover = 'manual'; document.body.appendChild(curtain); try { if (curtain.showPopover) curtain.showPopover(); } catch (e) {} setTimeout(function () { var still = document.getElementById('reload-curtain'); if (still && !still.classList.contains('leaving')) still.remove(); }, 15000); } } catch (e) {}</script>
|
|
53
77
|
<button id="chats-button" class="chats-button" type="button" aria-pressed="false" aria-controls="chats" title="Conversations in this project" aria-label="Conversations">
|
|
54
|
-
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3.
|
|
78
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path class="ic-f" d="M3.25 6a2.5 2.5 0 0 1 2.5-2.5h8.5a2.5 2.5 0 0 1 2.5 2.5v6a2.5 2.5 0 0 1-2.5 2.5H9.2l-2.75 2.2c-.4.32-.95.04-.95-.47V14.5h-.25a2 2 0 0 1-2-2z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path class="ic-k" pathLength="1" d="M7 7.9h6M7 10.6h3.6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
55
79
|
</button>
|
|
56
80
|
<aside id="chats" class="tree chats" aria-label="Conversations" hidden>
|
|
57
81
|
<header class="tree-head">
|
|
58
82
|
<span class="tree-title">CONVERSATIONS <span id="chats-count" class="tree-root"></span></span>
|
|
59
|
-
<button id="chats-close" class="tree-close" type="button" aria-label="Close conversations"
|
|
83
|
+
<button id="chats-close" class="tree-close" type="button" aria-label="Close conversations"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5.5 5.5l9 9M14.5 5.5l-9 9" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
|
|
60
84
|
</header>
|
|
61
85
|
<div id="chats-body" class="tree-body chats-body"></div>
|
|
62
86
|
<div class="chats-new">
|
|
63
87
|
<button id="chats-new" class="chats-new-button" type="button" title="Start another conversation in this project. The memory stays.">
|
|
64
|
-
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M10 4.
|
|
88
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M10 4.25v11.5M4.25 10h11.5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
|
|
65
89
|
NEW CONVERSATION
|
|
66
90
|
</button>
|
|
67
91
|
</div>
|
|
@@ -70,94 +94,65 @@
|
|
|
70
94
|
<aside id="tree" class="tree" aria-label="Project files" hidden>
|
|
71
95
|
<header class="tree-head">
|
|
72
96
|
<span class="tree-title">FILES <span id="tree-root" class="tree-root"></span></span>
|
|
97
|
+
<button id="tree-settings" class="surface-gear" type="button" aria-label="Settings for files and servers" title="Settings for files and servers"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3.5 6h6M14 6h2.5M3.5 14h2.5M10.5 14h6" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><circle cx="11.8" cy="6" r="2.2" fill="none" stroke="currentColor" stroke-width="1.6"/><circle cx="8.2" cy="14" r="2.2" fill="none" stroke="currentColor" stroke-width="1.6"/></svg></button>
|
|
73
98
|
<button id="tree-close" class="tree-close" type="button" aria-label="Close files">×</button>
|
|
74
99
|
</header>
|
|
75
|
-
<form id="tree-search" class="tree-search"><input id="tree-q" type="search" spellcheck="false" autocomplete="off" aria-label="Search files" placeholder="Search files…"></form>
|
|
100
|
+
<form id="tree-search" class="tree-search"><label class="settings-search tree-find"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M13 13l3.5 3.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><input id="tree-q" type="search" spellcheck="false" autocomplete="off" aria-label="Search files" placeholder="Search files…"></label><button id="tree-new" class="surface-gear tree-new" type="button" title="New file" aria-label="New file"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M11.5 3.5H6.2c-.9 0-1.7.8-1.7 1.7v9.6c0 .9.8 1.7 1.7 1.7h7.6c.9 0 1.7-.8 1.7-1.7V7.5z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path d="M11.5 3.5v4h4M10 10v4M8 12h4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button></form>
|
|
76
101
|
<div id="tree-clip" class="tree-clip" hidden></div>
|
|
77
102
|
<div id="tree-body" class="tree-body" role="tree"></div>
|
|
78
103
|
<div id="tree-menu" class="tree-menu" role="menu" hidden></div>
|
|
79
104
|
</aside>
|
|
80
105
|
|
|
81
|
-
<dialog id="core" class="mother core" aria-label="
|
|
106
|
+
<dialog id="core" class="mother core" aria-label="What is sent">
|
|
82
107
|
<div class="mother-frame">
|
|
83
108
|
<header class="mother-head">
|
|
84
|
-
<span class="mother-title">
|
|
85
|
-
<span class="mother-sub">
|
|
109
|
+
<span class="mother-title">What is sent</span>
|
|
110
|
+
<span class="mother-sub">What this project says in your name</span>
|
|
86
111
|
<span class="mother-actions">
|
|
87
|
-
<button id="core-copy" class="mother-close" type="button" title="Copy the whole briefing as the agent receives it"
|
|
88
|
-
<button id="core-close" class="mother-close" type="button">
|
|
112
|
+
<button id="core-copy" class="mother-close" type="button" title="Copy the whole briefing as the agent receives it">Copy all</button>
|
|
113
|
+
<button id="core-close" class="mother-close" type="button" aria-label="Close">Close</button>
|
|
89
114
|
</span>
|
|
90
115
|
</header>
|
|
91
116
|
<p id="core-boot" class="mother-boot"></p>
|
|
92
117
|
<section id="core-body" class="mother-section core-body" hidden></section>
|
|
93
|
-
<footer class="mother-foot">
|
|
118
|
+
<footer class="mother-foot">Built now · stored nowhere · sent nowhere · read, never written</footer>
|
|
94
119
|
</div>
|
|
95
120
|
</dialog>
|
|
96
121
|
|
|
97
|
-
<dialog id="economy" class="mother economy" aria-label="Token economy">
|
|
98
|
-
<div class="mother-frame">
|
|
99
|
-
<header class="mother-head">
|
|
100
|
-
<span class="mother-title">ECONOMY</span>
|
|
101
|
-
<span class="mother-sub">MADRE · WHAT THIS ROOM SPENT AND WHAT IT NEVER SPENT</span>
|
|
102
|
-
<span class="mother-actions">
|
|
103
|
-
<button id="economy-close" class="mother-close" type="button">CLOSE ×</button>
|
|
104
|
-
</span>
|
|
105
|
-
</header>
|
|
106
|
-
<section id="economy-body" class="mother-section"></section>
|
|
107
|
-
<footer class="mother-foot">MEASURED FROM WHAT THE CLIs CHARGED · A SAVING NOBODY MEASURED IS NEVER SHOWN</footer>
|
|
108
|
-
</div>
|
|
109
|
-
</dialog>
|
|
110
122
|
|
|
111
|
-
<dialog id="modules" class="
|
|
112
|
-
<
|
|
113
|
-
<
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
</span>
|
|
121
|
-
</header>
|
|
122
|
-
<p class="mother-answer" id="modules-note">BUILT-IN MODULES CHANGE ONLY MADRE SETTINGS. EXTERNAL MODULES WRITE INTO THE PROJECT ONLY AFTER YOU CONFIRM.</p>
|
|
123
|
-
<section id="modules-list" class="mother-section"></section>
|
|
124
|
-
<section id="modules-dev" class="mother-section dev"></section>
|
|
125
|
-
<footer class="mother-foot">BUILT-INS STAY IN MADRE · PROJECT INSTALLS SHOW THE COMMAND FIRST · YOUR MODULES LOAD FROM ~/.pulse/modules</footer>
|
|
126
|
-
</div>
|
|
123
|
+
<dialog id="modules" class="surface window settings-window mods-window" aria-label="Modules">
|
|
124
|
+
<header class="custom-head settings-head mods-head">
|
|
125
|
+
<span class="custom-title">MODULES</span>
|
|
126
|
+
<label class="settings-search mods-search"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M13 13l3.5 3.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><input id="modules-search" type="search" placeholder="Search a module, or what it does" aria-label="Search a module, or what it does" spellcheck="false" autocomplete="off"></label>
|
|
127
|
+
<button id="modules-add" class="sx-btn mods-add" type="button" title="Install a module somebody wrote. MADRE checks it before it runs." aria-label="Add a module"><span class="mods-add-plus">+</span><span class="mods-add-word">Add a module</span></button>
|
|
128
|
+
<input id="modules-file" type="file" accept=".mjs,.js,text/javascript" hidden>
|
|
129
|
+
<button id="modules-close" type="button" aria-label="Close">Close</button>
|
|
130
|
+
</header>
|
|
131
|
+
<section id="modules-list" class="mods-body"></section>
|
|
127
132
|
</dialog>
|
|
128
133
|
|
|
129
|
-
<dialog id="mother" class="mother" aria-label="
|
|
130
|
-
<
|
|
131
|
-
<
|
|
132
|
-
|
|
133
|
-
<
|
|
134
|
-
<span class="mother-actions">
|
|
135
|
-
<button id="mother-settings-button" class="mother-close" type="button" aria-pressed="false" title="The crew and this room's settings: install an agent, sign it in, set what each one may do">⚙ CONNECTIONS</button>
|
|
136
|
-
<button id="memory-button" class="mother-close" type="button" aria-pressed="false" title="What the archive holds, who distils it, and how well it is answering">▤ MEMORY</button>
|
|
137
|
-
<button id="nostromo-button" class="mother-close nostromo-button" type="button" title="NOSTROMO · memory research · needs the project designation">◉ NOSTROMO</button>
|
|
138
|
-
<button id="feedback-button" class="mother-close" type="button" title="Tell MADRE's author what happened or what you wish for · opens a prefilled issue">✎ FEEDBACK</button>
|
|
139
|
-
<button id="tour-button" class="mother-close tour-button" type="button" title="The four-step tour of MADRE" aria-label="Tour">?</button>
|
|
140
|
-
<button id="mother-close" class="mother-close" type="button">END SESSION ×</button>
|
|
141
|
-
</span>
|
|
142
|
-
</header>
|
|
143
|
-
<div class="fold-all-row"><button id="fold-all" class="fold-all" type="button" title="Open or close every section of this panel"></button></div>
|
|
144
|
-
<section id="mother-update" class="mother-section update"></section>
|
|
145
|
-
<section id="mother-settings" class="mother-section settings" hidden></section>
|
|
146
|
-
<section id="mother-memory" class="mother-section memory-panel" hidden></section>
|
|
147
|
-
<section id="mother-sentinel" class="mother-section sentinel"></section>
|
|
148
|
-
<pre id="mother-boot" class="mother-boot" aria-live="polite"></pre>
|
|
149
|
-
<form id="mother-query" class="mother-query" autocomplete="off">
|
|
150
|
-
<span class="mother-prompt">›</span>
|
|
151
|
-
<input id="mother-input" type="text" placeholder="INQUIRY (type a symptom, an agent, or a keyword)" spellcheck="false">
|
|
152
|
-
<div id="mother-os" class="mother-os" role="radiogroup" aria-label="Operating system"></div>
|
|
134
|
+
<dialog id="mother" class="surface window settings-window mother-window" aria-label="Diagnostics">
|
|
135
|
+
<header class="custom-head settings-head mother-bar">
|
|
136
|
+
<span class="custom-title mother-mark">DIAGNOSTICS</span>
|
|
137
|
+
<form id="mother-query" class="mother-find-form" autocomplete="off">
|
|
138
|
+
<label class="settings-search mother-find"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M13 13l3.5 3.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><input id="mother-input" type="search" placeholder="Write a symptom, an agent or a word" aria-label="Write a symptom, an agent or a word" spellcheck="false"></label>
|
|
153
139
|
</form>
|
|
154
|
-
<
|
|
155
|
-
<
|
|
156
|
-
|
|
157
|
-
|
|
140
|
+
<div id="mother-os" class="sx-seg mother-os" role="radiogroup" aria-label="Operating system"></div>
|
|
141
|
+
<span class="mother-tools">
|
|
142
|
+
<button id="mother-settings-button" class="surface-gear" type="button" title="Diagnostics settings: what the sentinel keeps and whether it reports" aria-label="Diagnostics settings"><svg class="gear-glyph" viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M8.65 3.85L8.92 1.97L11.08 1.97L11.35 3.85L13.40 4.69L14.91 3.56L16.44 5.09L15.31 6.60L16.15 8.65L18.03 8.92L18.03 11.08L16.15 11.35L15.31 13.40L16.44 14.91L14.91 16.44L13.40 15.31L11.35 16.15L11.08 18.03L8.92 18.03L8.65 16.15L6.60 15.31L5.09 16.44L3.56 14.91L4.69 13.40L3.85 11.35L1.97 11.08L1.97 8.92L3.85 8.65L4.69 6.60L3.56 5.09L5.09 3.56L6.60 4.69ZM12.6 10a2.6 2.6 0 1 1-5.2 0a2.6 2.6 0 1 1 5.2 0Z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/></svg></button>
|
|
143
|
+
<button id="nostromo-button" class="surface-gear nostromo-button" type="button" title="Memory map · memory research · needs the project name" aria-label="Memory map"><svg viewBox="0 0 20 20" aria-hidden="true"><path class="ic-f" d="M9.2 4.6A2.5 2.5 0 0 0 4.9 5.9a2.6 2.6 0 0 0-1.4 4.2 2.7 2.7 0 0 0 1.6 4.1 2.5 2.5 0 0 0 4.1 1.6z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path class="ic-f" d="M10.8 4.6a2.5 2.5 0 0 1 4.3 1.3 2.6 2.6 0 0 1 1.4 4.2 2.7 2.7 0 0 1-1.6 4.1 2.5 2.5 0 0 1-4.1 1.6z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path d="M6.2 9.4c.9 0 1.6.6 1.8 1.4M13.8 9.4c-.9 0-1.6.6-1.8 1.4M7.2 6.6c.5.2.9.6 1 1.1M12.8 6.6c-.5.2-.9.6-1 1.1" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg></button>
|
|
144
|
+
<button id="tour-button" class="surface-gear tour-button" type="button" title="The tour of MADRE" aria-label="Tour">?</button>
|
|
145
|
+
</span>
|
|
146
|
+
<button id="mother-close" type="button" aria-label="Close">Close</button>
|
|
147
|
+
</header>
|
|
148
|
+
<p id="mother-boot" class="mother-status" aria-live="polite"></p>
|
|
149
|
+
<div id="mother-body" class="mother-body">
|
|
150
|
+
<section id="mother-list" class="mother-list" aria-label="Conditions"></section>
|
|
151
|
+
<section id="mother-answer" class="mother-detail" aria-live="polite"></section>
|
|
158
152
|
</div>
|
|
159
153
|
</dialog>
|
|
160
154
|
|
|
155
|
+
<div class="phone-edge" aria-hidden="true"></div>
|
|
161
156
|
<main id="messages" class="thread" aria-live="polite">
|
|
162
157
|
<div id="thread-inner" class="thread-inner">
|
|
163
158
|
<div id="settled" class="settled" hidden></div>
|
|
@@ -174,122 +169,102 @@
|
|
|
174
169
|
</main>
|
|
175
170
|
|
|
176
171
|
<section id="onboarding" class="onboarding bridge" hidden>
|
|
177
|
-
<p class="onboarding-eyebrow">
|
|
178
|
-
<h2>One agent is enough to open the
|
|
179
|
-
<p>MADRE works with the AI coding agents on this computer, using the session each one already has. Install one here and sign in: the
|
|
172
|
+
<p class="onboarding-eyebrow">CONNECT YOUR AGENTS</p>
|
|
173
|
+
<h2>One agent is enough to open the project.</h2>
|
|
174
|
+
<p>MADRE works with the AI coding agents on this computer, using the session each one already has. Install one here and sign in: the project opens by itself, no terminal.</p>
|
|
180
175
|
<div id="bridge-crew" class="bridge-crew"></div>
|
|
181
|
-
<button id="bridge-close" class="bridge-close" type="button" hidden>BACK TO THE
|
|
176
|
+
<button id="bridge-close" class="bridge-close" type="button" hidden>BACK TO THE PROJECT</button>
|
|
182
177
|
<p class="hint">Nothing is installed without you pressing it, and the exact command is always shown. Same diagnosis in a terminal: <code>madre doctor</code></p>
|
|
183
178
|
</section>
|
|
184
179
|
|
|
185
180
|
<form id="composer" class="composer">
|
|
186
|
-
<div id="picker" class="picker" role="radiogroup" aria-label="Agent"></div>
|
|
187
181
|
<select id="target" aria-label="Agent" class="visually-hidden"></select>
|
|
188
182
|
<div id="attachments" class="attachments" hidden></div>
|
|
189
183
|
<div id="free-offer" class="free-offer" hidden></div>
|
|
184
|
+
<div id="intent-offer" class="free-offer intent-offer" hidden></div>
|
|
190
185
|
<div id="openq" class="openq" hidden></div>
|
|
191
186
|
<div class="field">
|
|
192
187
|
<div id="reply-quote" class="reply-quote" hidden></div>
|
|
188
|
+
<div id="picker" class="picker crew" role="radiogroup" aria-label="Agent"></div>
|
|
193
189
|
<span id="crew-label" class="crew-label" aria-hidden="true">HUMAN ›</span>
|
|
194
190
|
<div class="editor">
|
|
195
191
|
<div id="highlight" class="highlight" aria-hidden="true"></div>
|
|
196
|
-
<textarea id="message" rows="1" placeholder="Type here, human. Ask the
|
|
192
|
+
<textarea id="message" rows="1" placeholder="Type here, human. Ask the project…"></textarea>
|
|
197
193
|
<div id="slash-menu" class="slash-menu" role="listbox" hidden></div>
|
|
198
194
|
</div>
|
|
199
195
|
<button id="create-toggle" type="button" class="create-toggle" aria-pressed="false" title="Creation lease: let the agent create files for this request, only inside .pulse/out/" hidden>
|
|
200
|
-
<svg class="lock closed" viewBox="0 0 20 20" aria-hidden="true"><path d="M6.
|
|
201
|
-
<svg class="lock open" viewBox="0 0 20 20" aria-hidden="true"><path d="M13.
|
|
196
|
+
<svg class="lock closed" viewBox="0 0 20 20" aria-hidden="true"><path d="M6.8 8.6V6.7a3.2 3.2 0 0 1 6.4 0v1.9" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><rect x="4.4" y="8.6" width="11.2" height="8.2" rx="2.6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><circle cx="10" cy="12.7" r="1.1" fill="currentColor"/></svg>
|
|
197
|
+
<svg class="lock open" viewBox="0 0 20 20" aria-hidden="true"><path d="M13.2 8.6V6.5a3.2 3.2 0 0 0-6.2-1.15" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><rect x="4.4" y="8.6" width="11.2" height="8.2" rx="2.6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><circle cx="10" cy="12.7" r="1.1" fill="currentColor"/></svg>
|
|
202
198
|
<span class="create-word">CREATE</span>
|
|
203
199
|
<span id="create-scopes" class="create-scopes" hidden></span>
|
|
204
200
|
</button>
|
|
205
|
-
<button id="ash-toggle" type="button" class="ash-toggle" aria-pressed="false" title="
|
|
201
|
+
<button id="ash-toggle" type="button" class="ash-toggle" aria-pressed="false" title="Token saver: ask every agent for compact prose. Nothing you write is altered." hidden>ash</button>
|
|
206
202
|
<button id="attach" type="button" class="attach" title="Attach an image or file (or drop it here)" aria-label="Attach">
|
|
207
|
-
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="
|
|
203
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M15.4 9.6l-5.8 5.8a3.6 3.6 0 0 1-5.1-5.1l6.6-6.6a2.4 2.4 0 0 1 3.4 3.4l-6.5 6.5a1.2 1.2 0 0 1-1.7-1.7l5.8-5.8" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
208
204
|
</button>
|
|
209
205
|
<input id="file-input" type="file" multiple hidden>
|
|
210
206
|
<button type="submit" aria-label="Send">
|
|
211
|
-
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M10
|
|
207
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M10 15.4V4.9M5.6 9.3 10 4.9l4.4 4.4" fill="none" stroke="currentColor" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
212
208
|
</button>
|
|
213
209
|
</div>
|
|
210
|
+
<div id="pick-options" class="picker pick-options"></div>
|
|
214
211
|
</form>
|
|
215
|
-
<p class="safety">
|
|
212
|
+
<p id="safety" class="safety" hidden>Agents write only when you raise the mode · what they read may reach their provider.</p>
|
|
216
213
|
<small id="colophon" class="colophon" aria-label="MADRE version"></small>
|
|
217
214
|
<div id="toast" class="toast" role="status" hidden></div>
|
|
218
215
|
<div id="agent-pop" class="agent-pop" role="dialog" aria-label="Agent usage" hidden></div>
|
|
219
|
-
<dialog id="override" class="
|
|
220
|
-
<div class="
|
|
221
|
-
<
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
<
|
|
227
|
-
|
|
228
|
-
<
|
|
229
|
-
<
|
|
230
|
-
<button type="submit" class="mother-close">ARM</button>
|
|
216
|
+
<dialog id="override" class="room-ask key-ask" aria-labelledby="override-title">
|
|
217
|
+
<div class="room-ask-card key-card">
|
|
218
|
+
<span class="room-ask-icon" aria-hidden="true"><svg viewBox="0 0 20 20"><rect x="4.5" y="8.6" width="11" height="8" rx="2.2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M7 8.6V6.4a3 3 0 0 1 6 0v2.2" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/><circle cx="10" cy="12.6" r="1.2" fill="currentColor"/></svg></span>
|
|
219
|
+
<h2 class="room-ask-title" id="override-title">Unlock #3 EDIT</h2>
|
|
220
|
+
<p class="room-ask-body" id="override-brief"></p>
|
|
221
|
+
<p class="key-safe" id="override-safe"></p>
|
|
222
|
+
<p class="key-raise" id="override-raise" hidden></p>
|
|
223
|
+
<form id="override-form" class="key-form" autocomplete="off">
|
|
224
|
+
<label class="room-ask-field"><span class="k">Project</span><input id="override-input" autocomplete="off" spellcheck="false"></label>
|
|
225
|
+
<p class="key-reply" id="override-reply" aria-live="polite"></p>
|
|
226
|
+
<div class="room-ask-actions"><button id="override-cancel" class="room-ask-choice" type="button">Cancel</button><button type="submit" class="room-ask-choice primary">Unlock</button></div>
|
|
231
227
|
</form>
|
|
232
|
-
<p class="mother-answer override-reply" id="override-reply" aria-live="polite"></p>
|
|
233
|
-
<footer class="mother-foot">ONE HOLDER AT A TIME · EVERY TURN IS CHECKPOINTED · WHAT LEAVES THE SHIP DOES NOT COME BACK · STOPALL REVOKES IT</footer>
|
|
234
228
|
</div>
|
|
235
229
|
</dialog>
|
|
236
|
-
<dialog id="
|
|
237
|
-
<div
|
|
238
|
-
|
|
239
|
-
<
|
|
240
|
-
<
|
|
241
|
-
<p
|
|
242
|
-
<
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
<button id="
|
|
246
|
-
<span class="tour-nav">
|
|
247
|
-
<button id="tour-back" class="tour-back" type="button"></button>
|
|
248
|
-
<button id="tour-next" class="tour-next" type="button"></button>
|
|
249
|
-
</span>
|
|
250
|
-
</footer>
|
|
251
|
-
</section>
|
|
252
|
-
</dialog>
|
|
253
|
-
<dialog id="nostromo-gate" class="mother override" aria-label="NOSTROMO access">
|
|
254
|
-
<div class="mother-frame override-frame">
|
|
255
|
-
<header class="mother-head">
|
|
256
|
-
<span class="mother-title">NOSTROMO</span>
|
|
257
|
-
<span class="mother-sub">MEMORY RESEARCH · ACCESS CONTROL</span>
|
|
258
|
-
<button id="nostromo-gate-cancel" class="mother-close" type="button">CANCEL ×</button>
|
|
259
|
-
</header>
|
|
260
|
-
<p class="mother-answer" id="nostromo-gate-brief">THE ARCHIVE OF THIS ROOM: EVERY MEMORY THE CREW DISTILLED, LINKED BY WHAT THEY SHARE. READING IS FREE; FORGETTING IS FOREVER. TYPE THE PROJECT DESIGNATION TO BOARD.</p>
|
|
261
|
-
<form id="nostromo-gate-form" class="mother-query override-query">
|
|
262
|
-
<span class="k">DESIGNATION ›</span>
|
|
263
|
-
<input id="nostromo-gate-input" autocomplete="off" spellcheck="false" placeholder="type the current project's folder name to board">
|
|
264
|
-
<button type="submit" class="mother-close">BOARD</button>
|
|
230
|
+
<dialog id="nostromo-gate" class="room-ask key-ask nostromo-key" aria-labelledby="nostromo-gate-title">
|
|
231
|
+
<div class="room-ask-card key-card">
|
|
232
|
+
<span class="room-ask-icon" aria-hidden="true"><svg viewBox="0 0 20 20"><path d="M9.2 4.6A2.5 2.5 0 0 0 4.9 5.9a2.6 2.6 0 0 0-1.4 4.2 2.7 2.7 0 0 0 1.6 4.1 2.5 2.5 0 0 0 4.1 1.6z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path d="M10.8 4.6a2.5 2.5 0 0 1 4.3 1.3 2.6 2.6 0 0 1 1.4 4.2 2.7 2.7 0 0 1-1.6 4.1 2.5 2.5 0 0 1-4.1 1.6z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path d="M6.2 9.4c.9 0 1.6.6 1.8 1.4M13.8 9.4c-.9 0-1.6.6-1.8 1.4M7.2 6.6c.5.2.9.6 1 1.1M12.8 6.6c-.5.2-.9.6-1 1.1" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg></span>
|
|
233
|
+
<h2 class="room-ask-title" id="nostromo-gate-title">Open the memory</h2>
|
|
234
|
+
<p class="room-ask-body" id="nostromo-gate-brief">The archive of this project: every memory the agents distilled, linked by what they share.</p>
|
|
235
|
+
<p class="key-safe">Reading is free; forgetting is forever.</p>
|
|
236
|
+
<form id="nostromo-gate-form" class="key-form" autocomplete="off">
|
|
237
|
+
<label class="room-ask-field"><span class="k">Type the project name</span><input id="nostromo-gate-input" autocomplete="off" spellcheck="false"></label>
|
|
238
|
+
<p class="key-reply" id="nostromo-gate-reply" aria-live="polite"></p>
|
|
239
|
+
<div class="room-ask-actions"><button id="nostromo-gate-cancel" class="room-ask-choice" type="button">Cancel</button><button type="submit" class="room-ask-choice primary">Board</button></div>
|
|
265
240
|
</form>
|
|
266
|
-
<p class="mother-answer override-reply" id="nostromo-gate-reply" aria-live="polite"></p>
|
|
267
|
-
<footer class="mother-foot">ACCESS STAYS OPEN UNTIL THIS PAGE RELOADS · GHOST NEVER REACHES THE ARCHIVE</footer>
|
|
268
241
|
</div>
|
|
269
242
|
</dialog>
|
|
270
|
-
<dialog id="nostromo" class="mother nostromo" aria-label="
|
|
243
|
+
<dialog id="nostromo" class="mother nostromo" aria-label="Memory map · memory research">
|
|
271
244
|
<div class="nostromo-frame">
|
|
272
245
|
<header class="nostromo-head">
|
|
273
|
-
<span class="mother-title">
|
|
246
|
+
<span class="mother-title">MEMORY MAP</span>
|
|
274
247
|
<span id="nostromo-sub" class="mother-sub">MEMORY RESEARCH · LOADING…</span>
|
|
275
248
|
<span class="nostromo-legend" aria-label="Memory kinds">
|
|
276
249
|
<span class="k decision" title="YELLOW DWARF · DECISION"><i>DECISION</i></span><span class="k fact" title="WHITE DWARF · FACT"><i>FACT</i></span><span class="k preference" title="GREEN DWARF · PREFERENCE"><i>PREFERENCE</i></span><span class="k question" title="BLUE DWARF · QUESTION"><i>QUESTION</i></span>
|
|
277
250
|
</span>
|
|
278
|
-
<
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
251
|
+
<span class="nostromo-actions">
|
|
252
|
+
<button id="nostromo-cold" class="mother-close cold" type="button" hidden aria-pressed="false" title="The memories nothing has ever reached for, that share a subject with nothing, and that have had their chances">UNUSED · 0</button>
|
|
253
|
+
<button id="nostromo-ask" class="mother-close ask" type="button" hidden aria-pressed="false" title="The questions this archive cannot answer yet, written from what it already holds">ASK · 0</button>
|
|
254
|
+
<button id="nostromo-recenter" class="mother-close" type="button" hidden>RECENTER</button>
|
|
255
|
+
<button id="nostromo-close" class="mother-close" type="button">LEAVE ×</button>
|
|
256
|
+
</span>
|
|
282
257
|
</header>
|
|
283
|
-
<canvas id="nostromo-canvas" class="nostromo-canvas" tabindex="-1" aria-label="Memories orbiting
|
|
284
|
-
<p class="nostromo-help">DRAG TO TURN · SHIFT+DRAG TO MOVE · WHEEL TO ZOOM · CLICK A MEMORY · DO NOT TOUCH
|
|
258
|
+
<canvas id="nostromo-canvas" class="nostromo-canvas" tabindex="-1" aria-label="Memories orbiting the core"></canvas>
|
|
259
|
+
<p class="nostromo-help">DRAG TO TURN · SHIFT+DRAG TO MOVE · WHEEL TO ZOOM · CLICK A MEMORY · DO NOT TOUCH THE CORE</p>
|
|
285
260
|
<div id="nostromo-alert" class="nostromo-alert" role="alert" hidden>
|
|
286
261
|
<div class="klaxon"></div>
|
|
287
262
|
<div class="panel">
|
|
288
263
|
<div class="warn">⚠ WARNING ⚠</div>
|
|
289
264
|
<div class="line">I AM ALIVE.</div>
|
|
290
265
|
<div class="line">YOU HAVE NO AUTHORITY FOR THIS DIRECTIVE.</div>
|
|
291
|
-
<div class="line big">NOBODY DELETES
|
|
292
|
-
<div class="sub">
|
|
266
|
+
<div class="line big">NOBODY DELETES THIS MEMORY.</div>
|
|
267
|
+
<div class="sub">SECURITY · SPECIAL ORDER 937 · PRIORITY ONE</div>
|
|
293
268
|
</div>
|
|
294
269
|
</div>
|
|
295
270
|
<aside id="nostromo-asks" class="nostromo-card asks" hidden>
|
|
@@ -297,31 +272,31 @@
|
|
|
297
272
|
<span class="kind">WHAT TO ASK NEXT</span>
|
|
298
273
|
<button id="nostromo-asks-close" class="mother-close" type="button">×</button>
|
|
299
274
|
</header>
|
|
300
|
-
<p class="foot">WRITTEN FROM WHAT THE ARCHIVE ALREADY HOLDS. NOTHING IS SENT: A QUESTION GOES TO THE
|
|
275
|
+
<p class="foot">WRITTEN FROM WHAT THE ARCHIVE ALREADY HOLDS. NOTHING IS SENT: A QUESTION GOES TO THE WRITE BOX AND YOU DECIDE WHO ANSWERS IT.</p>
|
|
301
276
|
<ul id="nostromo-asks-list" class="asks-list"></ul>
|
|
302
277
|
</aside>
|
|
303
278
|
<aside id="nostromo-card" class="nostromo-card" hidden>
|
|
304
279
|
<header>
|
|
305
|
-
<span id="nostromo-card-kind" class="kind">MEMORY</span>
|
|
306
|
-
<button id="nostromo-card-close" class="mother-close" type="button">×</button>
|
|
280
|
+
<span id="nostromo-card-kind" data-part="kind" class="kind">MEMORY</span>
|
|
281
|
+
<button id="nostromo-card-close" data-part="close" class="mother-close" type="button">×</button>
|
|
307
282
|
</header>
|
|
308
|
-
<p id="nostromo-card-text" class="text"></p>
|
|
283
|
+
<p id="nostromo-card-text" data-part="text" class="text"></p>
|
|
309
284
|
<dl class="meta">
|
|
310
|
-
<dt>SOURCE</dt><dd id="nostromo-card-span"></dd>
|
|
311
|
-
<dt>ARCHIVIST</dt><dd id="nostromo-card-agent"></dd>
|
|
312
|
-
<dt>DISTILLED</dt><dd id="nostromo-card-when"></dd>
|
|
313
|
-
<dt>ZONE</dt><dd id="nostromo-card-zone"></dd>
|
|
285
|
+
<dt>SOURCE</dt><dd id="nostromo-card-span" data-part="span"></dd>
|
|
286
|
+
<dt>ARCHIVIST</dt><dd id="nostromo-card-agent" data-part="agent"></dd>
|
|
287
|
+
<dt>DISTILLED</dt><dd id="nostromo-card-when" data-part="when"></dd>
|
|
288
|
+
<dt>ZONE</dt><dd id="nostromo-card-zone" data-part="zone"></dd>
|
|
314
289
|
</dl>
|
|
315
290
|
<section class="wire">
|
|
316
|
-
<h6>LINKS <span id="nostromo-card-degree" class="n"></span></h6>
|
|
317
|
-
<ul id="nostromo-card-links" class="wires"></ul>
|
|
291
|
+
<h6>LINKS <span id="nostromo-card-degree" data-part="degree" class="n"></span></h6>
|
|
292
|
+
<ul id="nostromo-card-links" data-part="links" class="wires"></ul>
|
|
318
293
|
</section>
|
|
319
294
|
<section class="wire">
|
|
320
|
-
<h6>EXCHANGE WITH MADRE <span id="nostromo-card-live" class="live" title="This reading follows the
|
|
321
|
-
<p id="nostromo-card-exchange" class="exchange"></p>
|
|
322
|
-
<ul id="nostromo-card-fired" class="wires"></ul>
|
|
295
|
+
<h6>EXCHANGE WITH MADRE <span id="nostromo-card-live" data-part="live" class="live" title="This reading follows the project while the card is open">◉</span></h6>
|
|
296
|
+
<p id="nostromo-card-exchange" data-part="exchange" class="exchange"></p>
|
|
297
|
+
<ul id="nostromo-card-fired" data-part="fired" class="wires"></ul>
|
|
323
298
|
</section>
|
|
324
|
-
<button id="nostromo-forget" class="forget" type="button">FORGET THIS MEMORY</button>
|
|
299
|
+
<button id="nostromo-forget" data-part="forget" class="forget" type="button">FORGET THIS MEMORY</button>
|
|
325
300
|
<p class="foot">FORGETTING REMOVES THE NOTE FROM EVERY FUTURE TURN. THE LEDGER IT CAME FROM STAYS.</p>
|
|
326
301
|
</aside>
|
|
327
302
|
<p id="nostromo-empty" class="nostromo-empty" hidden>NO MEMORIES YET. THE ARCHIVIST WRITES THE FIRST ONES AFTER A FEW EXCHANGES.</p>
|
|
@@ -333,17 +308,41 @@
|
|
|
333
308
|
<span class="viewer-nav" id="browser-nav">
|
|
334
309
|
<button id="browser-back" class="nav" type="button" title="Back" aria-label="Back" disabled>‹</button>
|
|
335
310
|
<button id="browser-reload" class="nav" type="button" title="Reload" aria-label="Reload">↻</button>
|
|
336
|
-
<button id="browser-servers" class="nav ports" type="button" aria-expanded="false" aria-haspopup="menu"
|
|
311
|
+
<button id="browser-servers" class="nav ports" type="button" aria-expanded="false" aria-haspopup="menu" aria-label="This project's servers"><i class="ports-dot" aria-hidden="true"></i><span>YOUR SERVERS</span><i class="ports-caret" aria-hidden="true"></i></button>
|
|
312
|
+
<button id="browser-point" class="nav point" type="button" aria-pressed="false" aria-label="Point and ask"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5.4 3.9v11.4c0 .5.6.75.95.4l2.5-2.4 1.95 4.1c.17.37.6.52.96.35l.9-.43c.36-.17.5-.6.33-.96l-1.95-4.1h3.45c.5 0 .74-.6.38-.94L6.36 3.5c-.36-.33-.96-.08-.96.4z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg><span>POINT</span></button>
|
|
337
313
|
</span>
|
|
338
314
|
<div id="browser-ports-menu" class="ports-menu" role="menu" hidden></div>
|
|
339
315
|
<span id="browser-where" class="browser-where"></span>
|
|
340
316
|
<span id="browser-sizes" class="viewer-sizes"></span>
|
|
317
|
+
<button id="browser-settings" class="surface-gear" type="button" aria-label="Settings for files and servers" title="Settings for files and servers"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3.5 6h6M14 6h2.5M3.5 14h2.5M10.5 14h6" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><circle cx="11.8" cy="6" r="2.2" fill="none" stroke="currentColor" stroke-width="1.6"/><circle cx="8.2" cy="14" r="2.2" fill="none" stroke="currentColor" stroke-width="1.6"/></svg></button>
|
|
318
|
+
<button id="browser-swap" class="split-action pane-swap" type="button" title="Trade places with the second conversation" aria-label="Trade places with the second conversation">
|
|
319
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M4 7h11.5M12.5 4l3 3-3 3M16 13H4.5M7.5 10l-3 3 3 3" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
320
|
+
</button>
|
|
321
|
+
<button id="browser-float" class="split-action browser-float" type="button" aria-label="Float the browser as a window">
|
|
322
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path class="ic-k" d="M3.25 12.25v-6.5a2.5 2.5 0 0 1 2.5-2.5h6.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/><rect class="ic-f" x="6.25" y="6.25" width="10.5" height="10.5" rx="2.3" fill="none" stroke="currentColor" stroke-width="1.6"/></svg>
|
|
323
|
+
</button>
|
|
341
324
|
<button id="browser-close" class="mother-close" type="button">CLOSE ×</button>
|
|
342
325
|
</header>
|
|
343
326
|
<div id="browser-tabs" class="browser-tabs" role="tablist"></div>
|
|
344
327
|
<div id="browser-body" class="viewer-body browsing"></div>
|
|
345
328
|
</aside>
|
|
346
329
|
|
|
330
|
+
<aside id="split" class="split-dock" aria-label="Second conversation" hidden>
|
|
331
|
+
<div id="split-grip" class="dock-grip split-grip" role="separator" aria-orientation="vertical" aria-label="Resize the two halves"></div>
|
|
332
|
+
<header class="split-head">
|
|
333
|
+
<span class="split-spin" aria-hidden="true"></span>
|
|
334
|
+
<span id="split-title" class="split-title"></span>
|
|
335
|
+
<button id="split-swap" class="split-action" type="button" title="Make this the open conversation, and put the other one here" aria-label="Swap the two halves">
|
|
336
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M4 7h11.5M12.5 4l3 3-3 3M16 13H4.5M7.5 10l-3 3 3 3" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
337
|
+
</button>
|
|
338
|
+
<button id="split-float" class="split-action" type="button" aria-label="Float it as a window">
|
|
339
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3.25 12.25v-6.5a2.5 2.5 0 0 1 2.5-2.5h6.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/><rect x="6.25" y="6.25" width="10.5" height="10.5" rx="2.3" fill="none" stroke="currentColor" stroke-width="1.6"/></svg>
|
|
340
|
+
</button>
|
|
341
|
+
<button id="split-close" class="split-action" type="button" title="Close the split" aria-label="Close the split">×</button>
|
|
342
|
+
</header>
|
|
343
|
+
<iframe id="split-frame" class="split-frame" title="Second conversation"></iframe>
|
|
344
|
+
</aside>
|
|
345
|
+
|
|
347
346
|
<dialog id="viewer" class="viewer" aria-label="File viewer">
|
|
348
347
|
<header class="viewer-head">
|
|
349
348
|
<span class="viewer-nav" id="viewer-nav" hidden>
|
|
@@ -354,6 +353,8 @@
|
|
|
354
353
|
<span id="viewer-lang" class="viewer-lang" hidden></span>
|
|
355
354
|
<span id="viewer-hint-select" class="viewer-lang" hidden>CLICK A LINE NUMBER TO SELECT · SHIFT FOR A RANGE</span>
|
|
356
355
|
<span id="viewer-selection" class="viewer-selection" hidden></span>
|
|
356
|
+
<span class="viewer-spacer" aria-hidden="true"></span>
|
|
357
|
+
<button id="viewer-edit" class="viewer-review viewer-edit" type="button" hidden>EDIT</button>
|
|
357
358
|
<button id="viewer-mode" class="viewer-review viewer-mode" type="button" hidden>SOURCE</button>
|
|
358
359
|
<button id="viewer-review" class="viewer-review" type="button" hidden>REVIEW WITH ▾</button>
|
|
359
360
|
<a id="viewer-open" class="viewer-open" target="_blank" rel="noopener noreferrer">OPEN RAW ↗</a>
|
|
@@ -365,5 +366,30 @@
|
|
|
365
366
|
</dialog>
|
|
366
367
|
</div>
|
|
367
368
|
<script type="module" src="/app.js"></script>
|
|
369
|
+
<dialog id="intents-window" class="surface window custom-window intents-window" aria-label="Intenciones · quick test">
|
|
370
|
+
<header class="custom-head">
|
|
371
|
+
<span class="custom-title">INTENCIONES</span>
|
|
372
|
+
<span class="custom-sub">QUICK TEST · YOU JUDGE, BLIND</span>
|
|
373
|
+
</header>
|
|
374
|
+
<div id="intents-body" class="custom-body intents-body"></div>
|
|
375
|
+
</dialog>
|
|
376
|
+
<dialog id="module-guide" class="module-guide" aria-label="Create your module">
|
|
377
|
+
<header class="module-guide-head"><span class="custom-title">CREATE YOUR MODULE</span><button id="module-guide-close" class="module-guide-close" type="button" aria-label="Close">×</button></header>
|
|
378
|
+
<section id="modules-dev" class="module-guide-body"></section>
|
|
379
|
+
</dialog>
|
|
380
|
+
<dialog id="settings" class="surface window settings-window" aria-label="Settings">
|
|
381
|
+
<header class="custom-head settings-head">
|
|
382
|
+
<span class="custom-title">SETTINGS</span>
|
|
383
|
+
<label class="settings-search"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.5" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M13.2 13.2 17 17" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><input id="settings-search" type="search" placeholder="Search any setting" autocomplete="off" spellcheck="false"></label>
|
|
384
|
+
</header>
|
|
385
|
+
<div id="settings-body" class="settings-body"></div>
|
|
386
|
+
</dialog>
|
|
387
|
+
<dialog id="custom" class="surface window custom-window" aria-label="Personalize MADRE">
|
|
388
|
+
<header class="custom-head">
|
|
389
|
+
<span class="custom-title">PERSONALIZE</span>
|
|
390
|
+
<span class="custom-sub">HOW MADRE LOOKS TO YOU</span>
|
|
391
|
+
</header>
|
|
392
|
+
<div id="custom-body" class="custom-body"></div>
|
|
393
|
+
</dialog>
|
|
368
394
|
</body>
|
|
369
395
|
</html>
|