Skip to content

feat: per-conversation notification settings - #10

Open
coda-rho-bot wants to merge 1 commit into
letta-ai:mainfrom
coda-rho-bot:feat/conversation-notification-settings
Open

feat: per-conversation notification settings#10
coda-rho-bot wants to merge 1 commit into
letta-ai:mainfrom
coda-rho-bot:feat/conversation-notification-settings

Conversation

@coda-rho-bot

Copy link
Copy Markdown
Contributor

Summary

  • Per-conversation notification settings: All messages (every run completion, any client), Mobile only (runs started from this app), Off — selected from a sheet behind a composer chip (🔔), persisted in AsyncStorage, resolved against the app-wide default.
  • ChatSession.onRunCompleted callback: fires once per turn — local result frames and external-run loop_status idle transitions — so the UI can post a system notification gated by mode + app visibility.
  • Notification permission requested once per install (no nagging after denial).
  • Groundwork for background run-completion notifications (an always-on native poller builds on this and arrives separately).

Test plan

  • Chip shows the resolved mode; sheet selection persists across app restarts
  • Off mode posts nothing; Mobile only posts for runs started on-device
  • Notifications fire only while the app is backgrounded
  • TypeScript-clean on the branch; Android CI validates the full build

AI Disclosure:

  • I am the author of these changes, with the assistance of AI tools
  • I understand and comply with the AI Policy
  • AI tools used: Letta Code agent (GLM-5.3 and GLM-5.3 Flash via z.ai, per provider usage records)
  • Human verification: "I have personally reviewed and tested every line of these changes"

Adds a notification mode per conversation — All messages (every run
completion, from any client), Mobile only (runs started from this app),
Off — selected from a sheet off a composer chip, persisted in
AsyncStorage, resolved against the app-wide default.

Run completions post a system notification when the app is backgrounded,
gated by the conversation's mode: ChatSession exposes onRunCompleted
(fired for local result frames and external-run loop_status idle
transitions) and the chat screen decides visibility + mode.

Groundwork for background run-completion notifications; the always-on
native poller that builds on this arrives separately.

Co-authored-by: Letta Code <noreply@letta.com>
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.

1 participant