feat: cinematic Arabic JARVIS globe dashboard - #1
Open
kiven09-coder wants to merge 3 commits into
Open
kiven09-coder wants to merge 3 commits into
kiven09-coder wants to merge 3 commits into
Conversation
…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
marked this pull request as ready for review
July 16, 2026 08:53
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
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.
نظرة عامة
لوحة قيادة على طريقة J.A.R.V.I.S — كل الواجهة والصوت بالعربي المصري (RTL). ملف واحد قائم بذاته (Canvas + CSS، من غير أي مكتبات خارجية) موصول بسيرفر كيفن الحالي.
افتحها من داخل السيرفر على:
http://localhost:8000/dashboardWhat changed
dashboard.html(new) — the cinematic command center:requestAnimationFrame. The sphere breathes when idle and pulses harder/faster while speaking (synthetic speech envelope, works offline).لخّص لي/أبدا بإيه؟/ mic buttons.Voice & text — all Arabic:
POST /api/transcribe(Whisperar) →POST /api/chat→POST /api/speak(Edge-TTS Arabic voice), with the sphere pulsing during playback.لخّص ليplaysjarvis_brief.mp3if present, otherwise speaks a live Arabic brief built from the data file.أبدا بإيه؟asks Kevin live for a two-sentence Arabic recommendation./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/loginwhen unauthenticated).GET /jarvis_data.js— served fresh each request (Cache-Control: no-store) so the data file can be edited without restarting the server.Verification
python -c "ast.parse(...)"onkevin.py— syntax OK.jarvis_data.jsparses and exposes all expected keys.dashboard.htmlin 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.🤖 Generated with Claude Code
Generated by Claude Code