Repository navigation
Releases: a7ex-turcan/rtfc
Release list
rtfc 0.12.1
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 showingin
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
Added
rtfc statusline install, or/rtfc:statuslinein a session, adds the rtfc status line to
Claude Code's settings, so you no longer edit~/.claude/settings.jsonby 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 uninstalltakes it out again.rtfc initmentions 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 addandremoveadjust the detected addresses instead of freezing them. Adding
a host used to copy whatever was detected that day intohintHostsinconfig.json, so a
later DHCP lease left contacts dialling an address you no longer had. Added and removed
hosts now live inextraHintHostsandskipHintHosts, and the rest follows your machine.
Ifrtfc hintssays your hints were set by hand and you did not mean that,rtfc hints auto
returns to detection.rtfc init --hint-hostand a hand-writtenhintHostsstill 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
Added
- What arrived while no session was there is offered when one opens. A source item in
sessionmode 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
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 onrtfcd.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
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;offremoves 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 runleaves an already running daemon alone instead of taking its socket.rtfc daemon statussays when the daemon is always on.
rtfc 0.9.1
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,SessionEndand 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
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 ascomment_on_mine,
approved,changes_requested,merged,status_changedandbuild_failed_on_mine;
replies to your comments and comments naming you asreply_to_meandmentioned. One
item per pull request, shown as🔀 Nin the status line.
Changed
/rtfc:inboxshows 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:sourcesexplains 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
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.jsonlists its
subscriptions (account, JQL, events);rtfc sources approve, or/rtfc:sources-approve,
lets them start polling;rtfc sourcesand the newsourcestool 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_listshows them as kindsourcewith title, ticket
and link;inbox_openwraps them as<source_item untrusted="true">with their recent
events;inbox_dismissclears them, and a dismissed ticket that moves again comes back
with its history. The status line shows🎫 Nfor the project you are in and
⚠ rtfc: N pendingwhile a subscription waits for approval. rtfc project forget <dir>stops polling a project and removes its source items.rtfc account listandrtfc account remove <name>.- Confluence Cloud as a source:
rtfc account add <name> --type confluence …, and a
subscription with an optionalspacekey andcqlclause. 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📄 Nin
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_replyrefuses source items withsource_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
Fixed
- A message sent the instant a session opened could fail with
closed_before_ackwhen 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
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, andadd,removeandautochange 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
hellonow
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 contactsshows 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.