Releases: linyows/reports
Releases · linyows/reports
Release list
v0.12.0
What's New
Refactor: Modular CLI Architecture
- Split
src/main.zig(2251 lines) into 5 focused modules undersrc/cli/ui.zig— UI constants, table formatting, color helpersdata.zig— Data loading, filtering, date utilitiesenrich.zig— IP enrichment display helpersshow.zig— show/list commandscommands.zig— fetch/enrich/aggregate/dns/domains/summary/check commands
main.zigreduced to ~146 lines (entry point + arg parsing only)- No functional changes; cleaner separation of concerns for maintainability
Fix: Intermittent SPF Not Found in DNS Command
- Fixed
reports dnsintermittently showing SPF as "not found" for domains with multiple TXT records - Root cause: DNS TXT parser only returned the first answer record; DNS response order is not guaranteed
- Added
queryAllTxtto parse all TXT answer records from a DNS response - SPF lookup now searches all TXT records for
v=spf1instead of relying on the first one - Fixed potential memory leak when multiple
v=spf1records exist - Improved memory ownership in
parseTxtFromResponsefor clarity and safety
What's Changed
- Refactor: split main.zig into modular CLI modules by @linyows in #15
- Fix intermittent SPF not found in dns command by @linyows in #16
Full Changelog: v0.11.0...v0.12.0
What's Changed
- Refactor: split main.zig into modular CLI modules by @linyows in #15
- Fix intermittent SPF not found in dns command by @linyows in #16
Full Changelog: v0.11.0...v0.12.0
v0.11.0
What's New
CLI: DNS Command
- New
dnscommand to check DMARC, SPF, DKIM, MTA-STS, and TLS-RPT records for your domains - Status icons: ● ok (all records present and strong), ● warning (weak policy), ● critical (missing records)
- Check marks per record: ✓ ok, △ warning, ✗ missing
- Supports
--format jsonfor machine-readable output - Supports
--domainfilter to check a specific domain
CLI: Check Command Enhancements
- Auth mechanism breakdown showing DKIM+SPF fail, DKIM-only fail, and SPF-only fail counts
- Single-mechanism failures correctly counted as DMARC pass (only both-fail is a DMARC failure)
- Colored status icons (● ok/warning/critical) and failure markers (✗)
- Dim table headers and "... and N more" for cleaner output
CLI: Consistent Output Formatting
- Unified output style across
sync,check,show,dns, andsummarycommands - Shared prefix constants:
●section headers,⎿branch indicators (dim), indented details - Colored pass/fail indicators in
showcommand tables showcommand displays report hash ID with colored status icon and Begin/End timestampssummarytext output uses table format consistent with--periodoutput
CLI: Improvements
- Standardized
--formatoption totext|jsonacross all commands (wastable|jsonfor some) - Renamed
Total MessagestoMessages Evaluatedfor clarity - Help text reorganized with separate
Filters:andOptions:sections - Extracted color constants (
neon_yellow,warn_yellow,fail_red) for maintainability - Semantic variable names (
icon_ok/icon_warning/icon_criticalinstead of color-based names)
What's Changed
- Add dns command and failure pattern breakdown to check by @linyows in #13
- Improve CLI output formatting with consistent styling by @linyows in #14
Full Changelog: v0.10.0...v0.11.0
v0.10.0
What's New
CLI: Command Split
- Split monolithic
fetchinto focused commands:sync,fetch,enrich,aggregate syncruns all three in sequence (fetch → enrich → aggregate)- Each command can be run independently for granular control
macOS App: Dashboard Improvements
- Per-domain DMARC disposition charts (none/quarantine/reject)
- Per-domain TLS-RPT policy type and failure type charts
- Color-matched legends on all bar charts
- Responsive 2-column layout at 1600px+ window width
- Neon color palette matching the Reports logo
macOS App: Mail Sources View
- Cross-report IP analysis with PTR, ASN, country enrichment
- Filterable by issues, searchable by IP/hostname/ASN org
- Data pre-loaded from Zig core cache for instant display
macOS App: Setup Wizard
- 4-step account setup wizard on first launch
- Live sync progress with per-phase status (fetch → enrich → aggregate)
- Curl error messages shown on connection/auth failure
- Add Account button in sidebar and menu bar (⇧⌘N)
Performance
- Dashboard and mail sources statistics computed in Zig core with JSON file caching
- No more Swift-side report-by-report parsing for dashboard/sources
- Enrichment data embedded in sources cache (no per-IP DNS calls on view open)
Problems Tracking
- Per-report problem count computed in Zig core (
problemsfield in list API) - Problems column in report list table
- Problems sidebar filter to show only reports with issues
Code Quality
- New
stats.zigmodule with pure functions and 25 unit tests - Extracted aggregation logic from lib.zig for testability
- JSON-escaped enrichment strings to prevent invalid cache JSON
- Thread-safe curl error tracking (
threadlocal) - Error propagation in sync/aggregate C APIs
What's Changed
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's Changed
- Add check command for anomaly detection by @linyows in #10
- Add macOS dashboard and persistent IP enrichment cache by @linyows in #11
Full Changelog: v0.8.0...v0.9.0
What's Changed
- Add check command for anomaly detection by @linyows in #10
- Add macOS dashboard and persistent IP enrichment cache by @linyows in #11
Full Changelog: v0.8.0...v0.9.0
v0.8.0
v0.7.0
v0.6.0
v0.5.0
v0.4.0
v0.3.0
What's Changed
- Use zlug for slugification, add version command and Japanese README by @linyows in #3
- Add SwiftUI macOS app and improve report handling by @linyows in #4
Full Changelog: v0.2.0...v0.3.0
What's Changed
- Use zlug for slugification, add version command and Japanese README by @linyows in #3
- Add SwiftUI macOS app and improve report handling by @linyows in #4
Full Changelog: v0.2.0...v0.3.0