feat: add personal Soul Dashboard with gateway server (#317) - #318
Open
sshekhar563 wants to merge 4 commits into
Open
sshekhar563 wants to merge 4 commits into
sshekhar563 wants to merge 4 commits into
Conversation
- 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
- 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
.soulfile 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 withrun()entry pointDashboard features
localStorage, no flash on loadtto cycle theme,1-6for tabs).textContent, neverinnerHTMLTests (
tests/test_gateway/)test_dashboard.py— 13 tests covering HTML rendering, theme, tabs, API data bindingtest_app.py— API endpoint teststest_proxy.py— proxy/routing testsHow it works
Files changed
src/soul_protocol/gateway/__init__.pysrc/soul_protocol/gateway/app.pysrc/soul_protocol/gateway/_dashboard.pytests/test_gateway/test_app.pytests/test_gateway/test_dashboard.pytests/test_gateway/test_proxy.pyNo existing files were modified. Website is untouched.