Heads up before upgrading
- A database migration adds a
report_historytable. It runs automatically on first launch; no manual step required.
Features
Unassigned filter
- The Reports assignee filter now includes Unassigned, so you can list reports with no assignee.
Report activity history
- Report detail shows a JIRA-style Activity timeline (created, status, priority, and assignee changes).
- History is stored server-side and exposed via
GET /api/reports/:id/history.
Share selected reports
- Bulk actions replace Export Excel with a Share dropdown.
- Download selected reports as Excel (.xlsx) or CSV (.csv).
- Shared files include only Title, Description, and URL.
- URL is the BugPin report detail permalink (
/admin/reports/<id>), so recipients open the report in BugPin.
Fixes
- Report export permalinks now use
/admin/reports/<id>, matching email/notification links and the real Admin Console route (previously/reports/<id>omitted the/adminbasename). - Reports list pagination no longer resets to page 1 when using Next/Previous.
- The documented
bun run reset-password <email>command now exists. It generates a temporary password for a locked-out account and invalidates that user's sessions. Runs from the container root, matching the docs (docker exec -it bugpin bun run reset-password <email>).
Security
- Avatar serving is now confined to the requesting user's own directory. Path traversal in the
GET /api/users/me/avatar/:filenameroute is rejected (encoded.., path separators, and NUL bytes), so a crafted filename can no longer read files outside the avatars directory. - Report updates (
PATCH /api/reports/:id) now use the validated request body instead of the raw payload, dropping theforwardedTofield. This closes a mass-assignment gap where clients could inject forwarded-integration references directly. - Invitation acceptance consumes its token atomically. Concurrent accepts for the same token can no longer both succeed, preventing duplicate account activation or token reuse.
- Bumped
sharpto^0.35.3(libvips 8.18.3) to resolve GHSA-f88m-g3jw-g9cj, a high-severity advisory affecting image processing of untrusted input in versions prior to 0.35.0.
Maintenance
- Added
xlsxfor Excel share downloads; downloads use a shared blob helper that revokes object URLs after download.
Compare: v1.1.1...v1.2.0