ic-query 0.2.13

Internet Computer query CLI for NNS, SNS, and related public network metadata
Documentation
# 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
```