@kaisers-io/refs 0.9.0 → 0.10.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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,50 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.10.0] - 2026-08-13
11
+
12
+ ### Added
13
+
14
+ - `refs resolve` now verifies that the package it routes to is actually where the config says
15
+ it is. A configured `path` is only a locator; the package name is its identity, and upstream
16
+ repos restructure on their own schedule. Previously a package that had moved — or a different
17
+ package that had taken over its directory — was handed back regardless, so an agent read the
18
+ wrong source and answered confidently. That failure produced no error and no warning.
19
+
20
+ `package.status` now reports what was established: `verified`, `relocated` (found at exactly
21
+ one new path, which is returned in place of the stale one), `unmaterialized` (no checkout yet),
22
+ `unverifiable` (verification could not complete — `reason` says why), `ambiguous` (the name
23
+ exists at several paths, listed in `candidates`), or `missing`. All six exit `0`; see
24
+ `docs/commands.md` for the full contract.
25
+
26
+ `relocated` corrects the answer for that call only and never writes to `config.toml`. Persist
27
+ it with `refs edit <ref> --package <name> path <new-path>`.
28
+
29
+ ### Changed
30
+
31
+ - **`resolve`'s `package.local_path` can now be `null`.** It is `null` for `missing` and
32
+ `ambiguous`, where no safe location is known. A caller that treated a zero exit as "here is a
33
+ usable path" must check `package.status` first; previously the field was always a string.
34
+
35
+ - Workspace detection now reports why it found nothing. An unreadable or malformed workspace
36
+ declaration, an unreadable manifest, a candidate resolving outside the repo, an unsupported
37
+ pattern, a package directory reachable only through a symlink — each used to collapse into the
38
+ same empty result, leaving a transient read error indistinguishable from "every package was
39
+ removed". Each is now reported, and a scan carrying any of them is treated as possibly
40
+ incomplete: it can neither conclude that a package is gone nor that a single sighting of one is
41
+ unique. `refs add` is unaffected — it consumes the same best-effort list it always has.
42
+
43
+ A manifest that reads fine but declares no usable `name` is reported too, but does **not** make
44
+ a scan incomplete: there is demonstrably no resolvable package at that path. Nameless manifests
45
+ are common enough (zod's own repository root has none) that treating them as failures would
46
+ permanently suppress detection for those repos.
47
+
48
+ One limit is deliberate and worth knowing: a scan only covers what the repo's workspace
49
+ declaration points at. A package registered by `refs add`'s npm fallback — at `path: "."`, or
50
+ the packument's `directory` — lives outside that coverage, so if it moves, `resolve` reports
51
+ `unverifiable` rather than guessing. It never reports `missing` from a scan that had nowhere
52
+ to look.
53
+
10
54
  ## [0.9.0] - 2026-08-13
11
55
 
12
56
  ### Added
@@ -470,7 +514,8 @@ trusted-publishing pipeline end to end.
470
514
  installed git hooks.
471
515
  - Agent skill (`skills/refs/`) documenting the investigate/add/maintain workflows.
472
516
 
473
- [Unreleased]: https://github.com/kaisers-io/refs/compare/v0.9.0...HEAD
517
+ [Unreleased]: https://github.com/kaisers-io/refs/compare/v0.10.0...HEAD
518
+ [0.10.0]: https://github.com/kaisers-io/refs/compare/v0.9.0...v0.10.0
474
519
  [0.9.0]: https://github.com/kaisers-io/refs/compare/v0.8.3...v0.9.0
475
520
  [0.8.3]: https://github.com/kaisers-io/refs/compare/v0.8.2...v0.8.3
476
521
  [0.8.2]: https://github.com/kaisers-io/refs/compare/v0.8.1...v0.8.2