@poodle64/librarian 2026.9.1 → 2026.9.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/README.md CHANGED
@@ -39,6 +39,17 @@ pnpm add @poodle64/librarian @poodle64/ui @lucide/svelte
39
39
  and `shiki` are peer dependencies: declare them yourself so Renovate tracks
40
40
  their versions and `pnpm ls` shows them.
41
41
 
42
+ The components style themselves with Tailwind utility classes, same as
43
+ `@poodle64/ui`, so the same line is needed in the app's `app.css`:
44
+
45
+ ```css
46
+ @source '../node_modules/@poodle64/librarian/dist'; /* Tailwind content scan */
47
+ ```
48
+
49
+ Without it the classes ship in `dist` but Tailwind's default content scan
50
+ never sees `node_modules`, so nothing compiles for them — no build error, no
51
+ lint hit, just an unstyled transcript.
52
+
42
53
  ## Consuming the package
43
54
 
44
55
  Every export is its own subpath, matching `@poodle64/ui`'s convention:
@@ -53,6 +64,7 @@ Every export is its own subpath, matching `@poodle64/ui`'s convention:
53
64
  let question = $state('');
54
65
  let running = $state(false);
55
66
  const transcript = new Transcript();
67
+ let controller: AbortController | null = null;
56
68
 
57
69
  async function submit() {
58
70
  const asked = question.trim();
@@ -61,16 +73,27 @@ Every export is its own subpath, matching `@poodle64/ui`'s convention:
61
73
  question = '';
62
74
  running = true;
63
75
  transcript.reset();
76
+ controller = new AbortController();
64
77
 
65
78
  try {
66
- for await (const event of ask({ question: asked, endpoint: '/api/caller/ask' })) {
79
+ for await (const event of ask({
80
+ question: asked,
81
+ endpoint: '/api/caller/ask',
82
+ signal: controller.signal
83
+ })) {
67
84
  transcript.apply(event);
68
85
  if (event.type === 'result' || event.type === 'library_error') running = false;
69
86
  }
70
87
  } finally {
71
88
  running = false;
89
+ controller = null;
72
90
  }
73
91
  }
92
+
93
+ function stop() {
94
+ controller?.abort();
95
+ running = false;
96
+ }
74
97
  </script>
75
98
 
76
99
  <AgentTranscript {question} blocks={transcript.blocks} outcome={transcript.outcome} {running} />
@@ -81,7 +104,7 @@ Every export is its own subpath, matching `@poodle64/ui`'s convention:
81
104
  scope="library"
82
105
  onscope={() => {}}
83
106
  onsubmit={submit}
84
- onstop={() => {}}
107
+ onstop={stop}
85
108
  />
86
109
  ```
87
110
 
@@ -146,6 +146,12 @@
146
146
  requirement numbers — so it is the main way a reader picks a reference
147
147
  out of a paragraph. Bordered rather than merely tinted, because a tint
148
148
  alone is invisible against this palette's flat surfaces. */
149
+ /* Inline, in running text: wraps at word boundaries like the prose around it
150
+ rather than scrolling in its own box — that pattern is reserved for wide
151
+ BLOCK content (a table, a fenced code block) that a reader scrolls past;
152
+ an inline identifier a reader is reading stays in flow. A long citation
153
+ title is exactly the case: nowrap clipped it at the container edge on a
154
+ phone with no way to read the rest. */
149
155
  .agent-prose :global(code) {
150
156
  font-family: var(--ds-font-mono, monospace);
151
157
  font-size: 0.8125em;
@@ -153,7 +159,8 @@
153
159
  border: 1px solid var(--border);
154
160
  border-radius: 0.35em;
155
161
  padding: 0.1em 0.35em;
156
- white-space: nowrap;
162
+ white-space: normal;
163
+ overflow-wrap: anywhere;
157
164
  }
158
165
 
159
166
  .agent-prose :global(pre) {
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@poodle64/librarian",
3
- "version": "2026.9.1",
3
+ "version": "2026.9.3",
4
4
  "description": "Milton's conversation surface as a consumable Svelte 5 package: the stream client, transcript state and chat components (transcript, composer, markdown) every household app renders instead of rebuilding.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
- "repository": "github:radar-hooves/design-system",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/radar-hooves/design-system.git"
10
+ },
8
11
  "publishConfig": {
9
12
  "registry": "https://registry.npmjs.org",
10
13
  "access": "public",