ModsCodeMERGEBLE LLC Search Claude Code Mods

ModsCode / Gallery / Designs / Activity feed

Activity feed

Newest-first agent activity in Box and Text: muted ages, plain actors and verbs, subtle targets, a failed step in error.

Activity feedActivity feed
Work and agents · 380×218 · sample data
hooks/designs/activity-feed.mjs
// activity-feed: what a team of agents did in the last hour, newest first, as Box and Text only.
// Fixed columns so every row lines up in a monospace face: age 5 (muted, padded on the right), actor
// 9 and verb 11 plain, and the target in the last 23, subtle, so the eye reads who and what before
// where. Actors are not in the claude colour: ten orange names would be ten accents and drown the one
// failed row, which takes error on its verb and target and is the only colour on the page.
// 10 rows across 4 agents and the lead, 1 failed; the footer is counted from the rows.
// Same frame as the other text designs: bold subject, muted SAMPLE at column 48, muted summary last.
// Sample data only.
const HEAD = 'Activity, last hour'
const WIDTH = 48
const TAG = 'SAMPLE'
const COL = { age: 5, actor: 9, verb: 11 }

// [age, actor, verb, target]; a verb of 'failed' marks the failed row
const ROWS = [
  ['2m', 'agent-3', 'edited', 'src/app.ts'],
  ['3m', 'agent-1', 'ran', 'npm test, 42 passed'],
  ['5m', 'agent-2', 'read', 'CLAUDE.md'],
  ['8m', 'agent-4', 'failed', 'tsc, 3 errors in api.ts'],
  ['11m', 'agent-1', 'created', 'src/budget.ts'],
  ['14m', 'lead', 'assigned', 'task #42 to agent-2'],
  ['19m', 'agent-2', 'committed', 'a1c9e3f fix retry'],
  ['26m', 'agent-3', 'edited', 'test/pool.spec.ts'],
  ['34m', 'lead', 'compacted', 'context 71% to 18%'],
  ['52m', 'agent-4', 'pushed', 'main, 3 commits'],
]
const FAILED = ROWS.filter(r => r[2] === 'failed').length

export default {
  id: 'activity-feed',
  title: 'Activity feed',
  category: 'work',
  description: 'Newest-first agent activity in Box and Text: muted ages, plain actors and verbs, subtle targets, a failed step in error.',
  element: ui => {
    const { Box, Text } = ui
    return Box({
      flexDirection: 'column',
      children: [
        Text({
          key: 'head',
          children: [
            Text({ key: 'name', bold: true, children: [HEAD.padEnd(WIDTH - TAG.length)] }),
            Text({ key: 'tag', dimColor: true, children: [TAG] }),
          ],
        }),
        ...ROWS.map(([age, actor, verb, target], i) => {
          const failed = verb === 'failed'
          return Text({
            key: `r${i}`,
            children: [
              Text({ key: 'a', dimColor: true, children: [age.padEnd(COL.age)] }),
              Text({ key: 'w', children: [actor.padEnd(COL.actor)] }),
              Text({ key: 'v', ...(failed && { color: 'error' }), children: [verb.padEnd(COL.verb)] }),
              Text({ key: 't', color: failed ? 'error' : 'subtle', children: [target] }),
            ],
          })
        }),
        Text({ key: 'sum', dimColor: true, children: [`-- ${ROWS.length} events, ${FAILED} failed --`] }),
      ],
    })
  },
}

To use it in a mod: copy the file to your mod's hooks/designs/ and return its element(ui) from a pane's ui.render. How a pane is built.

Code: PolyForm Noncommercial License 1.0.0: noncommercial use only. Required Notice: Copyright 2026 Haruki Nakada (https://modscode.com).