Repository navigation
Releases: w1th0ut/GravityDesk
Release list
GravityDesk v1.0.2 — Cross-Platform CLI, State Synchronization & Session Persistence
v1.0.2
Major feature and architecture release for GravityDesk — introducing Universal Cross-Platform Host Support (Windows, macOS, Linux), global gravitydesk CLI entrypoint & self-updater (gravitydesk update), bidirectional session state synchronization, and human-readable chat titles in the Desktop GUI!
🌟 What's New in v1.0.2
🌐 1. Universal Cross-Platform Host Engine (Windows, macOS, Linux)
- Dual-Engine Pseudo-Terminal (PTY):
- Windows: High-performance Windows ConPTY powered by
pywinpty. - macOS & Linux: Native Unix POSIX PTY implementation using
pty,termios,fcntl, andselect. - Terminal I/O streaming, ANSI escape rendering, and Ctrl+C interrupt signals work seamlessly across all three major operating systems.
- Windows: High-performance Windows ConPTY powered by
- Cross-Platform Sleep Inhibition:
- Windows: Win32 Power Availability Requests (
ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED). - macOS: Native background
caffeinatedaemon subprocess. - Linux: D-Bus
systemd-inhibitintegration with fallback dummy process.
- Windows: Win32 Power Availability Requests (
- Universal Path Sanitization:
- Validates and resolves directory browsing against detected host root drives (
C:\,D:\on Windows,/and/Volumeson macOS/Linux).
- Validates and resolves directory browsing against detected host root drives (
📦 2. Global CLI Entrypoint & Automated Self-Updater
- Global
gravitydeskTerminal Command:- Packaged via standard
pyproject.toml. - Launch from any terminal window in any folder:
gravitydesk-> Desktop GUI Control Centergravitydesk --headless-> Headless daemon mode (ideal for SSH, Linux VPS, or headless servers)gravitydesk --version-> Displays installed package versiongravitydesk --help-> Comprehensive usage instructions
- Packaged via standard
- Smart Self-Updater (
gravitydesk update):- Built-in updater command that automatically detects the runtime environment:
- Local Git Clone: Executes
git pullfollowed bypip install -e .to refresh dependencies. - Global Pip / Pipx Install: Automatically runs
python -m pip install --upgrade --no-cache-dir git+https://github.com/w1th0ut/GravityDesk.git.
- Local Git Clone: Executes
- CP1252 / UTF-8 safe encoding safeguards prevent terminal crashes on legacy Windows consoles.
- Built-in updater command that automatically detects the runtime environment:
- Centralized User Configuration (
~/.gravitydesk/):- Moves
.env,devices.json, and runtime state files to~/.gravitydesk/across all platforms. - Automatic migration from legacy project-root configuration files.
- Moves
🔄 3. Bidirectional Workspace & Conversation Synchronization
- Host Session State Persistence (
session_state.json):- Active workspace directory and resumed conversation target are automatically persisted to
~/.gravitydesk/session_state.json. - Restarting the host server daemon or rebooting your laptop no longer resets the active session to the default user home root.
- Active workspace directory and resumed conversation target are automatically persisted to
- Client-Side Auto-Sync Handshake:
- When the mobile app connects or re-pairs, it automatically performs an intelligent reconciliation:
- If the host started unconfigured on default workspace, mobile pushes its saved preferences to immediately configure the host.
- If the host already has an active workspace or the user changed directories via the Desktop GUI, mobile instantly reflects the host's authoritative state in real time.
- Eliminates state mismatch between mobile UI chips and host execution runtime.
- When the mobile app connects or re-pairs, it automatically performs an intelligent reconciliation:
💬 4. Human-Readable Chat Titles in Desktop GUI
- Title Resolution Module (
server/conversations.py):- Desktop GUI Control Center now queries Antigravity SQLite (
conversation_summaries.db) and transcript logs to resolve the actual human-readable chat name (e.g.LABELor first prompt preview). - Replaced ambiguous UUID hash strings (e.g.
Chat: 6bbc0d...) with clear, informative titles.
- Desktop GUI Control Center now queries Antigravity SQLite (
🛡️ 5. Hardened Device Access & Clean Architecture
- Strict Device State Lifecycle:
- Revoked devices are permanently expunged from
devices.jsonwhile maintaining an in-memory blocklist (403 Forbidden). Only genuinely authorized devices remain in registered device records.
- Revoked devices are permanently expunged from
- Legacy Favorites Cleanup:
- Completely purged obsolete favorites feature across endpoints, models, and UI for streamlined codebase health.
📦 Downloads & Assets
| File | Description | Target OS |
|---|---|---|
gravitydesk-v1.0.2.apk |
Standalone Android APK build | Android 8.0+ |
Source code (zip / tar.gz) |
Complete host daemon & GUI source code | Windows, macOS, Linux |
🚀 Quick Setup
Host Workstation (Windows, macOS, Linux)
# Install directly via pip:
pip install git+https://github.com/w1th0ut/GravityDesk.git
# Launch Desktop GUI:
gravitydesk
# Or launch Headless CLI:
gravitydesk --headless
# Update anytime:
gravitydesk updateAndroid Mobile App
- Install
gravitydesk-v1.0.2.apkon your Android device. - Ensure both your workstation and Android phone are connected to your Tailscale mesh network.
- Open GravityDesk on mobile, tap Scan QR, and scan the pairing code shown on your host screen.
GravityDesk v1.0.1 — UI/UX Polish & Mobile Stability Patch
v1.0.1
Mobile UI/UX polish and stability update for GravityDesk featuring responsive ASCII art formatting, improved workspace label handling, persistent session restoration, and keyboard transition smoothing.
🌟 What's New in v1.0.1
📱 Mobile UI/UX & Terminal Refinements
-
Compact 36-Char Responsive ASCII Banner:
- Redesigned the terminal welcome banner into a compact 2-line layout (
Gravity/Desk, max 36 characters wide). - Eliminates line-wrapping, overflow, and broken ASCII glyphs across standard mobile viewports (360px–392px).
- Synchronized identically across host daemon (
server/terminal.py), mobile hook (useTerminalSocket.ts), and native terminal view (TerminalView.tsx).
- Redesigned the terminal welcome banner into a compact 2-line layout (
-
Workspace Selection Persistence & Intuitive Default Label:
- Fixed an issue where the folder chip prematurely displayed the host user directory upon initial connection.
- The chip now strictly maintains the clean default label
"Select Folder"until the user explicitly selects a folder via "Select This Folder" or resumes a chat with an attached workspace. - Added persistent
ACTIVE_WORKSPACE_EXPLICITstate in local secure storage, ensuring selected directories persist across screen navigation and app restarts without unexpected resets.
-
Zero-Flicker Tab & Chat Navigation:
- In-memory cache initialization for active conversation and workspace titles, eliminating the brief text-swap animation ("Resume Chat" flickering) when switching between Home and Terminal screens.
-
Keyboard Transition Smoothing:
- Eliminated white background flash on dark theme when the Android soft keyboard appears or dismisses (
backgroundColor: "#0c0c0c"). - Smoothed multiline input resizing behavior during text prompting.
- Eliminated white background flash on dark theme when the Android soft keyboard appears or dismisses (
🖥️ Desktop Host Daemon & Tooling
- Simplified Command Entrypoint:
- Standardized the desktop launcher commands to
python app.py(Desktop GUI) andpython app.py --headless(CLI mode).
- Standardized the desktop launcher commands to
📦 Downloads & Assets
| File | Description | Target OS |
|---|---|---|
gravitydesk-v1.0.1.apk |
Standalone Android APK build | Android 8.0+ |
Source code (zip / tar.gz) |
Complete host daemon & GUI source code | Windows 10 / 11 |
🚀 Quick Setup
- Host PC: Run
pip install -r requirements.txtthenpython app.py. - Android: Install the APK, connect to your Tailscale mesh, and scan the pairing QR code displayed in the Desktop GUI.
GravityDesk v1.0.0 — Official Initial Release
v1.0.0
Self-hosted remote control and live telemetry bridge for Google Antigravity (agy) CLI and Windows developer workstations over encrypted Tailscale WireGuard mesh.
🌟 What's New in v1.0.0
🖥️ Desktop Control Center (Windows 10 / 11)
- Zero-Config Pairing: High-contrast QR code display with 1-click token copy and automatic Tailscale IPv4 detection.
- Instant Revocation: "Reset Pairing Token" immediately cycles the 256-bit cryptographic key and terminates active sessions.
- Windows Taskbar & Titlebar Branding: Native multi-resolution Astro-Orb icon (
logo.ico) with dedicatedAppUserModelID. - Sleep Inhibit: Prevents laptop sleep or suspend during active remote coding sessions via Win32 Power API.
🧠 Antigravity Engine & Live Quota Telemetry
- Active Model Detection: Automatically reads currently active AI model from
settings.json(e.g.,Gemini 3.8 Flash (High)). - Live Quota Monitoring: Background-cached tracking of 5-hour session limits and weekly quotas with exact reset countdowns (
Resets in Xh Ym). - Zero-Flicker Headless Execution: All background subprocesses run with
CREATE_NO_WINDOW, eliminating command prompt flicker on the host workstation.
📱 Android Mobile Companion App
- ConPTY Terminal Streaming: Native ANSI terminal emulation over WebSocket with ring buffer catch-up.
- WhatsApp-Style Input: Auto-expanding multi-line textarea with quick control buttons (
Ctrl+C,Enter). - Voice-to-Text Dictation (Optional): Hands-free audio prompt recording with server-side FFmpeg normalization and speech recognition.
- Multi-Drive Workspace Navigator: Explore and switch project directories across physical drive roots (
C:\,D:\). - Session Resume: Browse and resume historical Antigravity conversations directly from local SQLite storage.
📦 Downloads & Assets
| File | Description | Target OS |
|---|---|---|
gravitydesk-v1.0.0.apk |
Standalone Android APK build | Android 8.0+ |
Source code (zip / tar.gz) |
Complete host daemon & GUI source code | Windows 10 / 11 |
🚀 Quick Setup
- Host PC: Run
pip install -r requirements.txtthenpython gui.py. - Android: Install the APK below, connect to your Tailscale mesh, and scan the pairing QR code displayed in the Desktop GUI.