@sacho/sacho-x86_64-unknown-linux-musl 0.1.0-dev.9 → 0.2.0

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.
Files changed (3) hide show
  1. package/README.md +121 -45
  2. package/package.json +2 -2
  3. package/sacho +0 -0
package/README.md CHANGED
@@ -1,6 +1,27 @@
1
1
  Sacho: an opinionated changelog manager
2
2
  =======================================
3
3
 
4
+ [![GitHub Releases][GitHub Releases badge]][GitHub Releases]
5
+ [![crates.io][crates.io badge]][crates.io]
6
+ [![npm][npm badge]][npm]
7
+ [![GitHub Actions][GitHub Actions badge]][GitHub Actions]
8
+ [![License: GPL-3.0-only][GPL-3.0 badge]][GPL-3.0]
9
+ [![GitHub Sponsors][GitHub Sponsors badge]][GitHub Sponsors]
10
+
11
+ [GitHub Releases badge]: https://img.shields.io/github/v/release/dahlia/sacho?logo=github
12
+ [GitHub Releases]: https://github.com/dahlia/sacho/releases
13
+ [crates.io badge]: https://img.shields.io/crates/v/sacho?logo=rust
14
+ [crates.io]: https://crates.io/crates/sacho
15
+ [npm badge]: https://img.shields.io/npm/v/@sacho/sacho?logo=npm
16
+ [npm]: https://www.npmjs.com/package/@sacho/sacho
17
+ [GitHub Actions badge]: https://github.com/dahlia/sacho/actions/workflows/main.yaml/badge.svg
18
+ [GitHub Actions]: https://github.com/dahlia/sacho/actions/workflows/main.yaml
19
+ [GPL-3.0 badge]: https://img.shields.io/github/license/dahlia/sacho
20
+ [GPL-3.0]: https://www.gnu.org/licenses/gpl-3.0.html
21
+ [GitHub Sponsors badge]: https://img.shields.io/github/sponsors/dahlia?logo=githubsponsors
22
+ [GitHub Sponsors]: https://github.com/sponsors/dahlia
23
+
24
+
4
25
  Motivation
5
26
  ----------
6
27
 
@@ -18,7 +39,7 @@ towncrier assumes Python; changesets assumes an npm monorepo. Sacho is a single
18
39
  static binary with no runtime dependencies, usable in any repository regardless
19
40
  of language, and it does not even assume Git.
20
41
 
21
- [Sacho is opinionated.](./PHILOSOPHY.md) It enforces one fragment format,
42
+ [*Sacho is opinionated.*](./PHILOSOPHY.md) It enforces one fragment format,
22
43
  one output style, and one set of invariants. Configuration exists to describe
23
44
  your repository, not to customize the philosophy.
24
45
 
@@ -52,7 +73,51 @@ Without mise, npm, or Cargo, download the archive for your platform from
52
73
  *sacho* (*sacho.exe* on Windows) into a directory on your `PATH`.
53
74
 
54
75
  [mise]: https://mise.jdx.dev/
55
- [GitHub Releases]: https://github.com/dahlia/sacho/releases
76
+
77
+
78
+ Agent Skill
79
+ -----------
80
+
81
+ Sacho ships an [Agent Skill] that teaches AI coding agents, such as Claude Code,
82
+ how to adopt and operate Sacho: writing fragments for users, cutting releases,
83
+ and forward-porting fixes across maintenance branches.
84
+
85
+ In Claude Code, install it as a plugin. Add this repository as a plugin
86
+ marketplace, then install the `sacho` plugin:
87
+
88
+ ~~~~ text
89
+ /plugin marketplace add dahlia/sacho
90
+ /plugin install sacho@sacho
91
+ ~~~~
92
+
93
+ For other agents, or to install the skill without the plugin system, use the
94
+ [`skills`] CLI, which reads the skill straight from this repository:
95
+
96
+ ~~~~ sh
97
+ npx skills add dahlia/sacho
98
+ ~~~~
99
+
100
+ Add `-a claude-code` to target one agent, `-g` to install it globally, and
101
+ `--skill sacho` to select the skill by name.
102
+
103
+ The skill is also bundled inside the `@sacho/sacho` npm package, following the
104
+ [`skills-npm`] layout. In a project that depends on that package, run
105
+ `npx skills-npm setup` once to link bundled skills from *node\_modules* into
106
+ your agent on every install.
107
+
108
+ [Agent Skill]: https://agentskills.io/
109
+ [`skills`]: https://github.com/vercel-labs/skills
110
+ [`skills-npm`]: https://github.com/antfu/skills-npm
111
+
112
+
113
+ Documentation
114
+ -------------
115
+
116
+ The [*Sacho documentation*] walks through adoption, everyday use, releases,
117
+ CI, and version-control integration. It also explains Sacho's core concepts and
118
+ provides complete command and configuration references.
119
+
120
+ [*Sacho documentation*]: https://sacho.dev/guide/getting-started
56
121
 
57
122
 
58
123
  How it works
@@ -82,21 +147,37 @@ state that never shipped.
82
147
  Basic workflow
83
148
  --------------
84
149
 
85
- With `sacho` on your `PATH`, initialize it at the repository root and choose
86
- the version you are preparing:
150
+ With `sacho` on your `PATH`, initialize it at the repository root:
87
151
 
88
152
  ~~~~ sh
89
153
  sacho init
90
- sacho next 1.2.0
91
154
  ~~~~
92
155
 
93
156
  Initialization creates *sacho.toml*, *changes.d/*, and *CHANGES.md*. It also
94
157
  sets up the merge integration supported by the detected version-control
95
158
  system. The interactive setup can infer an issue-link template from the
96
- repository URL and offer to install a Git pre-commit hook. Repository
159
+ repository URL, offer headings found across an existing changelog as section
160
+ configuration, and offer to install a Git pre-commit hook. Repository
97
161
  integrations use the executable that ran `init`; pass
98
162
  `--integration-executable PATH` to use another executable.
99
163
 
164
+ If an existing *CHANGES.md* already has entries under `Unreleased` or
165
+ `Version X`, import them before creating new fragments:
166
+
167
+ ~~~~ sh
168
+ sacho import-unreleased
169
+ ~~~~
170
+
171
+ Sacho shows any normalization diff before writing. The import creates one root
172
+ fragment, or one fragment per populated configured section, records `X` as the
173
+ next version when present, and leaves every released section unchanged.
174
+
175
+ If the import did not infer a version, choose the version you are preparing:
176
+
177
+ ~~~~ sh
178
+ sacho next 1.2.0
179
+ ~~~~
180
+
100
181
  Create one fragment for each user-visible change, then edit the path printed by
101
182
  the command:
102
183
 
@@ -116,6 +197,7 @@ before committing:
116
197
 
117
198
  ~~~~ sh
118
199
  sacho fmt
200
+ sacho resolve-links # optional: pin final redirected reference URLs
119
201
  sacho preview
120
202
  sacho check
121
203
  ~~~~
@@ -128,15 +210,27 @@ staged Git changes or `sacho check --base <revision>` in CI.
128
210
 
129
211
  When the version is ready, compile and consume its fragments. This command
130
212
  releases the version stored by `sacho next`, uses the current local date, and
131
- starts the next version:
213
+ closes the materialized unreleased region:
132
214
 
133
215
  ~~~~ sh
134
- sacho release --next 1.3.0
216
+ sacho release
135
217
  ~~~~
136
218
 
137
219
  If no next version has been set, pass the release version explicitly, for
138
220
  example `sacho release 1.2.0`. Use `--date YYYY-MM-DD` when the release date
139
- must be supplied rather than taken from the local clock.
221
+ must be supplied rather than taken from the local clock. A repository with no
222
+ released changelog sections can cut its first release without fragments. Later
223
+ empty releases require an explicit `--allow-empty`.
224
+
225
+ Commit and tag that released-only state. When development resumes, start the
226
+ next cycle separately:
227
+
228
+ ~~~~ sh
229
+ sacho next 1.3.0
230
+ ~~~~
231
+
232
+ Pass `--next 1.3.0` to `sacho release` only when the release commit should also
233
+ open the next cycle and retain its empty materialized region.
140
234
 
141
235
  After committing a release, print its frozen Markdown section with `show`:
142
236
 
@@ -161,7 +255,8 @@ Version-control integration
161
255
  ---------------------------
162
256
 
163
257
  Sacho can enforce that commits changing configured source paths also carry a
164
- changelog fragment. Select the repository's VCS in *sacho.toml*:
258
+ changelog fragment. Select the repository's VCS and the paths to check in
259
+ *sacho.toml*:
165
260
 
166
261
  ~~~~ toml
167
262
  [vcs]
@@ -176,41 +271,6 @@ Git also supports `sacho check --staged`. The `none` preset explicitly skips
176
271
  VCS-backed checks while leaving fragment validation and changelog consistency
177
272
  checks enabled.
178
273
 
179
- Each preset supplies three subprocess commands. Repositories can override one
180
- command without repeating the other two:
181
-
182
- ~~~~ toml
183
- [vcs]
184
- preset = "git"
185
-
186
- [vcs.commands]
187
- message = ["my-vcs-wrapper", "message", "${commit}"]
188
- ~~~~
189
-
190
- The first array element is the executable and every remaining element is one
191
- literal argument; Sacho never invokes a shell. The commits command uses
192
- `${base}`, while changed-paths and message use `${commit}`. An overridden query
193
- is the complete query and does not invoke commands from its preset behind the
194
- scenes. The built-in Mercurial preset handles parent comparisons internally.
195
-
196
- The query output contracts are:
197
-
198
- - `commits` emits zero or more nonempty UTF-8 commit identifiers, oldest
199
- first and one per line. The final line may end in LF; CRLF is also
200
- accepted.
201
- - `changed-paths` emits concatenated NUL-terminated name-status records.
202
- Ordinary records are `A\0PATH\0`, `D\0PATH\0`, `M\0PATH\0`, or
203
- `T\0PATH\0`, where `T` denotes a file type change. Copy and rename records
204
- are `C[SIMILARITY]\0OLD_PATH\0NEW_PATH\0` and
205
- `R[SIMILARITY]\0OLD_PATH\0NEW_PATH\0`, where the optional similarity is a
206
- decimal percentage from 0 through 100. Status fields are UTF-8 and paths
207
- are nonempty repository-relative platform paths; path bytes need not be
208
- UTF-8 on Unix. Nonempty output ends in NUL. A copied or renamed fragment
209
- counts as new content only when similarity is present and below 100;
210
- omitting it does not satisfy fragment coverage.
211
- - `message` emits the complete UTF-8 commit message verbatim. Sacho does not
212
- trim it.
213
-
214
274
  `sacho init` installs Git merge attributes and drivers in Git repositories. In
215
275
  Mercurial repositories it installs an idempotent block in *.hg/hgrc* containing
216
276
  a successful-merge update hook and, when changelog materialization is enabled,
@@ -219,6 +279,12 @@ the changelog merge driver. These integrations invoke the executable that ran
219
279
  per-path merge-driver hook; after resolving a concurrent fragment merge, run
220
280
  `sacho sync --force`.
221
281
 
282
+ See [*CI and hooks*] for fragment coverage and [*Version control*] for preset,
283
+ merge-driver, and custom-query details.
284
+
285
+ [*CI and hooks*]: https://sacho.dev/guide/ci-and-hooks
286
+ [*Version control*]: https://sacho.dev/guide/version-control
287
+
222
288
 
223
289
  Etymology
224
290
  ---------
@@ -243,3 +309,13 @@ is the same insistence this tool makes against generating changelogs from
243
309
  commit messages after the fact.
244
310
 
245
311
  [1]: https://en.wikipedia.org/wiki/Veritable_Records_of_the_Joseon_Dynasty#Compilation_process
312
+
313
+
314
+ License
315
+ -------
316
+
317
+ Copyright (C) 2026 Hong Minhee.
318
+
319
+ Sacho is free software licensed under the GNU General Public License version 3
320
+ only. It comes with no warranty, to the extent permitted by law. See
321
+ [*LICENSE*](./LICENSE) for the full terms.
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@sacho/sacho-x86_64-unknown-linux-musl",
3
- "version": "0.1.0-dev.9+eaee87c",
3
+ "version": "0.2.0",
4
4
  "description": "The Sacho binary for x86_64-unknown-linux-musl",
5
5
  "license": "GPL-3.0-only",
6
6
  "author": "Hong Minhee <hong@minhee.org>",
7
- "homepage": "https://github.com/dahlia/sacho",
7
+ "homepage": "https://sacho.dev/",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "git+https://github.com/dahlia/sacho.git"
package/sacho CHANGED
Binary file