Skip to content

Releases: a7ex-turcan/rtfc

rtfc 0.12.1

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:40

Fixed

  • A session that did not show rtfc's pushes, most often one started or resumed without
    --dangerously-load-development-channels plugin:rtfc@rtfc, silently lost every item sent
    into it, while the inbox said "Sent into your Claude Code session". Now each push has to
    show up: if one does not within two minutes of the session sitting idle, rtfc stops sending
    that session more, says why in the item's note, and shows ⚠ rtfc: pushes not showing in
    that project's status line. Everything that waited is offered again, oldest first, once the
    session is restarted with the flag.

rtfc 0.12.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 11:11

Added

  • rtfc statusline install, or /rtfc:statusline in a session, adds the rtfc status line to
    Claude Code's settings, so you no longer edit ~/.claude/settings.json by hand to see 📨
    when a message waits. It keeps the rest of the file and a copy of it, and if you already have
    a status line it leaves it alone and tells you how to add rtfc's segment to it, or to use
    --replace. rtfc statusline uninstall takes it out again. rtfc init mentions it.
  • Your contacts are told when your address changes. Before, they only learned it the next
    time one of you sent something, and if your old address no longer reached you they could
    not send anything: they were told you were not home. Now the daemon tells each contact's
    device itself, within half a minute if they are reachable, or as soon as they are. After
    upgrading, it does this once for every contact.

Changed

  • rtfc hints add and remove adjust the detected addresses instead of freezing them. Adding
    a host used to copy whatever was detected that day into hintHosts in config.json, so a
    later DHCP lease left contacts dialling an address you no longer had. Added and removed
    hosts now live in extraHintHosts and skipHintHosts, and the rest follows your machine.
    If rtfc hints says your hints were set by hand and you did not mean that, rtfc hints auto
    returns to detection. rtfc init --hint-host and a hand-written hintHosts still pin an
    exact list.

Fixed

  • The daemon advertised the addresses it found when it started. An always-on daemon, or one a
    long session kept running, went on advertising an old address after the network changed. It
    now looks again every 30 seconds.

rtfc 0.11.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 08:12

Added

  • What arrived while no session was there is offered when one opens. A source item in
    session mode that found no session open in its project, or a contact's message for your
    designated session while it was closed, used to wait in the inbox until you looked. Now the
    session that opens is offered them, oldest first and from the last week, one at a time
    through the usual gate and caps. Items you already saw, kept or left for later are not
    offered again.

Changed

  • The first push into a session that has just opened waits about 15 seconds, so Claude
    Code's channel is live and the push is not dropped.

Fixed

  • A single 401 or 403 from Jira, Confluence or Bitbucket no longer stops a subscription for
    half an hour. Atlassian sometimes refuses one poll with a good token; rtfc now retries
    within a minute and only marks the subscription as failing, with the long back-off, after
    three refusals in a row.

rtfc 0.10.1

Choose a tag to compare

@github-actions github-actions released this 05 Oct 10:33

Fixed

  • Several Claude Code sessions starting at once, or an always-on daemon starting while a
    session did, could leave the daemon running with its socket deleted. After that every
    rtfc command and tool said the daemon did not start until you stopped the stray process
    by hand. Now exactly one daemon runs per home, held by a lock on rtfcd.lock, and only
    that daemon creates or deletes the socket. A second one gives way and says so in
    rtfcd.log; an older one being replaced is waited for until its process has ended.
  • A daemon that cannot start writes the reason to rtfcd.log: its port is taken, its
    socket path is too long, or anything else that stops it. Before, it died without a
    trace.
  • When the daemon does not start, rtfc says why: if another program holds the port, it
    names the port and the command that stops it.
  • A daemon whose socket file disappears exits within seconds, so the next rtfc call starts
    one that can be reached.

rtfc 0.10.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 03:59

Added

  • An always-on daemon, opt-in: rtfc daemon always-on on (or /rtfc:always-on on) starts
    the daemon when you log in and keeps it running while Claude Code is closed, so contacts
    can reach you, sources are polled and queued replies are delivered all day. It registers a
    startup entry on Windows (no window), a LaunchAgent on macOS or a systemd user service on
    Linux; off removes it. With it on, contacts see you home whenever you are logged in, and
    their messages wait in your inbox.

Changed

  • rtfc daemon ensure, which every session runs at start, replaces a running daemon of an
    older release, so upgrading rtfc no longer leaves the old daemon running until you stop it.
  • rtfc daemon run leaves an already running daemon alone instead of taking its socket.
  • rtfc daemon status says when the daemon is always on.

rtfc 0.9.1

Choose a tag to compare

@github-actions github-actions released this 30 Sep 15:10

Changed

  • Nothing is pushed into a session in the middle of a turn. A contact's message or a source
    item for a session that is busy waits until the turn is over, with a note in the inbox
    saying so, and several go in one turn after another. The plugin's hooks now also run on
    StopFailure, SessionEnd and Claude Code's idle notification, to know when a session is
    free again, including after you interrupt a turn.

  • A source item in your session now ends cleanly. The first question offers "Later" beside
    "Nothing to do" and up to two actions; "Later" keeps the item in your inbox with a note,
    and "Nothing to do" dismisses it. After an accepted action is done, Claude asks "Dismiss"
    or "Keep", and your answer is recorded by the plugin's hook, so an item you handled no
    longer stays in the inbox because Claude forgot to dismiss it, and is not dismissed before
    the action has run.

rtfc 0.9.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 12:03

Added

  • Bitbucket Cloud as a source: rtfc account add <name> --type bitbucket --url https://api.bitbucket.org --login <email> with a scoped API token, and one subscription
    per repository ("repo": "workspace/slug"). Pull requests you are asked to review land as
    review_requested; on your own pull requests, other people's comments, approvals,
    requested changes, merges, declines and failed builds land as comment_on_mine,
    approved, changes_requested, merged, status_changed and build_failed_on_mine;
    replies to your comments and comments naming you as reply_to_me and mentioned. One
    item per pull request, shown as 🔀 N in the status line.

Changed

  • /rtfc:inbox shows source items with their source, ticket, page or pull request and
    event count, and says that acting on one happens with your session's own tools.
  • /rtfc:sources explains how to add a Confluence or Bitbucket subscription too, and what
    to do about a refused token.
  • The README's step 9 covers all three sources, and its troubleshooting table covers
    pending subscriptions, silent sources, refused tokens and items that never reach the
    session.

rtfc 0.8.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 11:35

Added

  • Sources, first wave: Jira Cloud tickets that involve you land in your inbox, scoped to
    the project they belong to, one item per ticket with what happened, who did it and
    when. rtfc account add <name> --type jira --url … --login … stores a token typed with
    hidden input in a private file; a project's .claude/rtfc.local.json lists its
    subscriptions (account, JQL, events); rtfc sources approve, or /rtfc:sources-approve,
    lets them start polling; rtfc sources and the new sources tool show them and their
    health. Events: assigned, mentioned, status_changed, comment_on_mine; your own
    actions never notify you.
  • Source items in the inbox: inbox_list shows them as kind source with title, ticket
    and link; inbox_open wraps them as <source_item untrusted="true"> with their recent
    events; inbox_dismiss clears them, and a dismissed ticket that moves again comes back
    with its history. The status line shows 🎫 N for the project you are in and
    ⚠ rtfc: N pending while a subscription waits for approval.
  • rtfc project forget <dir> stops polling a project and removes its source items.
  • rtfc account list and rtfc account remove <name>.
  • Confluence Cloud as a source: rtfc account add <name> --type confluence …, and a
    subscription with an optional space key and cql clause. Comments by other people on
    pages you created or watch (comment_on_mine), replies to your comments (reply_to_me)
    and comments that mention you (mentioned) land as one item per page, shown as 📄 N in
    the status line.
  • Session mode for source items: a subscription with "mode": "session" pushes each new
    item into the Claude Code session open in its project, behind the same gate as a
    contact's message. Claude gives the gist and asks one question with the actions it sees
    plus "Nothing to do"; the one you pick is confirmed with Accept or Decline, and no tool
    runs before that. An item Claude finds nothing to do about is dismissed with a note and
    stays listed. At most twenty pushes an hour per subscription; with no session open in the
    project the item waits and says so.

Changed

  • inbox_reply refuses source items with source_item: rtfc never writes to Jira,
    Confluence or Bitbucket. Acting on a ticket happens with the tools your session already
    has.
  • The database schema is version 6 (accounts.login, accounts.account_id); older files
    migrate on open.

rtfc 0.7.1

Choose a tag to compare

@github-actions github-actions released this 29 Sep 14:44

Fixed

  • A message sent the instant a session opened could fail with closed_before_ack when the
    receiver was slow to read the hello: the receiving side lost the first bytes of the frame
    behind it and dropped the session. The hello now goes through the session's own reader,
    so nothing behind it is lost.
  • A problem recording the addresses a contact sends in its hello no longer closes the
    session; the message still arrives, and the problem is logged.

rtfc 0.7.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 14:15

Phase 3, beyond the office: contacts on a VPN or Tailscale.

Added

  • rtfc hints (and /rtfc:hints) shows the addresses your invites tell people to
    connect to, and add, remove and auto change them: add a VPN address or a Tailscale
    name, drop one nobody can reach, or go back to auto-detection. Changes apply to the running
    daemon at once and go into new invites.
  • Contacts refresh each other's addresses whenever they talk. Every session's hello now
    carries the sender's hints, so a contact who moves to a VPN is reachable the next time
    either side sends, with no new invite.
  • rtfc contacts shows each device's hints.

Changed

  • All of a device's addresses are tried at once, a quarter second apart, and the first to
    answer wins. They used to be tried one after another with a three-second timeout each, so a
    contact's office address timed out before their VPN address was tried, and the "who's home"
    check called them away.
  • Auto-detected hints no longer include link-local addresses (169.254.x.x, one per idle
    adapter on Windows) or loopback, each of which cost contacts a connection attempt.

A 0.6.x daemon ignores the hints in a hello and keeps working; the wire protocol stays at
version 1.