Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
21 changes: 16 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,17 @@ name: Release
# release-please watches conventional commits on `main` and maintains a "release PR"
# that bumps the version (app/package.json + Cargo.toml + tauri.conf.json) and the
# changelog. Merging that PR cuts the GitHub release + tag, and the build job then
# attaches the platform bundles to it. workflow_dispatch runs a build-only smoke test
# (no release). Activates once this branch is merged to main.
# attaches the platform bundles to it. workflow_dispatch with a `tag` rebuilds an
# existing release's assets (recovery / manual fill-in); without one it's a build-
# only smoke test.
on:
push:
branches: [main]
workflow_dispatch:
inputs:
tag:
description: 'Existing release tag to build + attach assets to (e.g. v0.2.0). Empty = build-only smoke test.'
required: false

permissions:
contents: write
Expand All @@ -17,9 +22,11 @@ permissions:
jobs:
release-please:
runs-on: ubuntu-latest
# Manifest mode prefixes per-package outputs with the path: app--tag_name, etc.
# `releases_created` is the top-level "did anything get released this run" flag.
outputs:
release_created: ${{ steps.rp.outputs.release_created }}
tag_name: ${{ steps.rp.outputs.tag_name }}
release_created: ${{ steps.rp.outputs.releases_created }}
tag_name: ${{ steps.rp.outputs['app--tag_name'] }}
steps:
- uses: googleapis/release-please-action@v4
id: rp
Expand All @@ -44,7 +51,11 @@ jobs:
bundles: 'nsis'
runs-on: ${{ matrix.platform }}
steps:
# On a manual tag build, check out that tag's code so the bundle's version
# matches the release; otherwise build the pushed commit.
- uses: actions/checkout@v4
with:
ref: ${{ inputs.tag || github.ref }}

# Tauri's webview + bundling deps (Linux only). The Ubuntu runner is Debian-
# based, so unlike an Arch host its linuxdeploy/AppImage tooling works.
Expand Down Expand Up @@ -90,5 +101,5 @@ jobs:
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
with:
projectPath: app
tagName: ${{ needs.release-please.outputs.tag_name }}
tagName: ${{ needs.release-please.outputs.tag_name || inputs.tag }}
args: --bundles ${{ matrix.bundles }}
22 changes: 20 additions & 2 deletions app/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,29 @@ function serveIconsDev() {
const config = defineConfig({
// generated/data files: TanStack Router output, sqlite db, icon atlas + manifest.
// `e2e/**` is a standalone Playwright package (own deps + tooling) — not ours.
// `CHANGELOG.md` + `src-tauri/tauri.conf.json` are owned by release-please, which
// re-serializes them its own way each release — don't let oxfmt fight it.
fmt: {
ignorePatterns: ["src/routeTree.gen.ts", "dev.db*", "icon-data/**", "drizzle/**", "e2e/**"],
ignorePatterns: [
"src/routeTree.gen.ts",
"dev.db*",
"icon-data/**",
"drizzle/**",
"e2e/**",
"CHANGELOG.md",
"src-tauri/tauri.conf.json",
],
},
lint: {
ignorePatterns: ["src/routeTree.gen.ts", "dev.db*", "icon-data/**", "drizzle/**", "e2e/**"],
ignorePatterns: [
"src/routeTree.gen.ts",
"dev.db*",
"icon-data/**",
"drizzle/**",
"e2e/**",
"CHANGELOG.md",
"src-tauri/tauri.conf.json",
],
jsPlugins: [{ name: "vite-plus", specifier: "vite-plus/oxlint-plugin" }],
rules: { "vite-plus/prefer-vite-plus-imports": "error" },
options: { typeAware: true, typeCheck: true },
Expand Down
Loading