basecamp / basecamp/openclaw-basecamp
Readings poller silently drops "Mention" and "Chat" entry types — chat mentions and Pings never reach agents
- Dominant language
- TypeScript
- Stars
- 12
- Forks
- 5
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 2
Description
## Environment
- openclaw-basecamp @ main (c35120c)
- OpenClaw 2026.7.1-2, macOS arm64, Node 24
- Regular Basecamp 4 customer account, single service account
## Symptom
Campfire @mentions of the bot and Ping (DM) messages are never delivered to agents. The readings poll advances its cursor and marks the items read, so nothing retries and nothing is logged above debug level. To-dos, assignments, and comments work fine.
## Root cause
`GET /my/readings.json` labels @mention notifications as `type: "Mention"` and Ping/chat entries as `type: "Chat"`. Neither key exists in `READINGS_TYPE_MAP` (src/inbound/normalize.ts), so `normalizeRecordingType` returns undefined and `normalizeReadingsEvent` drops the entry as unknown kind. Cursor still advances (by design, to avoid re-polling), which makes the drop permanent and silent.
Observed live entries:
type = Mention | title = "@mentioned you: ..." | app_url = .../buckets//chats/@
type = Chat | title = "Chat" | app_url = .../buckets//chats/
type = Mention | title = "@mentioned you: ..." | app_url = .../circles/@
## Relation to prior reports
PR #88 (closed unmerged) found the "Chat" half of this plus two Ping delivery bugs (base64 readable_identifier decoding, circle 204 fallback). We applied that patch locally and it holds up. The "Mention" type is additional: it needs the underlying recordable inferred from app_url, since a Mention can point at a chat line, card, todo, message, or document.
## Fix we're running locally
1. PR #88 as-is (Chat mapping, base64 GID decode, Ping transcript fallback).
2. `type: "Mention"` handled by inferring recordable type from app_url (/chats/ → Chat::Line, /cards/ → Kanban::Card, /todos/ → Todo, /messages/ → Message, /documents/ → Document, else Comment), and setting `mentionsAgent: true` since the entry is by definition a mention of the account.
With both, campfire/message-board mentions and Pings deliver and agents reply. All 1172 existing tests pass. Happy to submit this as a PR if useful.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start in src/inbound/normalize.ts at READINGS_TYPE_MAP, normalizeRecordingType, and normalizeReadingsEvent, then inspect the GET /my/readings.json handling and PR #88 changes. Verify Mention and Chat readings are normalized rather than dropped, Pings use the stated fallbacks, and run the existing 1172-test suite to confirm mentions and Pings reach agents.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100