Skip to content

feat(cli): Batch improvements — fixes, UX enhancements, CI, and docs#13

Merged
dimitris-norce merged 3 commits intomainfrom
improvements/batch-fixes
May 4, 2026
Merged

feat(cli): Batch improvements — fixes, UX enhancements, CI, and docs#13
dimitris-norce merged 3 commits intomainfrom
improvements/batch-fixes

Conversation

@dimitris-norce
Copy link
Copy Markdown
Contributor

@dimitris-norce dimitris-norce commented May 4, 2026

Summary

A batch of improvements across the codebase:

Fixes

  • Remove dead redirect check in updater.rsreqwest follows redirects automatically so the 301/302 guard after .send() could never fire
  • Reject reversed --from/--to absolute timeranges with a clear validation error (previously only equal timestamps were caught)
  • Surface aggregate fallback retry as a stderr warning so callers know when the modern grouping format failed and the legacy payload was used
  • fields command now respects and populates the on-disk cache (it previously bypassed it entirely)
  • Integration test runner uses CARGO_BIN_EXE_graylog-cli to invoke the pre-built binary instead of re-running cargo run -- per test

Features

  • --all-pages: emit a stderr warning and set metadata.truncated = true in JSON output when the 10,000-message cap is hit
  • fields --refresh: bypass the on-disk cache and force a fresh fetch from Graylog, then update the cache
  • --format table on search, aggregate, and count-by-level: render results as a human-readable ASCII table instead of JSON
  • --since <duration>: shorthand for an absolute time range ending now — --since 1h expands to --from <now-1h> --to <now>. Accepts any humantime duration. Mutually exclusive with --time-range and --from/--to

CI

  • Add Linux aarch64 build job to ci.yml using QEMU emulation
  • Add Linux aarch64 release build to release.yml
  • Generate checksums.txt (SHA-256) in the release job and attach it to GitHub releases

Docs

  • SKILL.md: document --since, --format, fields --refresh, --all-pages truncation caveat, and --group-by field-injection behavior

Test plan

  • cargo test --all — 235 tests pass (231 unit + 4 integration)
  • cargo clippy --all-targets -- -D warnings — clean
  • cargo fmt --check — clean

Open in Devin Review

Fixes:
- Remove dead redirect check in updater.rs (reqwest follows redirects)
- Reject reversed --from/--to absolute timeranges with clear error
- Surface aggregate fallback retry warning to stderr
- Wire fields --refresh flag through to cache bypass in service layer
- Integration test runner now uses pre-built binary via CARGO_BIN_EXE

Features:
- --all-pages: emit stderr warning + metadata.truncated on 10k cap
- fields --refresh: bypass on-disk cache and re-fetch from Graylog
- --format table: render search/aggregate/count-by-level as ASCII table
- --since <duration>: absolute time range shorthand ending now

CI:
- Add Linux aarch64 build job to ci.yml (QEMU emulation)
- Add Linux aarch64 build job to release.yml
- Generate checksums.txt and attach to GitHub releases

Docs:
- Document --since, --format, --all-pages truncation caveat,
  --group-by behavior, and fields --refresh in SKILL.md
devin-ai-integration[bot]

This comment was marked as resolved.

Comment thread src/infrastructure/graylog_client.rs Outdated
Comment thread src/presentation/output.rs
- Fix checksums.txt self-reference: exclude checksums.txt from find
  so the empty file created by shell redirect is not included
- Switch aggregate retry warning from eprintln! to tracing::debug;
  add tracing + tracing-subscriber deps with EnvFilter (RUST_LOG)
- Replace hand-rolled ASCII table renderer with tabled crate
devin-ai-integration[bot]

This comment was marked as resolved.

- Add linux/aarch64 arm to current_asset_name() so self-update works
  on the new aarch64 release target (was falling through to
  UnsupportedPlatform error)
- Tighten --since sub-second guard: check duration.as_secs() == 0
  instead of duration == Duration::ZERO; sub-second values like 500ms
  parsed fine but produced from_secs == to_secs, causing a cryptic
  'timestamps must not be identical' error downstream
@dimitris-norce dimitris-norce merged commit 9dddac9 into main May 4, 2026
8 checks passed
@dimitris-norce dimitris-norce deleted the improvements/batch-fixes branch May 4, 2026 10:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants