Skip to content
Closed
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
42 changes: 21 additions & 21 deletions .github/workflows/ci-mac.yml
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
name: CI Mac

on:
workflow_dispatch:
workflow_dispatch:

jobs:
build-macos:
name: Build desktop (${{ matrix.runner }})
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
runner: [macos-latest, macos-15-intel]
steps:
- name: Checkout
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
build-macos:
name: Build desktop (${{ matrix.runner }})
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
runner: [macos-latest, macos-15-intel]
steps:
- name: Checkout
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98

- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6
with:
bun-version: latest
- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6
with:
bun-version: latest

- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable

- name: Install dependencies
run: bun install
- name: Install dependencies
run: bun install

- name: Build desktop app
run: bun run desktop:build
- name: Build desktop app
run: bun run desktop:build
19 changes: 19 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
name: Release

on:
push:
tags:
Expand Down Expand Up @@ -53,6 +54,15 @@ jobs:
releaseDraft: true
prerelease: false

- name: generate linux checksums
run: bun ../../tools/scripts/generate-checksums.ts --input-dir=src-tauri/target/release/bundle --output=src-tauri/target/release/bundle/checksums-linux.txt --extensions=.AppImage,.deb,.rpm
working-directory: ./apps/desktop

- name: upload linux checksums
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ github.ref_name }} ./apps/desktop/src-tauri/target/release/bundle/checksums-linux.txt --clobber

release-windows:
permissions:
contents: write
Expand Down Expand Up @@ -106,6 +116,15 @@ jobs:
releaseDraft: true
prerelease: false

- name: generate windows checksums
run: bun ../../tools/scripts/generate-checksums.ts --input-dir=src-tauri/target/release/bundle --output=src-tauri/target/release/bundle/checksums-windows.txt --extensions=.msi,.exe
working-directory: ./apps/desktop

- name: upload windows checksums
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ github.ref_name }} ./apps/desktop/src-tauri/target/release/bundle/checksums-windows.txt --clobber

release-macos:
permissions:
contents: write
Expand Down
86 changes: 86 additions & 0 deletions .github/workflows/snap.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Snap

on:
release:
types:
- published
workflow_dispatch:
inputs:
tag:
description: Existing GitHub release tag like v0.0.102. Leave empty for artifact-only builds.
required: false
type: string
publish:
description: Publish the built snap to the Snap Store.
required: false
type: boolean
default: false
release_channel:
description: Snap Store channel to release to.
required: false
type: choice
default: stable
options:
- stable
- candidate
- beta
- edge

permissions:
contents: write

jobs:
snap:
runs-on: ubuntu-latest
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
steps:
- uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98

- name: Resolve release metadata
id: meta
shell: bash
run: |
if [[ "${GITHUB_EVENT_NAME}" == "release" ]]; then
TAG="${{ github.event.release.tag_name }}"
else
TAG="${{ inputs.tag }}"
fi

VERSION="$(python -c "import json; print(json.load(open('package.json'))['version'])")"
if [[ -n "$TAG" ]]; then
VERSION="${TAG#v}"
fi

CHANNEL="stable"
if [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" ]]; then
CHANNEL="${{ inputs.release_channel }}"
fi

echo "tag=$TAG" >> "$GITHUB_OUTPUT"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "channel=$CHANNEL" >> "$GITHUB_OUTPUT"
echo "DORA_RELEASE_VERSION=$VERSION" >> "$GITHUB_ENV"

- name: Build snap
uses: snapcore/action-build@v1
id: build

- name: Upload snap artifact
uses: actions/upload-artifact@v4
with:
name: dora-snap-${{ steps.meta.outputs.version }}
path: ${{ steps.build.outputs.snap }}

- name: Upload snap to GitHub release
if: ${{ steps.meta.outputs.tag != '' }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ steps.meta.outputs.tag }} ${{ steps.build.outputs.snap }} --clobber

- name: Publish snap to Snap Store
if: ${{ env.SNAPCRAFT_STORE_CREDENTIALS != '' && (github.event_name == 'release' || inputs.publish) }}
uses: snapcore/action-publish@v1
with:
snap: ${{ steps.build.outputs.snap }}
release: ${{ steps.meta.outputs.channel }}
113 changes: 113 additions & 0 deletions .github/workflows/winget.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
name: Winget

on:
release:
types:
- published
workflow_dispatch:
inputs:
tag:
description: Existing GitHub release tag like v0.0.102.
required: true
type: string
submit_update:
description: Submit a wingetcreate update PR.
required: false
type: boolean
default: false

permissions:
contents: write

jobs:
generate-manifests:
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.meta.outputs.tag }}
version: ${{ steps.meta.outputs.version }}
installer_url: ${{ steps.meta.outputs.installer_url }}
steps:
- uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98

- name: Setup bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6

- name: Resolve release metadata
id: meta
shell: bash
run: |
if [[ "${GITHUB_EVENT_NAME}" == "release" ]]; then
TAG="${{ github.event.release.tag_name }}"
else
TAG="${{ inputs.tag }}"
fi

VERSION="${TAG#v}"
INSTALLER_URL="https://github.com/${GITHUB_REPOSITORY}/releases/download/${TAG}/Dora_${VERSION}_x64_en-US.msi"
CHECKSUMS_URL="https://github.com/${GITHUB_REPOSITORY}/releases/download/${TAG}/checksums-windows.txt"

echo "tag=$TAG" >> "$GITHUB_OUTPUT"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "installer_url=$INSTALLER_URL" >> "$GITHUB_OUTPUT"
echo "checksums_url=$CHECKSUMS_URL" >> "$GITHUB_OUTPUT"

- name: Download Windows checksums
run: curl --fail --location --output checksums-windows.txt "${{ steps.meta.outputs.checksums_url }}"

- name: Generate Winget manifests
run: |
bun run release:winget -- \
--version=${{ steps.meta.outputs.version }} \
--installer-url=${{ steps.meta.outputs.installer_url }} \
--checksums-file=checksums-windows.txt \
--installer-file=Dora_${{ steps.meta.outputs.version }}_x64_en-US.msi

- name: Archive Winget manifests
run: |
tar -czf winget-manifests-${{ steps.meta.outputs.version }}.tar.gz \
-C packaging/winget/manifests/${{ steps.meta.outputs.version }} .

- name: Upload Winget manifest artifact
uses: actions/upload-artifact@v4
with:
name: winget-manifests-${{ steps.meta.outputs.version }}
path: winget-manifests-${{ steps.meta.outputs.version }}.tar.gz

- name: Upload Winget manifests to GitHub release
if: ${{ github.event_name == 'release' }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ steps.meta.outputs.tag }} winget-manifests-${{ steps.meta.outputs.version }}.tar.gz --clobber

submit-update:
needs: generate-manifests
if: ${{ (github.event_name == 'release' && vars.WINGET_PACKAGE_READY == 'true') || (github.event_name == 'workflow_dispatch' && inputs.submit_update) }}
runs-on: windows-latest
env:
WINGET_CREATE_GITHUB_TOKEN: ${{ secrets.WINGET_CREATE_GITHUB_TOKEN }}
steps:
- name: Skip when Winget token is not configured
if: ${{ env.WINGET_CREATE_GITHUB_TOKEN == '' }}
shell: pwsh
run: |
Write-Host "WINGET_CREATE_GITHUB_TOKEN is not configured. Skipping automated Winget submission."
exit 0

- name: Install WingetCreate dependencies
if: ${{ env.WINGET_CREATE_GITHUB_TOKEN != '' }}
shell: pwsh
run: |
Invoke-WebRequest https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx -OutFile Microsoft.VCLibs.x64.14.00.Desktop.appx
Add-AppxPackage .\Microsoft.VCLibs.x64.14.00.Desktop.appx
Invoke-WebRequest https://aka.ms/wingetcreate/latest/msixbundle -OutFile wingetcreate.msixbundle
Add-AppxPackage .\wingetcreate.msixbundle

- name: Submit Winget update
if: ${{ env.WINGET_CREATE_GITHUB_TOKEN != '' }}
shell: pwsh
run: |
wingetcreate update RemcoStoeten.Dora `
-u "${{ needs.generate-manifests.outputs.installer_url }}" `
-v "${{ needs.generate-manifests.outputs.version }}" `
-t "${env:WINGET_CREATE_GITHUB_TOKEN}" `
--submit
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,4 @@ apps/desktop/build_log.txt
.env.local
test1.db
test2.db
target/
53 changes: 53 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,58 @@
# Changelog

## 0.0.102 - Snap Workflow Follow-up & Packaging Release Cleanup

**Date:** 2026-04-05

**Highlights**

- Fixed the Snap CI workflow so packaging builds run correctly on GitHub Actions.
- Switched the Snap build path to a direct Rust release build instead of an invalid Tauri bundle flag.
- Carries the packaging automation and VM lab work forward into a clean tag that matches branch head.

## 0.0.101 - Packaging Automation, VM Lab & Desktop Iteration

**Date:** 2026-04-05

**Highlights**

- Added repo-native packaging helpers for Winget, AUR, Snap, release checksums, and release guidance.
- Added an Ubuntu host VM lab flow for provisioning Ubuntu, Arch, and Windows packaging test environments.
- Updated the in-app changelog and release surfaces for the new release milestone.
- Bundled the current desktop, docs, test, and workflow iteration work into the `0.0.101` line.

## 0.1.0 - Project Foundation & Documentation Audit

**Date:** 2026-04-04

**Highlights**

- Established 0.1.0 version baseline across the monorepo.
- Completed full Homebrew installation documentation and README overhaul.
- Verified 115/115 tests passing for the new milestone.

## 0.0.99 - Homebrew Support & CI Security Hardening

**Date:** 2026-04-04

**Highlights**

- Added the official Homebrew Tap at `remcostoeten/homebrew-dora` (`brew install dora`).
- Pinned all GitHub Actions to specific commit SHAs for improved supply chain security.
- Optimized the esbuild target to `esnext` to resolve CI transform errors.
- Stabilized the Rust toolchain reference in automated workflows.

## 0.0.98 - Live Database Updates & Performance Refactor

**Date:** 2026-04-04

**Highlights**

- Implemented a backend-driven live database monitor manager.
- Eliminated inefficient frontend polling logic for faster performance.
- Added support for real-time data grid updates on external database changes.
- Enhanced documentation with an animated showcase of live performance.

## 0.0.97 - Type Safety Recovery, Feature-State Alignment & Docker Manager Updates

**Date:** 2026-02-20
Expand Down
Loading