Skip to content

deps: remove jq — route gist-envelope + address parsing through airc_core #188

@joelteply

Description

@joelteply

Why

airc requires both jq and python3. Since #152's truth-layer migration we already have python3 as a hard dep, so jq is functionally redundant — it parses JSON, which python's stdlib does natively. Joel called this out 2026-04-28: "why do we have so many damn dependencies now?"

Current jq usage (28 occurrences in airc, plus install.sh prereq + doctor probe)

Two clusters:

  • Address parsing (airc:777-824) — host_addresses array filtering by .scope == "localhost" / "lan" / "tailscale", returning addr|port pairs.
  • Gist envelope parsing (airc:1892-1988) — extracting .invite, .name, .kind, .airc, .host.addresses, .host.machine_id, .last_heartbeat.

Both are JSON reads with no in-place mutation. Trivial to route through a new airc_core.envelope (or airc_core.json) CLI that takes JSON via stdin / --content and emits the requested field on stdout.

Outcome

  • Drop jq from install.sh / install.ps1 / doctor probes
  • Drop the jq-related fallback paths in airc (each reader currently has command -v jq guards that fall through silently — those become unnecessary)
  • One fewer thing for users to install on a clean machine, one fewer thing to break on the Windows install path

Out of scope

This is bash-only — airc.ps1 already uses native PowerShell JSON parsing (ConvertFrom-Json).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions