feat: build and release for windows and linux - #40
Merged
Conversation
Note-scoped commands show the note title as a breadcrumb prefix before the action. A long title used to consume the row and hide the action. The title region is now a flex row, the prefix takes its own max-width and ellipsis, and the separator, icon, and action label no longer shrink.
The native macOS titlebar stayed on the launch-time system appearance even after switching to a dark or light theme in the app. A thin set_window_theme command sets the library window's native theme, and the theme store calls it whenever the resolved variant changes, next to the existing vibrancy sync.
Pressing Tab on a bullet or ordered list line now indents it into a sublist, and Shift+Tab outdents it. A pure listIndentChanges helper computes the line-anchored change set (unit-tested) and the editor binds Tab / Shift+Tab to it before the default keymap. Non-list lines keep the default behaviour.
Replace the settings sidebar with a landing grid of category cards that open
focused sub-pages with a breadcrumb back. Add a Contexting category whose
editable template wraps a note with {title}, {tags}, {date}, and {content}, with
a live preview. A new 'Copy note as context' palette command renders the
template for the selected note and writes it to the clipboard, seeding the app's
AI features. Rendering lives in a pure, tested module.
Extend the bundle targets, release matrix, and updater manifest to all three desktop platforms, gate the macOS-only shell behavior, and make shortcut labels and font stacks platform-aware.
The script always runs through npm run bump, so the shebang was decorative; Windows vitest fails to parse the module with it present.
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
InstantNotes builds and ships for macOS only: the bundle targets stop at app/dmg, the release workflow runs on a single macOS runner, and the updater manifest carries just
darwin-aarch64. The code underneath is already portable (cfg-gated macOS specifics, cross-platform plugins, complete icon set), so Windows and Linux support is a packaging, CI, and polish exercise, not a rewrite.What Changes
nsis(Windows) andappimage(Linux) bundle targets. Library-window transparency moves to a newtauri.macos.conf.jsonso vibrancy keeps working on macOS while Windows and Linux get an opaque window (the theme tokens already fall back to a near-solid panel).release.ymlto a three-OS matrix that assembles a draft release with a mergedlatest.json, and addbuild.ymlrunning check, tests, andtauri build --no-bundleon all three platforms for every PR.cfg(target_os = "macos"); elsewhere the File menu carries Settings and Quit. The capture hotkey stays Option+Space on macOS and becomes Ctrl+Shift+Space on Windows and Linux, since plain Alt+Space is the Windows system window-menu key.src/lib/platform.tsso shortcut labels render Cmd glyphs on macOS and Ctrl+ prefixes elsewhere; extend the shared font stacks with Segoe UI, Noto Sans, and Consolas fallbacks (Apple faces still lead, so macOS is unchanged).rust-toolchain.toml) and Node engine, make the dev launcher platform-aware, and document per-platform install steps in the README and release body.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. Updater artifacts MUST be signed with the existing minisign key. CI MUST NOT publish the draft; publishing after a smoke test is the ship gate.Requirement: Platform-Appropriate Shell
The app MUST compile and run on Windows and Linux with an opaque main window, a File menu carrying Settings and Quit, and a Ctrl+Shift+Space capture hotkey. macOS behavior MUST remain unchanged: vibrancy, the application menu, and Option+Space.
Scenario: Release matrix ships all platforms
v*taglatest.jsonwithdarwin-aarch64,windows-x86_64, andlinux-x86_64entriesScenario: Windows or Linux user gets native behavior
Verification
1.1
cargo test --workspace --manifest-path src-tauri/Cargo.tomlpasses (44 tests).1.2
npm run checkreports 0 errors and 0 warnings;npm testpasses (130 tests).1.3
npm run tauri buildon macOS produces the .app and .dmg through the merged macOS config, and the built app launches cleanly.2.1 The new build.yml goes green on macos-latest, ubuntu-22.04, and windows-latest for this PR.
3.1 macOS local build keeps vibrancy, the app menu, and Option+Space.
3.2 The Windows and Linux legs are exercised end to end by the next draft release and its smoke test before publishing.