# 0.2 Changelog
Detailed patch notes for the `0.2.x` release line.
Root summary: [../../CHANGELOG.md](../../CHANGELOG.md)
When a patch introduces a new command or subcommand, include a fenced `bash`
command example here and in the root changelog. Cleanup-only patches without
CLI behavior changes should not include command examples.
## 0.2.13 - 2026-06-17
### Changed
- Moves SNS proposal cache-backed `--before` and status predicates into the
report view layer.
- Moves SNS proposal and neuron row sorting into the same report view layer,
keeping cache modules focused on loading, lookup, and snapshot projection.
- Removes cache-local proposal filter and neuron sort helper modules.
- Adds focused unit coverage for proposal view filters and neuron sort
tie-break behavior.
- Keeps CLI behavior, cache paths, cache identity, JSON schemas, and text
output unchanged.
## 0.2.12 - 2026-06-17
### Added
- Adds `--sort api|id|created` to `icq sns proposals`.
- Reports the selected proposal sort in text and JSON output, bumping the SNS
proposals report schema to version 4.
### Changed
- Applies proposal sorting locally after supported status and cursor filters.
- Applies cache-backed proposal sorting before `--limit`, so complete local
snapshots can return the newest proposals by id or creation time.
- Keeps proposal cache identity unchanged: sort, limit, verbosity, and text
formatting remain view options over the same complete snapshot.
- Keeps topic-filtered and adopted/rejected live fallback views bounded by the
API request, then sorts the returned rows locally.
### Examples
```bash
icq sns proposals 1 --sort created
icq sns proposals 1 --sort id --limit 50
```
## 0.2.11 - 2026-06-17
### Changed
- Adds `data_source` to SNS proposal list and detail reports so live API reads
and cache-backed reads are visible in both text and JSON output.
- Adds `cache_path` and `cache_complete` metadata when `icq sns proposals` or
`icq sns proposal` is served from a complete local proposal snapshot.
- Bumps the SNS proposal list and detail report schema versions for the added
JSON metadata fields.
- Centralizes SNS live/cache provenance construction and text rendering across
proposal and neuron reports.
- Cleans up proposal cache lookup/report imports and removes a single-use
proposal cache path wrapper.
- Splits SNS proposal cache text rendering into focused refresh, cache-list,
and cache-status modules.
- Keeps proposal cache identity unchanged: sort, limit, verbosity, and detail
selection remain view options over the same complete snapshot.
## 0.2.10 - 2026-06-17
### Changed
- Lets `icq sns proposal <id|root-principal> <proposal-id>` reuse an existing
complete proposal snapshot when it contains the requested proposal row.
- Falls back to the live proposal detail API when the complete cache or
proposal row is missing.
- Keeps malformed, incompatible, or unreadable cache errors visible instead of
hiding them behind live fallback.
### Examples
```bash
icq sns proposals refresh 1
icq sns proposal 1 42
```
## 0.2.9 - 2026-06-17
### Changed
- Splits SNS proposal cache-backed report building into focused load, filter,
and report projection modules.
- Splits SNS proposal complete-collection paging into focused fetch, progress,
attempt, and state modules.
- Splits SNS proposal cache status report building into focused id, root, and
report assembly modules.
- Moves proposal cache input lookup by SNS id or root principal into proposal
cache storage.
- Keeps cache paths, cache JSON shape, missing-cache refresh behavior, report
schemas, and CLI commands unchanged.
## 0.2.8 - 2026-06-17
### Changed
- Splits SNS proposal report DTOs into focused cache, refresh-attempt,
refresh-report, report, and row modules.
- Aligns SNS proposal report model organization with the existing SNS neuron
report model layout.
- Moves SNS proposal cache refresh orchestration out of the cache root module
and splits it into focused context, publish, and run modules that mirror SNS
neuron cache refresh structure.
- Splits SNS proposal cache storage into focused load, lookup, scan, and
summary modules.
- Splits SNS proposal refresh-attempt handling into focused model, read,
write, and failure modules.
- Moves proposal cache list and id lookup discovery onto the shared
deterministic snapshot scanner already used by SNS neuron caches.
- Keeps report schemas, field names, JSON output, text output, cache paths,
cache JSON shape, refresh behavior, and CLI behavior unchanged.
## 0.2.7 - 2026-06-17
### Changed
- Splits SNS proposal cache internals into focused model, path, storage,
attempt, paged-collection, and report-builder modules, including separate
cache-list, cache-status, and cached-report leaves.
- Centralizes SNS cache-file error formatting for neuron and proposal caches.
- Keeps proposal cache paths, refresh behavior, reports, and CLI output
unchanged.
## 0.2.6 - 2026-06-17
### Changed
- Adds a shared `cache_file::load_or_refresh_missing_cache` policy helper for
missing-cache refresh flow and standard refresh announcements.
- Migrates subnet catalog loads, cached NNS node/node-provider/node-operator/
data-center list reports, and SNS proposal auto-cache creation onto the
shared missing-cache policy.
- Keeps manual refresh commands, cache status commands, cache keys, and
non-missing cache error behavior unchanged.
- Documents and tests the deliberate SNS neuron exception: cache-backed neuron
sorts require an explicit complete refresh before local reads.
## 0.2.5 - 2026-06-17
### Added
- Makes `icq sns proposals <id|root-principal>` auto-create and reuse a
complete proposal snapshot for cache-compatible list views.
- Adds `icq sns proposals refresh <id|root-principal>` to fetch and publish a
complete local SNS proposal snapshot only after governance pagination is
exhausted.
- Adds `icq sns proposals cache list|status` to inspect complete proposal
snapshots and latest refresh-attempt metadata without live calls.
### Changed
- Splits SNS source data models into focused fetch, deployed-SNS list, token,
proposal, and neuron modules.
- Preserves the existing source model names and re-exports while replacing the
mixed `source/model.rs` bucket with `source/model/mod.rs` child modules.
- Splits live SNS proposal Candid types into focused request, topic, and data
modules.
- Aligns touched SNS lookup helpers with the code-hygiene module-header and
absolute-import standard.
- Keeps topic-filtered and adopted/rejected status-filtered proposal listings
on the existing bounded live path until cached proposal rows carry enough
source detail to reproduce those filters locally.
### Examples
```bash
icq sns proposals 1
icq sns proposals refresh 1
icq sns proposals cache list
icq sns proposals cache status 1
```
## 0.2.4 - 2026-06-17
### Changed
- Splits SNS source traits into focused list, token, params, proposal, and
neuron modules while preserving the existing source trait names.
- Splits the live SNS source implementations into matching focused modules
around the same `LiveSnsSource` type.
- Does not add or change CLI commands.
## 0.2.3 - 2026-06-17
### Changed
- Splits SNS clap value-enum plumbing into focused command-spec modules for
list sorting, neuron sorting, and proposal filters.
- Splits SNS report sort/filter model enums into focused list, neuron, and
proposal modules.
- Splits SNS report request model structs into focused list, lookup, neuron,
and proposal modules.
- Preserves the existing clap value parsers and report-model conversions while
replacing the mixed `values.rs`, `sorts.rs`, and `requests.rs` buckets with
`mod.rs` child modules.
### Examples
```sh
icq sns list --sort name
icq sns neurons 1 --sort stake
icq sns proposals 1 --topic governance
```
## 0.2.2 - 2026-06-16
### Added
- Adds `icq sns proposals --topic <topic>` to filter bounded live SNS
governance proposal listings by SNS topic.
- Sends the selected topic through the SNS governance `list_proposals`
`include_topics` request field while leaving `any` unfiltered.
- Adds `topic_filter` to SNS proposals text and JSON reports, bumping the
proposals report schema to version 2.
### Changed
- Tightens SNS proposal topic-filter request mapping by isolating the
report-level topic filter to SNS governance Candid topic conversion.
- Adds focused unit coverage for `any` leaving `include_topics` unset and a
concrete topic producing one SNS governance topic selector.
### Examples
```sh
icq sns proposals 1 --topic any
icq sns proposals 1 --topic governance
icq sns proposals 1 --topic treasury-asset-management --format json
```
## 0.2.1 - 2026-06-16
### Changed
- Centralizes cached NNS leaf cache errors behind one shared error type used by
node, node-provider, node-operator, and data-center reports.
- Centralizes cached NNS leaf JSON cache loading and refresh-cache writing,
replacing duplicated component-local cache mappers and write setup.
- Splits the shared NNS leaf cache error module into focused files while
preserving the repository module-layout rule.
- Moves SNS neuron owner/sort validation into the clap options layer and adds
invalid-argument coverage for owner-scoped cache-backed sorts.
- Tightens command and report test hygiene by localizing SNS command test
imports and replacing broad wildcard imports in focused NNS report tests.
### Examples
```sh
icq nns node list
icq nns node-provider refresh
icq sns neurons 1 --owner 2vxsx-fae --sort api
```
## 0.2.0 - 2026-06-16
### Added
- Adds `icq sns proposal <id|root-principal> <proposal-id> --ballots` to show
proposal ballot rows in text output.
- Keeps proposal ballot neuron IDs compact by default and shows full ballot
neuron IDs when `--verbose` is also passed.
- Bumps the direct SNS proposal report schema to include the `show_ballots`
display flag.
### Examples
```sh
icq sns proposal 1 387 --ballots
icq sns proposal 1 387 --ballots --verbose
```