Release Notes¶
Version history for TaskWolf. Docker images are published to Docker Hub as
kwolfgang/taskowolf-backend:<version> and kwolfgang/taskowolf-frontend:<version>
(e.g. 1.0.10). See the GitHub releases for downloads.
v1.0.15 — 2026-07-23¶
Highlights¶
- #16 Backend internationalization: backend-generated text is now localized in German and English, completing the i18n effort that the v1.0.13 frontend rollout began. Everything the server produces for a user — API error messages, email subjects and bodies, and in-app notification titles and bodies — now runs through Spring
MessageSourceand is rendered in the recipient's language (per-user preference, English fallback). Delivered across three phases: foundation + full API-error sweep (Phases 1–2) and emails + notifications (Phase 3). Untranslatable identifiers (enum codes, event types, issue keys) stay as-is by design, and three CI gates (message parity, keyed-reference integrity, no un-keyed user-facing throws) keep coverage from regressing.
Security¶
- jackson-databind 2.21.4 → 2.21.5 (#93): fixes two
@JsonViewbypass advisories — GHSA-mhm7-754m-9p8w and GHSA-5gvw-p9qm-jgwh / CVE-2026-59889 (both medium). Applied by overriding the Spring Boot BOM-managedjackson-bomversion so the whole Jackson family moves together.
Maintenance¶
- Backend dependencies (#89): includes
postgresql42.7.12 (CVE-2026-54291). - CI actions (#88): grouped GitHub Actions bumps.
v1.0.14 — 2026-07-18¶
Maintenance¶
Dependency and base-image maintenance release — no functional changes. Batches the merged Dependabot updates:
- Frontend libraries (#81): TipTap 3.27.3, lucide-react 1.24.0, Recharts 3.9.2, Vite 8.1.4, plus axios/i18next/other minor & patch bumps. TypeScript is intentionally held at 6.x — the 7.0 native rewrite moves the compiler API to unstable entrypoints and breaks our i18n scanner + typecheck, so it is deferred to a dedicated migration (Dependabot now ignores the TypeScript major).
- Base-image security (#59, #82): frontend
nodebuild image andnginx:alpineruntime image bumped to current digests; the nginx digest picks uplibexpat,c-aresandcurl/libcurlCVE fixes. - Backend (#60):
commons-compress1.26.0 → 1.28.0. - CI actions (#62): harden-runner 2.20.0, setup-java 5.5.0, setup-node 7.0.0, codeql-action 4.37.0.
v1.0.13 — 2026-07-18¶
Highlights¶
- #13 + #15 Internationalization — full rollout: the entire React frontend is now localized in German and English. Every user-facing string runs through
react-i18next(t()); switch languages via Settings → Profile. The preference persists per user (backendPATCH /me/language, migration V30) and in the browser, with English as the fallback. Dates and times are locale-aware viaIntl, including relative times ("2 hours ago" / "vor 2 Stunden") in comments and activity feeds. - Complete coverage, enforced: rolled out across all app areas over sessions S0–S18 — issues, board, backlog, sprints, dashboards & charts, reports, notifications, projects, project & user settings, workflow, automation, admin, service desk, and organizations. Coverage is guaranteed by a dependency-free hardcoded-string scanner + en/de key-parity check wired as a CI gate; the string allowlist is now empty.
- Brand chrome (
🐺 TaskWolf) and technical identifiers (enum codes, event types) stay untranslated by design.
Note: backend-generated text (Spring
MessageSource) is intentionally out of scope and tracked separately as backlog #16.
v1.0.12 — 2026-07-12¶
Highlights¶
- #14 Organizations umbrella (PR #55 backend, PR #56 frontend): organizations become an umbrella over projects with permission inheritance. A project can optionally be assigned to an organization; org Owners/Admins then inherit project Admin and org Members inherit Viewer (read-only). Inheritance is additive — an explicit project role can only raise someone's effective role, never lower it. Projects without an organization are unchanged (no DB migration).
- Org self-service: Organization Owners/Admins manage their own org (member add via user search, per-row role editor, owner/self guards, read-only for plain members) — no longer System-Admin-only. "My Organizations" is visible to every user; System Admins additionally see all orgs and the create form.
- Project ↔ organization assignment: a new project Settings → Organization page (project admins) assigns or removes a project's organization. The project Members page shows a banner explaining who has inherited access and why.
v1.0.11 — 2026-07-11¶
Highlights¶
- #10 Collapsible sidebar groups (PR #54): each left-sidebar section (Admin, Account, Project, Settings) now has its own chevron to collapse/expand just that group, with per-group state persisted in
localStorage(default: all open). Icon-rail mode is unchanged.
Fixes¶
- B3 (PR #54): the sidebar nav scrolls internally so the Logout button stays reachable even when the menu is taller than the viewport (no double scrollbar).
- B1 (PR #53): users can no longer change their own project role — a role change must come from another admin. Enforced server-side (403); the own-row role selector is disabled in the Members UI.
v1.0.10 — 2026-07-11¶
Highlights¶
- #9 Project permissions (PR #52): per-project roles (Read-only / Read & Write / Admin), a project Members management UI (add/change-role/remove with user search), and read-only enforcement server- and client-side. Owner is protected as implicit admin. No DB migration.
Hardening & fixes¶
- H1 (PR #51): nginx serves
index.htmlwithCache-Control: no-cacheso deploys pick up fresh asset hashes without a manual hard-reload. - H2 / H3 (PR #50): notification-prefs no longer leaks enum names on an unknown type (400);
changePassword/register reject all-whitespace passwords. - #12 (PR #49): Dependabot alerts cleared (logback-core 1.5.35, commons-compress 1.26.0).
- #11 (PR #48): sidebar pinned to viewport height so Logout stays reachable on long pages.
v1.0.09 — 2026-07-09¶
Backlog #3 — Profile / Settings pages (#47)¶
Per-user profile & settings under a dedicated /settings/* shell.
Backend
- PATCH /api/v1/me — update display name.
- POST /api/v1/me/password — change password (verifies current password, revokes refresh tokens but keeps personal access tokens, forces re-login).
- Per-user notification preferences (NotificationPreference + Flyway V29), opt-out model, gating both in-app and email dispatch; GET/PUT /api/v1/me/notification-preferences.
Frontend - Profile, Security, and Notifications pages plus a Settings shell with sub-nav; the sidebar Account section is now a single Settings entry. Existing Access Tokens / Account pages moved under the shell (paths unchanged).
v1.0.08 — 2026-07-08¶
Neuerungen seit v1.0.07¶
Scrollbare Listen (#45)¶
- Lange Tabellen (Audit-Log, Users, Access Tokens, API Keys, Projekt-Audit) scrollen jetzt intern in einem Container, der die Fensterhöhe füllt — mit sticky Tabellenkopf und Virtualisierung (nur sichtbare Zeilen werden gerendert). Die Seite selbst wächst nicht mehr mit der Zeilenzahl.
- Grundlage: neue wiederverwendbare
DataTable-Komponente.
Einklappbare Sidebar (#46)¶
- Die linke Navigation lässt sich zwischen breit (Icon + Text) und schmaler Icon-Leiste umschalten; eingeklappt erscheinen die Labels als Tooltip beim Hover.
- Der Zustand wird pro Browser gespeichert; unter 1024px Breite klappt die Sidebar automatisch zur Icon-Leiste ein.
Vollständiges Changelog: https://github.com/WolfTasks/TaskWolf/compare/v1.0.07...v1.0.08
v1.0.07 — 2026-07-07¶
Neuerungen seit v1.0.06¶
Personal Access Tokens (twk_) + User-Lebenszyklus (#44)¶
- Persönliche, user-gebundene Access Tokens für externe Tools —
Authorization: Bearer twk_…, mit den Rechten des jeweiligen Nutzers. - Scope Read-only / Read & Write (Read-only erlaubt nur GET/HEAD/OPTIONS, sonst 403).
- Verwaltung unter „Account → Access Tokens" (
/api/v1/me/tokens); nur SHA-256-Hash gespeichert, Klartext einmalig, Revoke als Soft-Revoke. - User-Lebenszyklus: Deaktivieren/Aktivieren + Konto löschen (Soft-Delete + Anonymisierung), self via
DELETE /api/v1/meund Admin via/api/v1/admin/users; deaktivierte/gelöschte Nutzer verlieren sofort alle Tokens; Letzter-aktiver-Admin-Guard. - Nebenbei behoben: unauthentifizierte API-Requests liefern nun
401(statt SSO-302);@PreAuthorize-Denials liefern korrekt403(statt 500).
App-Version-Anzeige (#43)¶
- Aktuelle Version auf dem Startbildschirm und unten links in der Sidebar, aus
package.json(Single Source of Truth).
Wartung¶
- Frontend-Dependencies aktualisiert (#42).
Vollständiges Changelog: https://github.com/WolfTasks/TaskWolf/compare/v1.0.06...v1.0.07
v1.0.06 — 2026-07-06¶
What's Changed¶
- feat(issue): Comments/Activity tabs, pinned sidebar & paginated feeds by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/41
Full Changelog: https://github.com/WolfTasks/TaskWolf/compare/v1.0.05...v1.0.06
v1.0.05 — 2026-07-05¶
What's Changed¶
- feat(issue): Phase 1 issue dialog (modal via ?issue= param) by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/38
- feat(issue): Phase 2 editable story points (Fibonacci) by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/39
- feat(sprints): Phase 3 Sprint-Übersicht + deferred Phase-1 minors by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/40
Full Changelog: https://github.com/WolfTasks/TaskWolf/compare/v1.0.04...v1.0.05
v1.0.03 — 2026-07-04¶
What's Changed¶
- Backend CVE remediation: Spring Boot 3.5.x upgrade by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/10
- build(deps): bump the actions group across 1 directory with 15 updates by @dependabot[bot] in https://github.com/WolfTasks/TaskWolf/pull/11
- build(deps): bump eclipse-temurin from 21-jre-alpine to 25-jre-alpine in /backend by @dependabot[bot] in https://github.com/WolfTasks/TaskWolf/pull/3
- build(deps): bump node from 20-alpine to 26-alpine in /frontend by @dependabot[bot] in https://github.com/WolfTasks/TaskWolf/pull/4
- chore(dependabot): ignore Spring Boot major bumps (stay on 3.5.x) by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/14
- fix(frontend): drop deprecated tsconfig baseUrl (unblocks TypeScript 6) by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/16
- fix(frontend): TS 6 CSS side-effect imports + recharts 3 formatter type by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/20
- build(deps): bump the frontend-deps group across 1 directory with 20 updates by @dependabot[bot] in https://github.com/WolfTasks/TaskWolf/pull/6
- build(deps): bump nginx from
35cd774to54f2a90in /frontend by @dependabot[bot] in https://github.com/WolfTasks/TaskWolf/pull/15 - chore(dependabot): ignore all backend semver-major bumps by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/21
- build(deps): Kotlin 2.4 / Gradle 9 backend toolchain migration by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/25
- build(security): bump OWASP dependency-check 11.1.0 → 12.2.2 (fix nightly scan) by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/28
- build(deps): bump the backend-deps group across 1 directory with 6 updates by @dependabot[bot] in https://github.com/WolfTasks/TaskWolf/pull/29
- build(deps): bump the actions group across 1 directory with 6 updates by @dependabot[bot] in https://github.com/WolfTasks/TaskWolf/pull/22
- fix(security): replace NVD-bound OWASP nightly with Trivy SCA scan (#30) by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/31
- fix(security): bump commons-lang3 3.17.0 -> 3.18.0 (CVE-2025-48924) by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/32
- fix(security): upgrade libexpat 2.8.1-r0 -> 2.8.2-r0 in base images by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/34
- docs(readme): add GitHub Pages documentation link by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/35
- fix(ci): publish versioned Docker tags for v1.0.0x releases by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/36
New Contributors¶
- @dependabot[bot] made their first contribution in https://github.com/WolfTasks/TaskWolf/pull/11
Full Changelog: https://github.com/WolfTasks/TaskWolf/compare/v1.0.02...v1.0.03
v1.0.02 — 2026-06-28¶
Full Changelog: https://github.com/WolfTasks/TaskWolf/compare/v1.0.01...v1.0.02
v1.0.01 — 2026-06-27¶
What's Changed¶
- feat(issues): editable issue detail — click-to-edit fields, rich text description, audit fix by @WolfTasks in https://github.com/WolfTasks/TaskWolf/pull/2
Full Changelog: https://github.com/WolfTasks/TaskWolf/compare/v1.0.0...v1.0.01
v1.0.0 — 2026-06-24¶
Changelog¶
All notable changes to TaskWolf are documented here. Format: Keep a Changelog.
[1.0.0] - 2026-06-24¶
Added¶
Core Foundation¶
- Projects with custom keys (e.g.
WOLF-42) - Issues: Epics, Stories, Bugs, Tasks, Subtasks — with priority, labels, story points, due dates, and parent–child linking
- Configurable workflows with custom statuses and transitions
- JWT authentication + OAuth2 (GitHub, Google) + API key authentication
- Role-based access control: System Admin, Project Admin, Member
- OpenAPI 3 documentation at
/swagger-ui.html - Docker + docker-compose deployment with nginx reverse proxy
Agile Boards¶
- Kanban and Scrum board views with drag-and-drop column management
- Sprint lifecycle: Planned → Active → Closed
- Backlog management and sprint planning view
- Burndown chart per sprint
Collaboration¶
- Markdown comments with
@mentionautocomplete - Real-time in-app notifications via WebSocket (STOMP)
- File attachments per issue
- Activity feed per issue
Workflows & Automation¶
- Visual workflow canvas editor with drag-and-drop transition builder
- No-code automation rules: When / If / Then
- Triggers: issue created, status changed, field updated, sprint started/completed
- Action types: assign user, set status, set field, add comment, create sub-issue, send notification
Dashboards & Reports¶
- Burndown chart (sprint-level)
- Velocity chart (multi-sprint trend)
- Cycle time analysis per issue type
- Custom dashboards with drag-and-drop widget layout
- Widget types: key metrics, charts, issue tables, activity feeds
Developer Tools & Integrations¶
- Outgoing webhooks with HMAC-SHA256 signing and automatic retry with exponential backoff
- GitHub and GitLab incoming webhooks — auto-link commits and pull requests to issues
- API key authentication (
tw_*prefix, SHA-256 hashed storage) for CI/CD pipelines - SSRF-safe HTTP delivery for outgoing webhooks
Enterprise¶
- Audit logs with three configurable levels: SECURITY (always on), WRITE, ALL — with JSON and CSV export
- SSO via OIDC — dynamic provider registration, AES-GCM encrypted client secrets, user auto-provisioning
- Organizations (multi-tenancy) with org switcher, JWT org context, and member management
- Service desks with SLA policies (breach detection + escalation rules)
- Incident tracking with automatic postmortem creation on resolution
- Email-to-ticket ingestion via IMAP
Fixed¶
- OIDC provider discovery now uses RFC-compliant
/.well-known/openid-configurationinstead of hardcoded Keycloak paths — compatible with Okta, Azure AD, Auth0, Google Workspace GET /organizations/{id}andGET /organizations/{id}/membersnow enforce membership authorization; non-members receive 403- Audit log CSV export uses OWASP-recommended formula-injection escaping (values starting with
=,+,-,@, tab, or carriage return are prefixed with')