Skip to content

Some QoL + Fixes - #6

Merged
manthanawgan merged 1 commit into
mainfrom
yashio
May 30, 2026
Merged

manthanawgan merged 1 commit into
mainfrom
yashio

Conversation

@Just-Utkarsh

Copy link
Copy Markdown
Collaborator

GUI Overhaul + Backend Fixes

Overview

This PR introduces the Sorelax desktop GUI (sorelax-gui) and resolves several backend reliability issues that were affecting both CLI and GUI operation.


GUI — New Features & Fixes

  • Extended options panel — additional controls exposed in the dashboard for power users
  • Wizard fix — resolved wizard.py flow issues causing incorrect state on first-launch setup
  • Context layout — cleared and reorganized the context panel for readability; cards now render cleanly grouped by source
  • Status fetching — live source status (GitHub / Linear / Slack / Notion) now fetches and updates correctly in the dashboard
  • Terminal linking — GUI panels are now linked to the main terminal output; running sorelax from CLI reflects in the GUI log panel in real time

Backend Fixes

  • Cache collections fix — resolved stale/corrupted cache collection reads that caused incorrect context output
  • Async sleep timer — added sleep timer to the scheduler to fix async race conditions during scheduled refresh cycles
  • Subprocess reliability — improved process lifecycle management; workers now emit proper signals for output, completion, and errors
  • .env handling — more robust reads and writes to prevent partial writes on save

How to Test

  1. pip install -e . then run sorelax-gui
  2. On first launch, step through the Setup Wizard and verify all 4 steps complete cleanly
  3. From the dashboard, trigger a manual refresh and confirm logs stream in real time
  4. Run sorelax refresh from the terminal and verify the GUI log panel picks it up
  5. Toggle the scheduler and verify the sleep timer prevents overlapping runs

Breaking Changes

None. CLI behaviour is unchanged. sorelax-gui is additive.

@Just-Utkarsh Just-Utkarsh self-assigned this May 30, 2026
@Just-Utkarsh Just-Utkarsh added bug Something isn't working enhancement New feature or request labels May 30, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds two user-facing dashboards for Sorelax (a new React “/dashboard” UI in website/ and a new PyQt6 desktop app in gui/), plus wiring to launch the website via a new CLI entrypoint and updated packaging scripts.

Changes:

  • Introduces a new React dashboard section (panels, sidebar/topbar shell, placeholder status hook) routed under /dashboard/*.
  • Adds a PyQt6 desktop GUI (setup wizard + main dashboard) with a backend wrapper for invoking the Sorelax CLI and Coral commands.
  • Adds a sorelax-website script to launch the Vite dev server; updates branding fonts/colors.

Reviewed changes

Copilot reviewed 27 out of 31 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
website/tailwind.config.js Adds IBM Plex Sans and a coral color palette used by the new dashboard UI.
website/src/features/dashboard/types.ts Introduces dashboard type definitions (sections + status shape).
website/src/features/dashboard/panels/SourcesPanel.tsx New dashboard panel for source status (currently static).
website/src/features/dashboard/panels/SettingsPanel.tsx New dashboard panel for settings summary (currently static).
website/src/features/dashboard/panels/LogsPanel.tsx New dashboard panel for refresh logs (mock data).
website/src/features/dashboard/panels/DashboardPanel.tsx New dashboard “context feed” panel (placeholder blocks).
website/src/features/dashboard/panels/AskPanel.tsx New dashboard “ask” panel UI (read-only placeholder).
website/src/features/dashboard/nav.ts Navigation model for dashboard sections and shortcuts.
website/src/features/dashboard/layout/TopBar.tsx Dashboard top bar with status + refresh button (placeholder).
website/src/features/dashboard/layout/Sidebar.tsx Dashboard sidebar navigation and source icons (static).
website/src/features/dashboard/layout/DashboardShell.tsx Main dashboard shell with panel switching + keyboard shortcuts.
website/src/features/dashboard/hooks/useDashboardStatus.ts Placeholder dashboard status hook (to be wired later).
website/src/features/dashboard/DashboardPage.tsx Exports DashboardShell as the route component.
website/src/features/dashboard/dashboard.css Dashboard-specific CSS (grid overlay + selection color).
website/src/features/dashboard/components/SidebarNavItem.tsx Sidebar button component for nav rendering.
website/src/features/dashboard/components/PanelShell.tsx Shared panel framing + placeholder/metric components.
website/src/features/dashboard/components/AgentStatusBadge.tsx Status badge component for agent/scheduler state display.
website/src/App.tsx Adds routing split between marketing pages and /dashboard/*.
website/index.html Updates Google Fonts to include IBM Plex Sans.
website/dist/index.html Updates built HTML references to new hashed assets (but see review comments).
website/dist/assets/index-BRByxZiy.css Removes a previous hashed build artifact.
website/package-lock.json Lockfile changes consistent with frontend dependency updates/tooling.
README.md Adds desktop GUI installation/usage documentation.
pyproject.toml Adds sorelax-website + sorelax-gui scripts and includes gui package.
gui/wizard.py Adds a 4-step PyQt6 setup wizard and legacy MainWindow.
gui/main.py Adds GUI entrypoint (env detection, opens wizard/dashboard, global theme).
gui/dashboard.py Adds the main PyQt6 dashboard (status, ask, context explorer, logs, settings).
gui/backend.py Adds GUI backend utilities (env write, refresh/ask, scheduler start/stop, status).
gui/init.py Declares the gui package.
cli/website.py Adds a CLI command to install frontend deps and run Vite dev server.
Files not reviewed (1)
  • website/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread gui/main.py
Comment on lines +104 to +128
def _open_wizard() -> None:
"""Show the SorelaxWizard; on accept() it hands off to the dashboard."""
from gui.wizard import SorelaxWizard

wizard = SorelaxWizard()

# Override accept() so the wizard opens the full dashboard instead of
# wizard.py's internal lightweight MainWindow.
def _on_accept() -> None:
# Let QWizard close itself first
from PyQt6.QtWidgets import QDialog
QDialog.accept(wizard) # bypasses SorelaxWizard.accept()
_open_dashboard()

wizard.accepted.connect(_on_accept)

# Disconnect the original accept override that opens the wrong window
try:
wizard.accepted.disconnect()
except TypeError:
pass
wizard.accepted.connect(_on_accept)

wizard.show()
_open_wizard._instance = wizard # type: ignore[attr-defined]
Comment thread gui/backend.py
Comment on lines +137 to +143
content = ""
for key in keys:
val = tokens.get(key, "")
content += f"{key}={val}\n"

env_file.write_text(content, encoding="utf-8")
env_file.chmod(0o600)
Comment thread gui/backend.py
Comment on lines +340 to +353
# Direct source health check
health = {}
for name in ("github", "linear", "slack", "notion"):
try:
result = subprocess.run(
["coral", "source", "list"],
capture_output=True,
text=True,
timeout=15,
)
out = (result.stdout + result.stderr).lower()
health[name.capitalize()] = name in out and result.returncode == 0
except (subprocess.TimeoutExpired, FileNotFoundError):
health[name.capitalize()] = False
Comment thread cli/website.py
Comment on lines +39 to +40
typer.echo("Installing frontend dependencies (first run)...")
subprocess.run(["npm", "install"], cwd=website, check=True)
@manthanawgan
manthanawgan merged commit f59e7d9 into main May 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants