v3.1.0

Worklenz/worklenzv3.1.0Sep 25, 2026by chamikaJ

Upgrading?

AI Summary

This is a major milestone release that transitions the entire platform to 100% AGPLv3 Open Source and introduces a Modular Addon Engine to support custom enterprise workflows and integrations.

Key Highlights

  • Transitioned to 100% AGPLv3 Open Source model (commercial licensing removed)
  • Introduced Modular Addon Engine & SDK for custom enterprise workflows
  • Enabled isolated database migrations for addons to prevent schema conflicts
  • Added UI Extension Slots for Navigation, Project Settings, and Project List

Breaking Changes

  • Commercial licensing has been retired; the platform is now 100% AGPLv3 Open Source

New Features

  • Modular Addon Engine with self-contained directories
  • Backend Addon SDK for database access and controllers
  • Isolated Addon Database Migrations with collision detection
  • Frontend UI Extension Slots for navigation and project settings
  • Cross-platform compatibility for addon loading

Full Release Notes

# 🚀 Worklenz Release: 100% AGPLv3 Open Source

We are thrilled to announce a major milestone for Worklenz! With this release, the entire core platform and client portal have transitioned to a **100% Open Source model under the GNU Affero General Public License v3.0 (AGPLv3)**, alongside the debut of our new **Modular Addon Architecture**.

---

## 🌟 Highlights

### 🔓 100% AGPLv3 Open Source
- **Commercial Licensing Removed**: We have retired the dual-licensing and commercial license restrictions across the repository, backend extensions, and the Client Portal.
- **Freedom to Self-Host**: All features across the core platform are now unified under **GNU AGPLv3**, providing self-hosters and organizations complete freedom to inspect, customize, and deploy Worklenz without licensing barriers.

---

## 🧩 New Features

### 🔌 Modular Addon Engine & SDK Architecture
To allow custom enterprise workflows, bespoke client integrations, and private features to coexist cleanly alongside the open-source core, we have introduced a powerful, decoupled **Addon Engine**:

- **Self-Contained Addons (`/addons/<addon-id>`)**:
  - Independent directories containing their own backend routes, database migrations, frontend UI components, and state management.
  - Enabled simply by declaring them in environment variables: `ENABLED_ADDONS=addon-a,addon-b`.

- **Backend Addon SDK (`@worklenz/addon-sdk`)**:
  - Exposes core utilities, database access, base controllers, notifications, and validators to addons.
  - Reuses the core backend's compiled modules and PostgreSQL connection pool, ensuring optimal resource usage with zero duplicate connection overhead.
  - Dynamically mounts addon routers under `/api/v1/addons/<addon-id>`.

- **Isolated Addon Database Migrations**:
  - Run migrations for all enabled addons via `npm run migrate:addons`.
  - Each addon tracks its schema in a dedicated tracking table (e.g. `pgmigrations_<addon_id>`), guaranteeing zero interference with the core database schema.
  - Built-in collision detection, deduplication, and pre-flight validation prevent schema conflicts.

- **Frontend UI Extension Slots**:
  - Addons can inject UI components into established platform slots without modifying core code:
    - **Navigation Bar**: Add custom menu entries (`navigationItems`).
    - **Project Settings**: Register dedicated configuration tabs (`projectSettingsTabs`).
    - **Project List**: Inject customized data columns (`projectListColumns`).
    - **Routing & State**: Dynamically register React Router routes and Redux slices.
  - Built-in collision guards protect core Redux slices (`auth`, `user`, etc.) from being overwritten.

---

## 🛠️ Improvements & Stability Fixes

- **Cross-Platform Compatibility**: Replaced hardcoded POSIX path delimiters with platform-native separators, ensuring seamless addon loading on Windows, Linux, and macOS.
- **Robust Migration Runner**:
  - Scoped PostgreSQL constraint guards (`conrelid`) to specific tables, ensuring idempotent migration execution across fresh and existing databases.
  - Enhanced migration runners to properly fail on non-zero statuses, process signals, and corrupted manifests.
- **Vite Plugin Integration**:
  - Vite addons plugin now honors environment variables loaded via `.env` files (`VITE_ENABLED_ADDONS`, custom branding titles, and favicons).
  - Gracefully guards against incomplete or unmounted extension slot components.
- **Docker & Self-Hosting Enhancements**:
  - Updated environment templates (`.env.example`, `worklenz-backend/.env.template`, `worklenz-frontend/.env.example`) with addon engine documentation.
  - Streamlined container bootstrap scripts and documentation in `docs/SELF_HOSTING.md`.

---

## ⚙️ Configuration & Quick Start

### Enabling Installed Addons

In your `.env` file:
```env
# Comma-separated list of enabled addon directory IDs
ENABLED_ADDONS=wip-sheet,crm-handoffs

# For frontend-only builds
VITE_ENABLED_ADDONS=wip-sheet,crm-handoffs
```

### Running Addon Migrations
```bash
cd worklenz-backend
npm run migrate:addons
```

---

## 🤝 Contributing & Community
With the full AGPLv3 transition, community contributions, bug reports, and addon development are more welcome than ever! Check out our updated [README](https://github.com/Worklenz/worklenz/blob/main/README.md) and [`addons/README.md`](https://github.com/Worklenz/worklenz/blob/main/addons/README.md) to get involved.

Related Repositories