Commit Graph
16570 Commits
Author SHA1 Message Date
kolaente 28fa8b1525 fix(user): verify the authenticated account's password on email change
The password was checked through the login lookup by username or email, which could resolve to a different account, and the email of that account was then changed. Load the account by its ID and check its own password, keeping the re-authentication throttle and the lockout counter.
2026-11-03 22:03:18 +01:00
kolaente 02ed6b293f fix(tasks): only create import relations between tasks of the imported batch
Review finding: CreateTaskRelationsForImport relied on an unenforced
invariant that every related task came from the same import. It now takes
the imported batch, builds the relations itself and rejects related tasks
outside the batch.
2026-11-03 21:04:05 +01:00
kolaente 8ea2b0a7e3 refactor(filters): drop hand-rolled filter depth counter
Review finding: two depth checks coexisted. filterGroupDepthExceeds runs
on the exact string passed to fexpr.Parse on both parse paths, and
unmatched parentheses are rejected by fexpr.Parse.
2026-11-03 21:04:05 +01:00
kolaente 294aad055f test: pin error values for filter nesting and relation hierarchy limits
Review finding: the new tests only asserted the error type.
2026-11-03 21:04:05 +01:00
kolaente 3d42c8eab0 fix(projects): describe move size limit accurately
Review finding: the 3020 message claimed too many child projects, but the
limit is descendants x destination ancestors.
2026-11-03 21:04:05 +01:00
kolaente 07baa6d9fc chore(errors): use error codes not taken by other pending changes 2026-11-03 21:04:05 +01:00
kolaente 1f127ac8b2 refactor(tasks): extract hierarchy edge helper for the import cycle check 2026-11-03 21:04:05 +01:00
kolaente f7201a1795 fix(filters): measure filter nesting with the parser's own scanner 2026-11-03 21:04:05 +01:00
kolaente 05571ba695 perf(projects): insert rebuilt project ancestors in batches 2026-11-03 21:04:05 +01:00
kolaente 33ec3d2fd2 fix(projects): reject moves that would create too many ancestor links 2026-11-03 21:04:05 +01:00
kolaente d9f79c418b perf(filters): look up matching tasks by id set when pruning filter kanban views 2026-11-03 21:04:05 +01:00
kolaente 64f542c1a1 perf(migration): check the imported task hierarchy for cycles once instead of per relation 2026-11-03 21:04:05 +01:00
kolaente 7fe6316337 fix(tasks): cap the number of tasks visited by the relation cycle check 2026-11-03 21:04:05 +01:00
kolaente d5150cf425 perf(tasks): index task relations by other task and kind 2026-11-03 21:04:05 +01:00
kolaente a9f471b223 fix(tasks): expand shared subtasks only once in the project list
A subtask with several parents was rendered once per path, so diamond-shaped
subtask graphs caused exponential component renders and froze the tab. Each
task now expands its subtasks only on its first occurrence in the tree, and
nesting is capped at five levels.
2026-11-03 20:54:00 +01:00
kolaente c5a8e3d8bb fix(user): count wrong passwords on password change toward account lockout
Checking the old password directly skipped the failed-attempt counter that login and the email-change prompt use. Extract CheckUserPasswordCountingFailures from CheckUserCredentials and use it for the password change too.
2026-11-03 20:15:14 +01:00
kolaente f67c57a5f2 fix(cli): invalidate sessions when resetting a password directly
user reset-password --direct only replaced the password and left existing sessions valid. Use the shared helper the other password flows use, which deletes the sessions in the same transaction, and dispatch the resulting events after commit.
2026-11-03 20:15:14 +01:00
kolaente a2c1dcc01b fix(user): verify the authenticated account's password on password change
The old password was checked through the login lookup by username or email, which could resolve to a different account than the one being changed. Load the account by its ID and check its own password, keeping the re-authentication throttle.
2026-11-03 20:15:14 +01:00
kolaente d58a4e0b21 fix(user): deliver password reset emails to locked accounts
ShouldNotify dropped every notification for locked accounts, including the reset email needed to get out of the lock. It now receives the notification and lets password resets through for locked accounts; disabled accounts, bots and all other notifications stay suppressed. The admin reset action no longer refuses locked accounts either.
2026-11-03 20:15:14 +01:00
kolaente a10c891943 fix(teams): only sync external team memberships of the current issuer
The previous-membership lookup included teams of every issuer, so a sync for one provider removed the user from teams managed by another.
2026-11-03 20:15:14 +01:00
kolaente ab745ee58a fix(user): bind email confirmation to the token and pending address it was issued for
Consume the exact confirmation token and only apply the update when the pending address is still the one that was read, so a concurrent email change cannot be confirmed by an older token.
2026-11-03 20:15:14 +01:00
kolaente c401aa0aa6 fix(user): match exact username search literally on PostgreSQL
ILIKE treated _ and \ in the search term as pattern characters, so the exact-username lookup could match other usernames. Compare case-insensitively with LOWER() instead.
2026-11-03 20:15:14 +01:00
kolaente 852e6d6d40 fix(migration): clean up stored import blobs when the import panics 2026-11-03 19:33:30 +01:00
kolaente ae77326e17 fix(migration): skip null positions and task buckets on import 2026-11-03 19:33:30 +01:00
kolaente 51f0cf0c69 fix(audit): never overwrite an existing rotated log file
Rotated files were named by millisecond timestamp only, so two rotations
within the same millisecond renamed onto the same path and replaced the
earlier file. Append a counter until the name is free.
2026-11-03 18:49:00 +01:00
kolaente ce4f604c0d fix(audit): cap captured User-Agent at 512 bytes
The request User-Agent was copied unbounded into every event dispatched
during a request, so bulk operations repeated an arbitrarily long header in
each audit entry.
2026-11-03 18:49:00 +01:00
kolaente 267b0f6199 fix(events): record link shares as doer on relation, attachment and comment events
Relation create/delete, attachment delete and comment delete resolved the
doer with a user-only conversion and dropped the error, so actions taken
through a link share were dispatched without a doer.
2026-11-03 18:49:00 +01:00
kolaente 6c91014792 chore(frontend): regenerate API client for dropped TIFF support 2026-11-03 18:46:00 +01:00
kolaente d4e98a3b5b fix(images): stop accepting TIFF uploads 2026-11-03 18:46:00 +01:00
kolaente 20e3ec2d82 fix(mail): only expose the mail queue once the mailer started and bound enqueueing 2026-11-03 18:46:00 +01:00
kolaente 404c5a35a3 fix(backgrounds): cap the page number for the featured unsplash collection 2026-11-03 18:46:00 +01:00
kolaente 6aa69659a2 fix(time-tracking): ignore client-supplied id when creating a time entry 2026-11-03 18:46:00 +01:00
renovate[bot]andkolaente 8003216544 chore(deps): update dependency postcss to v8.5.32 2026-11-03 18:35:35 +01:00
kolaente 9314e2f714 fix(export): only replace the export file pointer if it is unchanged
Two overlapping exports could both read the same previous archive and
overwrite each other's pointer, leaving one archive unreferenced and
outside expiry cleanup. The pointer is now swapped conditionally; on a
mismatch the export fails, its new file is removed and the event retry
re-runs it against the current pointer.
2026-11-03 18:28:14 +01:00
kolaente 43da8bc1c6 fix(migration): check filters.json item limit before decoding saved filters 2026-11-03 18:28:14 +01:00
HannesandGitHub 66009a3511 feat(attachments): show checkerboard behind transparent images in lightbox (#4292) 2026-11-03 17:26:18 +00:00
kolaente 5cb9420917 fix(tasks): only return positions of the task's own project views
Task create, bulk create and duplicate responses loaded every stored
position for the task, which could include positions in saved filter views
belonging to other users once the async saved filter listener had run.
Restrict the lookup to views of the task's project.
2026-11-03 18:23:04 +01:00
kolaente 068a302173 fix(richtext): don't resolve mentions of other users' bots
Markdown mention resolution looked up any username, so mentioning another
user's bot rendered its display name into the stored HTML. Resolution now
gets the requesting identity and applies the same bot visibility rule as
user search: only humans and the requester's own bots are resolved, other
bots stay literal text.
2026-11-03 18:23:04 +01:00
kolaente e5f1624d83 docs(config): clarify mailer forcessl and opportunistic starttls 2026-11-03 18:20:41 +01:00
s-seidelandGitHub ded000f11c feat(auth): sync teams from oidc groups claim (#4311) 2026-11-03 17:13:41 +00:00
kolaente 0604ea2558 fix(doctor): escape control characters in report values 2026-11-03 17:34:38 +01:00
kolaente 1c0eaa74fd fix(doctor): don't follow OIDC discovery redirects to other origins 2026-11-03 17:34:38 +01:00
kolaente 9077ad79f1 fix(desktop): skip AppImage protocol handler for paths with backslashes 2026-11-03 17:33:52 +01:00
kolaente dd40c3c999 fix(frontend): render favorites project description as text 2026-11-03 17:33:52 +01:00
renovate[bot]andkolaente 8be5f00013 chore(deps): update postgres:18 docker digest to 3a42645 2026-11-03 17:29:02 +01:00
renovate[bot]andkolaente 8f8c52fe82 chore(deps): update dependency ip-address to v10.7.5 2026-11-03 17:28:52 +01:00
dependabot[bot]andkolaente 18c585e841 chore(deps): bump follow-redirects from 1.16.1 to 1.16.2 in /frontend
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.16.1 to 1.16.2.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.16.1...v1.16.2)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-version: 1.16.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-03 17:28:42 +01:00
renovate[bot]andkolaente 76db8e4151 chore(deps): update dependency @babel/core to v8.0.10 2026-11-03 17:28:30 +01:00
renovate[bot]andkolaente e489394a6d fix(deps): update aws-sdk-go 2026-11-03 17:27:53 +01:00
Frederick [Bot] becd14cabd [skip ci] Updated yaegi symbols 2026-11-03 11:22:09 +00:00