3 Commits
Author SHA1 Message Date
semantic-release-bot ab955afad4 chore(release): 1.2.1
## [1.2.1](https://github.com/asepharyana/TeleUploader/compare/v1.2.0...v1.2.1) (2026-09-05)

### Bug Fixes

* **ci:** bump only TeleUploader flake version, not Bun overlay ([f442797](https://github.com/asepharyana/TeleUploader/commit/f442797a86e845853c28dc22432a530560434488))
2026-09-05 17:55:02 +00:00
asepharyana f442797a86 fix(ci): bump only TeleUploader flake version, not Bun overlay
prepare.mjs previously replaced the FIRST version="X" string in flake.nix,
which is the Bun overlay override (line ~17), not the TeleUploader package
version (pname = "teleuploader", line ~30). Store path derives from the
TeleUploader version, so the Bun override got clobbered to the app version
while the store path stayed at 1.1.1 -> deploy reused the old derivation and
the VPS profile never advanced.

Now prepare.mjs anchors on pname = "teleuploader" and bumps that block only,
leaving the Bun 1.3.14 override intact. Verified: flake.nix keeps
bun version=1.3.14, teleuploader version becomes the semver-version.
Also restores bun overlay version=1.3.14 (was overwritten to 1.2.0).
2026-09-06 00:54:33 +07:00
asepharyana 6ca92fcc21 ci(release): dispatch deploy.yml on release
GitHub disables workflow re-triggering for GITHUB_TOKEN pushes (the release
commit), so the push trigger in deploy.yml never runs for release commits.
This adds @semantic-release/exec successCmd -> .semrel/dispatch.mjs which
dispatches deploy.yml for every released version, completing the auto loop:
fix/feat -> semantic-release bump -> release commit+tag -> deploy.
2026-09-06 00:47:44 +07:00
6 changed files with 85 additions and 6 deletions
+2 -1
View File
@@ -12,7 +12,8 @@
[
"@semantic-release/exec",
{
"prepareCmd": "node ./.semrel/prepare.mjs '${nextRelease.version}' && bunx biome check package.json flake.nix CHANGELOG.md 2>/dev/null || true"
"prepareCmd": "node ./.semrel/prepare.mjs '${nextRelease.version}' && bunx biome check package.json flake.nix CHANGELOG.md 2>/dev/null || true",
"successCmd": "node ./.semrel/dispatch.mjs '${nextRelease.version}'"
}
],
[
+53
View File
@@ -0,0 +1,53 @@
#!/usr/bin/env node
/**
* successCmd hook for semantic-release: dispatch the deploy workflow so the
* freshly released version is built and deployed to the VPS.
*
* GitHub disables workflow re-triggering for pushes made by GITHUB_TOKEN
* (which is what @semantic-release/git uses to commit the release), so the
* plain `push: branches: [main]` trigger in deploy.yml never fires for the
* release commit. We dispatch deploy.yml explicitly instead.
*/
const version = (process.argv[2] || '').trim();
async function main() {
const token = process.env.GITHUB_TOKEN;
if (!token) {
console.error('dispatch.mjs: GITHUB_TOKEN not set, skipping deploy dispatch');
process.exit(0);
}
if (!version) {
console.error('dispatch.mjs: no version argument, skipping');
process.exit(0);
}
const repo = process.env.GITHUB_REPOSITORY || 'asepharyana/TeleUploader';
const url = `https://api.github.com/repos/${repo}/actions/workflows/deploy.yml/dispatches`;
// dispatch with branch ref main; deploy builds #teleuploader from the
// release commit whose package.json/flake.nix already carry `version`
const res = await fetch(url, {
method: 'POST',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
'User-Agent': 'semantic-release-dispatch',
},
body: JSON.stringify({ ref: 'main' }),
});
if (res.status === 204) {
console.log(`dispatch.mjs: dispatched deploy for v${version} to ${repo} main`);
} else {
const body = await res.text().catch(() => '');
console.error(`dispatch.mjs: deploy dispatch failed (HTTP ${res.status}): ${body}`);
// Non-fatal: a user can still run the deploy workflow manually.
process.exit(0);
}
}
main().catch((err) => {
console.error('dispatch.mjs: unexpected error:', err);
process.exit(0);
});
+20 -2
View File
@@ -12,6 +12,11 @@
* while the VPS profile stayed on the old build. By bumping flake.nix's
* `version` on every release, the Nix derivation always changes and the
* store path is always fresh.
*
* IMPORTANT: only bump the TeleUploader package version (the block whose
* `pname = "teleuploader"` precedes it), never the Bun overlay version that
* appears earlier in the file. Store path is derived from the
* teleuploader package's `version`.
*/
import { readFileSync, writeFileSync } from 'node:fs';
@@ -27,9 +32,22 @@ writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`);
const flakePath = 'flake.nix';
let flake = readFileSync(flakePath, 'utf8');
const target = nextVersion ?? pkg.version;
const replaced = flake.replace(/version = "\d+\.\d+\.\d+";/, `version = "${target}";`);
const anchor = 'pname = "teleuploader";';
const anchorIdx = flake.indexOf(anchor);
if (anchorIdx === -1) {
throw new Error(`prepare.mjs: TeleUploader pname anchor not found in ${flakePath}`);
}
const rest = flake.slice(anchorIdx);
const verMatch = rest.match(/(\s*)version = "\d+\.\d+\.\d+";/);
if (!verMatch) {
throw new Error(`prepare.mjs: could not locate TeleUploader version block in ${flakePath}`);
}
const replaced =
flake.slice(0, anchorIdx) +
rest.replace(/(\s*)version = "\d+\.\d+\.\d+";/, `$1version = "${target}";`);
if (!replaced.includes(`version = "${target}";`)) {
throw new Error(`prepare.mjs: could not update version in ${flakePath} (pattern not found)`);
throw new Error(`prepare.mjs: replacement did not land in ${flakePath}`);
}
writeFileSync(flakePath, replaced);
+7
View File
@@ -1,3 +1,10 @@
## [1.2.1](https://github.com/asepharyana/TeleUploader/compare/v1.2.0...v1.2.1) (2026-09-05)
### Bug Fixes
* **ci:** bump only TeleUploader flake version, not Bun overlay ([f442797](https://github.com/asepharyana/TeleUploader/commit/f442797a86e845853c28dc22432a530560434488))
# [1.2.0](https://github.com/asepharyana/TeleUploader/compare/v1.1.1...v1.2.0) (2026-09-05)
+2 -2
View File
@@ -14,7 +14,7 @@
overlays = [
(self: super: {
bun = super.bun.overrideAttrs (old: rec {
version = "1.2.0";
version = "1.3.14";
src = super.fetchzip {
url = "https://github.com/oven-sh/bun/releases/download/bun-v1.3.14/bun-linux-x64.zip";
sha256 = "sha256:189kasncnfpq6q37q3w80dv2a92w79w20x2x6hf1fbkir5gyvzlb";
@@ -27,7 +27,7 @@
# TeleUploader package
teleuploader = pkgs.stdenvNoCC.mkDerivation rec {
pname = "teleuploader";
version = "1.1.1";
version = "1.2.1";
src = ./.;
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "filedrop",
"version": "1.2.0",
"version": "1.2.1",
"description": "Telegram file uploader backend",
"type": "module",
"scripts": {