Compare commits

..

No commits in common. "main" and "v0.1.0" have entirely different histories.
main ... v0.1.0

4 changed files with 0 additions and 142 deletions

View File

@ -1,101 +0,0 @@
name: Build Windows installer
# The agent's source lives in a private repository whose Actions are currently billing-blocked.
# This repository is public, so its runner minutes are free — it checks the source out with a
# read-only deploy key and attaches the resulting installer to a release here.
#
# The installer is UNSIGNED: no Windows code-signing certificate exists yet. Once one does, the
# private repo's `release-agent.yml` is the proper home for this and this workflow should go.
#
# Note that this repository is public and so are these logs. Keep build output out of them if a
# step would ever echo source.
on:
workflow_dispatch:
inputs:
tag:
description: "Release tag to attach the installer to"
required: true
default: "v0.1.0"
ref:
description: "Branch or tag of the source repo to build"
required: true
default: "main"
permissions:
contents: write # attaching the installer to this repo's release
jobs:
build:
runs-on: windows-latest
steps:
- name: Check out agent source
uses: actions/checkout@v4
with:
repository: BigMarc/TimeBunny
ref: ${{ inputs.ref }}
ssh-key: ${{ secrets.SOURCE_DEPLOY_KEY }}
persist-credentials: false
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
workspaces: apps/agent/src-tauri
- run: pnpm install --frozen-lockfile
# tauri.conf.json now sets `createUpdaterArtifacts`, which makes TAURI_SIGNING_PRIVATE_KEY
# mandatory — and that key deliberately does not live in this public repository. Turn the
# updater bundle back off for this job: it ships installers via GitHub Releases, and the
# signed updater manifest is release-agent.yml's job in the private repo.
- name: Build NSIS installer
working-directory: apps/agent
env:
TIMEBUNNY_API_URL: https://time.bunny.team
TIMEBUNNY_CHANNEL: stable
# `--config` takes a path as well as a literal, and a path is the only form that survives
# this trip: pwsh and pnpm between them turned an inline `{\"bundle\":...}` into `{\`.
run: |
[System.IO.File]::WriteAllText("$PWD\no-updater.json", '{"bundle":{"createUpdaterArtifacts":false}}')
pnpm tauri build --bundles nsis --config no-updater.json
# Same gate as the private repo's release workflow: an agent baked against localhost looks
# perfectly healthy in CI and is simply never heard from once someone installs it.
# Deliberately not findstr: it reads a leading `/` in a path as a switch prefix, so
# `src-tauri/target/...` fails with "Cannot open" and exits 2 — which reads as "string not
# found" and would let a localhost build sail through the check that exists to stop it.
- name: Verify the baked server URL
working-directory: apps/agent
run: |
$exe = Join-Path $PWD "src-tauri\target\release\timebunny-agent.exe"
if (-not (Test-Path $exe)) { throw "No agent binary at $exe" }
$text = [System.Text.Encoding]::ASCII.GetString([System.IO.File]::ReadAllBytes($exe))
if ($text.Contains("http://localhost:3000")) {
throw "Agent binary still carries the localhost fallback - TIMEBUNNY_API_URL was not set at build time"
}
if (-not $text.Contains("https://time.bunny.team")) {
throw "Agent binary does not contain the production API URL"
}
Write-Host "ok: production URL baked, no localhost fallback"
- name: Checksum
working-directory: apps/agent
run: Get-ChildItem -Recurse -Filter *.exe src-tauri/target/release/bundle/nsis | Get-FileHash -Algorithm SHA256 | Format-List
- name: Attach installer to release
working-directory: apps/agent
env:
GH_TOKEN: ${{ github.token }}
run: |
$exe = Get-ChildItem -Recurse -Filter *.exe src-tauri/target/release/bundle/nsis | Select-Object -First 1
if (-not $exe) { throw "No NSIS installer was produced" }
gh release upload ${{ inputs.tag }} $exe.FullName --clobber --repo ${{ github.repository }}
- uses: actions/upload-artifact@v4
with:
name: windows-nsis-unsigned
path: apps/agent/src-tauri/target/release/bundle/nsis/*.exe
if-no-files-found: error

View File

@ -71,13 +71,6 @@
.btn:hover { background: var(--brand-hover); }
.btn.secondary { background: transparent; color: var(--brand); border: 1px solid var(--border); }
.btn.secondary:hover { background: var(--bg-subtle); }
.btn.unavailable {
background: var(--bg-subtle); color: var(--muted); border: 1px dashed var(--border);
cursor: default;
}
.btn.unavailable:hover { background: var(--bg-subtle); }
.card.pending { opacity: 0.72; }
.card.pending.recommended { opacity: 1; }
@media (prefers-color-scheme: dark) { .btn.secondary { color: #ff8fa8; } }
.note {
@ -225,13 +218,11 @@ Get-FileHash -Algorithm SHA256 $HOME\Downloads\TimeBunny_*-setup.exe</code></pre
.then(function (rel) {
byId("version").textContent = rel.tag_name;
var found = {};
rel.assets.forEach(function (a) {
var os = /\.dmg$/i.test(a.name) ? "macos"
: /\.exe$/i.test(a.name) ? "windows"
: null;
if (!os) return;
found[os] = true;
byId("dl-" + os).href = a.browser_download_url;
var meta = byId("meta-" + os);
@ -242,18 +233,6 @@ Get-FileHash -Algorithm SHA256 $HOME\Downloads\TimeBunny_*-setup.exe</code></pre
byId("sha-" + os).textContent = "SHA-256 " + a.digest.slice(7);
}
});
// A release that carries no installer for a platform must not offer a button that quietly
// lands the visitor on a release page with nothing for them. Reverts by itself as soon as
// the asset is attached.
["macos", "windows"].forEach(function (os) {
if (found[os]) return;
var btn = byId("dl-" + os);
btn.textContent = "Not available yet";
btn.removeAttribute("href");
btn.classList.add("unavailable");
byId("card-" + os).classList.add("pending");
});
})
.catch(function () {
byId("version").textContent = "latest";

View File

@ -1,10 +0,0 @@
{
"version": "0.2.1",
"notes": "See https://github.com/BigMarc/timebunny-release/releases/tag/v0.2.1",
"pub_date": "2026-10-07T18:09:01Z",
"platforms": {
"darwin-aarch64": { "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVTKzZFeGphbDV6UFFUMEExN2diN3dLMElMYVRXZ0JkZzVqRUp3MFdTekFEYTNJMmFGYmFpckpndENjZjNMbEhNaDBvMzhvU3ZHelJ0YURpQ2dBbkVFaDF5WHNuTTRXZFFzPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzkxMzk2MTUwCWZpbGU6VGltZUJ1bm55LmFwcC50YXIuZ3oKVWVoMzB5NkoxNmZGcUZSWDI3K3ZOYkF3V01Dd2tKdkZOWVZiS0o2ZWZtcGxZQkVMazcxTEVnNnFlNzJ3MjBrS1RoVVV2VVJxc3oyeTh0dUI2Z252RHc9PQo=", "url": "https://github.com/BigMarc/timebunny-release/releases/download/v0.2.1/TimeBunny.app.tar.gz" },
"darwin-x86_64": { "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVTKzZFeGphbDV6UFFUMEExN2diN3dLMElMYVRXZ0JkZzVqRUp3MFdTekFEYTNJMmFGYmFpckpndENjZjNMbEhNaDBvMzhvU3ZHelJ0YURpQ2dBbkVFaDF5WHNuTTRXZFFzPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzkxMzk2MTUwCWZpbGU6VGltZUJ1bm55LmFwcC50YXIuZ3oKVWVoMzB5NkoxNmZGcUZSWDI3K3ZOYkF3V01Dd2tKdkZOWVZiS0o2ZWZtcGxZQkVMazcxTEVnNnFlNzJ3MjBrS1RoVVV2VVJxc3oyeTh0dUI2Z252RHc9PQo=", "url": "https://github.com/BigMarc/timebunny-release/releases/download/v0.2.1/TimeBunny.app.tar.gz" },
"windows-x86_64": { "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVTKzZFeGphbDV6UGU2ZkZPZk1oKyt4KzBocHZhUmlWOVpZUzlNaERNemJFTzg3UkJhRFJ2RE4vSnY3cExVbE9zbTRBSS9QOU5MM3hDeTE0M1ZHVUJweHRZTzArQ09Lb3dZPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzkxMzk2MzYzCWZpbGU6VGltZUJ1bm55XzAuMi4xX3g2NC1zZXR1cC5leGUKLzFJZTd3Z0hER0FhU2p2QVFrNUhrMkdzeUt6S1B2TG1DMHZvdEdsKzVYRld6Y2VWK3IzZlJISWJoY3h4bndSVmw0L2ZOQmlOSjlQcStJUnhJWWp6Q2c9PQo=", "url": "https://github.com/BigMarc/timebunny-release/releases/download/v0.2.1/TimeBunny_0.2.1_x64-setup.exe" }
}
}

View File

@ -1,10 +0,0 @@
{
"version": "0.2.1",
"channel": "stable",
"pub_date": "2026-10-07T18:09:01Z",
"notes_url": "https://github.com/BigMarc/timebunny-release/releases/tag/v0.2.1",
"installers": {
"macos": { "url": "https://github.com/BigMarc/timebunny-release/releases/download/v0.2.1/TimeBunny_0.2.1_universal.dmg", "filename": "TimeBunny_0.2.1_universal.dmg", "sha256": "4c53ab3a3a13908c3a6776b58b15589dc013004ee361dbe1998ab4693aa86d46", "bytes": 8352510 },
"windows": { "url": "https://github.com/BigMarc/timebunny-release/releases/download/v0.2.1/TimeBunny_0.2.1_x64-setup.exe", "filename": "TimeBunny_0.2.1_x64-setup.exe", "sha256": "4227837f649a38dc10688c604134ce14a05141180b62d12fff6e7af94a36355c", "bytes": 3262441 }
}
}