jourilo 0.1.0 → 1.0.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.
package/README.md CHANGED
@@ -1,4 +1,9 @@
1
- # Jourilo
1
+ <h1>
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/brand/jourilo-wordmark-reversed.svg">
4
+ <img src="docs/assets/brand/jourilo-wordmark.svg" alt="Jourilo" width="240">
5
+ </picture>
6
+ </h1>
2
7
 
3
8
  **AI-powered product experience & conversion engineering studio.** Jourilo drives a real browser through your
4
9
  product, finds UX, accessibility, performance and conversion problems with evidence, traces them to the code that
@@ -8,8 +13,8 @@ Local-first · evidence-driven · no paid services required · works as a CLI an
8
13
 
9
14
  ![Jourilo report overview: defects by severity, conversion hypotheses kept separate, fixes grouped by root cause](docs/assets/report-overview.png)
10
15
 
11
- > Status: **0.1.0, pre-release.** Tested on macOS (Apple Silicon) with Chromium. See [Limitations](docs/LIMITATIONS.md)
12
- > for what is not covered yet.
16
+ > Status: **1.0.1.** Tested in CI on Linux, macOS and Windows (Node 20 and 22) with Chromium, Firefox and WebKit. An
17
+ > automated run never proves WCAG conformance: see [Limitations](docs/LIMITATIONS.md) for what is not covered.
13
18
 
14
19
  ## What it does
15
20
 
@@ -19,7 +24,7 @@ Local-first · evidence-driven · no paid services required · works as a CLI an
19
24
  | **Audit in a real browser** | Playwright + axe-core 4.14 (WCAG 2.0–2.2 A/AA), a keyboard-only walk (focus visible, focus obscured, traps), target size, reflow at 320 px, horizontal overflow, input purpose, paste blocking, form error feedback, lab Web Vitals (LCP, CLS, FCP, TTFB, TBT; INP during journeys), JavaScript errors and failed requests — on desktop and mobile. |
20
25
  | **Journeys** | Reusable JSON scenarios with explicit success criteria, suggested from what the site actually contains, run with a screenshot per step. A safety policy never pays, deletes or cancels on non-local hosts. |
21
26
  | **Conversion** | CTA prominence and clarity, value proposition, trust signals, signup/checkout friction, pricing clarity — always reported as **hypotheses**, never as predicted lifts, with experiment plans and the statistics to read real results. |
22
- | **Fix and verify** | Findings point to likely source lines. `optimize` previews minimal fixes as diffs and applies them only with `--apply` after a git checkpoint. `verify` repeats the exact scope and reports fixed, new and persisting problems. |
27
+ | **Fix and verify** | Findings point to likely source lines. `optimize` previews minimal fixes as diffs and applies them only with `--apply`, as one reversible change (atomic writes; rollback never overwrites later edits). `verify` repeats the exact scope and reports fixed, new and persisting problems. |
23
28
  | **Report** | A self-contained HTML _Experience Observatory_ (screenshots with highlighted elements, reproduction steps, standards, sources, journeys, before/after), plus Markdown for PRs and SARIF for code scanning. |
24
29
 
25
30
  What Jourilo does **not** do: invent observations, give a single "UX score", claim WCAG compliance from an automated
@@ -28,29 +33,30 @@ _user input_.
28
33
 
29
34
  ## Quick start
30
35
 
31
- Requires Node.js ≥ 20.10. Jourilo is not on npm yet; install from the repository.
36
+ Requires Node.js ≥ 20.10.
32
37
 
33
38
  ```bash
34
- git clone https://github.com/cihantopac/jourilo && cd jourilo && npm install
39
+ npm install -g jourilo
35
40
  ```
36
41
 
37
42
  ```bash
38
- node plugin/dist/jourilo.mjs setup
43
+ jourilo setup
39
44
  ```
40
45
 
41
46
  `setup` downloads Playwright's Chromium (one time, ~150 MB). Alternatively use an installed Chrome with
42
- `--browser chrome`.
47
+ `--browser chrome`. To run without a global install, use `npx jourilo <command>`; from a clone of this repository,
48
+ `node plugin/dist/jourilo.mjs <command>`.
43
49
 
44
50
  Audit a local static build (served on 127.0.0.1) and map findings to its source:
45
51
 
46
52
  ```bash
47
- node plugin/dist/jourilo.mjs audit ./dist --repo .
53
+ jourilo audit ./dist --repo .
48
54
  ```
49
55
 
50
56
  Audit a running app or a website (read-only, respects robots.txt):
51
57
 
52
58
  ```bash
53
- node plugin/dist/jourilo.mjs audit http://localhost:3000 --viewports desktop,mobile,reflow
59
+ jourilo audit http://localhost:3000 --viewports desktop,mobile,reflow
54
60
  ```
55
61
 
56
62
  The report is written to `.jourilo/runs/<run-id>/report.html` (git-ignored). Add `--json` to any command for
@@ -65,8 +71,9 @@ machine-readable output.
65
71
 
66
72
  Then use `/jourilo:jourilo <url or path>` for the full workflow, or `/jourilo:discover`, `/jourilo:audit`,
67
73
  `/jourilo:journeys`, `/jourilo:accessibility`, `/jourilo:conversion`, `/jourilo:optimize`, `/jourilo:compare`,
68
- `/jourilo:report`, `/jourilo:experiment`. Claude Code namespaces plugin commands, so a bare `/jourilo` is available
69
- by installing the personal skill: `jourilo agent install claude-skill --write`. See [docs/PLUGIN.md](docs/PLUGIN.md).
74
+ `/jourilo:report`, `/jourilo:experiment`. Plugin commands are namespaced; `/jourilo:jourilo` always works. Claude
75
+ Code may also accept a bare `/jourilo` when no other command uses that name; to make it permanent, install the
76
+ personal skill with `jourilo agent install claude-skill --write`. See [docs/PLUGIN.md](docs/PLUGIN.md).
70
77
 
71
78
  Other agents: `jourilo agent install codex --write` (adds a section to `AGENTS.md`) or `cursor`
72
79
  (`.cursor/rules/jourilo.mdc`).
@@ -78,7 +85,7 @@ jourilo audit http://localhost:3000 --repo . # evidence + likely source l
78
85
  jourilo journeys suggest latest # edit .jourilo/journeys/*.json
79
86
  jourilo journeys run --base http://localhost:3000 # step screenshots, success criteria
80
87
  jourilo optimize latest --repo . # preview minimal diffs (dry run)
81
- jourilo optimize latest --repo . --apply # git checkpoint, then write
88
+ jourilo optimize latest --repo . --apply # write as one reversible change
82
89
  jourilo verify <baseline-run> # same scope again: fixed / new / persisting
83
90
  jourilo rollback latest --yes # undo if needed
84
91
  ```
@@ -93,33 +100,37 @@ Fixes are idempotent and fully reversible (see [docs/EVALUATION.md](docs/EVALUAT
93
100
 
94
101
  ## Detection quality
95
102
 
96
- **Fixture benchmark** (`jourilo bench`): sites with seeded problems and clean control pages. It fails on any miss,
97
- false positive or wrong root-cause file. 0.1.0, Chromium, macOS:
98
-
99
- | Fixture | Seeded problems found | False positives |
100
- | ------------------------------------------------------------------------------------------- | --------------------- | ----------------------------------------- |
101
- | `acme-saas` (SaaS marketing, signup, login, slow and shifting pages) | 23 / 23 | 0 (root cause in the expected file 9 / 9) |
102
- | `tr-dukkan` (Turkish shop) | 8 / 8 | 0 |
103
- | `structure-lab` (form grouping, tables, image alternatives; broken and accessible versions) | 4 / 4 | 0 |
104
- | `widgets-lab` (dialog and disclosure; broken and accessible versions) | 3 / 3 | 0 |
105
- | `brand-site` (locked Markilo brand) | 3 / 3 | 0 |
106
- | `clean-shop` (control) | — | 0 |
107
-
108
- These fixtures were written alongside the rules, so they show the rules work as designed. For an independent view,
109
- [`benchmarks/compare`](benchmarks/compare) runs Jourilo, Pa11y and Lighthouse on the 142 published test cases of the
110
- [GOV.UK accessibility tool audit](https://alphagov.github.io/accessibility-tool-audit/): error-level detections were
111
- Jourilo 54 (49 counted conservatively), Pa11y 38 and Lighthouse 34, with the same Chromium build. The metric is coarse
112
- and the comparison influenced Jourilo's rules; read the method and caveats in
113
- [docs/EVALUATION.md](docs/EVALUATION.md#comparison) before quoting it.
103
+ **Fixture benchmark** (`jourilo bench`, a CI gate): sites with seeded problems and clean control pages; it fails on
104
+ any miss, false positive or wrong root-cause file. 1.0.0: **45 / 45** seeded problems found, **0** false positives,
105
+ root cause in the expected file 9 / 9 (Chromium; the `acme-saas` set also in Firefox and WebKit). These fixtures were written alongside the
106
+ rules, so they show the rules work as designed.
107
+
108
+ **Independent benchmark** on the 955 [W3C ACT Rules](https://www.w3.org/WAI/standards-guidelines/act/rules/) test
109
+ cases that map to WCAG criteria, written by the ACT Rules Community Group, not for Jourilo:
110
+
111
+ | 2026-11-01 | Precision | Recall | False positives |
112
+ | --------------------- | --------- | ------ | --------------- |
113
+ | Jourilo 1.0.0 | 93.9 % | 55.4 % | 11 |
114
+ | axe-core 4.14.0 alone | 93.6 % | 53.5 % | 11 |
115
+
116
+ Jourilo runs axe-core internally; its own checks add keyboard-trap and focus-indicator detections without adding
117
+ false positives. Many misses are criteria that need a person (media alternatives, meaning, descriptive headings), which
118
+ every report lists under "Still needs a person". A separate comparison with Pa11y and Lighthouse on the 142 cases of the
119
+ [GOV.UK accessibility tool audit](https://alphagov.github.io/accessibility-tool-audit/) is in
120
+ [docs/EVALUATION.md](docs/EVALUATION.md#comparison), with its method and caveats.
114
121
 
115
122
  ## Safety and privacy
116
123
 
117
- Normal audits are read-only. Crawling stays on the target origin, respects robots.txt and refuses private-network
118
- targets unless you pass `--allow-private`. Journeys block payments, purchases, deletions and cancellations on any
119
- non-local host; form submission on non-local hosts needs `--allow-submit`. Password, card and marked fields are masked
124
+ Audits are read-only, on every host: form validation is probed by simulating the submission, and nothing that would
125
+ change data leaves the browser unless you pass `--allow-submit`. Crawling stays on the target origin and respects
126
+ robots.txt. Every browser request goes through a local network guard, so an audited page cannot reach this machine,
127
+ the local network or cloud-metadata services (private targets need `--allow-private`). Journeys block payments,
128
+ purchases, deletions and cancellations however they are triggered (click, key, script, link) on any non-local host,
129
+ and on local hosts unless you pass `--allow-destructive`. Fixes are written as one reversible change, and rollback
130
+ never overwrites edits made afterwards. Password, card and marked fields are masked
120
131
  in screenshots; tokens, keys, e-mail addresses and card numbers are redacted from logs and reports. Page content is
121
132
  treated as untrusted data and is always HTML-escaped in reports. Details: [docs/PRIVACY.md](docs/PRIVACY.md),
122
- [SECURITY.md](SECURITY.md).
133
+ [docs/SECURITY-REVIEW.md](docs/SECURITY-REVIEW.md) (including residual risks), [SECURITY.md](SECURITY.md).
123
134
 
124
135
  ## Works with Markilo and Searvex (optional)
125
136
 
@@ -143,6 +154,11 @@ Bug reports, fixture sites with real-world UX problems and new rules are welcome
143
154
  [CONTRIBUTING.md](CONTRIBUTING.md). Every rule needs a fixture that proves it fires and a control that proves it does
144
155
  not.
145
156
 
157
+ ## Brand
158
+
159
+ The Jourilo logo, symbol and plugin icon (the SVGs in [docs/assets/brand](docs/assets/brand)) were designed with
160
+ [Markilo](https://github.com/cihantopac/markilo), a brand identity studio for Claude Code.
161
+
146
162
  ## License
147
163
 
148
164
  [Apache-2.0](LICENSE). Bundled third-party code: see [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jourilo",
3
- "version": "0.1.0",
3
+ "version": "1.0.1",
4
4
  "description": "AI-powered product experience & conversion engineering studio: real-browser journeys, UX, accessibility, performance and conversion audits with evidence, root causes and verified fixes.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
Binary file
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "jourilo",
3
3
  "displayName": "Jourilo",
4
- "version": "0.1.0",
4
+ "version": "1.0.1",
5
5
  "description": "AI-powered product experience & conversion engineering studio: discovers products and user journeys, operates real interfaces in Playwright, detects UX, accessibility (WCAG 2.2), performance and conversion problems with evidence, locates root causes, applies safe fixes and verifies them.",
6
6
  "author": {
7
7
  "name": "Cihan Topaç",