ic-query 0.2.21

Internet Computer query CLI for NNS, SNS, and related public network metadata
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
# 0.2 Changelog

Detailed patch notes for the `0.2.x` release line.

Root summary: [../../CHANGELOG.md](../../CHANGELOG.md)

When a patch introduces any new CLI surface, include a fenced `bash` command
example here and in the root changelog. New CLI surface includes commands,
subcommands, options, option values, and new supported option combinations.
Cleanup-only patches without CLI behavior changes should not include command
examples.

## 0.2.21 - 2026-06-19

### Added

- Adds `icq sns proposals --sort title` for local proposal title ordering over
  bounded live rows and complete proposal snapshots.
- Adds `icq sns proposals --sort action` for local proposal action ordering
  over bounded live rows and complete proposal snapshots.
- Adds `icq sns proposals --sort yes|no|total-votes` for local proposal
  latest-tally ordering over bounded live rows and complete proposal snapshots.

```bash
icq sns proposals 1 --sort title --asc
icq sns proposals 1 --sort action
icq sns proposals 1 --sort total-votes
```

### Changed

- Applies the new title/action/tally sorts through the shared SNS proposal
  view sorter so live rows and cache-backed rows use the same ordering path.
- Shares the proposal sort value strings used by clap help and `--asc` usage
  errors so future sort additions do not drift across command text.
- Keeps cache identity unchanged: title/action/tally sorting remains a view
  option over the same complete proposal snapshot.
- Keeps cache paths, report schemas, JSON row fields, and text table columns
  unchanged.

## 0.2.20 - 2026-06-19

### Changed

- Shares SNS refresh-attempt metadata and progress helpers between neuron and
  proposal cache refresh paths.
- Shares SNS snapshot cache path construction behind collection-specific
  aliases for neuron and proposal cache paths.
- Shares SNS cache-list lookup flow while leaving neuron/proposal cache
  scanners and report DTOs owned by their family modules.
- Shares SNS snapshot cache path scanning, header reads, and complete-cache
  loading helpers while keeping family-specific schema versions and error
  mappers explicit.
- Documents that scoped public boundary types use the repository section-style
  type doc block.
- Applies boundary function documentation to the shared SNS cache path helper
  module.
- Applies boundary function documentation and import cleanup to the shared SNS
  cache summary helper module.
- Applies boundary function documentation and import cleanup to the shared SNS
  cache storage helper module.
- Applies scoped-public type documentation to the shared SNS cache-status
  lookup helper module.
- Aligns the SNS neuron cache model docs with the matching proposal cache
  model docs.
- Aligns SNS neuron/proposal refresh-attempt context docs across the cache
  families.
- Aligns SNS neuron/proposal complete-collection refresh runner and state docs
  across the cache families.
- Documents SNS report assembly boundary structs and provenance helpers.
- Keeps CLI behavior, cache paths, cache identity, report schemas, text
  output, and JSON fields unchanged.

## 0.2.19 - 2026-06-18

### Changed

- Centralizes the shared SNS neuron/proposal cache-status lookup flow into one
  report helper using associated-type cache-family traits.
- Keeps neuron and proposal cache storage, refresh-attempt loading, summary
  projection, report DTOs, and text rendering owned by their existing family
  modules.
- Shares the identical neuron/proposal refresh-attempt status DTO while
  preserving the existing public report type names.
- Removes duplicated id-versus-root cache-status branching without changing
  CLI behavior, cache paths, cache identity, report schemas, text output, or
  JSON fields.

## 0.2.18 - 2026-06-18

### Added

- Adds cache-backed `icq sns proposals --status decided` filtering over
  complete proposal snapshots.

```bash
icq sns proposals 1 --status decided
```

### Changed

- Keeps `--status decided` on the cache-compatible proposal path and rejects
  combining it with `--topic <topic>`, because bounded live topic queries do
  not return a raw decided status enum that can be requested directly.
- Documents that adopted/rejected still use bounded live fallback until
  proposal cache refresh can preserve an exact raw governance status.
- Keeps cache identity, cache paths, report schemas, JSON row fields, and text
  table columns unchanged.

## 0.2.17 - 2026-06-18

### Added

- Adds `icq sns proposals --sort decided` to order proposal list views by
  newest decision timestamp first, with open/undecided proposals ordered last.
- Adds `icq sns proposals --sort executed` to order proposal list views by
  newest execution timestamp first, with unexecuted proposals ordered last.
- Adds `icq sns proposals --sort failed` to order proposal list views by
  newest failure timestamp first, with non-failed proposals ordered last.
- Adds `--asc` and `--desc` to local `icq sns proposals --sort` modes,
  defaulting to descending order.

### Changed

- Applies the new timestamp sorts through the shared SNS proposal view sorter,
  so live bounded rows and complete proposal snapshots use the same local
  ordering path.
- Keeps cache identity unchanged: sort remains a view option over the same
  complete proposal snapshot, and direction is also a view option.
- Adds `sort_direction` to SNS proposal list text and JSON reports.
- Keeps cache paths, JSON row fields, and text table columns unchanged.

## 0.2.16 - 2026-06-18

### Changed

- Moves changelog process guidance out of root `CHANGELOG.md` into
  `AGENTS.md`.
- Replaces raw SNS `neurons`/`proposals` nested command peeking with
  clap-backed optional subcommand dispatch.
- Adds shared SNS nested dispatch command construction for `refresh` and
  `cache` leaves.
- Shares SNS cached lookup and cache command setup across proposal, neuron
  refresh, and cache runners.
- Removes the SNS neuron cache error re-export shim and imports the shared
  cache-file error adapter directly.
- Folds the SNS neuron refresh-attempt timestamp helper into its owning attempt
  model.
- Keeps CLI behavior, cache behavior, cache paths, report schemas, text output,
  and JSON fields unchanged.

## 0.2.15 - 2026-06-18

### Changed

- Collapses over-fragmented one-function helper leaves into their owning
  modules across NNS topology provider accumulation, topology refresh, topology
  summary, NNS node/subnet runtime setup, SNS proposal cached reports, SNS text
  helpers, and SNS params rendering.
- Flattens single-child or `mod.rs`-only directories into `module.rs` files for
  NNS leaf runtime and cache errors, NNS topology read commands/runtime, NNS
  topology gap/refresh/text modules, SNS source traits, SNS live fetch/client
  modules, SNS cache reports, SNS text helpers, and the root output helpers.
- Keeps the source tree aligned with the repository rule that a module is
  represented as either `module.rs` or `module/mod.rs` plus children, avoiding
  `module.rs` alongside `module/`, empty source directories, and one-child
  wrapper directories.
- Shares deterministic SNS cache-summary ordering across neuron and proposal
  cache list reports.
- Shares SNS root-principal input normalization across neuron/proposal cache
  status and cache lookup paths.
- Keeps CLI behavior, cache paths, cache identity, report schemas, text output,
  and JSON fields unchanged.

## 0.2.14 - 2026-06-17

### Changed

- Moves deployed SNS list sorting from lookup helpers into the report view
  layer alongside SNS neuron and proposal row sorting.
- Renames the remaining lookup helper module around stable SNS-W order id
  assignment and lookup-local assigned-id ordering.
- Adds focused unit coverage for case-insensitive SNS name sorting with stable
  id tie-breaking.
- Applies the code-hygiene module-header standard to SNS command and report
  modules.
- Normalizes touched SNS report imports to use absolute `crate::...` paths
  instead of `super::super`.
- Applies the same production-import standard to SNS command runtime, option
  parsing, and clap spec modules.
- Collapses over-fragmented SNS parameter text row modules back into one row
  owner and documents the module-granularity rule to avoid repeating that
  pattern.
- Removes a single-use SNS neuron text wrapper module and calls the shared
  neuron-id text helper directly from the list renderer.
- Collapses proposal cache status id/root/report helper leaves into the cache
  status owner module.
- Collapses the one-impl-per-file live SNS source adapter leaves into the live
  client owner while keeping network fetch helpers separate.
- Moves single-use SNS neuron/proposal refresh progress text helpers into the
  paged collection fetch modules that use them.
- Moves single-use failed-attempt writers into their attempt write modules for
  neuron and proposal caches.
- Collapses NNS topology summary text count/kind/coverage table leaves into
  the summary text owner module.
- Moves NNS topology coverage percentage formatting into the shared percentage
  helper and removes the wrapper health coverage leaf.
- Applies module boundary headers to the touched NNS topology text, capacity,
  summary, and health modules.
- Brings SNS neuron cache attempt, collection, refresh, storage, and report
  modules onto the same documented boundary style.
- Aligns touched SNS proposal cache attempt, collection, refresh, storage, and
  report imports with the same absolute-path style.
- Normalizes SNS live fetch/convert/type imports and report request DTO imports
  away from parent-chain paths.
- Normalizes SNS command-layer neuron/proposal imports away from parent-chain
  paths without changing clap command definitions.
- Normalizes touched NNS topology text-rendering imports away from
  parent-chain paths.
- Normalizes the remaining NNS topology production imports across build,
  capacity, health, summary, provider, command, and refresh-run modules.
- Normalizes the remaining production parent-chain imports in subnet catalog
  text helpers, NNS leaf cached command running, and IC registry projections.
- Normalizes the remaining test fixture imports away from parent-chain paths,
  leaving the Rust tree free of `super::super` imports.
- Keeps CLI behavior, report schemas, cache behavior, JSON fields, and text
  output unchanged.

## 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
```