jig-ui 0.14.0 → 0.15.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 CHANGED
@@ -1,5 +1,72 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.15.0
4
+
5
+ The gate holds an agent on warnings, waits while it asks the owner a question,
6
+ and reaches projects where the skill is installed globally.
7
+
8
+ ### Changed
9
+
10
+ - **`gate` blocks on warnings in the files the agent changed**, not only on
11
+ mechanical errors. One em dash survived two runs of fresh agents on a real
12
+ site: the first saw the warning, called it pre-existing, and finished. The
13
+ gate still reads only changed files, so old warnings elsewhere never trap an
14
+ agent, and it now also runs when a changed file carries interface text.
15
+ - **The skill asks the user to run each command.** `decide`, `spec`, `mockup`,
16
+ `make` and `critique` hold their procedures in the command, not in the
17
+ skill. An agent told in prose to "run decide" made up five questions of its
18
+ own and wrote a `DECISIONS.md` with no direction and no `## Unresolved`
19
+ section.
20
+
21
+ ### Added
22
+
23
+ - **`jig-allow <ID>: <why>`** waives one warning, on its own line or the line
24
+ above, in any comment syntax. Some warnings are a detector's guess: `A-01`
25
+ cannot tell a chosen violet from a default one. Warnings only, a reason is
26
+ required, and `check` lists every waiver it honoured, with its reason, on
27
+ every run. Waived findings are left out of `warnings=`.
28
+ - **`install --agent claude --hook` on a global install** writes only this
29
+ project's Stop hook. The hook was written only by a project install, which is
30
+ refused while the skill is global, so most projects never had a gate.
31
+
32
+ ### Fixed
33
+
34
+ - **A question to the owner is not a finish.** After `decide`, `spec` or
35
+ `mockup`, a stop whose last message asks a question is allowed, and the
36
+ command's output is checked on the stop after the answer. Before, the gate
37
+ refused `decide`'s first question because `DECISIONS.md` did not exist yet,
38
+ and on the second refusal the agent wrote the file itself with no answers.
39
+ - **The gate finds `DECISIONS.md` beside the token layer** that `brand` in
40
+ `jig.config.json` names. It looked in three fixed places, rejected a
41
+ correctly placed file, and the agent moved the file to satisfy it.
42
+ - **`jig seo` says an endpoint is not a page**, so `pages=` can be checked
43
+ against a site's route files.
44
+
45
+ ## 0.14.1
46
+
47
+ `jig seo` cites only what a rule says.
48
+
49
+ ### Fixed
50
+
51
+ - **No finding for a missing sitemap or robots file.** Both were filed under
52
+ rules that do not ask for them: `J-123` is about a page that must not be
53
+ indexed and says `robots.txt` is not it, and `J-124` is about a sitemap that
54
+ contradicts the pages. A project with no domain yet cannot write an honest
55
+ sitemap, so the only way to clear the old finding was to invent one. Both are
56
+ now counts on the `JIG_SEO` line.
57
+ - **A sitemap of paths is a `J-124` error.** A `<loc>` that is `/about` rather
58
+ than a full URL was read as a route, although a crawler drops it. `J-124` now
59
+ names that case and says no sitemap is the honest one until there is an
60
+ origin.
61
+ - **`pages=` counts pages.** It counted any file that mentioned `<title>` or
62
+ `<meta>`, so a build script, a test, a data module and a layout were pages and
63
+ a home page inheriting its layout was not. A page is now a route a framework
64
+ serves, or a whole-document template outside the layout and partial folders.
65
+ A dynamic route counts once.
66
+ - **Framework routes match their sitemap entries.** `src/pages/admin` was read
67
+ as `/pages/admin`, so a `noindex` Astro or Next page listed in the sitemap
68
+ went unreported.
69
+
3
70
  ## 0.14.0
4
71
 
5
72
  What a stranger meets before the page, what the page must not hand them, and a
package/README.md CHANGED
@@ -53,10 +53,19 @@ Every agent supports both scopes.
53
53
  answer yes when an interactive install offers it. It adds one entry to
54
54
  `.claude/settings.json`, keeping everything already in that file, and runs `jig gate`
55
55
  when the agent tries to finish: it holds the agent there while the files it changed
56
- fail `check`, or while the `/jig` command it just ran left its work incomplete — a
57
- spec that is prose, a critique with no verdict files, a review that never rendered
58
- the page. After three attempts it lets the agent stop and says the work is
59
- unfinished.
56
+ have a `check` error or warning, or while the `/jig` command it just ran left its
57
+ work incomplete — a spec that is prose, a critique with no verdict files, a review
58
+ that never rendered the page. After three attempts it lets the agent stop and says
59
+ the work is unfinished.
60
+
61
+ A warning that is right as it stands is waived on its own line, in a comment
62
+ reading `jig-allow <ID>: <why>` (`/* jig-allow A-01: the brand is violet */`). The
63
+ reason is required, an error cannot be waived, and `check` lists every waiver it
64
+ honoured, with its reason, on every run.
65
+
66
+ The skill and the hook are installed separately. With Jig installed globally, run
67
+ `install --agent claude --hook` in a project to add only that project's hook: a
68
+ global hook would run on every stop in every project on the machine.
60
69
 
61
70
  It is off by default, and `--yes` never adds it, because that is the path an agent
62
71
  takes and nobody is there to consent. It exists because weak models skip any step
@@ -357,7 +366,7 @@ overwrites a config or brand file you have edited.
357
366
  | `init [--yes]` | Sets the project up: CSS system, brand colour, token files, `jig.config.json`, wired imports, baseline check. The only command that writes into your repo. |
358
367
  | `check [--all] [--ci] [--json]` | Runs the rules a machine can decide. Reports findings by rule id. |
359
368
  | `update` | Refreshes an install to a newer version, leaving alone any file you have edited. |
360
- | `seo [--json]` | Audits what a search engine and a link preview read, across the whole project: a route whose metadata says `noindex` sitting in the sitemap, two pages claiming one title, indexable pages with no sitemap, a sitemap that lists nothing. Needs no config, no decisions and no spec. |
369
+ | `seo [--json]` | Audits what a search engine and a link preview read, across the whole project: a route whose metadata says `noindex` sitting in the sitemap, two pages claiming one title, a sitemap that lists nothing or lists paths a crawler drops. Whether a sitemap and a robots file exist is counted, not reported: no rule asks for either, and a site with no domain yet cannot write an honest sitemap. Needs no config, no decisions and no spec. |
361
370
  | `verdicts <surface>` | Verifies a critique's verdict files and computes its counts: every rule in each pass judged once, no id that does not exist, no rule in the wrong arm, and no verdict the render probe contradicts. |
362
371
  | `probe` | Prints the render probe — one expression the critique runs in a browser at each width. It operates the menu, measures sideways scroll, and reads whether the styles and tokens applied. |
363
372
  | `gate` | Run by the Stop hook `install` adds for Claude Code, not by hand. Blocks an agent from finishing while `check` fails on the files it changed, or the step it just ran left its work unfinished. |
@@ -448,8 +457,8 @@ in it tells strangers where to look; a path is safe to name only when something
448
457
  else protects it.
449
458
 
450
459
  `jig seo` covers what one file cannot: a route that says `noindex` and sits in
451
- the sitemap anyway, two pages claiming one title, a site whose pages nothing
452
- points at. It writes nothing and needs nothing, so it is safe to run on the first
460
+ the sitemap anyway, two pages claiming one title, a sitemap of paths a crawler
461
+ drops. It writes nothing and needs nothing, so it is safe to run on the first
453
462
  day, or on somebody else's codebase.
454
463
 
455
464
  ## Using it with a coding agent