Skip to content

docs: add screenshots — welcome, song-stats, library, nugs-home, nugs… #65

docs: add screenshots — welcome, song-stats, library, nugs-home, nugs…

docs: add screenshots — welcome, song-stats, library, nugs-home, nugs… #65

Workflow file for this run

name: Build & Release
on:
push:
branches: [main] # CI build on every push — artifacts only, no release
tags:
- 'v*' # Full release build + publish when a vX.Y.Z tag is pushed
# Opt into Node.js 24 for action runners now, ahead of the June 2026 forced migration.
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
# ── Pure-helper unit tests run first — fast, platform-independent.
# Build + release jobs depend on this passing, so a regression in any
# of the tested helpers blocks the matrix and prevents tagging a bad
# release.
test:
name: Test (helpers)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js 22
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- name: Install npm dependencies
run: npm install --no-audit --no-fund
- name: Run helper tests
run: npm test
build:
name: Build (${{ matrix.os }})
needs: test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js 22
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- name: Install Linux build dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update -y
sudo apt-get install -y libdbus-1-dev libglib2.0-dev
- name: Install npm dependencies
run: npm install
- name: Build distributable
run: npm run dist
env:
CSC_IDENTITY_AUTO_DISCOVERY: false
- name: Upload macOS artifacts
if: runner.os == 'macOS'
uses: actions/upload-artifact@v4
with:
name: dist-mac
path: dist/*.dmg
if-no-files-found: warn
- name: Upload Windows artifacts
if: runner.os == 'Windows'
uses: actions/upload-artifact@v4
with:
name: dist-windows
path: dist/*.exe
if-no-files-found: warn
- name: Upload Linux artifacts
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: dist-linux
path: |
dist/*.AppImage
dist/*.deb
if-no-files-found: warn
release:
name: Publish Release
needs: build
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
merge-multiple: true
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
name: "Days Between ${{ github.ref_name }}"
generate_release_notes: false
body: |
## Install
| Platform | File | How |
|---|---|---|
| **Linux** (any) | `.AppImage` | `chmod +x` and double-click — no install |
| **Linux** (Debian / Ubuntu) | `.deb` | `sudo dpkg -i Days-Between-*.deb` |
| **macOS** (Apple Silicon) | `.dmg` | Open, drag to Applications. **Unsigned** — right-click → Open the first time to bypass Gatekeeper. |
| **Windows** | `Setup …exe` (installer) or `…exe` (portable) | SmartScreen will warn — click "More info" → "Run anyway". |
> No Electron installation required — everything is bundled. macOS and Windows binaries are unsigned (paid certificates aren't worth it for a personal-use project); the workarounds above are one-time per install.
---
See [`CHANGELOG.md`](https://github.com/DeceasedCranium/days-between/blob/main/CHANGELOG.md) for the full version history. The [`README`](https://github.com/DeceasedCranium/days-between#readme) has screenshots and a quick tour of what's new.
files: artifacts/**/*
fail_on_unmatched_files: false