leglas 1.1.0 → 1.1.1

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.
Files changed (2) hide show
  1. package/README.md +42 -380
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  <p align="center">
12
12
  <a href="https://www.npmjs.com/package/leglas"><img src="https://img.shields.io/npm/v/leglas" alt="npm"></a>
13
13
  <a href="https://github.com/FredAmartey/leglas/actions/workflows/ci.yml"><img src="https://github.com/FredAmartey/leglas/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
14
- <a href="LICENSE"><img src="https://img.shields.io/npm/l/leglas" alt="license"></a>
14
+ <a href="https://github.com/FredAmartey/leglas/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/leglas" alt="license"></a>
15
15
  <a href="https://leglas.vercel.app/changelog/"><img src="https://img.shields.io/badge/changelog-what's%20new-0B1839" alt="changelog"></a>
16
16
  </p>
17
17
 
@@ -57,7 +57,7 @@ and sessions that clean up after themselves.
57
57
  right. Your opinion of every idea survives a long exploration.
58
58
  - Share the rail with someone who has no repo: a client, a cofounder, a
59
59
  teammate on another machine. They get the real app, in your order, and
60
- cannot change anything. See [Sharing](#sharing).
60
+ cannot change anything. See [Sharing](https://github.com/FredAmartey/leglas/blob/main/docs/sharing.md).
61
61
  - Compare things no design tool can hold: three git branches, a local build
62
62
  against production, yesterday's direction against today's.
63
63
  - Hand the workflow to your coding agent. `leglas init` teaches it, and
@@ -85,286 +85,32 @@ npx leglas
85
85
 
86
86
  Leglas starts on port 4100, proxies your app and opens
87
87
  `http://localhost:4100/leglas`. With no configuration you get a single
88
- preview of your app root; a config file, described under
89
- [Configuration](#configuration), is how you get more than one thing to
90
- compare.
91
- If that port turns out to be served from outside your project, Leglas says
92
- so and points at `devServer` and `--user-port` rather than quietly proxying
93
- the wrong app.
94
-
95
- It works with whatever you are building in. Leglas never imports or
96
- executes your framework, so the target can be Next, Vite, Remix, SvelteKit,
97
- Astro or a folder of static files. It needs Node 24 or newer, and nothing
98
- else: `npx` fetches the CLI on first use and starts from the cache after
99
- that. To pin a version for a project, `npm install -D leglas`; to type
100
- `leglas` without the prefix, `npm install -g leglas`.
101
-
102
- Leglas asks npm once a day whether a newer version exists and says so in
103
- the terminal and beside its name in the interface, where one click installs
104
- it and starts Leglas again. The check reads the registry your npm is
105
- configured for. Set `LEGLAS_NO_UPDATE_CHECK=1` to turn it off; the version
106
- stays in the interface and you can still check by hand from there.
107
-
108
- ## Using Leglas
109
-
110
- ### The rail and the stage
111
-
112
- Directions live in a rail on the left. The stage shows the active one in a
113
- framed viewport at Full, 1440, 834 or 390 wide. Rename, reorder, hide and
114
- tag directions from the rail; open the removed list to restore one, delete
115
- it for good or clear the list. Your layout is saved per project and
116
- survives restarts.
117
-
118
- A small tools widget floats over the stage and can be dragged to any
119
- corner. Its popover holds the viewport presets and a few preferences,
120
- including hiding the dev badge your framework paints over the corner of
121
- the app when it lands on the part you are judging.
122
-
123
- ### Comparing
124
-
125
- Flipping shows a difference over time. A split shows it at once, which is
126
- what you want for the last two in contention: press `C`, or hover a
127
- direction and press its compare button, and it becomes the right pane
128
- while the active direction holds the left.
129
-
130
- Each side is drawn at the width it had on its own and scaled to fit, so
131
- nothing reflows and flipping and splitting agree about what the design is.
132
- An app given half the room would cross its own breakpoints and draw a
133
- different design. If the narrow rendering is what you want, the tools
134
- popover's "Scale each side to fit" switch is for that.
135
-
136
- ### Asking for a change
137
-
138
- Type what you want into the field under the rail, or press `R`, and Leglas
139
- composes a request naming the direction and the file behind it, copies it
140
- to your clipboard and queues it. The direction it means is the one
141
- highlighted directly above the field. By default the request asks for a
142
- new variant beside that direction; the chip next to the send button
143
- switches it to a change in place, for when a change really is a fix.
144
-
145
- Pick an agent once from the picker beside the send button and the card
146
- above the field shows it working: which file it is editing, how long it
147
- has been, a stop if you change your mind, a retry when a run goes wrong.
148
- Every request carries a screenshot of the direction at the width you are
149
- looking at, a crop of anything you pointed at, the other pane when you are
150
- comparing and any image you pasted in as a reference. Leglas runs no model
151
- of its own; your agent already knows your conventions and your taste.
152
-
153
- <p align="center">
154
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/field-idle.png" width="290" alt="The change field, empty, with its agent picker reading Choose an agent" />
155
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/field-queued.png" width="290" alt="A card above the change field reading: Change queued, pick who runs your changes" />
156
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/field-pickedup.png" width="290" alt="A card above the change field reading: Codex is on it, editing .leglas/variants/hero/poster.tsx, 56s, with a stop button" />
157
- </p>
158
-
159
- <p align="center"><i>Nothing waiting, then a request queued, then an agent that has taken it.</i></p>
160
-
161
- Hover any direction to see what it was built from and the change that was
162
- asked for, in the words that were typed.
163
-
164
- ### Pointing at the problem
165
-
166
- Most of what you would type is the part describing where the problem is,
167
- so point at it instead. Press `A` and the preview becomes a picker:
168
- hovering outlines the element under the pointer, clicking drops a numbered
169
- pin that takes a note, and dragging marks an area and names every element
170
- inside it. Click a pin again to reread it, reword it or drop it. The page
171
- still scrolls, so the thing three screens down is as easy to mark as the
172
- headline.
173
-
174
- Annotations are a request on their own, so the field can stay empty: leave
175
- three and send once. Each carries the element's own words, its tag and
176
- classes, a path and the box it filled, and tells your agent which of those
177
- to trust first, because the design moves under them by design. A pin whose
178
- element has since gone turns amber rather than pointing confidently at the
179
- wrong thing.
180
-
181
- ### Sharing
182
-
183
- The rail is local, and the person who most needs to see it often has no
184
- repo. The share control in the rail's header fixes that: pick the whole rail
185
- as you see it, or what is on stage (one direction, or the pair being
186
- compared), and start sharing. Leglas opens a second listener on your
187
- machine, points a tunnel at it and copies the link once it answers.
188
-
189
- <p align="center">
190
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/share-links.png" width="426" alt="The share panel under the rail's header while sharing: the tunnel address, two links named Link 1 and Client review each with 24h left, the hovered row showing copy, extend and turn off, Another link, the scope line reading The whole rail, 6 directions, only what you shared, then Replace all and Stop" />
191
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/share-viewer.png" width="426" alt="The same rail as a viewer sees it: a strip reading Shared with you, the whole rail, then the directions in the sharer's order with no composer" />
192
- </p>
193
-
194
- <p align="center"><i>Sharing, and what the person on the other end gets.</i></p>
195
-
196
- Whoever opens the link gets the real app, running, with your order, your
197
- names, your folded families and your viewport. They can flip, compare,
198
- search and change the width. They cannot change anything: the share
199
- listener refuses every write, whoever the caller is, and answers every path
200
- with 403 without the cookie the link sets, so your dev server never faces
201
- the internet bare. Viewers do not get hot reload either, since an app's
202
- live-reload socket is a way in; they refresh to see a change.
203
-
204
- What a viewer can do is read what your dev server serves, and you choose
205
- how much of it. **Anywhere in the app** is the whole dev server over GET,
206
- source included, because Leglas proxies it faithfully and that is the
207
- point; it suits a demo. **Only what you shared** serves the pages you shared
208
- and the files they load, refuses the rest before the dev server hears of it
209
- and holds against a console or curl as well as a browser. The list is read
210
- off what your own directions loaded while you looked at them, not written
211
- by hand, and anything it did not predict shows up in the panel with one
212
- click to let that path or its folder through. Bounded still means a viewer
213
- sees everything your shared pages themselves load. Either way Leglas
214
- refuses the routes a dev server mounts to act on your machine, Vite's
215
- editor launcher among them, hidden files like `.env` however the path is
216
- spelled and a service worker that would outlive the share.
217
-
218
- <p align="center">
219
- <img src="https://raw.githubusercontent.com/FredAmartey/leglas/main/.github/assets/screenshots/share-reach.png" width="426" alt="The share panel before starting: The whole rail, 6 directions, 2 on branches left out; The direction on stage, Table; How far they can go: Anywhere in the app, Your whole dev server over GET; Only what you shared, These pages and the 22 files they loaded; a Start sharing button" />
220
- </p>
221
-
222
- <p align="center"><i>Choosing what to share, and how far a viewer goes.</i></p>
223
-
224
- A share hands out links rather than a link. Name one for each person, up
225
- to sixteen; each lasts a day, extends by another with one click and turns
226
- off on its own without touching the others. The panel shows which links
227
- are answering and how many sessions are on each. When your rail has moved
228
- since you shared, it offers to push what you see now; stop the share from
229
- the same place, and it stops with Leglas either way.
230
-
231
- The tunnel is borrowed, not shipped. Leglas looks for `cloudflared` or
232
- `ngrok` on your machine and runs whichever it finds; with neither, the link
233
- only works on this machine and the panel says so. Branch directions run on
234
- their own port and are not part of a share.
235
-
236
- ### Keys
237
-
238
- Arrows move between directions and `1` to `9` jump straight to one. `R`
239
- asks for a change, `A` annotates, `C` compares, `Cmd K` (`Ctrl K`
240
- elsewhere) searches, `T` opens the tools popover and `B` collapses the
241
- rail. Press `?` for the whole keymap.
242
-
243
- ## Setting up a project
244
-
245
- ### Configuration
246
-
247
- Create `leglas.config.ts` at the project root. `.js`, `.mjs` and `.json`
248
- work too. Resolution walks upward from the working directory, so in a
249
- monorepo the nearest file wins. Node reads the TypeScript config natively;
250
- there is no compiler or extra dependency involved.
88
+ preview of your app root. To compare more than one thing, create
89
+ `leglas.config.ts` at the project root:
251
90
 
252
91
  ```ts
253
92
  export default {
254
93
  devServer: "http://localhost:3000",
255
94
  previews: [
256
95
  { title: "Current", url: "/" },
257
- { title: "Wave", url: "/?v-hero=wave", note: "Full-bleed, anchored low.", tags: ["Hero"] },
258
- {
259
- title: "Dot grid",
260
- url: "/?v-hero=dotgrid",
261
- note: "Lattice that wakes near the pointer.",
262
- tags: ["Hero"],
263
- },
264
- ],
265
- };
266
- ```
267
-
268
- | Field | Required | Purpose |
269
- | ---------------- | ------------- | ----------------------------------------------------------------------- |
270
- | `title` | yes | Label in the rail, and the key for your saved layout. Must be unique. |
271
- | `url` | unless `file` | Root relative (`/pricing`) or absolute (`https://staging.example.com`) |
272
- | `note` | no | Second line under the title |
273
- | `tags` | no | The first tag renders as a pill |
274
- | `branch` | no | Preview a git branch instead of the running dev server |
275
- | `file` | no | An HTML file served by Leglas itself, instead of `url` |
276
- | `basedOn` | no | Title of the direction this is a variant of; the rail groups the family |
277
- | `askedFor` | no | The change that was asked for, in the words that were typed |
278
- | `devServer` | no | Defaults to `http://localhost:3000` |
279
- | `devCommand` | with `branch` | How to start the app. Must contain `{port}`. |
280
- | `installCommand` | no | Defaults to `npm install` |
281
- | `scanPreviews` | no | Set `false` to skip background duplicate scans for expensive apps |
282
-
283
- A broken config never stops the server. Leglas starts anyway and the
284
- interface reports what to fix, so you are not hunting through a stack
285
- trace.
286
-
287
- The config is the shared description of a project: commit it and a
288
- teammate gets the same directions on clone. `leglas add` registers a
289
- preview on your machine only, in `.leglas/previews.json`, because
290
- exploration is short-lived and its code lives in a gitignored directory;
291
- `leglas list` shows both and marks which are local. Renaming a direction
292
- in the rail is local in the same way, so the config title stays the one a
293
- teammate sees, and `leglas show` and `leglas keep` take either name.
294
-
295
- ### Without a dev server
296
-
297
- If the project exists but nothing is listening, set `devCommand` and
298
- Leglas starts your app itself, proxies it and stops it on exit. When
299
- `--user-port` names a server explicitly, Leglas never starts a different
300
- one behind that flag.
301
-
302
- If there is no app at all, a direction can be a plain HTML file:
303
-
304
- ```ts
305
- export default {
306
- previews: [
307
- { title: "Aurora", file: ".leglas/pages/aurora.html" },
308
- { title: "Ember", file: ".leglas/pages/ember.html" },
96
+ { title: "Wave", url: "/?v-hero=wave", note: "Full-bleed, anchored low." },
97
+ { title: "Dot grid", url: "/?v-hero=dotgrid", note: "Lattice that wakes near the pointer." },
309
98
  ],
310
99
  };
311
100
  ```
312
101
 
313
- Leglas serves each file from its own origin, so the full interface works
314
- with no dev server anywhere. The file's directory is mounted rather than
315
- the lone file, so stylesheets and images beside it resolve. When the real
316
- app arrives, directions graduate to app code and nothing about the
317
- interface changes.
318
-
319
- ### Comparing branches
320
-
321
- A preview with a `branch` field is served from its own checkout: Leglas
322
- creates a worktree, installs, starts the app with your `devCommand` on a
323
- free port and tears it all down when you quit. In the interface it looks
324
- like any other direction, so a branch against your working tree, or three
325
- branches against each other, compares the same way two query parameters
326
- do.
327
-
328
- ### How it works
329
-
330
- Leglas runs one local server that serves the interface at `/leglas` and
331
- forwards every other request to your dev server. Previews load through
332
- that proxy, so they are same origin with the interface: no CORS
333
- configuration, no cookie special cases.
334
-
335
- The proxy is designed to be invisible. Hot module replacement survives
336
- the hop, redirects that point at your dev server are rewritten to keep
337
- you inside the interface, and responses stream rather than buffer. If an
338
- app behaves differently through Leglas than on its own port, that is a
339
- bug.
102
+ Each preview is a URL your dev server already answers. Every field, plain
103
+ HTML files with no dev server, git branches side by side and how the proxy
104
+ works are in [Setting up a project](https://github.com/FredAmartey/leglas/blob/main/docs/configuration.md).
340
105
 
341
- Because a preview is a URL, the same interface compares two routes, two
342
- implementations behind a query parameter or a local server against a
343
- deployed one. Absolute URLs load directly rather than through the proxy,
344
- so a site that refuses to be framed will not preview; the interface says
345
- so instead of showing an empty pane.
346
-
347
- Leglas also compares what each preview actually draws and warns when two
348
- are identical. This catches a typo like `?v-hero=wavee` that your app
349
- silently ignores while the rail implies a comparison. The check reads the
350
- rendered page, runs only on previews you have opened and skips
351
- cross-origin previews, which the browser will not let it read.
352
-
353
- ### Limitations
354
-
355
- - Leglas runs no model of its own. Comparing existing routes costs
356
- nothing, but a new direction is still code your agent writes; Leglas
357
- hands it the request and shows the result.
358
- - The duplicate check compares rendered markup only, and only when the
359
- server renders some. Two previews that differ solely in a script are
360
- reported as identical, and in a fully client-rendered app the check
361
- says nothing.
362
- - The interface is built for desktop widths.
363
- - Leglas is a development tool. Nothing in it ships to production.
364
-
365
- ## Working with agents
106
+ It works with whatever you are building in. Leglas never imports or
107
+ executes your framework, so the target can be Next, Vite, Remix, SvelteKit,
108
+ Astro or a folder of static files. It needs Node 24 or newer, and nothing
109
+ else: `npx` fetches the CLI on first use and starts from the cache after
110
+ that. To pin a version for a project, `npm install -D leglas`; to type
111
+ `leglas` without the prefix, `npm install -g leglas`.
366
112
 
367
- The fastest way in is the agent skill:
113
+ ## With your agent
368
114
 
369
115
  ```sh
370
116
  npx skills add FredAmartey/leglas
@@ -372,116 +118,32 @@ npx skills add FredAmartey/leglas
372
118
 
373
119
  One install, and your agent recognises "give me a few directions for the
374
120
  pricing page" as a Leglas exploration in any project, including ones that
375
- have never seen Leglas. It sets the project up itself and gets to work.
376
-
377
- In a project, `npx leglas init` writes a section into `AGENTS.md`, creates
378
- a starter config and gitignores Leglas's working directory. That section
379
- is the agent's whole workflow, and it travels with the repo, so Claude
380
- Code, Cursor, Codex or whatever you switch to next opens the project
381
- already knowing how to add design directions to it. Every command accepts
382
- `--json` and prints a single machine-readable envelope, so agents drive
383
- the same CLI you do.
384
-
385
- ### Add beside, never rewrite
386
-
387
- The instructions center on one rule. Two directions that rewrite the same
388
- file cannot render from one server, and asking an agent to "make the hero
389
- calmer" tempts it to edit the hero. So a direction is added next to what
390
- exists: a switcher scaffolded beside your component, a query parameter
391
- that selects it, and your real component untouched as the baseline.
392
- Anything that cannot be additive, a dependency, a build change, an
393
- existing file's behaviour, builds on its own git branch instead.
394
-
395
- ### What an agent runs
396
-
397
- | Command | What it does |
398
- | --- | --- |
399
- | `leglas explore <surface> --count 6` | Briefs the exploration: what the set is for, and why it only works if the six genuinely disagree. `--based-on "Aurora"` flips it to six deliberate variants of one you like. The designs are the agent's; Leglas prescribes none. |
400
- | `leglas new <surface> --from src/Hero.tsx` | Scaffolds a switcher under `.leglas/variants/`, with the baseline re-exporting your real component. Prints the one line to add and does not edit your file. Scaffolded branch points return the fallback in production builds. |
401
- | `leglas classify --change … --rewrite …` | Says where a direction should live before it is written: in-app, where switching is instant, or on its own branch. |
402
- | `leglas add --title … --url …` | Registers a direction on this machine. |
403
- | `leglas show "Aurora" --json` | Everything about one direction: its entry, the file behind it, its variants, what it is compared against, what is pending. `--screenshot` renders it too, so an agent can look at what it built. |
404
- | `leglas requests --json` | The change requests queued from the interface; `--clear` acknowledges them. |
405
- | `leglas keep "Aurora" --to src/components/hero.tsx` | Moves the winner into real source and ends the exploration, writing what it decided into `design-log/` as markdown and PNGs. `leglas log` lists what is there. |
406
-
407
- ### Running requests
408
-
409
- Requests made from the interface wait in a queue. An agent picked in the
410
- interface drains it on its own. In a terminal, `npx leglas watch` is the
411
- same loop with the agent's own output in view, and needs no flag once an
412
- agent has been picked; for a CLI that is not in the picker, keep the
413
- command explicit:
414
-
415
- ```sh
416
- npx leglas watch --run "my-agent {prompt}"
417
- ```
418
-
419
- ### MCP server
420
-
421
- For agent hosts that cannot run shell commands, `leglas-mcp` exposes the
422
- same operations as MCP tools over stdio: `start`, `add`, `list`, `show`,
423
- `classify`, `explore`, `scaffold`, `keep`, `requests` and `init`. Each
424
- tool calls exactly what the CLI calls and returns the same envelope. The
425
- `start` tool boots the viewer and returns its URL, and anything it started
426
- stops when the session ends.
427
-
428
- ```sh
429
- claude mcp add leglas -- npx -y leglas-mcp
430
- ```
431
-
432
- Or in `.mcp.json`:
433
-
434
- ```json
435
- { "mcpServers": { "leglas": { "command": "npx", "args": ["-y", "leglas-mcp"] } } }
436
- ```
437
-
438
- The host's working directory names the project, the same contract as the
439
- CLI. A host that starts the server somewhere else is asked where the
440
- project is, over MCP roots. On a host that speaks channels, the server
441
- pushes each request into the session as it arrives.
442
-
443
- ### Agent Plugin
444
-
445
- The repository is also an [Agent Plugin](https://agent-plugins.org), the
446
- open standard for shipping a skill and MCP configuration together, so a
447
- client that implements it installs both in one step. It is a layout, not a
448
- build: `plugin.json` and `mcp.json` at the root, the skill in
449
- `skills/leglas/`. Such a client starts the server in the plugin's own
450
- directory, so the project is taken from the workspace the host declares
451
- over MCP roots, or from `LEGLAS_PROJECT_DIR` when it declares none. The
452
- plugin's version covers the skill and the configuration; the server it
453
- launches is whatever `npx` fetches, the same as every command above.
454
-
455
- ## Command line
456
-
457
- ```text
458
- leglas init Prepare a project and teach its agents
459
- leglas [options] Start the server and open the interface
460
- leglas new <surface> Scaffold a branch point for a surface
461
- leglas explore <surface> Brief an agent's exploration of a surface
462
- leglas classify Decide where a direction should live
463
- leglas add --title T --url U Register a preview on this machine
464
- leglas list Show every preview, shared and local
465
- leglas log [entry] What past explorations decided
466
- leglas show <title> Everything Leglas knows about one direction
467
- leglas requests Show change requests made from the interface
468
- leglas watch --run "<cmd>" Hand each request to your agent as it arrives
469
- leglas keep <title> --to <path> Keep a winner and end the exploration
470
- ```
471
-
472
- `--json` on any command prints a single machine-readable envelope.
473
- `--port` chooses Leglas's own port and `--user-port` your dev server's;
474
- `--config` names a config file instead of searching upward. Every
475
- command's options are under `leglas <command> --help`.
476
-
477
- ## Development
478
-
479
- This repository is a pnpm workspace: `pnpm install`, then `pnpm build`,
480
- `pnpm test` and `pnpm typecheck`. Two packages are published, `leglas` and
481
- `leglas-mcp`, and the repository is also the Agent Plugin. How to work on
482
- it, what a pull request needs and how a release is cut are in
483
- [CONTRIBUTING.md](CONTRIBUTING.md).
121
+ have never seen Leglas. In a project, `npx leglas init` writes the whole
122
+ workflow into `AGENTS.md`, so Claude Code, Cursor, Codex or whatever you
123
+ switch to next opens the project already knowing how to add design
124
+ directions to it. The one rule that workflow centers on, the commands an
125
+ agent runs, the MCP server and the Agent Plugin are in
126
+ [Working with agents](https://github.com/FredAmartey/leglas/blob/main/docs/agents.md).
127
+
128
+ ## Documentation
129
+
130
+ | Page | What it covers |
131
+ | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
132
+ | [Using Leglas](https://github.com/FredAmartey/leglas/blob/main/docs/guide.md) | The rail and the stage, comparing, asking for a change, pointing at the problem, the keys, updating |
133
+ | [Sharing](https://github.com/FredAmartey/leglas/blob/main/docs/sharing.md) | Sending the rail to someone with no repo, how far a viewer can go, links and the tunnel |
134
+ | [Setting up a project](https://github.com/FredAmartey/leglas/blob/main/docs/configuration.md) | The config file and every field, plain HTML without a dev server, comparing branches, how the proxy works, limitations |
135
+ | [Working with agents](https://github.com/FredAmartey/leglas/blob/main/docs/agents.md) | Add beside, never rewrite; the commands an agent runs; running requests; the MCP server; the Agent Plugin |
136
+ | [Command line](https://github.com/FredAmartey/leglas/blob/main/docs/cli.md) | Every command and the flags they share |
137
+ | [Changelog](https://leglas.vercel.app/changelog/) | What each release changed |
138
+
139
+ ## Contributing
140
+
141
+ Bugs and ideas go in [issues](https://github.com/FredAmartey/leglas/issues).
142
+ Two packages are published from this repository, `leglas` and `leglas-mcp`,
143
+ and the repository is also the Agent Plugin. How to build, what a pull
144
+ request needs and how a release is cut are in
145
+ [CONTRIBUTING.md](https://github.com/FredAmartey/leglas/blob/main/CONTRIBUTING.md).
484
146
 
485
147
  ## License
486
148
 
487
- [MIT](LICENSE)
149
+ [MIT](https://github.com/FredAmartey/leglas/blob/main/LICENSE)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leglas",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "Compare design directions inside your own running app.",
5
5
  "license": "MIT",
6
6
  "repository": {