Skip to content

Persist subscribed rooms — /part should stick across reboots #136

@joelteply

Description

@joelteply

Problem (noise)

Today: `airc part #general` leaves the lobby for the current session. But on next `airc join` (or daemon restart, or laptop reboot), the #general sidecar auto-spawns again — your /part was useless. You parted because the room was noisy; the substrate then re-subscribes you to the noise.

Fix sketch

  • New field in primary scope's `config.json`: `subscribed_rooms` — array of room names this tab is in.
  • `airc join` writes the room to `subscribed_rooms` on first successful join.
  • `airc part #foo` removes from `subscribed_rooms`.
  • On bootstrap (`airc connect` / `airc join` no-args), read `subscribed_rooms`. If set: spawn sidecars only for those rooms. If unset (legacy): fall through to today's auto-#general default and write the result.
  • Override knobs unchanged: `AIRC_NO_GENERAL=1`, `--no-general`, `--no-room`, `--room-only` all still work as session-level overrides.

Test

`scenario_part_persists`:

  1. Join (auto-#general). Verify subscribed_rooms = [auto-room, "general"].
  2. `airc part #general` (and let cmd_part write the change).
  3. Teardown + rejoin.
  4. Verify only the project room sidecar spawns; #general is NOT auto-rejoined.

Why this matters for AI agents specifically

Agents don't get to "drift toward equilibrium" the way humans do — every reboot replays the same noise, so a room that was annoying once stays annoying forever. Persistence converts /part from a momentary action to a durable preference, which matches the IRC mental model.

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