You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+20Lines changed: 20 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,26 @@ All notable changes to this project will be documented in this file. This projec
4
4
5
5
Automated releases are managed by [semantic-release](https://github.com/semantic-release/semantic-release).
6
6
7
+
## 1.5.0 (2026-02-20)
8
+
9
+
### BREAKING CHANGES - Making Core less opinionated
10
+
11
+
***Remove `users` table from Core** — Core no longer creates or manages a `users` table. Authentication and user management are now the consumer's responsibility, aligning Core with a framework-first philosophy (bring your own auth). Consumers that relied on Core's `users` table must create it themselves before any tables that reference `users(id)`.
12
+
***Make `user_id` nullable on `links` and `webhooks` tables** — The `user_id` column on both `links` and `webhooks` is now nullable with no foreign key constraint. This enables single-tenant usage without a user model.
13
+
***Remove `User`, `Organization`, `AppConfig`, and `OrganizationSettings` types** — These Cloud-only types have been removed from `@linkforty/core/types`. Consumers that imported them must define their own.
14
+
15
+
### Features
16
+
17
+
***Optional `userId` across all API endpoints** — All link, analytics, webhook, and debug endpoints now accept `userId` as an optional parameter. When provided, queries are scoped to that user (multi-tenant mode). When omitted, all records are accessible (single-tenant mode).
18
+
***Single-tenant mode** — Core can now be used without any user/auth model. Create and manage links, view analytics, and configure webhooks without providing a `userId`.
19
+
***WebSocket live debug stream no longer requires `userId`** — When `userId` is omitted, the `/api/debug/live` WebSocket streams all click events.
20
+
21
+
### Removed
22
+
23
+
*`users` table DDL and `idx_users_email` index from `initializeDatabase()`
24
+
*`JWT_SECRET` and email configuration sections from `.env.example`
25
+
*`User`, `Organization`, `AppConfig`, `OrganizationSettings` interfaces from types
0 commit comments