Skip to content

Fix requirements.txt encoding + macOS/Linux compatibility#13

Open
aligulzarvohra wants to merge 5 commits into
FatihMakes:mainfrom
aligulzarvohra:fix-requirements-macos-compat
Open

Fix requirements.txt encoding + macOS/Linux compatibility#13
aligulzarvohra wants to merge 5 commits into
FatihMakes:mainfrom
aligulzarvohra:fix-requirements-macos-compat

Conversation

@aligulzarvohra

@aligulzarvohra aligulzarvohra commented Apr 23, 2026

Copy link
Copy Markdown

Summary

Transforms Jarvis-MK37 into A.L.I — macOS-native voice assistant with space UI, wake word daemon, passive mode, multi-task queue, and award-quality website builder.

Security

  • memory/long_term.json removed from tracking (contained private session data)
  • .gitignore added: blocks config/api_keys.json, memory/*.json, .wake_signal
  • All personal data stays local only

Features

  • Fullscreen space HUD (tkinter)
  • LaunchAgent daemon — wakeword.py auto-starts at login
  • Passive mode — 60s silence = stop streaming to Gemini
  • 6 layout variants for website builder (cinematic, editorial, brutalist, kinetic, luxury_minimal, immersive_dark)
  • Industry-specific reference sites (Ferrari/Gucci/Rolex etc.) screenshotted and analyzed
  • HTTP 200 verification before declaring website done

🤖 Generated with Claude Code

Ali Ahmad and others added 5 commits April 23, 2026 16:13
- Rewrote requirements.txt from UTF-16 to UTF-8 (was unreadable by pip)
- Removed Windows-only packages (comtypes, pycaw, win10toast, pywinauto)
  that caused install failures on macOS/Linux
- Added pyproject.toml and uv.lock for reproducible installs via uv
- Added .python-version pinning Python 3.12+ (code uses 3.10+ syntax)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…lder

Major overhaul personalising Jarvis-MK37 for Ali Ahmad and adding
several new capabilities needed to run reliably on macOS without Homebrew.

Identity & branding
- Rename assistant from Jarvis/Fatih → A.L.I (Autonomous Linked Intelligence)
- Fix long_term.json: stored name was "Sia" → corrected to Ali Ahmad
- All log lines, UI labels, and system prompt updated to A.L.I / Ali

UI (ui.py)
- Full rewrite: fullscreen space-themed HUD (tkinter canvas)
- 280 twinkling stars, 5 nebula clouds, animated orbital rings around centre orb
- Live system stats panel (CPU / memory / disk / network via psutil)
- Conversation log panel with colour-coded entries
- ESC = exit fullscreen, F11 = re-enter, F4 = mute toggle

Wake word (wakeword.py)
- sounddevice-based VAD (no pyaudio / no Homebrew required)
- Calibrates ambient noise threshold on startup (3.5x RMS, min 0.004)
- Background Google Speech Recognition thread
- Writes .wake_signal file when main.py is already running to trigger
  passive-mode exit without relaunching a second process
- 1.5s capture window for short phrases ("Ali", "Hey Ali")

Passive mode (main.py)
- After 60s of user silence, mic audio stops being forwarded to Gemini
- Wakes instantly on .wake_signal file or text box input
- Passive state shown in UI status bar

Multi-task queue (main.py + task_queue tool)
- Persistent pending_tasks.json in memory/
- task_queue tool: add / list / done / clear
- System prompt instructs Ali to queue all tasks then execute sequentially

Website builder (actions/website_builder.py)
- Playwright headless browser visits awwwards.com, screenshots gallery
- Gemini Vision analyzes screenshots for design brief (colours, typography,
  animations, layout patterns)
- Gemini generates full HTML/CSS/JS with GSAP ScrollTrigger, custom
  magnetic cursor, product cards with 3D tilt, grain texture, Google Fonts
- Files written to ~/Desktop/ali_sites/<topic>/
- Local HTTP server + auto-open in browser
- Timestamped build_log.txt; show_build_log tool for progress visibility
- Premium hand-coded fallback template if Gemini output is malformed

Audio improvements (main.py)
- CHUNK_SIZE 1024 -> 4096 to reduce mid-sentence gaps
- Pre-buffer 3 chunks before playback with latency=low
- Fixed dangling set_speaking(True) call in _play_audio loop

macOS compatibility
- Gemini model updated to gemini-2.5-flash-native-audio-latest
- requirements.txt re-encoded UTF-8, Windows-only packages removed
- start.sh: launches wakeword.py in background, traps EXIT to clean up
- Bluetooth / AirPods support added to computer_settings.py

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove memory/long_term.json from tracking (contained private info)
- Add .gitignore blocking api_keys.json, memory/*.json, .wake_signal
- install_daemon.sh: LaunchAgent so wakeword.py auto-starts at login
- website_builder: 6 genuinely different layout variants (cinematic,
  editorial, brutalist, kinetic, luxury_minimal, immersive_dark)
  randomly selected per build — ensures every site looks different
- Each build saves to timestamped directory so nothing is overwritten
- Gemini prompt strictly enforces the chosen layout structure
- core/prompt.txt: updated tool routing for new capabilities

Co-Authored-By: Claude Sonnet 4.6 <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