vikunja/pkg/modules
kolaente 5dead874d2 refactor(background): extract download + unsplash-proxy logic for reuse
Split the HTTP plumbing from the business logic in the v1 project-background
download and Unsplash image proxy handlers so /api/v2 can reuse it without
duplicating it:

- LoadProjectBackgroundForDownload (background/handler) loads the bg file +
  modtime and fires the Unsplash pingback; GetProjectBackground now calls it.
- WriteProjectBackground (web/files) writes v1's exact background wire shape
  (image/jpg, no-cache, stat-modtime Last-Modified, If-Modified-Since 304).
- FetchUnsplashImageByID / FetchUnsplashThumbByID (background/unsplash) return
  the open upstream body for the caller to stream; the v1 proxy handlers now
  call them. A typed ErrUnsplashImageDoesNotExist maps to 404 on both APIs.
- ErrProjectHasNoBackground (models) gives the no-background case a domain
  error; v1 keeps its verbatim 404 message.

v1 responses are unchanged on the wire.
2026-06-12 11:51:52 +02:00
..
auth feat(audit): emit the login event for the OAuth code exchange 2026-06-12 08:56:08 +00:00
avatar fix(api/v2): reject non-decodable images (e.g. SVG) on avatar upload with 400 2026-06-02 11:55:25 +00:00
background refactor(background): extract download + unsplash-proxy logic for reuse 2026-06-12 11:51:52 +02:00
dump chore(lint): suppress known gosec false positives 2026-03-23 16:23:15 +01:00
humaecho5 feat: vendor humaecho adapter for echo/v5 2026-05-31 12:56:57 +00:00
keyvalue fix(keyvalue): treat undecodable cached values as a cache miss 2026-05-30 13:48:01 +00:00
migration refactor(migration): extract file/CSV migrate orchestration into shared funcs 2026-06-12 08:51:19 +00:00