Skip to content

Releases: linyows/reports

v0.12.0

Choose a tag to compare

@linyows linyows released this 20 Apr 05:10
7f0baba

What's New

Refactor: Modular CLI Architecture

  • Split src/main.zig (2251 lines) into 5 focused modules under src/cli/
    • ui.zig — UI constants, table formatting, color helpers
    • data.zig — Data loading, filtering, date utilities
    • enrich.zig — IP enrichment display helpers
    • show.zig — show/list commands
    • commands.zig — fetch/enrich/aggregate/dns/domains/summary/check commands
  • main.zig reduced 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 dns intermittently 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 queryAllTxt to parse all TXT answer records from a DNS response
  • SPF lookup now searches all TXT records for v=spf1 instead of relying on the first one
  • Fixed potential memory leak when multiple v=spf1 records exist
  • Improved memory ownership in parseTxtFromResponse for 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

Choose a tag to compare

@linyows linyows released this 19 Apr 09:45
4bbb6b9

What's New

CLI: DNS Command

  • New dns command 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 json for machine-readable output
  • Supports --domain filter 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, and summary commands
  • Shared prefix constants: section headers, branch indicators (dim), indented details
  • Colored pass/fail indicators in show command tables
  • show command displays report hash ID with colored status icon and Begin/End timestamps
  • summary text output uses table format consistent with --period output

CLI: Improvements

  • Standardized --format option to text|json across all commands (was table|json for some)
  • Renamed Total Messages to Messages Evaluated for clarity
  • Help text reorganized with separate Filters: and Options: sections
  • Extracted color constants (neon_yellow, warn_yellow, fail_red) for maintainability
  • Semantic variable names (icon_ok/icon_warning/icon_critical instead 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

Choose a tag to compare

@linyows linyows released this 17 Apr 02:04
10ac9d9

What's New

CLI: Command Split

  • Split monolithic fetch into focused commands: sync, fetch, enrich, aggregate
  • sync runs 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 (problems field in list API)
  • Problems column in report list table
  • Problems sidebar filter to show only reports with issues

Code Quality

  • New stats.zig module 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

  • Add dashboard, mail sources, setup wizard, and split CLI commands by @linyows in #12

Full Changelog: v0.9.0...v0.10.0

v0.9.0

Choose a tag to compare

@linyows linyows released this 16 Apr 02:56
930cf0d

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

Choose a tag to compare

@linyows linyows released this 14 Apr 01:30
450a3b2

What's Changed

  • Add parallel IMAP fetch and --full option by @linyows in #9

Full Changelog: v0.7.0...v0.8.0

What's Changed

  • Add parallel IMAP fetch and --full option by @linyows in #9

Full Changelog: v0.7.0...v0.8.0

v0.7.0

Choose a tag to compare

@linyows linyows released this 13 Apr 13:55
0f4d1e8

What's Changed

  • Add IP enrichment with PTR, ASN, and country flag by @linyows in #8

Full Changelog: v0.6.0...v0.7.0

What's Changed

  • Add IP enrichment with PTR, ASN, and country flag by @linyows in #8

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@linyows linyows released this 12 Apr 14:43
85207da

What's Changed

Full Changelog: v0.5.0...v0.6.0

What's Changed

Full Changelog: v0.5.0...v0.6.0

v0.5.0

Choose a tag to compare

@linyows linyows released this 12 Apr 11:48
9e67f46

What's Changed

  • Add DMG distribution for macOS app by @linyows in #6

Full Changelog: v0.4.0...v0.5.0

What's Changed

  • Add DMG distribution for macOS app by @linyows in #6

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@linyows linyows released this 12 Apr 09:22
c970733

What's Changed

  • Improve macOS UI: sidebar filters, settings, and styling by @linyows in #5

Full Changelog: v0.3.0...v0.4.0

What's Changed

  • Improve macOS UI: sidebar filters, settings, and styling by @linyows in #5

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@linyows linyows released this 12 Apr 00:32
69a10a7

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