Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
236 commits
Select commit Hold shift + click to select a range
8fb6843
ci: install ffmpeg with apt in the provisioned e2e job too
lorem-dev Sep 5, 2026
4c13b08
ci: put the provisioned binaries on PATH, and let Actions open the ba…
lorem-dev Sep 5, 2026
3974e91
docs: note which checks are required, and why not the provisioned one
lorem-dev Sep 5, 2026
6e5bf2e
fix: restore the e2e test timeout, and lint the config files
lorem-dev Sep 5, 2026
b33e268
feat: fold pre-release changelog sections, and test the release scripts
lorem-dev Sep 5, 2026
6893ce8
feat: retire the pre-releases a final release supersedes
lorem-dev Sep 5, 2026
a235377
fix: stop the script tests reading CI's environment, and retry the pn…
lorem-dev Sep 5, 2026
771f58c
fix: give the layer-boundary rule the half of its job it was silently…
lorem-dev Sep 5, 2026
d4484ae
fix: install ffmpeg in the publish job, which runs the same gate as CI
lorem-dev Sep 5, 2026
a8348f9
test: stop the suite printing expected errors and a notice it acts on
lorem-dev Sep 5, 2026
dbe239f
chore: 1.0.0-dev.1
lorem-dev Sep 5, 2026
ae066f3
fix: publish the tarballs by absolute path, not one npm reads as a repo
lorem-dev Sep 5, 2026
41caaf4
test: cover the video containers import accepts
lorem-dev Sep 5, 2026
23d7dc9
fix: resolve the release tag once, instead of letting a step default …
lorem-dev Sep 5, 2026
0dda370
fix: let npm do the OIDC exchange by giving it no credentials to find
lorem-dev Sep 5, 2026
11333c9
feat: allow a token for the bootstrap publish, and prefer OIDC once i…
lorem-dev Sep 5, 2026
d90fe06
docs: state the one case where a pre-release does move npm's latest tag
lorem-dev Sep 5, 2026
cd4a70f
fix: give every published package a README, and check that it has one
lorem-dev Sep 5, 2026
20b0a11
chore: 1.0.0-dev.2
lorem-dev Sep 5, 2026
f208e65
fix: report the installed version, not the literal 0.0.0
lorem-dev Sep 5, 2026
930ff79
feat: refuse a final release that would publish on a stored token
lorem-dev Sep 5, 2026
6dd61d7
docs: note what the next snapshot is for
lorem-dev Sep 5, 2026
6d57a47
chore: 1.0.0-dev.3
lorem-dev Sep 5, 2026
e620380
feat: retire superseded pre-releases automatically, still with no sto…
lorem-dev Sep 5, 2026
2b23eaa
fix: retire pre-releases only as part of a production release
lorem-dev Sep 5, 2026
4e5cd1c
docs: describe the release rules once, and how the credential works
lorem-dev Sep 5, 2026
f84f261
feat: check dependencies for advisories and age before a release
lorem-dev Sep 5, 2026
8d386eb
feat: add Dependabot and CodeQL, both held to the 14-day rule
lorem-dev Sep 5, 2026
4c50586
fix: match provider hosts by hostname, and stop three patterns that b…
lorem-dev Sep 5, 2026
218ce6b
chore: hold TypeScript at 6 until typescript-eslint can load against 7
lorem-dev Sep 5, 2026
20ddf0b
fix: take over a stale provisioning lock without deleting a live one
lorem-dev Sep 5, 2026
4caebed
chore(deps): bump the actions group across 1 directory with 2 updates…
dependabot[bot] Sep 5, 2026
8a5a408
docs: add a version badge to the README
lorem-dev Sep 5, 2026
04e331b
feat: refuse a release that ships an unreviewed high-severity finding
lorem-dev Sep 5, 2026
d7d24fe
docs: cut what 1.0.0's notes should not carry
lorem-dev Sep 5, 2026
f7a62b7
docs: say what the CLI actually has, and stop claiming half of it is …
lorem-dev Sep 5, 2026
8d7b0df
fix: close the provisioning lock race properly, and stop the release …
lorem-dev Sep 5, 2026
d92f61b
feat: gate the docs on a successful publish, create the release, warn…
lorem-dev Sep 5, 2026
26c57b9
ci: exclude the one CodeQL rule that keeps mis-reading the provisioni…
lorem-dev Sep 5, 2026
eca7b80
chore: 1.0.0
lorem-dev Sep 5, 2026
2fc369e
fix: retire snapshots by hand, because the OIDC token cannot deprecate
lorem-dev Sep 5, 2026
0387e9b
fix: make retiring a release one authentication, and stop it hanging
lorem-dev Sep 5, 2026
f20b40d
feat: add the version rules that decide what an update may move to
lorem-dev Sep 5, 2026
e3a640e
feat: read the published versions of a package from the registry
lorem-dev Sep 5, 2026
84825af
feat: detect how this copy of ailoud was installed
lorem-dev Sep 5, 2026
10c81dd
fix: read a deprecation by its value, and refuse an empty version list
lorem-dev Sep 5, 2026
edb1242
feat: expose the per-user data directory and an update-check switch
lorem-dev Sep 5, 2026
3e53e89
fix: detect a global install under a Node version manager
lorem-dev Sep 5, 2026
4d54121
feat: remember every project ailoud has been used in
lorem-dev Sep 5, 2026
e490c93
feat: add the self noun and the self check command
lorem-dev Sep 5, 2026
944c45c
fix: stop the project registry losing entries and crashing on a bad file
lorem-dev Sep 5, 2026
267e16e
feat: refresh the rules block in every registered project
lorem-dev Sep 5, 2026
5f50192
fix: report why a version check failed instead of blaming a timeout
lorem-dev Sep 5, 2026
83eab0b
feat: install a newer ailoud and re-sync the rules afterwards
lorem-dev Sep 5, 2026
867af1f
fix: keep the rules sweep going when the registry cannot be read
lorem-dev Sep 5, 2026
fcb277a
fix: report a partly refreshed project honestly
lorem-dev Sep 5, 2026
e7b95cd
feat: mention a newer version once a day, without delaying anything
lorem-dev Sep 5, 2026
60127bc
fix: anchor self-update spawns and bound the forced install
lorem-dev Sep 5, 2026
138ca60
refactor: move isDeprecated into core, dropping the duplicate copy
lorem-dev Sep 5, 2026
ed6785f
fix: bound the update check's disk reads and its own wait
lorem-dev Sep 5, 2026
53c51f2
feat: record a project the first time ailoud uses its library
lorem-dev Sep 5, 2026
40c12d3
test: guard the migrations against edits and silent schema drift
lorem-dev Sep 5, 2026
e5424c0
docs: document updating ailoud and retiring its snapshots
lorem-dev Sep 5, 2026
5113173
test: drive self check, update and sync end to end
lorem-dev Sep 5, 2026
7de1df5
fix: announce when npm versions come from a fixture, not the registry
lorem-dev Sep 5, 2026
59bb2cc
test: close migration guard gaps found in review
lorem-dev Sep 5, 2026
5243892
build: add a script that lists every documented command and flag
lorem-dev Sep 5, 2026
13fb3ea
docs: lead the README with using ailoud from an agent
lorem-dev Sep 5, 2026
b82eddb
docs: cut the prose in the MCP page
lorem-dev Sep 5, 2026
cbca907
docs: put recordings' flags in one table
lorem-dev Sep 5, 2026
6d7fbfc
build: fail the docs build on an empty admonition
lorem-dev Sep 5, 2026
953d750
fix: correct the recordings flag table against the binary
lorem-dev Sep 6, 2026
a793042
docs: cut rationale that duplicates AGENTS.md
lorem-dev Sep 6, 2026
16c76c8
docs: lead the prompt evaluation with its command
lorem-dev Sep 6, 2026
3c2c5d2
docs: put the MCP section above Usage
lorem-dev Sep 6, 2026
c2649a3
fix: keep the self commands' output inside the frame
lorem-dev Sep 6, 2026
f406672
fix: route command output through the frame, not around it
lorem-dev Sep 6, 2026
e5f5510
fix: emit an empty JSON list the same way as a full one
lorem-dev Sep 6, 2026
eb7cbbc
fix: keep the empty-library JSON line on the raw channel
lorem-dev Sep 6, 2026
cb44afc
feat: mark successful outcomes in command output
lorem-dev Sep 6, 2026
50049f1
fix: render an empty JSON list like a full one, in both channels
lorem-dev Sep 6, 2026
6b2c8f8
fix: write an agent rules file atomically, so a failure cannot empty it
lorem-dev Sep 6, 2026
31c0522
test: keep the fault injectors matching after the atomic write
lorem-dev Sep 6, 2026
6da4f54
docs: correct claims that no longer match the code
lorem-dev Sep 6, 2026
55e3f89
fix: make the update log append-safe against concurrent writers
lorem-dev Sep 6, 2026
95001da
fix: never let an abandoned update check poison its own cache
lorem-dev Sep 6, 2026
80d2f88
fix: bound the post-install rules sweep when there is no terminal
lorem-dev Sep 6, 2026
ece717b
fix: bound the update log's append retry so it cannot spin
lorem-dev Sep 6, 2026
0043b00
fix: treat an empty report list as success, and colour the update notice
lorem-dev Sep 6, 2026
c5e7806
test: check letter collisions in every group, not two of four
lorem-dev Sep 6, 2026
2356d3e
test: say where the registry race guarantee is actually pinned
lorem-dev Sep 6, 2026
4ab0929
refactor: give VersionSource a signal, and drop the duplicate registr…
lorem-dev Sep 6, 2026
16ba823
refactor: move the deprecation rule to the provider that decodes it
lorem-dev Sep 6, 2026
4cd1764
fix: strip HTML tags completely in the docs render check
lorem-dev Sep 6, 2026
54a7069
docs: present self update as one step, since it checks for itself
lorem-dev Sep 6, 2026
cfee055
docs: record what 1.1.0 changes for a user
lorem-dev Sep 6, 2026
694c46e
test: derive the version fixtures from the build's own version
lorem-dev Sep 6, 2026
d29cb79
chore: 1.1.0
lorem-dev Sep 6, 2026
047ba54
feat: prefer .claude/CLAUDE.md and keep every rules file current
lorem-dev Sep 6, 2026
0304320
test: assert the uninstall-only rules file at its actual nested path
lorem-dev Sep 6, 2026
38886a1
feat: add the command allow-list writer for JSON agent configs
lorem-dev Sep 6, 2026
9f1d8a7
fix: return the allow-list file untouched when the rule is already pr…
lorem-dev Sep 6, 2026
d5848eb
feat: add the command allow-list writer for Codex and Copilot
lorem-dev Sep 6, 2026
9e58456
feat: write each agent's command allow-list on request
lorem-dev Sep 6, 2026
987afa9
test: pin down that a stray Codex permission entry never implies conf…
lorem-dev Sep 6, 2026
44ee683
feat: ask during mcp install whether to pre-approve running ailoud
lorem-dev Sep 6, 2026
8f69c79
test: cover the rules-file priority and the allow-list end to end
lorem-dev Sep 6, 2026
7e94680
docs: document the rules-file priority and the command allow-list
lorem-dev Sep 6, 2026
6108f19
docs: fix the rules-block changelog wording and the opencode entry cell
lorem-dev Sep 6, 2026
57c5616
fix: keep the Codex allow-list comments when adding our entries
lorem-dev Sep 6, 2026
f43e5df
fix: keep the user's comments when clearing the Codex allow list
lorem-dev Sep 6, 2026
0fc5d46
fix: delete an allow-list file holding nothing but our entry
lorem-dev Sep 6, 2026
2007563
fix: keep an opencode bash rule the user wrote themselves
lorem-dev Sep 6, 2026
9f98136
fix: name the real reason an allow-list was left alone
lorem-dev Sep 6, 2026
c33e4a9
feat: say which directory a Copilot allow-list grant covers
lorem-dev Sep 6, 2026
8c640b9
docs: note that the allow-list files lose their comments too
lorem-dev Sep 6, 2026
8be153d
feat: prefer .claude/CLAUDE.md and add the agent command allow-list
lorem-dev Sep 6, 2026
e834207
feat: add ailoud setup --force and model switching
lorem-dev Sep 6, 2026
871bcb5
test: cover setup --model validation end to end
lorem-dev Sep 6, 2026
c73b709
docs: document setup --force and model switching
lorem-dev Sep 6, 2026
7ab080f
fix: stop --force from downgrading or over-switching the model
lorem-dev Sep 6, 2026
6deb510
fix: keep install-llm from leaking onto a passing Claude Code check
lorem-dev Sep 6, 2026
54f5dd3
docs: describe what --force costs with a local summariser
lorem-dev Sep 6, 2026
9d4945d
fix: stop two more silent model switches under --force
lorem-dev Sep 6, 2026
768aa81
feat: add setup --force and transcription model switching
lorem-dev Sep 6, 2026
5bcb425
chore: state plainly that specs and plans are never committed
lorem-dev Sep 6, 2026
a65bcc1
refactor: share the marker-block writer between its two callers
lorem-dev Sep 6, 2026
d96ef67
feat: render completion scripts from the live command tree
lorem-dev Sep 6, 2026
b6c343c
feat: describe where each shell keeps its completions
lorem-dev Sep 6, 2026
406ac43
fix: chain fish completion conditions per ancestor segment
lorem-dev Sep 6, 2026
22f4f22
fix: sharpen shell detection test and comment-blind bashrc check
lorem-dev Sep 6, 2026
c455c52
feat: install, remove and refresh a shell's completions
lorem-dev Sep 6, 2026
e54932d
fix: preserve empty shell startup files on uninstall
lorem-dev Sep 7, 2026
0399733
feat: add ailoud self completions
lorem-dev Sep 7, 2026
81352f2
test: cover self sync's completions refresh and its dropped advisory
lorem-dev Sep 7, 2026
8fa6a3e
test: add the missing self completions command-level scenarios
lorem-dev Sep 7, 2026
f0e1f5a
test: cover shell completions end to end
lorem-dev Sep 7, 2026
f6dcd12
feat: offer shell completions at the end of setup
lorem-dev Sep 7, 2026
6df37c2
docs: mention --no-completions alongside --completions
lorem-dev Sep 7, 2026
4a95d4c
fix: don't fail setup when a completions install errors
lorem-dev Sep 7, 2026
0b8c0d2
fix: stop compinit -u trusting every insecure fpath directory
lorem-dev Sep 7, 2026
a313875
fix: pair a marker block past an orphan END
lorem-dev Sep 7, 2026
47f43f7
fix: rename the zsh completion's local path, tied to $PATH
lorem-dev Sep 7, 2026
4e2b78d
fix: offer --help and --version on every command
lorem-dev Sep 7, 2026
ec999e9
fix: complete the subcommands behind a group alias
lorem-dev Sep 7, 2026
d00ccdf
fix: emit long options in the fish completions too
lorem-dev Sep 7, 2026
cdeaa92
fix: keep filename completion working once installed
lorem-dev Sep 7, 2026
63aecc8
feat: detect a shell by its binary on $PATH too
lorem-dev Sep 7, 2026
b4d4963
fix: name the files setup's completions offer will write
lorem-dev Sep 7, 2026
1fca990
refactor: fold in the review's minor completions findings
lorem-dev Sep 7, 2026
e2632d7
style: hoist the marker scan's cursor out of the for header
lorem-dev Sep 7, 2026
3b365cd
docs: order the changelog sections Added, Changed, Fixed
lorem-dev Sep 7, 2026
c64302c
feat: add shell completions for bash, zsh and fish
lorem-dev Sep 7, 2026
5b3ecbb
feat(providers): stream run's stderr lines without changing its buffer
lorem-dev Sep 7, 2026
7308664
feat(providers): report whisper transcription progress
lorem-dev Sep 7, 2026
ae85a25
feat(core): add progress events and stage weight arithmetic
lorem-dev Sep 7, 2026
20086a6
fix(core): correct multilingual stages test expectations
lorem-dev Sep 7, 2026
77a77ce
feat(core): guess a recording's languages from its name
lorem-dev Sep 7, 2026
fd4af1f
feat(core): report transcription progress from both pipeline paths
lorem-dev Sep 7, 2026
2c31039
fix(core): test provider progress closures, fix labelling order
lorem-dev Sep 7, 2026
b6ed1b5
fix(core): swallow a progress sink's rejected promise too
lorem-dev Sep 7, 2026
56c023a
refactor(cli): share the exclusive lock between provisioning and jobs
lorem-dev Sep 7, 2026
aefe35f
docs(cli): move provisioning's queueing reason out of shared lock
lorem-dev Sep 7, 2026
c167275
feat(cli): add the job state file and its log
lorem-dev Sep 7, 2026
c21ea69
fix(cli): randomise job state scratch names, memoise log mkdir
lorem-dev Sep 7, 2026
c9374d6
feat(cli): add job progress reporter, throttled and monotonic
lorem-dev Sep 7, 2026
3ec1894
fix(cli): clear stale ETA and stop log flooding in reporter
lorem-dev Sep 7, 2026
e726c24
feat(cli): create, list and prune background jobs
lorem-dev Sep 7, 2026
d41b6a8
feat(cli): show transcription progress and report it into a job
lorem-dev Sep 7, 2026
b442b9d
refactor(cli): extract loadJob into a shared jobs helper
lorem-dev Sep 7, 2026
abd369d
feat(cli): add --detach to transcribe and summarize
lorem-dev Sep 7, 2026
d8f175f
fix(cli): handle a detached spawn that fails asynchronously
lorem-dev Sep 7, 2026
e2d735a
feat(cli): add the job ls, show and rm commands
lorem-dev Sep 7, 2026
92c2809
feat(cli): refuse transcribe until speakers and languages are declared
lorem-dev Sep 7, 2026
8412c4a
fix(cli): refuse malformed language declarations in transcribe
lorem-dev Sep 7, 2026
c8ff446
feat(cli): run transcribe and summarize as background jobs over MCP
lorem-dev Sep 7, 2026
e176678
docs: document background jobs and the transcribe pre-flight
lorem-dev Sep 7, 2026
06234e3
fix: correct rule 6's job result claim and the docs rule count
lorem-dev Sep 7, 2026
e962197
docs: add the missing template rule to mcp.md's rule list
lorem-dev Sep 7, 2026
b75ce0b
test: cover background transcription end to end
lorem-dev Sep 7, 2026
bcb8b45
fix(cli): keep an explicit "auto" distinct from unset in job.declared
lorem-dev Sep 7, 2026
d97c9f8
fix(cli): fix transcribe job warnings, result shape, and lock failure
lorem-dev Sep 7, 2026
78e6558
fix(cli): add template to summarize results, fix its lock failure
lorem-dev Sep 7, 2026
58fd452
test(cli): confirm --job stays out of rendered --help too
lorem-dev Sep 7, 2026
08a2bd2
fix(cli): prune retained jobs on creation, share the liveness check
lorem-dev Sep 7, 2026
febeac6
docs: correct claims about the job log, unknown ids, and comments
lorem-dev Sep 7, 2026
86d6ad7
fix(cli): drop a redundant existence check before reading job state
lorem-dev Sep 7, 2026
290fcdb
fix(cli): stop erasing a real error when correcting a job's pid
lorem-dev Sep 7, 2026
7c3285b
fix(cli): print a job's declared inputs and result in job show
lorem-dev Sep 7, 2026
0e7b16b
docs: add the missing --detach row and job command entry
lorem-dev Sep 7, 2026
2f2cdf5
fix(e2e): signal the whole process group, not just the recorded pid
lorem-dev Sep 7, 2026
64bf434
test(e2e): assert an intermediate progress value was really observed
lorem-dev Sep 7, 2026
a192050
test(core): pin the multilingual stage names against a silent typo
lorem-dev Sep 7, 2026
7cb7812
test(cli): cover JobReporter.advance() and fail() once terminal
lorem-dev Sep 7, 2026
5e1c4f0
docs: add the missing job command row to AGENTS.md
lorem-dev Sep 7, 2026
ab3802d
feat: compute a per-engine thread budget from one percentage
lorem-dev Sep 7, 2026
ed7c652
feat: decide denoising from a measured noise floor
lorem-dev Sep 7, 2026
8e45d6e
feat: read the performance-core split on apple silicon
lorem-dev Sep 7, 2026
e106c7d
feat: report which ggml backends a binary loaded
lorem-dev Sep 7, 2026
5968b59
feat: parse ffmpeg noise levels and build the filter chain
lorem-dev Sep 7, 2026
c3e48d8
chore: format the new resource and probe modules
lorem-dev Sep 7, 2026
043dd39
feat: denoise a converted wav when its noise floor warrants it
lorem-dev Sep 7, 2026
955a2b1
fix: give the noise scan an output target so it measures
lorem-dev Sep 7, 2026
6435916
feat: pass a thread count and gpu choice to the whisper binaries
lorem-dev Sep 7, 2026
75db30b
feat: require an explicit thread count from the diarizer and llm
lorem-dev Sep 7, 2026
7dafab5
docs: record that the whisper argument list is verified
lorem-dev Sep 7, 2026
a89e376
feat: configure a cpu ceiling, the gpu choice and denoising
lorem-dev Sep 7, 2026
d52af8c
feat: hand each engine its share of one resource budget
lorem-dev Sep 7, 2026
3c75840
feat: carry the denoise decision through the transcribe pipeline
lorem-dev Sep 7, 2026
00683ae
feat: add --max-cpu, --no-gpu and --denoise to the run commands
lorem-dev Sep 7, 2026
a04e073
feat: report cpu split, backends and a setup note in doctor
lorem-dev Sep 7, 2026
448b16f
docs: tell the agent what makes transcription fast
lorem-dev Sep 7, 2026
8adec03
test: cover the multilingual denoise notice and warning
lorem-dev Sep 7, 2026
96b9353
fix: cap the VAD's threads too, and correct its GPU comment
lorem-dev Sep 7, 2026
8de99eb
fix: distinguish an unmeasured noise floor from a measured one
lorem-dev Sep 7, 2026
45fc9eb
docs: document the cpu ceiling, gpu choice and denoising
lorem-dev Sep 7, 2026
14e378e
docs: note the doctor acceleration report in the changelog
lorem-dev Sep 7, 2026
e7130b3
test: assert the resource flags each engine is given
lorem-dev Sep 7, 2026
f6381e8
build: lint the e2e setup files as node commonjs
lorem-dev Sep 7, 2026
658894f
test: transcribe real audio under a cpu limit and with denoising
lorem-dev Sep 7, 2026
b06db56
fix: cap the shared thread share with a measured absolute ceiling
lorem-dev Sep 7, 2026
01a8029
test: pin each budget-factory call site so a dropped argument fails
lorem-dev Sep 7, 2026
6c7ad2c
fix: drop --no-gpu from summarize; correct stale env comments
lorem-dev Sep 7, 2026
5494218
test: assert the capped share as an invariant, not a difference
lorem-dev Sep 8, 2026
03b7d47
test: pin $SHELL where shell detection reads it
lorem-dev Sep 8, 2026
a90277e
feat: install large-v3-turbo-q5_0 by default
lorem-dev Sep 8, 2026
6cfa7c5
fix: stop denoising by default
lorem-dev Sep 8, 2026
eebc7d5
feat: retire medium and f16 large-v3-turbo, offer large-v3
lorem-dev Sep 8, 2026
5f904c4
chore: ignore tmp/, the scratch directory
lorem-dev Sep 8, 2026
98b484d
docs: correct the sizes, help text and stale defaults after the model…
lorem-dev Sep 8, 2026
651247d
test: match loanwords by stem, not by one model's spelling
lorem-dev Sep 8, 2026
5e8310b
feat: have a finished transcription ask for speaker names
lorem-dev Sep 8, 2026
f0eb8ed
docs: restore the changelog's rules comment and Development heading
lorem-dev Sep 8, 2026
2ea58d3
chore: release 1.2.0
lorem-dev Sep 8, 2026
0cb04c5
test: give a detached job five minutes, and say where it stopped
lorem-dev Sep 8, 2026
f49647c
ci: transcribe with small in e2e, and correct the CPU cost claim
lorem-dev Sep 8, 2026
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
6 changes: 3 additions & 3 deletions .agents/skills/bump-version/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
name: bump-version
description: >
Set the laud version across every package.json and promote the CHANGES.md
Set the ailoud version across every package.json and promote the CHANGES.md
Development section to a released Version section, then create the release
commit. Does not tag or push.
---

# bump-version

Bump the laud version and prepare the release commit. Tagging and pushing
Bump the ailoud version and prepare the release commit. Tagging and pushing
remain separate, deliberate steps.

## Steps
Expand Down Expand Up @@ -44,7 +44,7 @@ Run `git diff` and confirm the version bump touched exactly these files:
`## Development`).

No other files changed. There is no `Cargo.toml` and no
`tauri.conf.json` in this project -- laud is a pure TypeScript workspace.
`tauri.conf.json` in this project -- ailoud is a pure TypeScript workspace.

### 4. Create the release commit

Expand Down
141 changes: 141 additions & 0 deletions .agents/skills/check-dependencies/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
---
name: check-dependencies
description: >
Audit npm dependencies for known vulnerabilities, report who asks for
funding, and update what is behind -- refusing any version published less
than 14 days ago unless it fixes a critical advisory. Run before every
release and after any dependency change.
---

# check-dependencies

Three questions, in this order: is anything we depend on known to be
vulnerable, who is asking to be paid for it, and what should be updated.
Updating comes last because the first two decide what an update is for.

## Steps

1. **Look for known vulnerabilities.**

```bash
pnpm audit # everything, including the dev toolchain
pnpm audit --prod # only what the three published packages ship
```

Read them separately. A high-severity advisory in a test runner is a
different problem from one in `commander`: the first cannot reach a user,
the second is installed on their machine. Fix the `--prod` findings first
and say which list a finding came from.

2. **Report funding.**

```bash
npm fund
```

`pnpm` has no `fund` command; `npm fund` reads the installed tree and works
in this workspace. The list is long and almost all of it is the dev
toolchain. What is worth surfacing is the intersection with what actually
ships:

```bash
npm fund --json | node -e '
let s = "";
process.stdin.on("data", (d) => (s += d)).on("end", () => {
const names = [];
const rec = (n) => {
for (const [name, child] of Object.entries(n.dependencies ?? {})) {
names.push(name);
rec(child);
}
};
rec(JSON.parse(s));
const runtime = new Set();
for (const p of ["packages/core", "packages/providers", "apps/cli"]) {
Object.keys(require(`./${p}/package.json`).dependencies ?? {}).forEach((k) =>
runtime.add(k),
);
}
console.log(names.filter((n) => runtime.has(n)).join(", ") || "(none)");
})'
```

Report the count and that intersection. Do not open funding pages or
install anything.

3. **See what is behind.**

```bash
pnpm outdated -r
```

Nothing here is urgent by default. A version bump is worth taking when it
fixes something this project hits, closes an advisory from step 1, or keeps
a major version from drifting far enough to become a project of its own.
"It is newer" is not a reason.

4. **Apply the 14-day rule BEFORE updating anything.**

```bash
node scripts/check-dependency-age.mjs
```

A compromised release is discovered by other people, and that takes days --
every npm supply-chain incident in recent memory was caught within a week
or two of publication, after everyone who upgraded immediately had already
installed it. Waiting costs nothing: there is no urgency in a patch that
has been out for two weeks that was not there on day one.

So a candidate version younger than 14 days is not taken. Pin the previous
one and come back to it.

**Unless it fixes a critical or high advisory.** Then waiting is the worse
risk -- a known exploit beats an unaudited release. Record the decision in
`scripts/dependency-age-exceptions.json` with the advisory ID:

```json
{
"some-package@2.0.1": "fixes GHSA-xxxx-yyyy-zzzz (critical), 2026-09-05"
}
```

The exception is a statement about one moment, so the check reports entries
that have aged out and should be deleted. Never add one to silence the
check for convenience; if there is no advisory ID, there is no exception.

5. **Update carefully.**

One concern per commit, so a regression is bisectable:

```bash
pnpm update --latest <package> # or edit the manifest and pnpm install
```

- Keep versions **exact**. This project pins them; a range hands the
decision to whatever resolved last, and the age check cannot judge it.
- Run the `check-licenses` skill if any `package.json` changed -- a new
version can change its licence.
- Run the `run-tests-and-linters` skill. A dependency update that passes
nothing is not an update.
- A user-visible consequence goes in CHANGES.md; a toolchain bump does not.

6. **Verify the result.**

```bash
pnpm audit --prod
node scripts/check-dependency-age.mjs
```

Both must pass. Report what changed, what was deliberately left behind and
why, and any advisory that remains open with the reason it cannot be closed
yet.

## Do not

- Do not run `pnpm audit --fix` or `npm audit fix`. They resolve to whatever
is newest, which is the version the 14-day rule exists to refuse.
- Do not update a major version as part of a release. It is its own change,
with its own testing.
- Do not treat a clean `pnpm audit` as proof of anything beyond "no advisory
has been published". Most of what the age rule protects against has no
advisory yet.
24 changes: 18 additions & 6 deletions .agents/skills/check-docs/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,17 @@ release, or right after adding or changing a CLI command or option.
- Confirm every `pnpm` command shown in README.md exists as a script in
the root `package.json` (`pnpm lint`, `pnpm typecheck`, `pnpm test:cov`,
`pnpm build`, `pnpm format:check`, `pnpm test:e2e`, etc.).
- Confirm every `laud` CLI command shown (`import`, `transcribe`, `ls`,
`show`, `doctor`) is a command M1 actually ships, per the "Project
Overview" section of AGENTS.md. `laud` has no `search`, `collection`,
`tag`, `summarize`, `export`, or `config` command yet; flag any of
those names if they appear in README.md or AGENTS.md.
- Confirm every `ailoud` command shown really exists, by asking the
BINARY rather than any prose:
`node apps/cli/dist/bin/ailoud.js --help` after `pnpm build`, then
`--help` on each group and verb. AGENTS.md says outright not to trust a
list of commands in prose over the binary, and this skill used to name a
fixed set of commands and assert that `search` and `summarize` did not
exist -- both had shipped long before anyone noticed the skill was
telling agents otherwise.
Note that zsh does NOT word-split an unquoted variable, so `$cmd --help`
with `cmd="audio ls"` passes one argument and commander prints the
TOP-LEVEL help, making every subcommand look like it has no flags.
- Confirm every relative link in README.md and AGENTS.md resolves to a
file that exists in the repository. Links into `.superpowers/` are a
defect: that directory is git-ignored and absent from a fresh clone.
Expand All @@ -45,7 +51,13 @@ release, or right after adding or changing a CLI command or option.
5. **Check version references.**
Search `README.md`, `AGENTS.md` and `CONTRIBUTING.md` for version
strings. Any hardcoded version must match the version in root
`package.json`. This project ships no documentation site.
`package.json`.

This project DOES ship a documentation site: `docs/` built with mkdocs and
published per release to `gh-pages`. Build it with `pnpm docs:build`
(strict) and check the rendering with `node scripts/check-docs-render.mjs`
-- the strict build cannot see an admonition whose content fell outside its
box, which has shipped here before.

6. **Check CHANGES.md structure.**
Confirm the file starts with a `## Development` section and that
Expand Down
14 changes: 7 additions & 7 deletions .agents/skills/check-fixtures/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: check-fixtures
description: >
Drive the built laud binary against fixtures/ end to end -- import,
Drive the built ailoud binary against fixtures/ end to end -- import,
transcribe, ls, show, and doctor -- in a throwaway HOME, XDG_CONFIG_HOME,
and XDG_DATA_HOME, and confirm the working tree stays clean afterward.
---
Expand All @@ -10,7 +10,7 @@ description: >

The unit tests cover the domain core against fakes (`MemFs`, `FakeClock`,
`FakeIds`, `FakeStt`). This skill covers the layer they cannot: the real
`laud` binary, against real audio, writing to a real filesystem (inside a
`ailoud` binary, against real audio, writing to a real filesystem (inside a
sandbox). It is the only check that would catch a regression living in the
wiring between the CLI, the providers, and the filesystem -- for example a
provider writing to the wrong data directory, or a pipeline that behaves
Expand All @@ -28,14 +28,14 @@ right lens" below.
Three short fixtures, each with a reference transcript: an English clip, a
Russian clip, and a clip that mixes both languages. The suite drives:

- `laud doctor` against a sandbox with no config, and again after
- `ailoud doctor` against a sandbox with no config, and again after
configuring the model.
- `laud import` against a fixture file, including the "already present"
- `ailoud import` against a fixture file, including the "already present"
path on a repeat import.
- `laud transcribe`, checked by word error rate against the reference
- `ailoud transcribe`, checked by word error rate against the reference
transcript rather than exact string equality -- a model or quantization
change shifts wording by a word or two without being a regression.
- `laud show` in both `srt` and `json` formats, plus its error paths (a
- `ailoud show` in both `srt` and `json` formats, plus its error paths (a
missing id, an unsupported `--format`).

## Isolation
Expand All @@ -44,7 +44,7 @@ The suite must never touch the developer's machine state. Every invocation
of the built binary sets all three of:

- `XDG_CONFIG_HOME`, which relocates `config.yaml`.
- `XDG_DATA_HOME`, which relocates `laud.db` and the `media/` tree.
- `XDG_DATA_HOME`, which relocates `ailoud.db` and the `media/` tree.
- `HOME`, so nothing the process resolves relative to the real home
directory (for example a fallback default when an XDG variable is
unset) can reach outside the sandbox.
Expand Down
4 changes: 2 additions & 2 deletions .agents/skills/check-licenses/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ description: >

Verify that every direct npm dependency is license-compatible with
Apache-2.0 and keep the Third-Party Notices section of `LICENSE` up to
date. `laud` is a pure TypeScript pnpm workspace -- there is no cargo
date. `ailoud` is a pure TypeScript pnpm workspace -- there is no cargo
workspace to check, unlike the source repository this project inherits its
conventions from.

Expand Down Expand Up @@ -71,7 +71,7 @@ dependencies` subsection's table -- replace from its `| Package |`
| <name> | npm | <version> | <spdx> | <copyright> |
```

Every row's Ecosystem column is `npm` -- laud has no other dependency
Every row's Ecosystem column is `npm` -- ailoud has no other dependency
ecosystem. List rows alphabetically by package name. Preserve
everything above the table verbatim: the Apache 2.0 license text, the
`## Third-Party Notices` heading, and the intro paragraph above the
Expand Down
Loading
Loading