Repository navigation
v0.3.0 — SQLite-only (breaking: Postgres removed, fresh DB required)
⚠️ 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_URLnow 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
- Install the new binary (
curl -fsSL https://raw.githubusercontent.com/ishan-parihar/social-forge/main/install.sh | bash). - Set
DATABASE_URL=sqlite://data/social-forge.db?mode=rwc. - Run
social-forge serveonce — the.dbfile is created and migrated for you. - Re-point backups and any external tooling from the Postgres instance to the
.dbfile.
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
@mentiontrigger, 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 +
PostContentand on LinkedIn/Reddit/Slack requests.
Media
- Pluggable
MediaStoragebackend 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/mediaexempted from the 10 MB transport cap.
API & platform surface
/api/v1read surface with authenticated API keys, plusconfig reset-passwordfor the single-user WebUI gate.- Per-client rate limits on login, provider connect, and media upload.
- OAuth scope loss surfaced as
409with a reconnect hint. - Analytics honors a real persisted
goal_per_day; engagement impressions column,make_intervalcast, andpost_statetext 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-forgeskill + 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-helperworkspace 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