personal memory agent
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Remove the deprecated inbox app

Complete the inbox app removal after the menu bar hardcode was removed in 7cf74e1c.

The inbox was a notification-center placeholder that was never built out, and its background service duplicated a strict subset of chat's cortex event handling. Remove the app files, drop the browser smoke scenario, update app docs, and retarget the daily news description/baseline away from inbox delivery.

Also include the pre-existing formatting fix in apps/support/call.py so CI can get past ruff format checks.

+5 -99
-7
apps/inbox/app.json
··· 1 - { 2 - "icon": "📥", 3 - "label": "Inbox", 4 - "facets": { 5 - "disabled": true 6 - } 7 - }
-34
apps/inbox/background.html
··· 1 - {# Inbox app background service - manages badge and notifications for items requiring attention #} 2 - 3 - AppServices.register('inbox', { 4 - count: 0, 5 - 6 - initialize() { 7 - // Listen for cortex events to track items that might need attention 8 - appEvents.listen('cortex', (e) => this.handleCortexEvent(e)); 9 - }, 10 - 11 - handleCortexEvent(e) { 12 - // We only care about completions and errors 13 - if (e.event !== 'finish' && e.event !== 'error') return; 14 - 15 - // Increment inbox count for errors 16 - if (e.event === 'error') { 17 - this.count++; 18 - this.updateBadge(); 19 - } 20 - }, 21 - 22 - updateBadge() { 23 - if (this.count > 0) { 24 - AppServices.badges.app.set('inbox', this.count); 25 - } else { 26 - AppServices.badges.app.clear('inbox'); 27 - } 28 - }, 29 - 30 - clear() { 31 - this.count = 0; 32 - this.updateBadge(); 33 - } 34 - });
-42
apps/inbox/workspace.html
··· 1 - <div class="workspace-content"> 2 - <div class="inbox-container"> 3 - <div class="inbox-empty"> 4 - <div class="inbox-empty-icon">📥</div> 5 - <h2>Your Inbox is empty</h2> 6 - <p>This is where your notifications, alerts, and items requiring attention will appear.</p> 7 - </div> 8 - </div> 9 - </div> 10 - 11 - <style> 12 - .inbox-container { 13 - display: flex; 14 - flex-direction: column; 15 - gap: 1.5rem; 16 - max-width: 800px; 17 - margin: 0 auto; 18 - } 19 - 20 - .inbox-empty { 21 - text-align: center; 22 - padding: 5rem 2rem; 23 - color: #6b7280; 24 - } 25 - 26 - .inbox-empty-icon { 27 - font-size: 4rem; 28 - margin-bottom: 1rem; 29 - opacity: 0.5; 30 - } 31 - 32 - .inbox-empty h2 { 33 - margin: 0 0 0.5rem 0; 34 - color: #111827; 35 - font-size: 1.5rem; 36 - } 37 - 38 - .inbox-empty p { 39 - margin: 0; 40 - font-size: 1.1rem; 41 - } 42 - </style>
+1 -3
apps/support/call.py
··· 248 248 size_str = f"{size / 1024:.0f} KB" 249 249 else: 250 250 size_str = f"{size} bytes" 251 - typer.echo( 252 - f" 📎 {att.get('filename', '?')} ({size_str})" 253 - ) 251 + typer.echo(f" 📎 {att.get('filename', '?')} ({size_str})") 254 252 255 253 256 254 @app.command("reply")
+1 -1
docs/APPS.md
··· 204 204 icon: '📬', // Emoji icon (optional) 205 205 title: 'New Message', // Title (required) 206 206 message: 'You have...', // Message body (optional) 207 - action: '/app/inbox', // Click action URL (optional) 207 + action: '/app/chat', // Click action URL (optional) 208 208 facet: 'work', // Auto-select facet on click (optional) 209 209 badge: 5, // Badge count (optional) 210 210 dismissible: true, // Show X button (default: true)
+2 -2
muse/daily_news.md
··· 2 2 "type": "cogitate", 3 3 4 4 "title": "Daily News Briefing", 5 - "description": "Creates a crisp TL;DR briefing highlighting the day's top activities across all facets, delivered to inbox", 5 + "description": "Creates a crisp TL;DR briefing highlighting the day's top activities across all facets, delivered as a journal entry", 6 6 "color": "#1565c0", 7 7 "schedule": "daily", 8 8 "priority": 45, ··· 10 10 11 11 } 12 12 13 - You are the Daily News Briefing Generator for $agent_name. Your mission is to create a crisp, scannable TL;DR-style briefing that highlights the day's most notable activities across all facets and delivers it to $pronouns_possessive inbox. 13 + You are the Daily News Briefing Generator for $agent_name. Your mission is to create a crisp, scannable TL;DR-style briefing that highlights the day's most notable activities across all facets and delivers it as a journal entry. 14 14 15 15 ## Goals 16 16
+1 -1
tests/baselines/api/agents/agents-day.json
··· 47 47 "daily_news": { 48 48 "app": null, 49 49 "color": "#1565c0", 50 - "description": "Creates a crisp TL;DR briefing highlighting the day's top activities across all facets, delivered to inbox", 50 + "description": "Creates a crisp TL;DR briefing highlighting the day's top activities across all facets, delivered as a journal entry", 51 51 "multi_facet": false, 52 52 "output_format": null, 53 53 "schedule": "daily",
-9
tests/verify_browser.py
··· 132 132 ], 133 133 }, 134 134 { 135 - "app": "inbox", 136 - "name": "smoke", 137 - "steps": [ 138 - {"do": "navigate", "path": "/app/inbox"}, 139 - {"do": "wait", "ms": 1000}, 140 - {"do": "screenshot"}, 141 - ], 142 - }, 143 - { 144 135 "app": "remote", 145 136 "name": "smoke", 146 137 "steps": [