Skip to content

feat(app): the app on Linux and macOS - #99

Merged
httpsphl merged 4 commits into
mainfrom
feat/unix-app
Oct 1, 2026
Merged

httpsphl merged 4 commits into
mainfrom
feat/unix-app

Conversation

@httpsphl

@httpsphl httpsphl commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Slice 4 of Linux/macOS support (spec 18, item 8): the app works off Windows, and its texts name the system it runs on.

Changes

  • open.rs:
    • open_path, open_file, open_url and reveal_file use explorer.exe on Windows (unchanged), open on macOS and xdg-open on Linux.
    • On macOS, opening an .app as a folder is refused, because open would start it.
    • reveal_file is open -R on macOS. Linux has no common way to select a file, so it opens the file's folder.
    • reveal_file used a Windows-only API, so the app did not build elsewhere.
  • sign_in.rs: opening the app at sign-in is the Run key on Windows (unchanged), ~/.config/autostart/botloft.desktop on Linux, and the launch agent io.github.httpsphl.botloft.app on macOS (RunAtLoad, Aqua sessions only).
  • terminal.rs: the Claude Code sign-in opens a terminal window off Windows, as the console window does on Windows.
    • macOS uses Terminal via osascript. Linux uses the first of x-terminal-emulator, gnome-terminal, konsole, xfce4-terminal, kitty, alacritty and xterm.
    • The command writes its exit code to a file in a 0700 temp folder, and the app waits for it for up to 15 min. A terminal may hand the command to a process it already runs and return at once.
  • CI: clippy and tests of botloft-app on Ubuntu (with the Tauri desktop libraries) and macOS.
  • Spec: 15.2 and 16 updated.

Tests

  • Quoting of the autostart Exec, the launch agent plist, sh and AppleScript quoting, reading the exit code from the status file.
  • Windows: clippy and tests. Linux (Docker, with WebKitGTK): clippy and tests of the app crate.

Manual test (not done yet; needs a desktop)

  • Linux:
    1. Open a crew's folder, a bot's file and a link.
    2. "Show in folder".
    3. Turn "open at sign-in" on, then sign out and in.
    4. "Sign in to Claude": a terminal opens, and finishing there signs the app in.
  • macOS: the same steps. Terminal should come to the front with claude auth login.

Texts (second commit)

  • lib/system.ts reads Windows, macOS or Linux once from the app window's user agent. Anything unknown counts as Windows.
  • These texts now take the system name, in all three languages: "Start with …", "when you sign in to …", the system's notifications and animation effects, and the setup and welcome notes. Windows users see the same text as before.
  • The "browser couldn't open" note names Edge on Windows, and Chrome, Chromium or Edge elsewhere.
  • The settings test looks the switches up by the same name, so it passes on any system.
  • pnpm check: 46 files, 267 tests. Spec 15.6 updated.

… to Claude Code on Linux and macOS

- Folders, files, links and "show in folder" go through open (macOS) or
  xdg-open (Linux) instead of explorer.exe; reveal_file no longer
  needs a Windows-only API to build.
- Opening the app at sign-in is an autostart entry on Linux and a launch
  agent on macOS.
- Signing in to Claude Code opens a terminal window off Windows; the
  command writes its exit code to a file the app waits for.
- CI checks and tests the app crate on Ubuntu and macOS.
"Start with Windows", "when you sign in to Windows", the system's
notifications and animations now read macOS or Linux there, from the app
window's user agent (lib/system.ts). The browser that did not open
names Chrome, Chromium or Edge off Windows. All three languages.
@httpsphl httpsphl changed the title feat(app): open things, open at sign-in and Claude sign-in on Linux and macOS feat(app): the app on Linux and macOS Oct 1, 2026
@httpsphl
httpsphl merged commit d73f8f4 into main Oct 1, 2026
4 checks passed
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