Skip to content

v0.3.0 — SQLite-only (breaking: Postgres removed, fresh DB required)

Choose a tag to compare

@ishan-parihar ishan-parihar released this 01 Oct 04:37
· 473 commits to master since this release

⚠️ Breaking change: Postgres is gone, SQLite is embedded

Social Forge now stores everything in a single embedded SQLite file. There is no database server to run.

  • The Postgres backend, its DATABASE_URL=postgres://… form, and the Postgres-only deployment path are removed, not deprecated.
  • DATABASE_URL now expects an SQLite URL: sqlite://data/social-forge.db?mode=rwc
  • There is no data migration. This release will not read, convert, or import an existing Postgres database. If you are moving from v0.2.x, export anything you still need and start from a fresh database.
  • The schema is created and migrated automatically on first boot against the new file.

Upgrade from v0.2.x

  1. Install the new binary (curl -fsSL https://raw.githubusercontent.com/ishan-parihar/social-forge/main/install.sh | bash).
  2. Set DATABASE_URL=sqlite://data/social-forge.db?mode=rwc.
  3. Run social-forge serve once — the .db file is created and migrated for you.
  4. Re-point backups and any external tooling from the Postgres instance to the .db file.

If you need your old Postgres data preserved for reference, leave that instance running. Nothing in v0.3.0 touches it.

What else is in this release

Platform depth (v25 / v26)

  • Tier-1 analytics + engagement depth for YouTube, TikTok, Pinterest, LinkedIn, LinkedIn Page, Reddit, Bluesky, Facebook, Instagram, X.
  • Tier-1 comments-read, mentions search, and target discovery, plus refresh flags, unified map_error, and verified recent-posts.
  • Composer: 12 live platform previews, blocking validation, timezone-aware scheduling, per-row threaded/group scheduling, a custom @mention trigger, and a date-picker popover.
  • Platform registry made unconditional and async for publish verification.

Scheduler & publishing

  • Single-poller leader election with standby re-election when the leader dies (replaces the Postgres advisory lock).
  • Pending-publish lifecycle on SocialProvider, polled to a terminal state, with a sent comment counted as published.
  • Posting-gap detection (3h) raised as in-app notifications; async publish verification; idempotency keys on posts + PostContent and on LinkedIn/Reddit/Slack requests.

Media

  • Pluggable MediaStorage backend with optional S3/R2 support.
  • Uploads stream to disk (or straight to the active storage backend) instead of buffering the whole body; blank S3 env values are treated as unset; POST /api/media exempted from the 10 MB transport cap.

API & platform surface

  • /api/v1 read surface with authenticated API keys, plus config reset-password for the single-user WebUI gate.
  • Per-client rate limits on login, provider connect, and media upload.
  • OAuth scope loss surfaced as 409 with a reconnect hint.
  • Analytics honors a real persisted goal_per_day; engagement impressions column, make_interval cast, and post_state text comparison fixed.

Frontend

  • Semantic design-token migration (518 Tailwind color replacements, 11 hardcoded hex values, --brand-rgb), kanban drag-to-reorder + sub-states, dashboard sparkline charts, calendar and channels/analytics/media polish, an a11y + responsive + motion pass, and fixes for the first-run calendar 500, the SSR modal guard, and the error boundary.

Agent surface (AXI)

  • Installable social-forge skill + session hooks for Claude Code, Codex, and OpenCode.
  • TOON output with content truncation, aggregate counts, home view, definitive empty states, and structured AXI errors in place of raw anyhow.

Housekeeping

  • 17 compiler-confirmed dead items removed; duplicated helper/decrypt/integration chains collapsed; the toon-helper workspace member inlined; Postgres/Docker deployment path deleted; 14 stale docs purged and the README quick start corrected.

Artifacts

Platform Target Artifact
Linux x86-64 x86_64-unknown-linux-musl social-forge-linux-x64

Static musl binary (59,231,840 bytes, ~57 MiB, fully stripped) — runs on any glibc or musl Linux host with no runtime dependencies. The SvelteKit frontend is embedded in the binary; set SERVE_FRONTEND=false for API-only mode.

linux-arm64, macos-x64, and macos-arm64 are produced by the manual Release workflow (.github/workflows/release.yml) and are not attached to this draft yet.

Verify the download

echo "704ca2f5d90cc104b0ccfecf7c8891e397ebd2f953925cd78c8ec5151645dbf9  social-forge-linux-x64" | sha256sum -c -
./social-forge-linux-x64 --version    # -> social-forge 0.3.0