Add changelog and release-notes page

This commit is contained in:
Duc-Tam Nguyen
2026-06-14 19:53:00 +07:00
parent a871265cbe
commit 13b1891ecd
2 changed files with 70 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
# Changelog
All notable changes to kage are recorded here. The format follows
[Keep a Changelog](https://keepachangelog.com/), and the project aims to follow
[Semantic Versioning](https://semver.org/).
## [Unreleased]
## [0.1.0] - 2026-06-14
The first release. kage clones a live website into a self-contained folder you
can browse offline, with every script stripped out.
### Added
- `kage clone <url>` renders each page in headless Chrome, snapshots the final
DOM, removes every `<script>`, `on*` handler, and `javascript:` URL, and
downloads the CSS, images, fonts, and media, rewriting them to local paths.
- `kage serve [dir]` runs a local static file server over a cloned folder so the
mirror's links and assets resolve the way they would on a real host.
- Deterministic URL-to-path mapping: pages become `<slug>/index.html`
directories, assets live under the reserved `_kage/<host>/` tree, and query
strings fold into a short hash suffix so versioned URLs never collide.
- Three concurrency tiers run in parallel: page-render workers (`--workers`),
asset-download workers (`--asset-workers`), and a Chrome page pool
(`--browser-pages`).
- A polite crawl by default: honours `robots.txt`, seeds from `sitemap.xml`,
and scopes to the seed host. `--scope-prefix`, `--max-depth`, `--max-pages`,
`--subdomains`, and `--exclude` shape the frontier.
- Idempotent, resumable crawling. Each page is keyed by the file it writes, so
the same URL reached over http and https, with or without a trailing slash,
or as `/index.html` versus `/`, is fetched exactly once. A re-run resumes from
`_kage/state.json`; `--refresh` re-renders a mirror in place to pull in
changed content; `--force` wipes and starts clean; `--no-resume` runs
stateless.
- Defaults to a per-user data directory (`$HOME/data/kage`), overridable with
`-o/--out`.
- Cross-platform distribution: prebuilt archives, `.deb`/`.rpm`/`.apk` packages,
a multi-arch container image on GHCR (Chromium bundled), checksums, SBOMs, and
a cosign signature, all cut from one version tag by GoReleaser.
[Unreleased]: https://github.com/tamnd/kage/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/tamnd/kage/releases/tag/v0.1.0
+27
View File
@@ -0,0 +1,27 @@
---
title: "Release notes"
description: "What changed in each kage release."
weight: 40
---
The authoritative, commit-level history lives in
[`CHANGELOG.md`](https://github.com/tamnd/kage/blob/main/CHANGELOG.md) and on the
[releases page](https://github.com/tamnd/kage/releases). This page summarises
each version.
## v0.1.0
The first release. kage clones a live website into a self-contained folder you
can browse offline, with every script stripped out.
- **`kage clone <url>`** renders each page in headless Chrome, strips all
JavaScript, and localises CSS, images, and fonts to relative paths.
- **`kage serve [dir]`** previews a cloned folder over a local file server.
- **Idempotent and resumable.** Each page is keyed by the file it writes, so a
page reached over http and https, or as `/index.html` versus `/`, is fetched
once. Re-running resumes; `--refresh` re-renders in place; `--force` starts
clean.
- **Polite by default.** Honours `robots.txt`, seeds from `sitemap.xml`, scopes
to the seed host, and runs three parallel worker tiers.
- **Packaged everywhere.** Archives, `.deb`/`.rpm`/`.apk`, a multi-arch GHCR
image with Chromium bundled, checksums, SBOMs, and a cosign signature.