leglas 0.4.1 → 0.6.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/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  </p>
16
16
 
17
17
  <p align="center">
18
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/pr-assets/rail-single.jpg" width="900" alt="The Leglas interface: a rail of three design directions on the left, and the selected one running as the real app filling the rest of the window" />
18
+ <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/rail-single.jpg" width="900" alt="The Leglas interface: a rail of three design directions on the left, and the selected one running as the real app filling the rest of the window" />
19
19
  </p>
20
20
 
21
21
  <p align="center"><i>Every direction in the rail, the selected one running as your actual app. Arrow keys flip between them.</i></p>
@@ -46,7 +46,7 @@ and sessions that clean up after themselves.
46
46
  ## What you can do with Leglas
47
47
 
48
48
  <p align="center">
49
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/pr-assets/compare-artboards.jpg" width="900" alt="The Leglas interface: a rail of three design directions on the left, and two of them running side by side as the real app, each labelled with its name." />
49
+ <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/compare-artboards.jpg" width="900" alt="The Leglas interface: a rail of three design directions on the left, and two of them running side by side as the real app, each labelled with its name." />
50
50
  </p>
51
51
 
52
52
  <p align="center"><i>Two directions for the same page, running side by side as the actual app.</i></p>
@@ -66,12 +66,15 @@ and sessions that clean up after themselves.
66
66
  precise request for your agent, file path included. The composer
67
67
  carries its own agent picker, the way every chat you already use
68
68
  carries a model picker: the CLIs found on your machine (Claude Code,
69
- Codex, Cursor) are one click away next to the send button, each asked
70
- for its login status so a signed-out CLI says so before a run instead
71
- of failing one. Not on that list? Type the command that runs your
72
- agent once, in the same menu, and Leglas hands it each request; or
73
- connect an agent Leglas can't spawn (an IDE panel, an MCP host) with
74
- the copy-paste MCP wiring behind "Connect another agent". Each run
69
+ Codex, Cursor) are one click away next to the send button. Leglas checks
70
+ your shell path and the conventional per-user install locations, then asks
71
+ each CLI for its login status so a signed-out agent says so before a run
72
+ instead of failing one. Claude Code and Codex can optionally override effort
73
+ for this project, remembered separately for each agent; `Agent default`
74
+ leaves the CLI's own setting untouched. To
75
+ work from an IDE panel or chat host, choose
76
+ "Connect agent via MCP" for the exact setup and a live confirmation
77
+ once the agent uses a Leglas tool. Each run
75
78
  reports in a card above the field: who is working, what file they
76
79
  are touching, how long it has been, a stop button while it runs and
77
80
  retry when it fails. Your agent, your subscription, no keys.
@@ -177,13 +180,26 @@ directly above the field. Your agent drains the queue with `npx leglas requests
177
180
  it with `--clear`. Leglas runs no model of its own; your agent already
178
181
  knows your conventions and your taste.
179
182
 
183
+ Most of what you would type into that field is the part describing where
184
+ the problem is, so you can point at it instead. Press `A` and the preview
185
+ becomes a picker: hovering outlines the element under the pointer,
186
+ clicking drops a numbered pin that takes a note, and dragging marks an
187
+ area and names every element inside it. The page still scrolls, so the
188
+ thing three screens down is as easy to mark as the headline. Annotations
189
+ are a request on their own, so the field can stay empty; leave three and
190
+ send once. Each one carries the element's own words, its tag and classes,
191
+ a path and the box it filled, and the request tells your agent which of
192
+ those to trust first, because the design moves under them by design. One
193
+ whose element has since gone turns amber rather than pointing confidently
194
+ at the wrong thing.
195
+
180
196
  The line under the field is the whole status: whether anything is
181
197
  listening, what you have queued, and when it has been picked up.
182
198
 
183
199
  <p align="center">
184
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/pr-assets/field-idle.png" width="290" alt="The change field reading: Enter queues it for npx leglas requests" />
185
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/pr-assets/field-queued.png" width="290" alt="The change field reading: one change queued for your agent" />
186
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/pr-assets/field-pickedup.png" width="290" alt="The change field reading: Your agent is on it" />
200
+ <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/field-idle.png" width="290" alt="The change field reading: Enter queues it for npx leglas requests" />
201
+ <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/field-queued.png" width="290" alt="The change field reading: one change queued for your agent" />
202
+ <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/field-pickedup.png" width="290" alt="The change field reading: Your agent is on it" />
187
203
  </p>
188
204
 
189
205
  <p align="center"><i>Nothing waiting, then a request queued, then an agent that has taken it.</i></p>
@@ -194,6 +210,13 @@ wrong. `npx leglas watch` in another terminal is the same loop with the
194
210
  agent's own output in view, and it needs no flag once an agent has been
195
211
  picked in the interface.
196
212
 
213
+ To use a CLI that is not in the picker, keep the custom command explicit
214
+ in the terminal:
215
+
216
+ ```sh
217
+ npx leglas watch --run "my-agent {prompt}"
218
+ ```
219
+
197
220
  ### MCP server
198
221
 
199
222
  For agent hosts that cannot run shell commands, `leglas-mcp` exposes the
@@ -308,8 +331,9 @@ drawn at and the scale it is shown at. If you want the narrow rendering,
308
331
  that is what the tools popover's "Scale each side to fit" switch is for.
309
332
 
310
333
  Arrows move between directions, `1` to `9` jump straight to one, `R` asks
311
- for a change to the one you are on, `Cmd K` (`Ctrl K` elsewhere) searches
312
- and `B` collapses the rail. Press `?` for the whole keymap.
334
+ for a change to the one you are on, `A` annotates the design itself,
335
+ `Cmd K` (`Ctrl K` elsewhere) searches and `B` collapses the rail. Press `?`
336
+ for the whole keymap.
313
337
 
314
338
  A small tools widget floats over the stage and can be dragged to any
315
339
  corner, because a floating control has a habit of sitting exactly where
@@ -346,6 +370,7 @@ leglas keep <title> Keep a winner and end the exploration
346
370
  --count <n> (explore) How many directions, default 3
347
371
  --based-on <title> (explore) Variants of an existing direction instead of new ones
348
372
  --based-on <title> (add) The direction this preview is a variant of; groups the family
373
+ --asked-for <text> (add) The change that was asked for, in the words that were typed
349
374
  --change <path> (classify) A file the direction creates or wires up
350
375
  --rewrite <path> (classify) An existing file whose behaviour must change
351
376
  --note <text> (add) Second line under the title
package/dist/args.d.ts CHANGED
@@ -17,6 +17,8 @@ export type AddPreview = {
17
17
  file: string | undefined;
18
18
  /** The direction this preview is a variant of; the rail groups them. */
19
19
  basedOn: string | undefined;
20
+ /** The change that was asked for, in the words that were typed. */
21
+ askedFor: string | undefined;
20
22
  };
21
23
  export type ClassifyChange = {
22
24
  path: string;