+1
-1
| { | ||
| "name": "gatecraft", | ||
| "version": "1.1.0", | ||
| "version": "1.1.1", | ||
| "description": "The AI Engineering Operating System — install a complete engineering loop, quality gates, and 26 specialist roles into any repository. Hidden, gitignored, zero dependencies.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
+13
-0
@@ -29,2 +29,15 @@ # CHANGELOG.md — History of the Gatecraft | ||
| ## [1.1.1] — 2026-08-07 | ||
| No change to any framework document. This release exists for two CLI fixes, one of | ||
| which could destroy an ejected `.ai/` tree; see the | ||
| [CLI changelog](https://github.com/Eric20Junior/gatecraft/blob/main/CHANGELOG.md) for | ||
| those. | ||
| **What you must do.** Nothing to the documents. If you have ever run | ||
| `gatecraft eject`, upgrade the CLI before running `uninstall` again — | ||
| `npx gatecraft@latest` is enough, since the tool is not installed into your project. | ||
| --- | ||
| ## [1.1.0] — 2026-08-06 | ||
@@ -31,0 +44,0 @@ |
| # AI Engineering Operating System (Gatecraft) | ||
| Version 1.1.0 — see [VERSION.md](VERSION.md) and [CHANGELOG.md](CHANGELOG.md). | ||
| Version 1.1.1 — see [VERSION.md](VERSION.md) and [CHANGELOG.md](CHANGELOG.md). | ||
@@ -5,0 +5,0 @@ The Gatecraft is a technology-agnostic operating system for AI coding agents and the |
| # VERSION.md — Versioning and Compatibility | ||
| **Current version: 1.1.0** | ||
| **Current version: 1.1.1** | ||
@@ -152,2 +152,3 @@ This file governs the version of the AI Engineering Operating System itself — the | ||
| | 1.1.0 | 15 | 12 | Unchanged | Retrieval commands (`standard`, `prompt`) and a bootstrap section pointing at them. No document, directory, section number, or anchor changed; no override can be affected. | | ||
| | 1.1.1 | 15 | 12 | Unchanged | CLI fixes only — a data-loss guard in `uninstall` and a miscount in the context report. No document, directory, section number, or anchor changed; no override can be affected. | | ||
@@ -154,0 +155,0 @@ Record each release here. The columns are the things an override can depend on, so a |
+15
-4
@@ -61,9 +61,18 @@ <div align="center"> | ||
| <div align="center"> | ||
| <picture> | ||
| <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Eric20Junior/gatecraft/main/.github/assets/workflow-loop-dark.svg"> | ||
| <img src="https://raw.githubusercontent.com/Eric20Junior/gatecraft/main/.github/assets/workflow-loop.svg" alt="The twelve-stage loop: Understand, Research, Plan, Design, Implement, Review, Critique, Improve, Validate, Test, Document, Evaluate, Done. Review sends work back to Implement when a defect is found, Test sends it back to Implement when a test fails, Validate sends it back to Improve when there is no evidence, and Evaluate sends it back to Plan when the readiness score is below 90." width="460"> | ||
| </picture> | ||
| </div> | ||
| <details> | ||
| <summary>Diagram source (Mermaid)</summary> | ||
| ```mermaid | ||
| flowchart LR | ||
| flowchart TB | ||
| A(Understand) --> B(Research) --> C(Plan) --> D(Design) | ||
| D --> E(Implement) --> F{{Review}} --> G{{Critique}} | ||
| G --> H(Improve) --> I{{Validate}} --> J{{Test}} | ||
| J --> K(Document) --> L{{Evaluate}} | ||
| L --> M([Done]) | ||
| J --> K(Document) --> L{{Evaluate}} --> M([Done]) | ||
@@ -81,2 +90,4 @@ F -.->|defect found| E | ||
| </details> | ||
| ## Install | ||
@@ -193,3 +204,3 @@ | ||
| ```sh | ||
| npx gatecraft status # counts what is still unfilled | ||
| npx gatecraft status # counts what is still unfilled. | ||
| ``` | ||
@@ -196,0 +207,0 @@ |
@@ -69,2 +69,17 @@ 'use strict'; | ||
| // A `.ai/` with no manifest was either ejected or never installed by this CLI. | ||
| // Either way we have no record of what we put there, so every file in it has to | ||
| // be assumed to be the user's — `eject` exists precisely to make them so, and it | ||
| // promises uninstall will no longer touch them. Deleting the tree here would take | ||
| // heavily customized documents with it and leave nothing to restore from. | ||
| if (!m) { | ||
| ui.fail(`.ai/ at ${root} is not a managed install — nothing to uninstall`); | ||
| ui.out(''); | ||
| ui.out(` ${ui.color.dim('There is no install manifest, so this was ejected or created by hand.')}`); | ||
| ui.out(` ${ui.color.dim('Those files are yours: remove them with `rm -rf .ai` if that is what')}`); | ||
| ui.out(` ${ui.color.dim('you want, or run `gatecraft init --force` to manage them again.')}`); | ||
| ui.out(''); | ||
| return 1; | ||
| } | ||
| const hasMemory = memoryHasContent(p.ai); | ||
@@ -71,0 +86,0 @@ const keepMemory = flags.purge ? false : flags['keep-memory'] !== false && hasMemory; |
@@ -106,3 +106,2 @@ 'use strict'; | ||
| const text = fsx.read(file); | ||
| const total = (text.match(/\{\{/g) || []).length; | ||
| const sections = []; | ||
@@ -119,2 +118,7 @@ let current = null; | ||
| } | ||
| // Count only what falls inside a numbered section. The preamble explains what a | ||
| // `{{placeholder}}` is and contains one as an example, so counting the whole file | ||
| // left a fully-filled context reporting one placeholder across zero sections — | ||
| // permanently, with nothing the user could edit to clear it. | ||
| const total = sections.reduce((n, s) => n + s.placeholders, 0); | ||
| return { total, sections: sections.filter((s) => s.placeholders > 0) }; | ||
@@ -121,0 +125,0 @@ } |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
972152
0.28%2726
0.66%407
2.78%