From 8f792d849bb47b64271a981221b751fb5feb6dea Mon Sep 17 00:00:00 2001 From: This-Is-NPC Date: Sun, 7 Jun 2026 20:25:16 -0300 Subject: [PATCH 1/9] chore(release): reset v0.1.0 baseline Remove the bad generated changelog and point release-please at the current master baseline so the rebuilt v0.1.0 notes are generated only from the curated feature commits in this branch. --- .release-please-manifest.json | 2 +- CHANGELOG.md | 15 --------------- release-please-config.json | 1 + 3 files changed, 2 insertions(+), 16 deletions(-) delete mode 100644 CHANGELOG.md diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 466df71..e18ee07 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.1.0" + ".": "0.0.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 3391cd4..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,15 +0,0 @@ -# Changelog - -## 0.1.0 (2026-06-07) - - -### Features - -* **release:** bootstrap initial release ([ea9e64b](https://github.com/This-Is-NPC/backstage/commit/ea9e64bd3f86e377475915e6493578b05e269e00)) -* **release:** bootstrap initial release ([11b308c](https://github.com/This-Is-NPC/backstage/commit/11b308cb1f7f789b6875d55a082a764a87baa616)) - - -### Bug Fixes - -* **release:** set initial version to 0.1.0 ([d6be6f4](https://github.com/This-Is-NPC/backstage/commit/d6be6f43106a5022cc0fafca60dad1e740bac622)) -* **release:** set initial version to 0.1.0 ([b2cddb9](https://github.com/This-Is-NPC/backstage/commit/b2cddb95f9c261900d953c6e594b635c2d9b132f)) diff --git a/release-please-config.json b/release-please-config.json index b974b22..8d61cb5 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,5 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "bootstrap-sha": "d6a0e44cd330b6927966f026cf3805a82e0f73d9", "packages": { ".": { "release-type": "go", From bdde1fc5026102a173996fac4be5420590a6100d Mon Sep 17 00:00:00 2001 From: This-Is-NPC Date: Sun, 7 Jun 2026 20:25:26 -0300 Subject: [PATCH 2/9] feat(installer): add release asset installers Install Backstage from GitHub release archives like Omakiten instead of requiring users to build from source with go install. --- .goreleaser.yml | 2 ++ README.md | 10 +++++-- install.ps1 | 51 +++++++++++++++++++++++++++++++++++ install.sh | 70 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 install.ps1 create mode 100755 install.sh diff --git a/.goreleaser.yml b/.goreleaser.yml index a404c78..1f0e517 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -35,6 +35,8 @@ archives: files: - LICENSE - README.md + - install.sh + - install.ps1 checksum: name_template: checksums.txt diff --git a/README.md b/README.md index 51b9972..3d1c986 100644 --- a/README.md +++ b/README.md @@ -75,10 +75,16 @@ repeatable build output. ## Quickstart -Install: +Install on Linux, macOS, or WSL: ```bash -go install github.com/This-Is-NPC/backstage/cmd/backstage@latest +curl -fsSL https://raw.githubusercontent.com/This-Is-NPC/backstage/master/install.sh | bash +``` + +Install on Windows PowerShell: + +```powershell +irm https://raw.githubusercontent.com/This-Is-NPC/backstage/master/install.ps1 | iex ``` Record a scene: diff --git a/install.ps1 b/install.ps1 new file mode 100644 index 0000000..942e087 --- /dev/null +++ b/install.ps1 @@ -0,0 +1,51 @@ +# install.ps1 - fetch the latest Backstage release and install backstage.exe. + +$ErrorActionPreference = "Stop" + +$Repo = "This-Is-NPC/backstage" +$InstallDir = if ($env:INSTALL_DIR) { $env:INSTALL_DIR } else { "$env:LOCALAPPDATA\Programs\backstage" } + +function Get-LatestTag { + $release = Invoke-RestMethod -Uri "https://api.github.com/repos/$Repo/releases/latest" + return $release.tag_name.TrimStart("v") +} + +function Get-Arch { + switch ($env:PROCESSOR_ARCHITECTURE) { + "AMD64" { return "x86_64" } + "ARM64" { return "arm64" } + default { throw "unsupported architecture: $env:PROCESSOR_ARCHITECTURE" } + } +} + +function Add-ToPath { + param([string]$Dir) + $current = [Environment]::GetEnvironmentVariable("Path", "User") + if ($current -notlike "*$Dir*") { + [Environment]::SetEnvironmentVariable("Path", "$current;$Dir", "User") + Write-Host "=> Added $Dir to your user PATH. Restart your terminal to use 'backstage'." + } +} + +$tag = if ($env:VERSION) { $env:VERSION.TrimStart("v") } else { Get-LatestTag } +$arch = Get-Arch +$asset = "backstage_Windows_${arch}.zip" +$url = "https://github.com/$Repo/releases/download/v$tag/$asset" +$tmpdir = [System.IO.Path]::GetTempPath() + [System.Guid]::NewGuid().ToString() + +Write-Host "=> Installing backstage v$tag for Windows $arch..." +Write-Host "=> Downloading $url" + +New-Item -ItemType Directory -Path $tmpdir -Force | Out-Null +Invoke-WebRequest -Uri $url -OutFile "$tmpdir\$asset" +Expand-Archive -Path "$tmpdir\$asset" -DestinationPath $tmpdir -Force + +New-Item -ItemType Directory -Path $InstallDir -Force | Out-Null +Copy-Item -Path "$tmpdir\backstage.exe" -Destination "$InstallDir\backstage.exe" -Force +Remove-Item -Recurse -Force $tmpdir + +Add-ToPath -Dir $InstallDir + +$version = & "$InstallDir\backstage.exe" --version +Write-Host "=> Installed $version" +Write-Host "=> Run 'backstage --help' to get started" diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..f74baf9 --- /dev/null +++ b/install.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash +set -euo pipefail + +# install.sh - fetch the latest Backstage release and install the binary. + +REPO="This-Is-NPC/backstage" +INSTALL_DIR="${INSTALL_DIR:-$HOME/.local/bin}" + +get_latest_tag() { + curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | + grep -m1 '"tag_name":' | + sed -E 's/.*"tag_name" *: *"v?([^"]+)".*/\1/' +} + +get_os() { + case "$(uname -s)" in + Linux*) echo Linux ;; + Darwin*) echo Darwin ;; + *) echo "unsupported OS: $(uname -s)" >&2; exit 1 ;; + esac +} + +get_arch() { + case "$(uname -m)" in + x86_64|amd64) echo x86_64 ;; + arm64|aarch64) echo arm64 ;; + *) echo "unsupported architecture: $(uname -m)" >&2; exit 1 ;; + esac +} + +ensure_path() { + command -v backstage >/dev/null 2>&1 && return + case ":${PATH}:" in + *":${INSTALL_DIR}:"*) return ;; + esac + echo "=> Adding ${INSTALL_DIR} to PATH" + case "${SHELL:-}" in + */zsh) echo "export PATH=\"${INSTALL_DIR}:\${PATH}\"" >> "${HOME}/.zshrc" ;; + */bash) echo "export PATH=\"${INSTALL_DIR}:\${PATH}\"" >> "${HOME}/.bashrc" ;; + *) echo "=> Please add ${INSTALL_DIR} to your PATH manually" ;; + esac +} + +main() { + local tag="${VERSION:-$(get_latest_tag)}" + tag="${tag#v}" + local os; os="$(get_os)" + local arch; arch="$(get_arch)" + local asset="backstage_${os}_${arch}.tar.gz" + local url="https://github.com/${REPO}/releases/download/v${tag}/${asset}" + local tmpdir; tmpdir="$(mktemp -d)" + + echo "=> Installing backstage v${tag} for ${os} ${arch}..." + echo "=> Downloading ${url}" + + curl -fsSL "${url}" -o "${tmpdir}/${asset}" + tar -xzf "${tmpdir}/${asset}" -C "${tmpdir}" + + mkdir -p "${INSTALL_DIR}" + install -m 755 "${tmpdir}/backstage" "${INSTALL_DIR}/backstage" + + rm -rf "${tmpdir}" + + ensure_path + + echo "=> Installed $("${INSTALL_DIR}/backstage" --version)" + echo "=> Run 'backstage --help' to get started" +} + +main "$@" From 2d581c3323de6e9e5cac15bd83bec4f92cbeacc3 Mon Sep 17 00:00:00 2001 From: This-Is-NPC Date: Sun, 7 Jun 2026 20:25:39 -0300 Subject: [PATCH 3/9] feat(recorder): capture workflows as mp4 tutorials From 79f80a809c5e972f5db1e5367bbf633341b56ac7 Mon Sep 17 00:00:00 2001 From: This-Is-NPC Date: Sun, 7 Jun 2026 20:25:39 -0300 Subject: [PATCH 4/9] feat(scene): script reusable software workflows From dd182fb72300ade6de830b5f8408c11a9bed8c14 Mon Sep 17 00:00:00 2001 From: This-Is-NPC Date: Sun, 7 Jun 2026 20:25:39 -0300 Subject: [PATCH 5/9] feat(prompter): narrate recordings on screen From 7bff90c98b97c51ba51c3bf4168b9068b7fe46c9 Mon Sep 17 00:00:00 2001 From: This-Is-NPC Date: Sun, 7 Jun 2026 20:25:39 -0300 Subject: [PATCH 6/9] feat(prop): run external automation scripts From 95b5fdd38b14120b881faa29aefaa15e21ec36fb Mon Sep 17 00:00:00 2001 From: This-Is-NPC Date: Sun, 7 Jun 2026 20:25:40 -0300 Subject: [PATCH 7/9] feat(rehearsal): validate scenes without recording From 1ae00ae84050f9e11e04d1f0af3d848467d7dbc1 Mon Sep 17 00:00:00 2001 From: This-Is-NPC Date: Sun, 7 Jun 2026 20:25:40 -0300 Subject: [PATCH 8/9] feat(production): stitch multi-scene videos From 820ec9a474bb69c450abb56ff9b6e6d495c24d7b Mon Sep 17 00:00:00 2001 From: This-Is-NPC Date: Sun, 7 Jun 2026 20:25:40 -0300 Subject: [PATCH 9/9] feat(config): define local project productions