Skip to content

feat: cinematic Arabic JARVIS globe dashboard - #1

Open
kiven09-coder wants to merge 3 commits into
mainfrom
claude/jarvis-claude-toolkit-lhnkph
Open

kiven09-coder wants to merge 3 commits into
mainfrom
claude/jarvis-claude-toolkit-lhnkph

Conversation

@kiven09-coder

Copy link
Copy Markdown
Owner

نظرة عامة

لوحة قيادة على طريقة J.A.R.V.I.S — كل الواجهة والصوت بالعربي المصري (RTL). ملف واحد قائم بذاته (Canvas + CSS، من غير أي مكتبات خارجية) موصول بسيرفر كيفن الحالي.

افتحها من داخل السيرفر على: http://localhost:8000/dashboard

What changed

dashboard.html (new) — the cinematic command center:

  • Animated glowing cyan energy sphere: ~680 points on a tilted, slowly rotating 3D sphere (Fibonacci distribution), a bright pulsing core, and a soft radial glow.
  • Tilted elliptical orbital ring with an orbiting marker, three dashed HUD arcs rotating at different speeds, faint radial rays, and an outer tick ring.
  • Retina-aware canvas + requestAnimationFrame. The sphere breathes when idle and pulses harder/faster while speaking (synthetic speech envelope, works offline).
  • Arabic RTL HUD: title, greeting, live ticking clock (Arabic day/month names), connector status list (green = online, amber blinking = offline), streaming activity log, stat bars, big figures, an amber payment-due chip, a scrolling ticker, and the لخّص لي / أبدا بإيه؟ / mic buttons.
  • Scanlines + vignette for the cinematic look.

Voice & text — all Arabic:

  • Mic button records → POST /api/transcribe (Whisper ar) → POST /api/chat → POST /api/speak (Edge-TTS Arabic voice), with the sphere pulsing during playback.
  • لخّص لي plays jarvis_brief.mp3 if present, otherwise speaks a live Arabic brief built from the data file.
  • أبدا بإيه؟ asks Kevin live for a two-sentence Arabic recommendation.
  • Live connector status for Claude/Gemini is synced from /api/status.

jarvis_data.js (new) — the day-to-day data file (window.JARVIS_DATA): Arabic greeting, connectors, content funnel, sponsors, priorities, big figures, payment-due, ticker. This is the only file you edit day to day.

kevin.py:

  • GET /dashboard — serves the dashboard, gated behind the existing session cookie (redirects to /login when unauthenticated).
  • GET /jarvis_data.js — served fresh each request (Cache-Control: no-store) so the data file can be edited without restarting the server.
  • Startup banner now prints the dashboard URL.

Verification

  • python -c "ast.parse(...)" on kevin.py — syntax OK.
  • jarvis_data.js parses and exposes all expected keys.
  • Rendered dashboard.html in headless Chromium against a static server: globe animation and full Arabic RTL HUD render with no JS errors from the page. API-backed buttons degrade gracefully to Arabic messages when no backend is present.

Note: the dashboard's live voice/chat features require running it from within the Kevin server (/dashboard) so the auth cookie and /api/* endpoints are available. Opening the raw file shows the visuals but the voice loop needs the server.

🤖 Generated with Claude Code


Generated by Claude Code

…abic)

Add a self-contained command-center dashboard, fully Egyptian-Arabic and RTL:

- dashboard.html: animated cyan energy sphere (~680 Fibonacci points on a
  tilted, rotating 3D sphere, pulsing core, radial glow), tilted orbital ring
  with orbiting marker, three dashed HUD arcs, radial rays, outer tick ring.
  Retina-aware canvas + requestAnimationFrame; the sphere breathes when idle
  and pulses harder/faster while speaking. Arabic HUD: title, greeting, live
  clock (Arabic day/month), connector LEDs (green online / amber blinking
  offline), streaming activity log, stat bars, big figures, amber payment
  chip, scrolling ticker, and لخّص لي / أبدا بإيه؟ / mic buttons.
  Voice loop is fully Arabic: mic -> /api/transcribe -> /api/chat ->
  /api/speak (Edge-TTS Arabic voice), with the sphere pulsing during speech.
- jarvis_data.js: the day-to-day data file (window.JARVIS_DATA) with Arabic
  greeting, connectors, funnel, sponsors, priorities, figures, ticker.
- kevin.py: serve /dashboard (auth-gated) and /jarvis_data.js (read fresh
  each request so the data file can be edited without a restart); add a
  startup hint pointing to the dashboard URL.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YPasFsj82EJrddmHrEbHmL
@kiven09-coder
kiven09-coder marked this pull request as ready for review July 16, 2026 08:53
claude added 2 commits July 16, 2026 09:49
hmac.compare_digest raises "comparing strings with non-ASCII characters
is not supported" when either operand is a str containing non-ASCII
characters, so logging in with an Arabic KEVIN_PASSWORD returned a 500.
Compare the submitted password and KEVIN_PASSWORD as UTF-8 bytes, which
keeps the constant-time comparison and accepts Unicode passwords.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YPasFsj82EJrddmHrEbHmL
On silent/short/noisy mic audio Whisper often returns a single word or
phrase looped many times (e.g. "أعرف أعرف أعرف ..."), which was being
sent straight to the LLM and produced confused replies. Detect looped
output (one token >=50% of words, or very low lexical variety for the
length) on the raw transcription and reject it with a friendly Arabic
hint to try again, then collapse any remaining immediate stutters.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YPasFsj82EJrddmHrEbHmL
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.

2 participants