feat: build and release for windows and linux - #11
Merged
Conversation
Replace the macOS open shell-outs with the opener plugin, render the tray number into the icon where title text does not exist, gate the macOS-only uninstall flow, and extend the bundle targets and release matrix to all three desktop platforms.
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.
Why
Lineage is a macOS menu-bar app in every layer:
openshell-outs carry OAuth and every external link, the uninstall flow is bash plus~/Library, the headline number renders as tray title text (a macOS-only concept), and the bundle targets and release workflow stop at Apple Silicon. The engine underneath (git churn, GitHub API, SQLite, keyring) is already cross-platform, so Windows and Linux support is about the shell, packaging, and CI.What Changes
openshell-out withtauri-plugin-opener(open_url,open_path,reveal_item_in_dir), which un-breaks OAuth sign-in, GitHub links, the data-folder action, and the image reveal off macOS.ghlookup paths are gated to macOS.nsisandappimagebundle targets, convertrelease.ymlto a three-OS matrix with per-platform install notes, and addbuild.ymlrunning check, tests, andtauri build --no-bundleon all three platforms for every PR.ADDED Requirements
Requirement: Cross-Platform Release Artifacts
A
v*tag SHALL produce a draft GitHub release containing macOS (.dmg,.app.tar.gz), Windows (NSIS-setup.exe), and Linux (.AppImage) artifacts plus onelatest.jsonlisting all three platforms, signed with the existing minisign key. CI MUST NOT publish the draft; publishing after a smoke test is the ship gate.Requirement: Platform-Appropriate Tray and Shell
On Windows and Linux the tray SHALL show the configured metric drawn into the icon with the exact value as tooltip, external links MUST open in the default browser, and no subprocess may flash a console window. macOS behavior MUST remain unchanged: title text next to the glyph icon, template-tinted spinner, and the in-app uninstall flow.
Scenario: Release matrix ships all platforms
v*taglatest.jsonwithdarwin-aarch64,windows-x86_64, andlinux-x86_64entriesScenario: Windows user signs in and syncs
Verification
1.1
cargo test --workspace --manifest-path src-tauri/Cargo.tomlpasses.1.2
npm run checkreports 0 errors and 0 warnings;npm testpasses.1.3
npm run tauri -- build --no-bundlecompiles the release binary on macOS.2.1 The new build.yml goes green on macos-latest, ubuntu-22.04, and windows-latest for this PR.
3.1 macOS keeps the tray title, template spinner, uninstall entry, and working links.
3.2 The Windows and Linux legs (tray number icon, opener, no console flash) are exercised by the next draft release and its smoke test before publishing.