memento-mori-jester 0.1.80 → 0.1.81

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
@@ -4,6 +4,12 @@ All notable changes to Memento Mori Jester are tracked here.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.1.81
8
+
9
+ - Added a lightweight repo-local landing page under `site/index.html` that reuses the social card, demo video, start command, and public project links.
10
+ - Added `npm run site:check` and wired it into `npm test` and production-readiness checks.
11
+ - Updated README, promo docs, release docs, roadmap, and release notes for the new share page.
12
+
7
13
  ## 0.1.80
8
14
 
9
15
  - Added a deterministic `promo/share-kit/social-card.svg` for GitHub, X, and project-update link previews.
package/README.md CHANGED
@@ -13,6 +13,7 @@ It roasts the reasoning, not the human.
13
13
  [![Memento Mori Jester terminal demo](docs/demo-terminal.svg)](docs/DEMO.md)
14
14
 
15
15
  See the full [demo transcript](docs/DEMO.md), or use the [promo/share kit](promo) for X post copy, stills, and a 30-second demo script.
16
+ There is also a lightweight repo-local [landing page](site/index.html) for sharing the project in one screen.
16
17
 
17
18
  ## Start Here
18
19
 
@@ -505,6 +506,7 @@ Run `npm run fixtures:check` before merging fixture changes; it catches duplicat
505
506
  Run `npm run fixtures:report` to see fixture coverage by rule, rule family, preset slice, kind, verdict, quiet-pass boundaries, feasible pass-case gaps, and curation-next guidance before choosing the next fixture. Use `npm run fixtures:report -- --markdown` when you want a paste-ready summary for release notes or GitHub issues.
506
507
  Run `npm run promo:card` to regenerate the repo-local social preview card after changing its copy or design.
507
508
  Run `npm run promo:check` after editing promo assets; it checks the current demo video, stills, docs, and fixture evidence numbers stay in sync.
509
+ Run `npm run site:check` after editing the repo-local landing page; it verifies the start command, demo links, social card, repo, release, and npm links.
508
510
 
509
511
  For vulnerabilities, private code exposure, or credential-handling concerns, follow [SECURITY.md](SECURITY.md) instead of opening a public issue with sensitive details.
510
512
 
package/ROADMAP.md CHANGED
@@ -6,6 +6,7 @@ Memento Mori Jester is usable today as a CLI, MCP server, GitHub Action, and git
6
6
 
7
7
  ## Recently Shipped
8
8
 
9
+ - Repo-local landing page in v0.1.81, adding a static one-page share surface plus deterministic link checks.
9
10
  - Social preview card in v0.1.80, adding a deterministic 1200x630 promo card plus generation and freshness checks.
10
11
  - Promo freshness check in v0.1.79, verifying the current demo video, share-kit stills, docs, and fixture evidence numbers before public posting.
11
12
  - Fresh demo render in v0.1.78, updating the repo-local X video and share-kit stills to current version and fixture totals.
@@ -71,7 +72,7 @@ Memento Mori Jester is usable today as a CLI, MCP server, GitHub Action, and git
71
72
 
72
73
  - Collect real-world reports for the next lowest-count preset slices now highlighted by `fixtures:report`.
73
74
  - Add more framework-specific false-positive examples from real reports so tuning guidance keeps getting sharper.
74
- - Add a small web landing page that reuses the existing demo, social card, and start command.
75
+ - Add a hosted-page option or GitHub Pages instructions once the static page has settled.
75
76
 
76
77
  ## Quality And Safety
77
78
 
@@ -10,6 +10,7 @@ This checklist defines what "production grade" means for Memento Mori Jester rig
10
10
  - CI runs tests and a package dry run on every push to `main` and pull request.
11
11
  - The local playground, GitHub Action, MCP setup snippets, preset examples, fixtures, and release notes ship in the npm package.
12
12
  - Repo-local promo assets stay outside the npm package, but `npm run promo:check` keeps the current demo video, stills, social card, docs, and fixture evidence numbers aligned.
13
+ - The repo-local landing page stays outside the npm package, but `npm run site:check` keeps its start command and public links aligned.
13
14
 
14
15
  ## npm Package
15
16
 
@@ -43,6 +44,7 @@ This checklist defines what "production grade" means for Memento Mori Jester rig
43
44
 
44
45
  - `README.md` leads with a no-write first run, project bootstrap, agent setup, and optional hooks/CI.
45
46
  - `docs/GETTING_STARTED.md`, `docs/CLI.md`, `docs/RELEASE.md`, and `docs/TRUSTED_PUBLISHING.md` cover the core adoption and release paths.
47
+ - `site/index.html` gives maintainers a static one-page share surface that reuses the demo, social card, start command, and public links.
46
48
  - Every public release has matching `CHANGELOG.md` notes and `docs/RELEASE_NOTES_vX.Y.Z.md`.
47
49
 
48
50
  ## Support And Recovery
@@ -56,6 +58,7 @@ This checklist defines what "production grade" means for Memento Mori Jester rig
56
58
  - `npm run fixtures:check` validates fixture IDs, metadata, unsafe-looking content, duplicate content, and explicit expected/absent rule intent.
57
59
  - `npm run fixtures:report` shows fixture coverage by rule, rule family, preset slice, kind, verdict, quiet-pass rule boundaries, and feasible pass-case gaps so maintainers can pick the next fixture target; `npm run fixtures:report -- --markdown` produces a paste-ready maintainer snapshot.
58
60
  - `npm run promo:card` regenerates the deterministic social preview card, and `npm run promo:check` verifies current repo-local promo assets against the current fixture evidence before maintainers post or refresh the demo.
61
+ - `npm run site:check` verifies the static landing page before maintainers post or host it.
59
62
  - npm publish has a manual workflow fallback, but the normal release path is tag-driven trusted publishing.
60
63
 
61
64
  ## Static Guard
@@ -72,6 +75,7 @@ This checklist defines what "production grade" means for Memento Mori Jester rig
72
75
  - fixture authoring checks are wired into `npm test`.
73
76
  - fixture coverage reports are wired into `npm test`.
74
77
  - promo freshness checks are wired into `npm test`.
78
+ - site checks are wired into `npm test`.
75
79
 
76
80
  `npm test` runs this check after the TypeScript build and unit tests.
77
81
 
package/docs/RELEASE.md CHANGED
@@ -14,6 +14,7 @@ npm.cmd run fixtures:report -- --json
14
14
  npm.cmd run fixtures:report -- --markdown
15
15
  npm.cmd run promo:card:check
16
16
  npm.cmd run promo:check
17
+ npm.cmd run site:check
17
18
  npm.cmd run pack:dry
18
19
  git diff --check
19
20
  ```
@@ -0,0 +1,41 @@
1
+ # Memento Mori Jester v0.1.81
2
+
3
+ ## Summary
4
+
5
+ This release adds a lightweight repo-local landing page that reuses the existing demo video, social card, install command, and public project links. It gives maintainers a one-page share surface without adding a framework or hosting dependency.
6
+
7
+ ## What Changed
8
+
9
+ - Added `site/index.html`.
10
+ - Added `scripts/check-site.mjs`.
11
+ - Added `npm run site:check`.
12
+ - Wired `site:check` into `npm test` and production-readiness checks.
13
+ - Updated README, promo docs, release docs, production-readiness docs, roadmap, changelog, and release notes.
14
+
15
+ ## Public Interface
16
+
17
+ - No CLI command changes.
18
+ - No MCP tool changes.
19
+ - No config schema changes.
20
+ - No review rule, scoring, or verdict behavior changes.
21
+ - No GitHub Action behavior changes.
22
+ - `site/` and `promo/` remain outside the npm package `files` list.
23
+
24
+ ## Release Validation
25
+
26
+ ```powershell
27
+ npm.cmd test
28
+ npm.cmd run demo:svg:check
29
+ npm.cmd run promo:card:check
30
+ npm.cmd run promo:check
31
+ npm.cmd run site:check
32
+ npm.cmd run pack:dry
33
+ git diff --check
34
+ git diff | node .\dist\cli.js diff --fail-on block --subject "v0.1.81 landing page"
35
+ ```
36
+
37
+ Expected:
38
+
39
+ - `site/index.html` opens as a static page with the current start command, demo video, social card, repo, release, and npm links,
40
+ - `site/` remains repo-local and is not included in the npm tarball,
41
+ - GitHub Release and npm Publish complete from the `v0.1.81` tag.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memento-mori-jester",
3
- "version": "0.1.80",
3
+ "version": "0.1.81",
4
4
  "description": "A local court-jester sidecar for AI coding agents: review plans, commands, diffs, and final claims before they get too pleased with themselves.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -40,7 +40,7 @@
40
40
  "build": "tsc -p tsconfig.json",
41
41
  "start": "node dist/server.js",
42
42
  "start:mcp": "node dist/server.js",
43
- "test": "npm run build && node scripts/run-tests.mjs && npm run fixtures:check && npm run fixtures:report && npm run promo:check && npm run production:check",
43
+ "test": "npm run build && node scripts/run-tests.mjs && npm run fixtures:check && npm run fixtures:report && npm run promo:check && npm run site:check && npm run production:check",
44
44
  "doctor": "node dist/cli.js doctor",
45
45
  "demo:svg": "node scripts/render-demo-svg.mjs",
46
46
  "demo:svg:check": "node scripts/render-demo-svg.mjs --check",
@@ -49,6 +49,7 @@
49
49
  "promo:card": "node scripts/render-social-card.mjs",
50
50
  "promo:card:check": "node scripts/render-social-card.mjs --check",
51
51
  "promo:check": "node scripts/check-promo-freshness.mjs",
52
+ "site:check": "node scripts/check-site.mjs",
52
53
  "production:check": "node scripts/check-production-readiness.mjs",
53
54
  "pack:dry": "npm pack --dry-run",
54
55
  "prepare": "npm run build",
@@ -66,6 +66,7 @@ for (const path of [
66
66
  "action.yml",
67
67
  "scripts/check-promo-freshness.mjs",
68
68
  "scripts/render-social-card.mjs",
69
+ "scripts/check-site.mjs",
69
70
  "scripts/check-fixtures.mjs",
70
71
  "scripts/report-fixtures.mjs",
71
72
  ".github/ISSUE_TEMPLATE/bug_report.yml",
@@ -79,7 +80,8 @@ for (const path of [
79
80
  "examples/github-code-scanning.yml",
80
81
  "examples/ci/README.md",
81
82
  "examples/presets/README.md",
82
- "examples/fixtures/preset-review-cases.json"
83
+ "examples/fixtures/preset-review-cases.json",
84
+ "site/index.html"
83
85
  ]) {
84
86
  requireFile(path);
85
87
  }
@@ -137,11 +139,16 @@ requireText("package.json", /"fixtures:report": "node scripts\/report-fixtures\.
137
139
  requireText("package.json", /"promo:card": "node scripts\/render-social-card\.mjs"/, "social card render script");
138
140
  requireText("package.json", /"promo:card:check": "node scripts\/render-social-card\.mjs --check"/, "social card stale check script");
139
141
  requireText("package.json", /"promo:check": "node scripts\/check-promo-freshness\.mjs"/, "promo freshness check script");
142
+ requireText("package.json", /"site:check": "node scripts\/check-site\.mjs"/, "site check script");
140
143
  requireText("package.json", /npm run fixtures:check/, "fixture authoring check in npm test");
141
144
  requireText("package.json", /npm run fixtures:report/, "fixture coverage report in npm test");
142
145
  requireText("package.json", /npm run promo:check/, "promo freshness check in npm test");
146
+ requireText("package.json", /npm run site:check/, "site check in npm test");
143
147
  requireText("scripts/check-promo-freshness.mjs", /--require-package-version/, "optional strict package-version promo check");
144
148
  requireText("scripts/check-promo-freshness.mjs", /social-card\.svg/, "social-card freshness check");
149
+ requireText("scripts/check-site.mjs", /site\/index\.html/, "site index check");
150
+ requireText("site/index.html", /npx -y memento-mori-jester@latest start/, "site start command");
151
+ requireText("site/index.html", /promo\/share-kit\/social-card\.svg/, "site social card");
145
152
  requireText("SECURITY.md", /doctor --json/, "doctor JSON redaction guidance");
146
153
  requireText("SECURITY.md", /security\/advisories\/new/, "private vulnerability report link");
147
154
  requireText(".github/ISSUE_TEMPLATE/bug_report.yml", /doctor --json/, "doctor JSON support prompt");
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env node
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+
5
+ const root = process.cwd();
6
+ const failures = [];
7
+
8
+ function read(path) {
9
+ return readFileSync(join(root, path), "utf8");
10
+ }
11
+
12
+ function requireFile(path) {
13
+ if (!existsSync(join(root, path))) {
14
+ failures.push(`${path} is missing.`);
15
+ }
16
+ }
17
+
18
+ function requireText(path, pattern, description) {
19
+ const content = read(path);
20
+ if (!pattern.test(content)) {
21
+ failures.push(`${path} should include ${description}.`);
22
+ }
23
+ }
24
+
25
+ requireFile("site/index.html");
26
+
27
+ const promoReadme = read("promo/README.md");
28
+ const currentVideo = promoReadme.match(/Final vertical demo video:\s*\[([^\]]+)\]\(([^)]+)\)/);
29
+ const videoPath = currentVideo?.[2] ?? "";
30
+
31
+ if (!videoPath) {
32
+ failures.push("promo/README.md should expose the current final vertical demo video.");
33
+ }
34
+
35
+ requireText("site/index.html", /<h1 id="hero-title">Memento Mori Jester<\/h1>/, "the product name as the hero heading");
36
+ requireText("site/index.html", /npx -y memento-mori-jester@latest start/, "the current start command");
37
+ requireText("site/index.html", /\.\.\/promo\/share-kit\/social-card\.svg/, "the social preview card");
38
+ requireText("site/index.html", /\.\.\/docs\/DEMO\.md/, "the demo transcript link");
39
+ requireText("site/index.html", /https:\/\/github\.com\/Martin123132\/Memento-Mori/, "the GitHub repository link");
40
+ requireText("site/index.html", /https:\/\/github\.com\/Martin123132\/Memento-Mori\/releases\/latest/, "the latest release link");
41
+ requireText("site/index.html", /https:\/\/www\.npmjs\.com\/package\/memento-mori-jester/, "the npm package link");
42
+ requireText("site/index.html", /Codex, Claude Code, generic MCP clients, hooks, and CI/, "agent compatibility copy");
43
+
44
+ if (videoPath) {
45
+ requireText("site/index.html", new RegExp(`\\.\\./promo/${videoPath.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}`), "the current promo video");
46
+ }
47
+
48
+ if (failures.length > 0) {
49
+ process.stderr.write("Site check failed:\n");
50
+ for (const failure of failures) {
51
+ process.stderr.write(`- ${failure}\n`);
52
+ }
53
+ process.exit(1);
54
+ }
55
+
56
+ process.stdout.write("Site check passed for site/index.html.\n");