v0.1.2: Add VERSION.txt with build-time injection

This commit is contained in:
lotherk
2026-03-27 14:50:20 +00:00
parent 4a870dd5e3
commit b42801b6c5
7 changed files with 44 additions and 5 deletions

View File

@@ -223,7 +223,17 @@ bun run test:server
```
Tests require the server running. The test script starts the server, runs tests, then stops it.
## Version Management
Version is managed via `VERSION.txt` (single source of truth). All other version references (`backend/package.json`, `frontend/package.json`, `backend/src/index.ts`) use placeholder `{{VERSION}}` and are replaced at build time.
### Versioning Rules
- Bump micro version (0.1.x) on every commit
- Update `VERSION.txt` before committing
- Never commit actual version numbers in source files
## Version History
- 0.1.2: VERSION.txt build-time injection, docs nav fixes, blog link
- 0.1.1: System default AI configuration via env vars, "Use system default" checkbox in settings
- 0.1.0: Automatic geolocation capture, Starlight documentation site
- 0.0.6: Automatic geolocation capture on event creation, reverse geocoding to place names

View File

@@ -1,5 +1,9 @@
# Multi-stage build: Backend + Frontend
FROM alpine:latest AS version
COPY VERSION.txt /tmp/version.txt
FROM oven/bun:1.1-alpine AS backend-builder
COPY --from=version /tmp/version.txt /tmp/version.txt
WORKDIR /app/backend
COPY backend/package*.json ./
@@ -7,11 +11,13 @@ RUN bun install
COPY backend/prisma ./prisma
RUN bunx prisma generate
COPY backend/src ./src
RUN bun build src/index.ts --outdir ./dist --target bun
COPY backend/package.json ./
RUN sed -i "s/{{VERSION}}/$(cat /tmp/version.txt)/g" src/index.ts && sed -i "s/{{VERSION}}/$(cat /tmp/version.txt)/g" package.json && bun build src/index.ts --outdir ./dist --target bun
FROM node:20-alpine AS frontend-builder
ARG VITE_GIT_URL=https://git.kropa.tech/lotherk/deardiary
ARG VITE_WEBSITE_URL=https://deardiary.lother.io
COPY --from=backend-builder /tmp/version.txt /tmp/version.txt
WORKDIR /app/frontend
COPY frontend/package*.json ./
@@ -19,7 +25,7 @@ RUN npm install
COPY frontend ./
ENV VITE_GIT_URL=$VITE_GIT_URL
ENV VITE_WEBSITE_URL=$VITE_WEBSITE_URL
RUN npm run build
RUN sed -i "s/{{VERSION}}/$(cat /tmp/version.txt)/g" package.json && npm run build
FROM oven/bun:1.1-alpine AS runner

1
VERSION.txt Normal file
View File

@@ -0,0 +1 @@
0.1.2

View File

@@ -1,6 +1,6 @@
{
"name": "deardiary-backend",
"version": "0.0.3",
"version": "{{VERSION}}",
"type": "module",
"scripts": {
"dev": "bun --watch src/index.ts",

View File

@@ -726,7 +726,7 @@ app.post('/api/v1/ai/test', async (c) => {
}
});
const DEARDIARY_VERSION = '0.1.0';
const DEARDIARY_VERSION = '{{VERSION}}';
const MIN_IMPORT_VERSION = '0.0.3';
interface ExportData {

22
build-version.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/bash
# Build script: injects version from VERSION.txt into all build-time locations
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$SCRIPT_DIR"
VERSION=$(cat "$ROOT_DIR/VERSION.txt")
echo "Injecting version $VERSION..."
# Backend version constant
sed -i "s/const DEARDIARY_VERSION = '[^']*'/const DEARDIARY_VERSION = '$VERSION'/" "$ROOT_DIR/backend/src/index.ts"
# Backend package.json
sed -i "s/\"version\": \"[^\"]*\"/\"version\": \"$VERSION\"/" "$ROOT_DIR/backend/package.json"
# Frontend package.json
sed -i "s/\"version\": \"[^\"]*\"/\"version\": \"$VERSION\"/" "$ROOT_DIR/frontend/package.json"
echo "Done."

View File

@@ -1,7 +1,7 @@
{
"name": "deardiary-frontend",
"private": true,
"version": "0.1.0",
"version": "{{VERSION}}",
"type": "module",
"scripts": {
"dev": "vite",