Repository navigation
Some QoL + Fixes - #6
Merged
Merged
Conversation
There was a problem hiding this comment.
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-websitescript 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 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 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 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 on lines
+39
to
+40
| typer.echo("Installing frontend dependencies (first run)...") | ||
| subprocess.run(["npm", "install"], cwd=website, check=True) |
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.
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
sorelaxfrom CLI reflects in the GUI log panel in real timeBackend Fixes
.envhandling — more robust reads and writes to prevent partial writes on saveHow to Test
pip install -e .then runsorelax-guisorelax refreshfrom the terminal and verify the GUI log panel picks it upBreaking Changes
None. CLI behaviour is unchanged.
sorelax-guiis additive.