Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ proposed improvements to the durable recipe that guides the next run.

> **Early release.** The current Go source supports ticket analysis, approved execution,
> verification and separately approved draft PRs, also available in the downloadable
> `v0.4.1` release. Merge, deployment and issue closure
> `v0.4.2` release. Merge, deployment and issue closure
> remain manual. v0.4.0 also ships the plugin runtime with bundled GitLab (forge), Jira
> (tracker) and `forgecomments` (reviewer) plugins; see [plugins](lab/plugins/README.md).

Expand Down Expand Up @@ -66,14 +66,14 @@ No Node, Go or source checkout is required to install it.
**[Installation guide →](docs/install.md)** — prerequisites, PATH, upgrades and rollback.

<details>
<summary>One-line installer · pinned to v0.4.1</summary>
<summary>One-line installer · pinned to v0.4.2</summary>

```sh
sh -c 'set -eu; script=$(mktemp "${TMPDIR:-/tmp}/forgecell-bootstrap.XXXXXXXX") || { echo "Forgecell: cannot create bootstrap temporary file." >&2; exit 1; }; trap '"'"'rm -f "$script"'"'"' 0; trap '"'"'exit 1'"'"' HUP INT TERM; curl -fsSL --proto "=https" --proto-redir "=https" --connect-timeout 15 --max-time 30 https://github.com/DanielNetzer/forgecell/releases/download/v0.4.1/install.sh -o "$script" || { echo "Forgecell: bootstrap download failed." >&2; exit 1; }; [ -s "$script" ] || { echo "Forgecell: bootstrap download was empty." >&2; exit 1; }; sh "$script"'
sh -c 'set -eu; script=$(mktemp "${TMPDIR:-/tmp}/forgecell-bootstrap.XXXXXXXX") || { echo "Forgecell: cannot create bootstrap temporary file." >&2; exit 1; }; trap '"'"'rm -f "$script"'"'"' 0; trap '"'"'exit 1'"'"' HUP INT TERM; curl -fsSL --proto "=https" --proto-redir "=https" --connect-timeout 15 --max-time 30 https://github.com/DanielNetzer/forgecell/releases/download/v0.4.2/install.sh -o "$script" || { echo "Forgecell: bootstrap download failed." >&2; exit 1; }; [ -s "$script" ] || { echo "Forgecell: bootstrap download was empty." >&2; exit 1; }; sh "$script"'
```

The installer verifies the executable checksum and version before activation and
preserves local Lab data. This command pins the published public-core v0.4.1 release.
preserves local Lab data. This command pins the published public-core v0.4.2 release.
Checksums share the binaries’ GitHub HTTPS endpoint; they are not independent signatures.

</details>
Expand Down Expand Up @@ -110,7 +110,7 @@ sample repository with a deterministic stub harness. It needs only Git and Go on
no API key, no GitHub token, no network and no repository of your own, and it publishes
nothing.

The `v0.4.1` release defaults to a distinct private Lab for each checkout
The `v0.4.2` release defaults to a distinct private Lab for each checkout
under `~/.forgecell/labs/`; `forgecell doctor --json` reports the exact location.
Existing preview.1 checkout Labs remain intact: use the same `--lab .forgecell` path
for every command to keep using one. Labs and saved bindings are not automatically
Expand Down
10 changes: 5 additions & 5 deletions docs/install.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Install Forgecell CLI

Public CLI `v0.4.1` release; core source licensed under the [MIT License](../LICENSE). No repository access, Node or Go is needed to install.
Public CLI `v0.4.2` release; core source licensed under the [MIT License](../LICENSE). No repository access, Node or Go is needed to install.

```sh
sh -c 'set -eu; script=$(mktemp "${TMPDIR:-/tmp}/forgecell-bootstrap.XXXXXXXX") || { echo "Forgecell: cannot create bootstrap temporary file." >&2; exit 1; }; trap '"'"'rm -f "$script"'"'"' 0; trap '"'"'exit 1'"'"' HUP INT TERM; curl -fsSL --proto "=https" --proto-redir "=https" --connect-timeout 15 --max-time 30 https://github.com/DanielNetzer/forgecell/releases/download/v0.4.1/install.sh -o "$script" || { echo "Forgecell: bootstrap download failed." >&2; exit 1; }; [ -s "$script" ] || { echo "Forgecell: bootstrap download was empty." >&2; exit 1; }; sh "$script"'
sh -c 'set -eu; script=$(mktemp "${TMPDIR:-/tmp}/forgecell-bootstrap.XXXXXXXX") || { echo "Forgecell: cannot create bootstrap temporary file." >&2; exit 1; }; trap '"'"'rm -f "$script"'"'"' 0; trap '"'"'exit 1'"'"' HUP INT TERM; curl -fsSL --proto "=https" --proto-redir "=https" --connect-timeout 15 --max-time 30 https://github.com/DanielNetzer/forgecell/releases/download/v0.4.2/install.sh -o "$script" || { echo "Forgecell: bootstrap download failed." >&2; exit 1; }; [ -s "$script" ] || { echo "Forgecell: bootstrap download was empty." >&2; exit 1; }; sh "$script"'
```

The command downloads the bootstrap over HTTPS before executing it. A failed download
Expand Down Expand Up @@ -172,7 +172,7 @@ a Molecule's delivery and exits nonzero unless they passed.
and authentication checks; it does not prove model access or repository policy
readiness. `forgecell --help` lists every command and flag.

The `v0.4.1` release uses a distinct directory under `~/.forgecell/labs/`
The `v0.4.2` release uses a distinct directory under `~/.forgecell/labs/`
for each checkout by default; `forgecell doctor --json` reports the exact location.
Existing preview.1 checkout Labs in the ignored `.forgecell` directory are left
intact. Use the same `--lab .forgecell` path for every command to continue using one;
Expand All @@ -182,7 +182,7 @@ path such as the example above keeps records outside the checkout.

## Versions, upgrade and rollback

The command above pins `v0.4.1`. v0.4.0 adds plugins: other trackers, forges and reviewers through pinned MCP plugins, and the `plugin new`/`pin`/`test` contributor kit. v0.4.1 hardens them: plugin pin, the plugin new skeletons, forgecomments severity markers, and intake for new Markdown files. Repeating it safely reinstalls that version. For another GitHub release, use its matching versioned installer; `FORGECELL_VERSION` overrides require the generic `FORGECELL_RELEASE_BASE` layout. Review release notes before upgrading.
The command above pins `v0.4.2`. v0.4.0 adds plugins: other trackers, forges and reviewers through pinned MCP plugins, and the `plugin new`/`pin`/`test` contributor kit. v0.4.1 hardens them: plugin pin, the plugin new skeletons, forgecomments severity markers, and intake for new Markdown files. v0.4.2 makes `loop --watch` print only what changed after its first pass, and tells a later coding attempt which files an earlier attempt already changed. Repeating it safely reinstalls that version. For another GitHub release, use its matching versioned installer; `FORGECELL_VERSION` overrides require the generic `FORGECELL_RELEASE_BASE` layout. Review release notes before upgrading.

`forgecell rollback` restores the previous verified installation when one exists. Installation preserves Formulas and ledgers, stores versioned executables under `~/.forgecell/releases`, and refuses conflicting unmanaged launchers.

Expand Down Expand Up @@ -256,7 +256,7 @@ Native maintainers use [the distribution design](design/native-cli-distribution.

## Published public-core release and legacy provenance

The pinned installer uses `DanielNetzer/forgecell` and the `v0.4.1` tag.
The pinned installer uses `DanielNetzer/forgecell` and the `v0.4.2` tag.
The earlier published [v0.2.0-preview.2 prerelease](https://github.com/DanielNetzer/forgecell/releases/tag/v0.2.0-preview.2)
was built from public-core source `801a9846fc9066dde985bb678348cac2bc89a249`.
Installation requires no GitHub token, Git, gh, Go or Node.
Expand Down
2 changes: 1 addition & 1 deletion scripts/test-native-installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
assert binary.with_name(binary.name + '.sha256').read_text().strip() == hashlib.sha256(binary.read_bytes()).hexdigest()
assert (release_root / 'install.sh').read_bytes() == (release_root / versions[-1] / 'install.sh').read_bytes()
print('PASS: all four packages, license, notices and rendered version/tag pins')
public_url = 'https://github.com/DanielNetzer/forgecell/releases/download/v0.4.1/install.sh'
public_url = 'https://github.com/DanielNetzer/forgecell/releases/download/v0.4.2/install.sh'
def documented_command(path):
commands = [block.strip() for block in re.findall(r'```sh\n(.*?)\n```', path.read_text(), re.S) if public_url in block]
assert len(commands) == 1, f'{path}: expected one public install command'
Expand Down
Loading