Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
7b27f79
feat(desktop): add the core crate and a fixture-driven app window (HA…
roodboi Nov 14, 2026
60d0e01
fix(desktop): read native projects with the native backend and treat …
roodboi Nov 14, 2026
4643e7b
fix(desktop): accept null collections, bound pipe draining by the tim…
roodboi Nov 14, 2026
bc7f004
fix(desktop): show exit-0 services as exited with unknown role, and l…
roodboi Nov 14, 2026
cc2677d
fix(desktop): keep startup failure detail, make Open single-flight, h…
roodboi Nov 14, 2026
9d32d82
fix(desktop): validate the CLI projects payload, show native services…
roodboi Nov 14, 2026
48fb07c
fix(desktop): trust hackd only from a private directory and a same-us…
roodboi Nov 14, 2026
7bd5b48
docs(desktop): correct the native view-only note
roodboi Nov 14, 2026
a1144a7
fix(desktop): clear a failed start only on evidence, and treat any fa…
roodboi Nov 14, 2026
0518c95
fix(desktop): scroll the sidebar project list between the fixed heade…
roodboi Nov 14, 2026
cec136c
Merge remote-tracking branch 'origin/next' into feat/desktop-app-core
roodboi Nov 14, 2026
c814cb0
docs(desktop): render all 15 fixture states in the screenshot boards
roodboi Nov 14, 2026
a6c423a
fix(desktop): do not count never-created services (inactive profiles)…
roodboi Nov 14, 2026
dab34b4
fix(desktop): scroll the detail content below a fixed header
roodboi Nov 14, 2026
408fb6e
fix(desktop): run hack by absolute path found on absolute PATH entrie…
roodboi Nov 14, 2026
127ac3c
fix(desktop): act only on project roots the user owns
roodboi Nov 14, 2026
1608e4a
fix(desktop): validate the project root's path chain, marker and conf…
roodboi Nov 14, 2026
89a1af9
fix(desktop): give CLI children a PATH with only absolute entries
roodboi Nov 14, 2026
b7ee630
fix(desktop): require the CLI to select exactly the validated root, a…
roodboi Nov 14, 2026
cce493d
fix(desktop): never hand children an empty PATH
roodboi Nov 14, 2026
7230198
fix(desktop): show Doctor as unknown until it has run
roodboi Nov 14, 2026
630d6cb
fix(desktop): on timeout, SIGTERM the CLI's group and wait before SIG…
roodboi Nov 14, 2026
f7af68e
fix(desktop): let the CLI own lifecycle timeouts instead of cutting t…
roodboi Nov 14, 2026
c1dde2b
fix(desktop): never terminate lifecycle commands from the app; warn a…
roodboi Nov 14, 2026
c24bba2
fix(desktop): build and test on macOS, and add a headless live-state …
roodboi Nov 14, 2026
5bf507b
Merge remote-tracking branch 'origin/next' into feat/desktop-app-core
roodboi Nov 14, 2026
cbc43ef
test(desktop): never count a missing /proc as proof a process exited
roodboi Nov 14, 2026
263d04e
fix(desktop): drain CLI output pipes within bounded memory
roodboi Nov 14, 2026
efd92f8
fix(desktop): retry interrupted pipe reads and report other read fail…
roodboi Nov 14, 2026
db1d4c6
Merge remote-tracking branch 'origin/next' into HEAD
roodboi Nov 14, 2026
b341b32
fix(desktop): align the minimum toolchain and isolate state-reader tests
roodboi Nov 14, 2026
71376d8
fix(desktop): preserve failure evidence and refuse registry-writing p…
roodboi Nov 14, 2026
72ae2a5
fix(desktop): mark stale observations unknown and offer daemon recovery
roodboi Nov 14, 2026
d39223e
fix(desktop): detect failed exits across every service replica
roodboi Nov 14, 2026
a6a3361
fix(desktop): warm fake executables before timeout assertions
roodboi Nov 14, 2026
e46273f
test(desktop): warm CLI before fake daemon accept deadlines
roodboi Nov 14, 2026
29bd453
fix(desktop): clear stale log tails when refresh changes selection
roodboi Nov 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions .github/workflows/desktop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Hack desktop app (HACK-2214): unsupported preview.
# Separate from the default gates and the release workflow, and not a
# required check. Linux and macOS builds of the app plus the `core` tests.
# The toolchain comes from apps/desktop/rust-toolchain.toml (1.98.1; macOS
# needs it), not from the repo root pin.
name: Desktop app

on:
pull_request:
paths:
- "apps/desktop/**"
- ".github/workflows/desktop.yml"
push:
branches: [next]
paths:
- "apps/desktop/**"
- ".github/workflows/desktop.yml"

permissions:
contents: read

concurrency:
group: desktop-${{ github.ref }}
cancel-in-progress: true

jobs:
linux:
name: Desktop app (Linux build, core tests)
runs-on: ubuntu-24.04
timeout-minutes: 40
defaults:
run:
working-directory: apps/desktop
steps:
- uses: actions/checkout@v4
- name: Install GPUI build dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
clang libfontconfig-dev libwayland-dev libxkbcommon-x11-dev \
libx11-xcb-dev libssl-dev libzstd-dev libvulkan-dev pkg-config
- uses: dtolnay/rust-toolchain@1.98.1
with:
components: rustfmt, clippy
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
apps/desktop/target
key: desktop-${{ runner.os }}-${{ hashFiles('apps/desktop/Cargo.lock') }}
restore-keys: desktop-${{ runner.os }}-
- name: Format
run: cargo fmt --all --check
- name: Core tests (no daemon, no Docker)
env:
HACK_DAEMON_AUTOSTART_DISABLE: "1"
run: cargo test --locked -p hack-desktop-core
# Both: the screenshots feature turns on gpui test-support, which can
# hide test-only APIs from a build that only uses that feature.
- name: Clippy (default features)
run: cargo clippy --locked --all-targets -- -D warnings
- name: Clippy (screenshots feature)
run: cargo clippy --locked --all-targets --features hack-desktop/screenshots -- -D warnings
- name: Build app
run: cargo build --locked -p hack-desktop

macos:
name: Desktop app (macOS build, core tests)
runs-on: macos-15
timeout-minutes: 40
defaults:
run:
working-directory: apps/desktop
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@1.98.1
with:
components: clippy
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
apps/desktop/target
key: desktop-${{ runner.os }}-${{ hashFiles('apps/desktop/Cargo.lock') }}
restore-keys: desktop-${{ runner.os }}-
- name: Core tests (no daemon, no Docker)
env:
HACK_DAEMON_AUTOSTART_DISABLE: "1"
run: cargo test --locked -p hack-desktop-core
- name: Clippy (default features)
run: cargo clippy --locked --all-targets -- -D warnings
- name: Build app
run: cargo build --locked -p hack-desktop
2 changes: 2 additions & 0 deletions apps/desktop/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/target/
/screenshots/out/
Loading
Loading