| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| Leantime-v3.12.0.tar.gz | 2026-10-15 | 118.4 MB | |
| Leantime-v3.12.0.zip | 2026-10-15 | 125.5 MB | |
| Leantime v3.12.0 source code.tar.gz | 2026-10-15 | 29.7 MB | |
| Leantime v3.12.0 source code.zip | 2026-10-15 | 30.8 MB | |
| README.md | 2026-10-15 | 11.0 kB | |
| Totals: 5 Items | 304.3 MB | 1 | |
Version: 3.12.0
Highlights
Safer, self-updating plugins
Plugins now update from right inside Leantime: update notices surface available versions, a one-click update applies them with automatic rollback if something goes wrong, and you can opt in to fully automatic plugin updates. A new version guard and crash breaker keep an incompatible or failing plugin from taking down the rest of your workspace. (#3920, [#3921], [#3922])
A refreshed, consistent interface
A new shared component library brings cards, dialogs, forms, menus, tabs and more onto one consistent look and type scale across the whole app - from reports and My Work to kanban boards, goals, ideas and plugin screens. Dialog titles, close buttons and Delete actions now live in a standard modal header, and menus, filters and panels all use one dropdown. (#3887, [#3900], [#3901], [#3881], [#3884])
Upgrade Notes
- Database update: 3.12 runs a small migration (db version 3.5.30) that merges duplicate plugin rows left by older plugin updates. After upgrading, log in as an admin and confirm the database update screen, or run
php bin/leantime db:migrate. - Plugin compatibility: plugins can now declare the Leantime versions they support (
"extra": {"leantime": {"requires": ">=3.12 <4.0"}}in their composer.json). Plugins that don't declare a range are treated as supporting 3.x. A plugin that doesn't support the running version is skipped instead of loaded, shown as "Not compatible" in My Apps, and admins get a notification.system:updatelists such plugins before updating. Plugins configured viaLEAN_PLUGINSare not checked. - Crash breaker: a plugin that causes 5 failing requests within 10 minutes is disabled automatically (its license stays active) and admins are notified.
- One-click plugin updates reuse the stored license key and verify the new version in a separate PHP process before keeping it. The server needs a PHP command line available; without one the update is rolled back. Automatic plugin updates are off by default and only install minor/patch releases.
- Installing from git: a new Composer dependency (
composer/semver) was added. The release packages include it; git-based installs need to runcomposer install. - New plugin and component strings are English-only for now.
New Features
- One-click and automatic plugin updates - Update notices, one-click updates with rollback, and opt-in automatic updates, with duplicate plugin rows merged (#3921, [#3922])
- Plugin stability safeguards - A version guard and crash breaker isolate incompatible or failing plugins (#3920)
- Enhanced select fields - All selects moved to a faster enhanced picker (SlimSelect v2), including a new tag field and in-field tag entry, replacing Chosen (#3873, [#3874], [#3904])
- New UI building blocks - Added date picker, button groups, checkboxes and toggles, radios, accordions, info tips, empty states, avatars, badges, status dots, tags, progress bars, alerts, steps and more (#3918, [#3914], [#3908], [#3911], [#3919], [#3912], [#3913], [#3906], [#3905], [#3910], [#3917], [#3915])
- Table view-bar actions - Export and Columns moved into the view bar, with Show Tasks inside the Filter menu (#3898)
- Delete in the dialog header - Delete actions now live in the dialog header's ⋮ menu instead of the body (#3902)
Bug Fixes
- Plugin notices now display their text instead of a raw language key (#3924)
- Docs page polish: header rules, Delete placement, save status and title field, and the empty page now sits in a proper card (#3903, [#3886])
- Composer lists built while plugins were unavailable are no longer cached (#3883)
- Core component text, tabs and view-bar labels now follow the type scale, with chip hover, height and Edit-label fixes in dialogs, tables and row menus (#3897, [#3896], [#3895])
Dependency Updates
- Bumped plugins adding a 50% retention offer on cancel (#3878)
- Bumped plugins with enhanced selects for CustomFields and the StrategyPro goal KPI picker (#3875)
What's Changed
Other Changes
- feat(components): forms.select no-op primitive + migrate 115 selects (43 files) by @marcelfolaron in https://github.com/Leantime/leantime/pull/3873
- feat(components): enhanced forms.select on SlimSelect v2, drop Chosen by @marcelfolaron in https://github.com/Leantime/leantime/pull/3874
- chore: bump plugins (enhanced selects for CustomFields and the StrategyPro goal KPI picker) by @marcelfolaron in https://github.com/Leantime/leantime/pull/3875
- chore: bump plugins (50% retention offer on cancel) by @marcelfolaron in https://github.com/Leantime/leantime/pull/3878
- feat(components): forms.chip — one handler for every status/priority/milestone/assignee picker by @marcelfolaron in https://github.com/Leantime/leantime/pull/3879
- fix(views): don't cache a composer list built while plugins were unavailable by @marcelfolaron in https://github.com/Leantime/leantime/pull/3883
- feat(components): actions.dropdown — one component for every menu, filter and panel dropdown by @marcelfolaron in https://github.com/Leantime/leantime/pull/3881
- feat(components): one width scale for selects and text inputs by @marcelfolaron in https://github.com/Leantime/leantime/pull/3882
- feat(components): navigation.view-tabs — views and page actions above the content box by @marcelfolaron in https://github.com/Leantime/leantime/pull/3884
- feat(components): one underline look for section tabs in cards and modals by @marcelfolaron in https://github.com/Leantime/leantime/pull/3885
- fix(wiki): empty Docs page sits in a white card by @marcelfolaron in https://github.com/Leantime/leantime/pull/3886
- feat(components): elements.card, core text tokens, report Resources page on the shared look by @marcelfolaron in https://github.com/Leantime/leantime/pull/3887
- feat(report): every report page on elements.card, all report text on the type scale by @marcelfolaron in https://github.com/Leantime/leantime/pull/3888
- feat(components): plain core boxes on elements.card by @marcelfolaron in https://github.com/Leantime/leantime/pull/3889
- feat(components): shared entity cards on elements.card (project, milestone, blueprint item, team member, plugin) by @marcelfolaron in https://github.com/Leantime/leantime/pull/3890
- feat(components): kanban, idea, goal and other entity cards on elements.card by @marcelfolaron in https://github.com/Leantime/leantime/pull/3891
- feat(components): My Work to-do cards on elements.card by @marcelfolaron in https://github.com/Leantime/leantime/pull/3892
- feat(components): comments, status updates, subtasks and file tiles on elements.card by @marcelfolaron in https://github.com/Leantime/leantime/pull/3893
- fix(components): tab and view-bar labels on the type scale (14px) by @marcelfolaron in https://github.com/Leantime/leantime/pull/3895
- fix(components): chip hover underline in dialogs, chip height in tables, bold Edit in row menu by @marcelfolaron in https://github.com/Leantime/leantime/pull/3896
- fix(components): all core component text on the type scale by @marcelfolaron in https://github.com/Leantime/leantime/pull/3897
- feat(components): table Export / Columns in the view bar; Show Tasks inside Filter by @marcelfolaron in https://github.com/Leantime/leantime/pull/3898
- feat(components): forms.label — one field label look by @marcelfolaron in https://github.com/Leantime/leantime/pull/3899
- feat(components): actions.modal-header — dialog header row with its own close X by @marcelfolaron in https://github.com/Leantime/leantime/pull/3900
- feat(components): every titled core dialog uses the modal header by @marcelfolaron in https://github.com/Leantime/leantime/pull/3901
- feat(components): Delete moves from dialog bodies into the header ⋮ by @marcelfolaron in https://github.com/Leantime/leantime/pull/3902
- fix(wiki): Docs page — header rules, Delete placement, save status, title field by @marcelfolaron in https://github.com/Leantime/leantime/pull/3903
- feat(components): forms.tags — tag field on the enhanced select by @marcelfolaron in https://github.com/Leantime/leantime/pull/3904
- feat(components): elements.section-header; core section titles use it by @marcelfolaron in https://github.com/Leantime/leantime/pull/3907
- feat(components): elements.badge + elements.status-dot by @marcelfolaron in https://github.com/Leantime/leantime/pull/3906
- feat(components): elements.tag-list for read-only tags; Blueprint item field says Title by @marcelfolaron in https://github.com/Leantime/leantime/pull/3905
- feat(components): feedback.progress; core completion bars use it by @marcelfolaron in https://github.com/Leantime/leantime/pull/3910
- feat(components): elements.list-item; report Needs attention uses it by @marcelfolaron in https://github.com/Leantime/leantime/pull/3909
- feat(components): elements.avatar by @marcelfolaron in https://github.com/Leantime/leantime/pull/3913
- feat(components): forms.checkbox (+ toggle variant) and forms.radio by @marcelfolaron in https://github.com/Leantime/leantime/pull/3908
- feat(components): navigation.steps; invite onboarding uses it by @marcelfolaron in https://github.com/Leantime/leantime/pull/3915
- feat(components): elements.details-list and feedback.alert by @marcelfolaron in https://github.com/Leantime/leantime/pull/3917
- feat(components): elements.empty-state by @marcelfolaron in https://github.com/Leantime/leantime/pull/3912
- feat(components): variants the plugins need (icon button, modal eyebrow, header status, accent/selected card, stat tones) by @marcelfolaron in https://github.com/Leantime/leantime/pull/3916
- feat(components): elements.info-tip; dialogs announce loaded content by @marcelfolaron in https://github.com/Leantime/leantime/pull/3919
- feat(components): forms.button-group (joined + segmented) by @marcelfolaron in https://github.com/Leantime/leantime/pull/3914
- feat(components): elements.accordion on native by @marcelfolaron in https://github.com/Leantime/leantime/pull/3911
- feat(components): forms.date-picker by @marcelfolaron in https://github.com/Leantime/leantime/pull/3918
- feat(plugins): version guard and crash breaker for plugins by @marcelfolaron in https://github.com/Leantime/leantime/pull/3920
- feat(plugins): update notices and one-click plugin updates with rollback by @marcelfolaron in https://github.com/Leantime/leantime/pull/3921
- feat(plugins): opt-in automatic plugin updates; merge duplicate plugin rows by @marcelfolaron in https://github.com/Leantime/leantime/pull/3922
- fix(plugins): plugin notices never read as a bare language key by @marcelfolaron in https://github.com/Leantime/leantime/pull/3924
- Release v3.12.0 by @marcelfolaron in https://github.com/Leantime/leantime/pull/3925
Full Changelog: https://github.com/Leantime/leantime/compare/v3.11.0...v3.12.0