Skip to content

feat(app): fold channels idle for 6 hours into an Inactive group - #126

Merged
iamnbutler merged 1 commit into
mainfrom
lucid-beacon/inactive-channels-group
Oct 5, 2026
Merged

iamnbutler merged 1 commit into
mainfrom
lucid-beacon/inactive-channels-group

Conversation

@iamnbutler

Copy link
Copy Markdown
Contributor

Closes #125.

Channels whose transcript hasn't grown for 6 hours now move out of Channels/Team into an Inactive group, collapsed by default and placed above Archived. They come back as soon as someone posts or an agent works in them again.

  • channel: Channel subscribes to pi commits and calls a new onActivity(at) hook when a commit adds a transcript entry. That covers messages, agent replies, and tool results. It publishes at most once every 5 minutes because inactivity is measured in hours.
  • host: the worker saves this as active in channel.json. The catalog watcher already rebroadcasts on that write, so clients and the directory pick it up. Hosted channels send it to their workspace host as a { active } workspace message. Listing.active is optional, so an older host simply omits it.
  • app: rows are grouped by active || created, and a one-minute clock moves rows into Inactive without needing a broadcast. lastActivityAt now uses the same value.

The new field is optional, so the catalog format version doesn't change. Older builds ignore it. A channel created before this change has no active until it next gets an entry, so it is grouped by its creation time until then.

Testing

I ran a real ace serve against a throwaway ACE_HOME, used ace say on real workers, and viewed the built app in headless Chrome.

  • channel.json gained active on the first entry. A second say straight after left it unchanged (throttled). The gateway's Listing included it.
  • I backdated old-one (active 7h ago) and legacy (no active, created 9h ago). Both appeared under a collapsed Inactive group; expanding it showed both. smoke stayed under Channels.
  • After ace say old-one …, old-one moved back to Channels live, with no reload.
  • bun types and bun run ci pass.

Built in Ace

The code, commands, and GitHub work were done by an Ace agent in an Ace channel. Two tools outside Ace were used for the UI check:

Both apps were closed afterwards.

@iamnbutler
iamnbutler merged commit fb53aba into main Oct 5, 2026
1 check failed
@iamnbutler
iamnbutler deleted the lucid-beacon/inactive-channels-group branch October 5, 2026 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fold channels idle for 6 hours into an Inactive sidebar group

1 participant