Skip to content

v0.5.0

Choose a tag to compare

@masoncfrancis masoncfrancis released this 17 Jul 19:55

v0.5.0 [CONTAINS BREAKING CHANGES]

Upgrade caution: Backup your data before upgrading. See Breaking Changes for important notes.

Breaking Changes

  • Port changed from 80 to 3005. The monolithic Docker container no longer runs nginx. Go Fiber serves both the API and static frontend files directly on port 3005. Update any custom docker-compose files from 3005:80 to 3005:3005. (#116)
  • Nginx removed from production image. Nginx config files (nginx-default.conf, nginx-main.conf) deleted. No reverse proxy between client and server. If you relied on the built-in nginx for TLS, auth, or custom routing, you will need to add your own reverse proxy layer. (#116)
  • Go Fiber v2 → v3 upgrade. Fiber v3 has API changes. If you run the server binary directly (not via Docker), you must use the updated binary — old v0.4.4 binaries are not compatible with new code in the frontend. (#113)
  • Go 1.25+ required. Server now requires Go 1.25.0 (was 1.23.2).
  • DB dialect lock file. On first startup, the server writes a lock file (./data/db/.db_dialect) recording whether SQLite or PostgreSQL is in use. Switching dialects after first run requires setting FORCE_DB_DIALECT_CHANGE=true or deleting the lock file.

What you need to do

  • If you are using Docker, change the port mapping to 3005:3005.
  • If you are building from source, upgrade to Go 1.25+ before building the server binary.
  • If you are switching from SQLite to PostgreSQL, follow the migration instructions below. If you are not switching, you can leave your existing database alone — the server will continue to use it.

Features

  • PostgreSQL support. Set DB_DIALECT=postgres with a DATABASE_URL or individual DB_* environment variables. See docker/postgres.docker-compose.yml for a reference setup. (#109)
  • Backup & Import. Full backup/restore system accessible from Settings page. Backup is a ZIP containing data.json (all records, dialect-agnostic) + uploads/ directory. Import performs a wipe-and-replace. Works identically for SQLite and PostgreSQL.
  • Legacy backup import. Directly import backups from v0.4.4 and earlier. The import endpoint detects old-format .db files inside backup ZIPs and converts them automatically. (#121)
  • Configurable request logging. New LOG_CONSOLE (default true) and LOG_FILE environment variables control logging. Colored output with status, duration, method, path, and client IP. (#117)
  • Version flag. Run main --version or main -v to print the version and exit.
  • Demo mode improvements. Demo data auto-resets every 10 minutes. Console shows countdown ("Demo reset in X minute(s)"). Demo mode is SQLite-only — warning printed if enabled with PostgreSQL.
  • OpenAPI spec updated. Significant rewrite of server/openapi.yaml with additional endpoints (backup, import, attach). (#115)
  • Docker image 0 tag. The docker-image workflow now also tags images as francislaboratories/homelogger:0.

Bug Fixes

  • Tests now pass reliably across SQLite and PostgreSQL by using dialect-aware test helpers. (#112)
  • Legacy associated_id column on saved_files table is automatically dropped during migration if present.
  • Port configuration no longer conflicts between nginx and Go server (single port, single process).
  • PORT env var accepts bare port numbers (e.g. PORT=3005), not just :3005. (#122)

Dependency Upgrades

Dependency Old New
Go 1.23.2 1.25.0
github.com/gofiber/fiber v2.52.14 v3.4.0
github.com/jackc/pgx/v5 v5.6.0 v5.9.2
github.com/andybalholm/brotli v1.1.0 v1.2.2
github.com/klauspost/compress v1.17.9 v1.19.0
github.com/valyala/fasthttp v1.51.0 v1.72.0
golang.org/x/sys v0.28.0 v0.46.0
golang.org/x/text v0.20.0 v0.38.0

Added: gorm.io/driver/postgres v1.6.0, github.com/jackc/pgpassfile, github.com/jackc/pgservicefile, github.com/jackc/puddle/v2, github.com/gofiber/schema v1.8.0, github.com/gofiber/utils/v2 v2.1.1, golang.org/x/crypto, golang.org/x/net, golang.org/x/sync.

Migrating from SQLite to PostgreSQL

  1. Backup your existing data. Open Settings → "Download Backup" to get homelogger-backup.zip.

  2. Start a new PostgreSQL instance. Use docker/postgres.docker-compose.yml as a reference:

    services:
      postgres:
        image: postgres:15-alpine
        environment:
          POSTGRES_USER: homelogger
          POSTGRES_PASSWORD: ChangeMe
          POSTGRES_DB: homelogger
        volumes:
          - postgres_data:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
          interval: 5s
          timeout: 5s
          retries: 5
    
      server:
        image: francislaboratories/homelogger:latest
        environment:
          DB_DIALECT: postgres
          DATABASE_URL: postgresql://homelogger:ChangeMe@postgres:5432/homelogger?sslmode=disable
        depends_on:
          postgres:
            condition: service_healthy
        ports:
          - "3005:3005"
        volumes:
          - server_data:/root/data
    
    volumes:
      postgres_data:
      server_data:
  3. Start the server.

  4. Import your backup. Open Settings → "Import Backup" → select your ZIP → confirm. All data is imported to PostgreSQL. (#121)

Alternative: manual import via API

curl -X POST -F "backup=@homelogger-backup.zip" http://localhost:3005/api/backup/import

Issues with Upgrade or Migration

If you encounter issues with the upgrade or migration, please create an issue on GitHub, or post in the Discussions section under the new version. Provide as much detail as possible. Please do not share any sensitive data (e.g., your backup ZIP) publicly. If you need to share a backup for debugging, the maintainer may provide a secure way to share it privately.

Notes

  • Import is destructive — existing data is replaced.
  • Keep an extra copy of the backup ZIP before importing.
  • Demo mode is SQLite-only; it is automatically disabled when using PostgreSQL.

Full Changelog: 0.4.4...0.5.0