-
f3eee9131b
chore: remove stale .sqlx cache, add to gitignore
Gabriel Kaszewski
2026-06-09 00:09:30 +02:00
-
9e4370b068
fix: register goal + settings endpoints in OpenAPI spec
Gabriel Kaszewski
2026-06-09 00:07:29 +02:00
-
37ab24be74
docs: npm → bun
Gabriel Kaszewski
2026-06-09 00:06:22 +02:00
-
307113381f
docs: add CONTRIBUTING.md with setup, architecture, PR guidelines
Gabriel Kaszewski
2026-06-09 00:04:30 +02:00
-
6d238b6c3d
docs: mark TUI as deprecated experiment
Gabriel Kaszewski
2026-06-09 00:02:20 +02:00
-
a7a11dde08
refactor: split monolithic handlers + testing into domain-grouped modules
Gabriel Kaszewski
2026-06-08 23:59:23 +02:00
-
988e15eac6
fix: add missing common.edit i18n key
Gabriel Kaszewski
2026-06-08 22:38:54 +02:00
-
fff5f4af2f
feat: goals — "watch N movies in YEAR" with progress bar
Gabriel Kaszewski
2026-06-08 22:37:52 +02:00
-
213f9a2433
Remove backdrop filter from input slot in aero-theme.css for improved performance
Gabriel Kaszewski
2026-06-08 21:05:16 +02:00
-
4dacbbfded
fix: update poster_url on remote review Update activity
Gabriel Kaszewski
2026-06-04 23:21:19 +02:00
-
886f26c7dc
fix: broadcast AP Update after poster sync to fix missing posters on remote instances
Gabriel Kaszewski
2026-06-04 23:12:27 +02:00
-
6a10ba15c1
feat(spa): comment field in queue review, date picker in log sheet
Gabriel Kaszewski
2026-06-04 22:35:30 +02:00
-
237f1e7d32
style: fmt persons test
Gabriel Kaszewski
2026-06-04 17:59:05 +02:00
-
c647f4c13b
fix: clippy 1.96 lints — map_or, duplicate_mod, needless_borrows, slice_refs
Gabriel Kaszewski
2026-06-04 17:58:01 +02:00
-
3bb2dbee19
ci: split workflows — Gitea tests only, GitHub tests + Docker push
Gabriel Kaszewski
2026-06-04 17:48:37 +02:00
-
b0bfc149e1
ci: build + push Docker image to ghcr.io on master/tags
Gabriel Kaszewski
2026-06-04 17:47:04 +02:00
-
7e8a1b8379
feat: batteries-included deployment — compose, .env.example, sane defaults
Gabriel Kaszewski
2026-06-04 17:32:34 +02:00
-
4bd8dcbf05
feat: wrapup wow — animated counters, scroll-reveal, fun facts, component split, budget formatting
Gabriel Kaszewski
2026-06-04 17:15:35 +02:00
-
ebf9a9f4a8
feat: replace CSS bar charts with recharts, fix label readability
Gabriel Kaszewski
2026-06-04 17:04:29 +02:00
-
a76386345f
feat: SPA polish — wrapup sections, shareable card, webhook instructions, blocked merge
Gabriel Kaszewski
2026-06-04 16:56:09 +02:00
-
49728f8cd7
fix: fall back to converted extensions in object storage get
Gabriel Kaszewski
2026-06-04 16:22:57 +02:00
-
5334312d64
refactor: extract reindex + enrichment logic from handlers into use cases
Gabriel Kaszewski
2026-06-04 16:09:35 +02:00
-
81a377cbb2
docs: proper SPA readme
Gabriel Kaszewski
2026-06-04 15:58:03 +02:00
-
689c8a9ac3
docs: add hexagonal architecture mermaid diagram
Gabriel Kaszewski
2026-06-04 15:52:38 +02:00
-
5e6bc93a6a
feat: SPA quick wins — refresh, back nav, watchlist add, dates, haptics, export
Gabriel Kaszewski
2026-06-04 15:45:31 +02:00
-
4a3a99c6d2
fix: disable vaul repositionInputs to fix iOS keyboard in drawers
Gabriel Kaszewski
2026-06-04 15:11:16 +02:00
-
dacc057af6
fix: lazy-load wrapup backgrounds, cap sqlite pool to 4 connections
Gabriel Kaszewski
2026-06-04 14:57:47 +02:00
-
01c1082290
feat: SPA bug fixes, interactivity, federation badges, admin reindex
Gabriel Kaszewski
2026-06-04 14:43:41 +02:00
-
bd7dc648c4
feat: search reindex, worker improvements, person IDs, user display names
Gabriel Kaszewski
2026-06-04 14:43:28 +02:00
-
af8e58aeb8
fix: use avatar/banner URLs directly, not through posterUrl()
Gabriel Kaszewski
2026-06-04 04:30:38 +02:00
-
fd9a053702
fix: exclude spa/.env from docker build to prevent baked localhost URLs
Gabriel Kaszewski
2026-06-04 04:27:02 +02:00
-
092e769641
fix: 401 redirect uses /app/login instead of /login
Gabriel Kaszewski
2026-06-04 04:22:20 +02:00
-
b20d23fbb3
fix: exclude spa/node_modules and spa/dist from docker context
Gabriel Kaszewski
2026-06-04 04:21:25 +02:00
-
b9c0b10740
feat: add SPA, serve at /app/, update Dockerfile and README
Gabriel Kaszewski
2026-06-04 04:20:15 +02:00
-
15dc0e526b
feat: expose display_name, also_known_as, profile fields in GET /profile
Gabriel Kaszewski
2026-06-04 02:58:12 +02:00
-
cf2f4a1b4f
feat: watchlist add accepts title/year/imdb for movies not in DB
Gabriel Kaszewski
2026-06-04 02:47:55 +02:00
-
e7cdbf9ca7
fix: user profile URLs, typed returns for following/followers
Gabriel Kaszewski
2026-06-04 02:40:04 +02:00
-
837b7866af
feat: include avatar_url and banner_url in UserProfileResponse
Gabriel Kaszewski
2026-06-04 02:37:16 +02:00
-
c4908b7765
feat: API endpoints for any user's following/followers
Gabriel Kaszewski
2026-06-04 02:34:01 +02:00
-
dbc78a1ff4
feat: add user_id to FeedEntryDto
Gabriel Kaszewski
2026-06-04 02:22:08 +02:00
-
a97e263ed3
fix: always return following/followers counts, only hide pending for non-own profiles
Gabriel Kaszewski
2026-06-04 02:19:27 +02:00
-
b1d667d3cb
fix: user profile returns social counts when viewing own profile
Gabriel Kaszewski
2026-06-04 02:18:28 +02:00
-
bf73d4a695
feat: CORS, role in auth, banner_url, diary sort, cleanup
Gabriel Kaszewski
2026-06-04 02:06:51 +02:00
-
7b9b0f9ffe
feat: API preview endpoint for import sessions
Gabriel Kaszewski
2026-06-04 01:59:09 +02:00
-
7d6f874ae7
feat: activity feed accepts sort_by param
Gabriel Kaszewski
2026-06-04 01:35:45 +02:00
-
4206bb4b06
fix: diary sort_by rating_desc/rating_asc in all/movie queries
Gabriel Kaszewski
2026-06-04 01:28:35 +02:00
-
004243dcbb
fix: use embed=true for serde bool compat
Gabriel Kaszewski
2026-06-03 10:17:43 +02:00
-
c798b851dc
fmt
Gabriel Kaszewski
2026-06-03 10:14:53 +02:00
-
c18d4eebc1
fix: use array instead of vec for clippy
Gabriel Kaszewski
2026-06-03 10:14:20 +02:00
-
3f6e01ed65
feat: add embed snippet to profile settings
Gabriel Kaszewski
2026-06-03 10:09:38 +02:00
-
19642175eb
feat: wire embed param to EmbedProfileTemplate
Gabriel Kaszewski
2026-06-03 10:08:51 +02:00
-
8ca378b25f
feat: add embed.css standalone stylesheet
Gabriel Kaszewski
2026-06-03 10:07:46 +02:00
-
fad73a9fab
feat: add embed_profile.html template
Gabriel Kaszewski
2026-06-03 10:07:45 +02:00
-
627db45a56
feat: add embed_base.html template shell
Gabriel Kaszewski
2026-06-03 10:07:43 +02:00
-
976d872eed
feat: add EmbedProfileTemplate struct
Gabriel Kaszewski
2026-06-03 10:07:41 +02:00
-
6c7ce24e1f
feat: add embed param to ProfileQueryParams
Gabriel Kaszewski
2026-06-03 10:07:39 +02:00
-
6668ba511c
fmt
Gabriel Kaszewski
2026-06-03 01:38:25 +02:00
-
430fbb21ea
refactor: rename image-storage crate to object-storage
Gabriel Kaszewski
2026-06-03 01:37:14 +02:00
-
f262417971
refactor: rename ImageStorage → ObjectStorage
Gabriel Kaszewski
2026-06-03 01:33:08 +02:00
-
d94ccbe057
refactor: store typed WrapUpReport in domain, serialize in adapters
Gabriel Kaszewski
2026-06-03 01:24:02 +02:00
-
e4b8ba550e
refactor: extract storage key conventions into WrapUpStorage
Gabriel Kaszewski
2026-06-03 01:20:51 +02:00
-
3cec726e3d
refactor: move VideoRenderConfig from domain to adapter, inject at construction
Gabriel Kaszewski
2026-06-03 01:18:52 +02:00
-
e8e83d3f16
assets + fmt
Gabriel Kaszewski
2026-06-03 01:13:06 +02:00
-
8cabc6af70
fix: clippy — redundant closure in AdminApiUser
Gabriel Kaszewski
2026-06-03 01:12:36 +02:00
-
e378191045
fix: clippy — collapse nested if in cast photo store
Gabriel Kaszewski
2026-06-03 01:12:07 +02:00
-
bca07b7824
fix: clippy — collapse nested ifs, use div_ceil
Gabriel Kaszewski
2026-06-03 01:11:17 +02:00
-
857896f057
feat: add video download link to wrapup HTML page
Gabriel Kaszewski
2026-06-03 01:06:11 +02:00
-
e905842b62
fix: idempotency guard on wrapup handler to prevent duplicate processing
Gabriel Kaszewski
2026-06-03 01:01:50 +02:00
-
83103e5eb5
feat: redesign wrapup HTML with glass cards, ranked lists, better layout
Gabriel Kaszewski
2026-06-03 01:00:50 +02:00
-
fc086de7f7
refactor: move DateRange validation to value object, add delete/cleanup
Gabriel Kaszewski
2026-06-03 00:58:07 +02:00
-
3a66f89609
fix: reverse rating bar order to 5★→1★ in video slides
Gabriel Kaszewski
2026-06-03 00:55:43 +02:00
-
45d6183ea4
fix: reverse rating bar order to 5★→1★
Gabriel Kaszewski
2026-06-03 00:54:59 +02:00
-
241063c914
feat: wrapup date validation, delete endpoint, failed record cleanup
Gabriel Kaszewski
2026-06-03 00:54:08 +02:00
-
3f483f8f81
fix: alpha-blend glass panels instead of opaque overwrite
Gabriel Kaszewski
2026-06-03 00:46:09 +02:00
-
c842ad6a55
feat: download top-5 cast photos during TMDb enrichment
Gabriel Kaszewski
2026-06-03 00:42:25 +02:00
-
a5cf62e281
fix: cover-fill backgrounds, bigger highlight posters
Gabriel Kaszewski
2026-06-03 00:40:35 +02:00
-
6fb00f9205
docs: add WRAPUP_BG_DIR to env/readme
Gabriel Kaszewski
2026-06-03 00:35:15 +02:00
-
d52120d6a9
feat: frutiger aero visual overhaul — backgrounds, glass panels, cast photos, full mosaic
Gabriel Kaszewski
2026-06-03 00:34:13 +02:00
-
e57ddd78ac
feat: frutiger aero visual overhaul for wrapup video slides
Gabriel Kaszewski
2026-06-03 00:32:39 +02:00
-
0d02f23f4f
fix: decode AVIF posters via ffmpeg fallback for mosaic slide
Gabriel Kaszewski
2026-06-03 00:23:39 +02:00
-
86639853d2
fix: render genres via SlideRenderer, enable AVIF decoding, add poster fetch logging
Gabriel Kaszewski
2026-06-03 00:19:18 +02:00
-
7155bea78e
fix: disable plotters axis labels to avoid system font lookup
Gabriel Kaszewski
2026-06-03 00:10:56 +02:00
-
8429d13db0
fix: enable ab_glyph font backend for plotters
Gabriel Kaszewski
2026-06-03 00:09:10 +02:00
-
cb611bcc7d
fix: wire FfmpegWrapUpRenderer into worker when ffmpeg available
Gabriel Kaszewski
2026-06-03 00:06:04 +02:00
-
bb503f3ce8
feat: AdminApiUser extractor for Bearer-token admin endpoints
Gabriel Kaszewski
2026-06-03 00:00:45 +02:00
-
bf0350c87a
fmt
Gabriel Kaszewski
2026-06-02 23:50:20 +02:00
-
9e13f04e9c
fix: clippy warnings in wrapup compute + renderer
Gabriel Kaszewski
2026-06-02 23:49:39 +02:00
-
e69f77a99f
docs: add wrap-up to Dockerfile, .env.example, README
Gabriel Kaszewski
2026-06-02 23:47:21 +02:00
-
1e063b6580
feat: streaming video download via ImageStorage::get_stream
Gabriel Kaszewski
2026-06-02 23:45:31 +02:00
-
f160adcd1c
feat: wrapup env vars + render concurrency semaphore
Gabriel Kaszewski
2026-06-02 23:41:08 +02:00
-
efd1214a4c
feat: font rendering + logo branding on wrapup slides
Gabriel Kaszewski
2026-06-02 23:16:55 +02:00
-
21c33b169e
feat: gate wrapup generate behind admin role
Gabriel Kaszewski
2026-06-02 23:14:06 +02:00
-
490bd97a40
feat: wire video renderer pipeline + download endpoint
Gabriel Kaszewski
2026-06-02 22:34:55 +02:00
-
d45d8aa913
feat: video renderer adapter w/ slides + charts + ffmpeg
Gabriel Kaszewski
2026-06-02 22:31:45 +02:00
-
f00a2cbbb8
feat: HTML wrap-up page with Askama template
Gabriel Kaszewski
2026-06-02 22:28:28 +02:00
-
c0b3fb6940
fix: collapse nested if in wrapup generate
Gabriel Kaszewski
2026-06-02 22:20:29 +02:00
-
ea43911984
feat: wire real wrapup adapters into presentation + worker
Gabriel Kaszewski
2026-06-02 22:19:29 +02:00
-
5a15bea3d4
feat: wrap-up REST API endpoints
Gabriel Kaszewski
2026-06-02 22:17:11 +02:00
-
5e740ba2a1
fix: add async_trait + exhaustive match for wrapup events in tests
Gabriel Kaszewski
2026-06-02 22:14:50 +02:00
-
7ef8912d69
feat: wrapup worker handler + auto-generate job
Gabriel Kaszewski
2026-06-02 22:13:08 +02:00