68ab3ecd8ca4e57062083edb99ad6e5f4683e629
Add subtle shield icon button next to send button in chat input area. Opens the same 5-field safety plan modal as the crisis overlay button. - Button: #chat-safety-plan-btn with shield SVG icon - ARIA: aria-label='Open My Safety Plan', title='My Safety Plan' - CSS: subtle border, hover/focus blue highlight, 44x44px touch target - JS: click handler calls loadSafetyPlan(), activates focus trap - Focus trap: returns focus to chat button when modal closes - Tests: 10 new tests verifying DOM, ARIA, CSS, JS, accessibility Acceptance criteria: 1. ✓ Subtle safety plan icon in chat input area (always visible) 2. ✓ Opens same 5-field safety plan modal 3. ✓ Does NOT require crisis detection 4. ✓ Keyboard navigable (focus trap, return focus), screen reader friendly (aria-label)
The Door
A single URL where a man at 3am can talk to Timmy. No login. No signup. No tracking. Just a door that's always open.
Mission
Stand between a broken man and a machine that would tell him to die.
What This Is
- index.html — The entire frontend. One file. <25KB. Works on 3G.
- system-prompt.txt — The crisis-aware system prompt for Timmy.
- deploy/ — nginx config and deployment script for the VPS.
Architecture
Browser → nginx (SSL) → static HTML → /api/* proxy → Hermes Gateway
Crisis Features
- 988 Suicide & Crisis Lifeline banner (always visible, click-to-call)
- Client-side crisis keyword detection
- Full-screen 988 overlay for explicit intent
- Crisis-aware AI responses per SOUL.md
- Offline fallback with static crisis resources
Quick Deploy
ssh root@67.205.155.108
cd /opt/the-door
bash deploy/deploy.sh
Links
- 📞 988 Suicide & Crisis Lifeline — call or text 988
- 💬 Crisis Text Line — text HOME to 741741
- ⛓️ SOUL.md — Timmy's soul, inscribed on Bitcoin
Built by a man who survived his darkest night, for the man who's in his right now.
Sovereignty and service always.
Languages
Python
64.3%
HTML
26.4%
Shell
7.2%
JavaScript
1.4%
Makefile
0.7%