Skip to content

feat: add personal Soul Dashboard with gateway server (#317) - #318

Open
sshekhar563 wants to merge 4 commits into
qbtrix:devfrom
sshekhar563:feat/dashboard-v2
Open

sshekhar563 wants to merge 4 commits into
qbtrix:devfrom
sshekhar563:feat/dashboard-v2

Conversation

@sshekhar563

Copy link
Copy Markdown
Collaborator

Summary

Adds a personal Soul Dashboard — a browser-based UI that visualizes any soul's data in real time. Each user who starts the gateway with their own .soul file sees their own dashboard. Zero hardcoded values.

Closes #317

What's included

Gateway server (src/soul_protocol/gateway/)

  • app.py — lightweight HTTP server with REST API endpoints (/api/identity, /api/stats, /api/memories, /api/personality, /api/skills, /api/evolution, /api/communication, /api/evaluations, /api/self-model, /api/trust-chain, /api/metadata)
  • _dashboard.py — single-file HTML/CSS/JS dashboard served at /dashboard
  • __init__.py — package init with run() entry point

Dashboard features

  • 6 tabs: Overview, Memory, Personality, Skills, Evolution, Communication
  • Theme system: Auto / Light / Dark — saved in localStorage, no flash on load
  • Charts: OCEAN personality radar, memory timeline, emotion distribution
  • Interactive: Memory search & detail dialog, trust chain action filters, keyboard shortcuts (t to cycle theme, 1-6 for tabs)
  • Auto-refresh every 30s with manual refresh button
  • XSS-safe: all dynamic content uses .textContent, never innerHTML

Tests (tests/test_gateway/)

  • test_dashboard.py — 13 tests covering HTML rendering, theme, tabs, API data binding
  • test_app.py — API endpoint tests
  • test_proxy.py — proxy/routing tests

How it works

User starts gateway with their .soul file
  → GET /dashboard serves the UI
  → JS fetches /api/* endpoints
  → Server reads from the loaded soul's data
  → Dashboard renders that user's personal data

Files changed

File Change
src/soul_protocol/gateway/__init__.py New
src/soul_protocol/gateway/app.py New
src/soul_protocol/gateway/_dashboard.py New
tests/test_gateway/test_app.py New
tests/test_gateway/test_dashboard.py New
tests/test_gateway/test_proxy.py New

No existing files were modified. Website is untouched.

- Add gateway server (app.py) with REST API endpoints that serve
  data from whatever .soul file is loaded at startup
- Add full-featured dashboard (_dashboard.py) with 6 tabs:
  Overview, Memory, Personality, Skills, Evolution, Communication
- Light/Dark/Auto theme with localStorage persistence
- OCEAN personality radar chart, memory timeline, trust chain viewer
- All content is dynamic per-soul (zero hardcoded values)
- XSS-safe: all dynamic text uses textContent, not innerHTML
- Add comprehensive test suite (test_app, test_dashboard, test_proxy)
- 13 tests passing
sshekhar563 and others added 3 commits October 1, 2026 10:37
- Run ruff format on __init__.py, app.py, test_proxy.py
- Make AutoObserveMiddleware import conditional with inline fallback
  so the gateway works standalone when auto_observe.py is not yet
  on the target branch
…l pages

- Overview: full-width layout, Top Memories and Top Skills panels, Bond
  panel shows stage, next stage and interaction count, State panel shows
  mood, focus and lifecycle
- Title-case static labels and dynamic values (values, archetype, skills,
  traits, trust chain actions)
- Subtle color and width transitions, disabled under prefers-reduced-motion
- Serve favicon at /favicon.svg and /favicon.ico
- Add /privacy and /terms pages (gateway/_legal.py), linked from the sidebar
- Add /observe Claude Code skill for recording decisions via soul_observe
- Tests for favicon and legal routes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.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