@parley-im/parley 0.2.8 → 0.2.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parley-im/parley",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "description": "Send someone a link. They talk to a read-only Claude or Codex in your project, on your computer, and you get everything they said.",
5
5
  "keywords": [
6
6
  "claude",
package/web/app.css CHANGED
@@ -1,9 +1,9 @@
1
1
  /* parley: one stylesheet for the guest chat, your session view, your
2
- control panel and parley's site. Near black, with deep, murky ocean green
3
- for accents, for the people who use Claude Code and Codex: Instrument Sans for everything
2
+ control panel and parley's site. Dark, with lilac for the accents, for the
3
+ people who use Claude Code and Codex: Instrument Sans for everything
4
4
  people read, JetBrains Mono for the wordmark, labels, files and numbers.
5
- The agent's words are marked with a dot, as in Claude Code, and while it
6
- writes, P goes by in Morse. The fonts are served from here, never from a
5
+ The agent's words are marked with a dot, as in Claude Code, and three
6
+ dots pulse while it writes. The fonts are served from here, never from a
7
7
  font service, so guest pages only ever talk to parley. */
8
8
 
9
9
  @font-face { font-family: "Instrument Sans"; src: url("/static/fonts/instrument-sans.woff2") format("woff2"); font-weight: 400 700; font-style: normal; font-display: swap; }
@@ -11,25 +11,25 @@
11
11
  @font-face { font-family: "JetBrains Mono"; src: url("/static/fonts/jetbrains-mono.woff2") format("woff2"); font-weight: 100 800; font-style: normal; font-display: swap; }
12
12
 
13
13
  :root {
14
- --bg: #070a09; /* near black, the deep */
15
- --panel: #0d1311;
16
- --subtle: #121a17;
17
- --hover: #18221e;
18
- --line: #1a2420;
19
- --line-strong: #2a3833;
20
- --text: #e6ece9;
21
- --muted: #95a39d;
22
- --faint: #5d6b65;
23
- --accent: #6db39c; /* sea glass, for links and small marks */
24
- --accent-fill: #1f5c50; /* deep ocean green, for buttons and fills */
25
- --accent-soft: #11241f;
26
- --accent-ink: #ffffff;
27
- --tile: #1f5c50; /* the mark's tile */
28
- --guest: #12302a; /* your own messages */
29
- --guest-ink: #d5e7e0;
30
- --ok: #4fb88a;
31
- --warn: #d9a24a;
32
- --danger: #f2615d;
14
+ --bg: #0c0c0d;
15
+ --panel: #131315;
16
+ --subtle: #19191c;
17
+ --hover: #212125;
18
+ --line: #26262b;
19
+ --line-strong: #36363c;
20
+ --text: #ececef;
21
+ --muted: #9b9ba4;
22
+ --faint: #66666f;
23
+ --accent: #9d92ff; /* lilac */
24
+ --accent-fill: #9d92ff; /* buttons, with dark text */
25
+ --accent-soft: #221f3d;
26
+ --accent-ink: #0c0c0d;
27
+ --tile: #9d92ff; /* the mark's tile */
28
+ --guest: #221f3d; /* your own messages */
29
+ --guest-ink: #e6e2ff;
30
+ --ok: #3ccf7a;
31
+ --warn: #e3a948;
32
+ --danger: #ff6b63;
33
33
  --shadow: 0 1px 2px rgba(0, 0, 0, 0.4), 0 12px 32px -16px rgba(0, 0, 0, 0.8);
34
34
  --sans: "Instrument Sans", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
35
35
  --display: var(--sans);
@@ -61,7 +61,7 @@ code, kbd, pre { font-family: var(--mono); }
61
61
  .mark { display: inline-block; width: 24px; height: 24px; flex: none; }
62
62
  .mark svg { display: block; width: 100%; height: 100%; }
63
63
  .mark .tile { fill: var(--tile); }
64
- .mark .glyph { fill: #ffffff; }
64
+ .mark .glyph { fill: var(--accent-ink); }
65
65
  .wordmark { font-family: var(--mono); font-weight: 700; letter-spacing: -0.04em; }
66
66
 
67
67
  .topbar {
@@ -222,14 +222,12 @@ body:has(> .app) { overflow: hidden; overscroll-behavior: none; }
222
222
  .body th { background: var(--subtle); font-weight: 600; white-space: nowrap; }
223
223
  .body tr:last-child td { border-bottom: 0; }
224
224
 
225
- /* Writing: P in Morse (dot, dash, dash, dot), passing by. */
226
- .thinking { display: inline-flex; align-items: center; gap: 4px; height: 26px; }
227
- .thinking span { width: 7px; height: 7px; border-radius: 4px; background: var(--accent); opacity: 0.25; animation: morse 1.6s ease-in-out infinite; }
228
- .thinking span:nth-child(2), .thinking span:nth-child(3) { width: 17px; }
225
+ /* Writing: three dots, pulsing in turn. */
226
+ .thinking { display: inline-flex; align-items: center; gap: 5px; height: 26px; }
227
+ .thinking span { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); opacity: 0.3; animation: pulse-dot 1.2s ease-in-out infinite; }
229
228
  .thinking span:nth-child(2) { animation-delay: 0.16s; }
230
229
  .thinking span:nth-child(3) { animation-delay: 0.32s; }
231
- .thinking span:nth-child(4) { animation-delay: 0.48s; }
232
- @keyframes morse { 0%, 70%, 100% { opacity: 0.25; } 30% { opacity: 1; } }
230
+ @keyframes pulse-dot { 0%, 70%, 100% { opacity: 0.3; transform: none; } 30% { opacity: 1; transform: translateY(-2px); } }
233
231
  @keyframes blink { 0%, 49% { opacity: 1; } 50%, 100% { opacity: 0; } }
234
232
  .cursor::after { content: ""; display: inline-block; width: 7px; height: 1.05em; background: var(--accent); border-radius: 1px; margin-left: 3px; vertical-align: -3px; animation: blink 1.06s steps(1) infinite; }
235
233
  @media (prefers-reduced-motion: reduce) { .thinking span, .cursor::after, .dot.busy { animation: none; } .thinking span { opacity: 0.7; } }
package/web/chat.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content">
6
6
  <meta name="robots" content="noindex, nofollow">
7
7
  <meta name="referrer" content="no-referrer">
8
- <meta name="theme-color" content="#070a09">
8
+ <meta name="theme-color" content="#0c0c0d">
9
9
  <meta property="og:title" content="{{PREVIEW_TITLE}}">
10
10
  <meta property="og:description" content="{{PREVIEW_TEXT}}">
11
11
  <meta property="og:site_name" content="parley">
package/web/chat.js CHANGED
@@ -222,7 +222,7 @@
222
222
  if (live.text.trim()) {
223
223
  live.bodyEl.innerHTML = window.renderMarkdown(live.text);
224
224
  live.bodyEl.lastElementChild?.classList.add("cursor");
225
- } else live.bodyEl.innerHTML = `<span class="thinking" role="img" aria-label="Writing"><span></span><span></span><span></span><span></span></span>`;
225
+ } else live.bodyEl.innerHTML = `<span class="thinking" role="img" aria-label="Writing"><span></span><span></span><span></span></span>`;
226
226
  // The last few things it looked at, newest highlighted.
227
227
  live.stepsEl.textContent = "";
228
228
  live.steps.slice(-4).forEach((line, i, shown) => live.stepsEl.append(el("li", { className: i === shown.length - 1 ? "now" : "", textContent: line })));
package/web/ended.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <meta name="theme-color" content="#070a09">
6
+ <meta name="theme-color" content="#0c0c0d">
7
7
  <meta name="robots" content="noindex, nofollow">
8
8
  <title>This parley has ended</title>
9
9
  <link rel="icon" href="/static/icon.svg?v=5" type="image/svg+xml">
package/web/home.js CHANGED
@@ -55,7 +55,7 @@
55
55
  // Working: the agent looks something up in the project, then writes.
56
56
  const node = el("li", "msg agent");
57
57
  const body = el("div", "body");
58
- body.innerHTML = `<span class="thinking" role="img" aria-label="Writing"><span></span><span></span><span></span><span></span></span>`;
58
+ body.innerHTML = `<span class="thinking" role="img" aria-label="Writing"><span></span><span></span><span></span></span>`;
59
59
  const steps = el("ul", "steps");
60
60
  node.append(body, steps);
61
61
  list.append(node);
package/web/icon-180.png CHANGED
Binary file
package/web/icon.png CHANGED
Binary file
package/web/icon.svg CHANGED
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><rect width="64" height="64" rx="14" fill="#22574C"/><rect x="19.5" y="16" width="7" height="32" rx="1.5" fill="#FFFFFF"/><path fill="#FFFFFF" fill-rule="evenodd" d="M44.5 25.5A10 10 0 1 1 24.5 25.5A10 10 0 1 1 44.5 25.5ZM38.5 25.5A4 4 0 1 0 30.5 25.5A4 4 0 1 0 38.5 25.5Z"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><rect width="64" height="64" rx="14" fill="#9D92FF"/><rect x="19.5" y="16" width="7" height="32" rx="1.5" fill="#0C0C0D"/><path fill="#0C0C0D" fill-rule="evenodd" d="M44.5 25.5A10 10 0 1 1 24.5 25.5A10 10 0 1 1 44.5 25.5ZM38.5 25.5A4 4 0 1 0 30.5 25.5A4 4 0 1 0 38.5 25.5Z"/></svg>
package/web/missing.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <meta name="theme-color" content="#070a09">
6
+ <meta name="theme-color" content="#0c0c0d">
7
7
  <meta name="robots" content="noindex, nofollow">
8
8
  <title>Link not found</title>
9
9
  <link rel="icon" href="/static/icon.svg?v=5" type="image/svg+xml">
package/web/panel.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <meta name="theme-color" content="#070a09">
6
+ <meta name="theme-color" content="#0c0c0d">
7
7
  <title>Control panel · parley</title>
8
8
  <link rel="icon" href="/static/icon.svg?v=5" type="image/svg+xml">
9
9
  <link rel="stylesheet" href="/static/app.css">