- Add --sync-ssh HOST --sync-source-path PATH to sync sessions from
a remote host without needing to install the script there.
- Key changes:
* ssh_list_dir(): enumerate subdirs only (fixes 'sessions' file in agents/)
* ssh_list_files(): use ls -p to filter directories; strip remote_dir prefix
* ssh_stat_mtime_batch(): single SSH call via Python stdin, works on
both Linux and macOS, avoids xargs command-line length limits
* sync_sessions_via_ssh(): parallel mtime fetch per agent dir, then
SSH-read & parse only new/modified files
* parse_jsonl_content(): shared parser for both local files and SSH content
- Session sync now unified: run from macmini, targets macmini/ubuntu1/ubuntu2.
- Cron sync also updated to use ssh_stat_mtime_batch for efficiency.
- openclaw_daily/apps.py ready(): monkey-patch admin.site.get_urls() to add
daily/ and daily-reports/ URLs under admin namespace (admin: prefix)
- admin_custom_site.py: simplified (no custom site needed)
- Revert urls.py to use default admin.site
- URL now correctly resolves as admin:openclaw_daily_report_detail
- urls.py: add daily/ and daily-reports/ URL patterns directly
- admin_new_views.py: use admin.site.each_context for full admin context
- openclaw_daily apps.py: monkey-patch admin.site.get_app_list to inject
Daily Reports item into sidebar app list (no circular import issues)
- Create openclaw_daily app (no models, just app config)
- Override get_app_list() in OpenClawAdminSite to inject Daily Reports item
- Use get_app_list approach (not nav-sidebar template override)
- Inject at top of app list for visibility
- Create OpenClawAdminSite (openclaw_admin) with Daily Reports menu in sidebar
- Re-register Session/Message/ToolCall with custom site
- Add daily/daily-reports URLs at AdminSite level
- Override admin/index.html template for sidebar item
- Use self.admin_view (not admin.site.admin_view) for site-aware view wrapping
- Clean up admin.py: remove inline URLs from SessionAdmin (now at site level)
- New daily_report_list_view at /admin/openclaw/session/daily-reports/
- Shows (agent, date) combos with message/session counts
- Filter by agent name and date range
- Click date to enter detail page
- New daily_report_detail_view at /admin/openclaw/session/daily-reports/<agent>/<date>/
- Shows all messages for that agent on that date
- Full message content, tool calls, arguments, results
- Session metadata header per session
- Added django.contrib.humanize for intcomma template filter
- Message list now shows agent_name via get_agent_name method
- New scripts/export_agent_daily.py for agent daily message export
- Accepts --agent and --date (YYYY-MM-DD) arguments
- Focuses on messages within target date (session may span multiple days)
- Outputs Markdown with session info, messages, tool calls
Add hypertable migration that only runs on PostgreSQL (no-op for SQLite dev/tests).
Update README with architecture, quick start, and client sync instructions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>