mrleo1nid
39bf7d4b70
feat(uploads): match release groups with MusicBrainz and AcoustID
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m1s
ci / ts / ts (packages + web) (push) Failing after 6m3s
ci / module boundaries / boundaries (push) Successful in 10s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m30s
ci / api / api (push) Successful in 58s
ci / db / db (push) Failing after 25s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m36s
2026-10-29 20:44:59 +03:00
mrleo1nid
1e3a149aef
feat(uploads): show batch format counts and quality ranges
ci / ts / ts (packages + web) (push) Failing after 5m56s
ci / module boundaries / boundaries (push) Successful in 5s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m39s
2026-10-29 17:41:28 +03:00
mrleo1nid
e78cab6ce6
fix(uploads): serialize status filters and resize oversized covers
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m37s
ci / ts / ts (packages + web) (push) Failing after 27m2s
ci / module boundaries / boundaries (push) Successful in 9s
ci / api / api (push) Successful in 58s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m22s
ci / db / db (push) Successful in 6m19s
2026-10-29 12:14:49 +03:00
mrleo1nid
ca2a50b515
fix(uploads): load audio previews only on play
ci / module boundaries / boundaries (push) Successful in 7s
ci / ts / ts (packages + web) (push) Failing after 6m33s
2026-10-29 11:45:09 +03:00
mrleo1nid
af06cf1e75
fix(uploads): pause previous audio preview when another starts
ci / ts / ts (packages + web) (push) Canceled after 3m50s
ci / module boundaries / boundaries (push) Successful in 8s
2026-10-29 11:41:11 +03:00
mrleo1nid
7d62531c02
fix(uploads): serve private previews through API and show batch cover status
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m30s
ci / ts / ts (packages + web) (push) Canceled after 4m13s
ci / module boundaries / boundaries (push) Successful in 8s
ci / api / api (push) Successful in 56s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m1s
ci / db / db (push) Successful in 1m7s
2026-10-29 11:34:55 +03:00
mrleo1nid
37e33c656b
fix(uploads): allow signed audio previews and compact destination details
ci / module boundaries / boundaries (push) Successful in 7s
ci / db / db (push) Successful in 47s
ci / ts / ts (packages + web) (push) Failing after 5m24s
ci / api / api (push) Successful in 42s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m42s
2026-10-29 11:21:48 +03:00
mrleo1nid
30c3c85f89
fix(uploads): refresh destination previews and improve queue layout
ci / api / api (push) Successful in 50s
ci / module boundaries / boundaries (push) Successful in 8s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m2s
ci / db / db (push) Successful in 56s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m15s
ci / ts / ts (packages + web) (push) Failing after 4m28s
2026-10-29 11:10:54 +03:00
mrleo1nid
eb75437708
fix(uploads): separate withdrawn proposals from default filters
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m44s
ci / ts / ts (packages + web) (push) Failing after 1m56s
2026-10-29 10:44:10 +03:00
mrleo1nid
64dd8ed05e
feat(uploads): preview storage paths, detect templates, attach covers and withdraw batches
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 55s
ci / api / api (push) Successful in 55s
ci / db / db (push) Failing after 1m14s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m11s
ci / module boundaries / boundaries (push) Successful in 7s
ci / ts / ts (packages + web) (push) Failing after 4m4s
2026-10-29 10:28:29 +03:00
mrleo1nid
5e2d1e902b
fix(uploads): retry failed files and report full storage
ci / db / db (push) Successful in 1m51s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m40s
ci / module boundaries / boundaries (push) Successful in 7s
ci / ts / ts (packages + web) (push) Failing after 5m16s
ci / api / api (push) Successful in 33s
2026-10-29 00:39:03 +03:00
mrleo1nid
b39e4dc28f
fix(uploads): hash files without WebAssembly under strict CSP
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 3m17s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 3m12s
ci / ts / ts (packages + web) (push) Failing after 4m37s
ci / desktop / rust (desktop proxy) (push) Successful in 6m12s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m42s
ci / module boundaries / boundaries (push) Successful in 5s
2026-10-29 00:05:49 +03:00
mrleo1nid
f59d1e8d03
fix(search): skip deletion of missing temporary indexes
ci / db / db (push) Successful in 52s
ci / api / api (push) Successful in 42s
2026-10-28 23:56:46 +03:00
mrleo1nid
66d3897f66
feat(admin): group navigation into media, uploads and system
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m35s
release / desktop (Linux и Windows в релиз) (push) Successful in 12m14s
release / prune (старые файлы и прогоны) (push) Successful in 12s
ci / ts / ts (packages + web) (push) Failing after 4m33s
release / android (APK в релиз) (push) Successful in 4m45s
release / release (версия и заметки) (push) Successful in 8s
2026-10-28 23:47:17 +03:00
mrleo1nid
17bb0e1846
fix(uploads): allow WebAssembly hashing under CSP
ci / desktop / rust (desktop proxy) (push) Successful in 5m54s
ci / ts / ts (packages + web) (push) Failing after 4m29s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 3m23s
2026-10-28 23:34:42 +03:00
mrleo1nid and Claude Sonnet 5.5
17c85493b7
fix(library): always split comma-separated artists even if glued name exists
...
ci / api / api (push) Successful in 34s
ci / db / db (push) Successful in 42s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-28 15:26:49 +03:00
mrleo1nid and Claude Sonnet 5.5
75f9c57eca
fix(library): split compound album artist and re-split artists on rescan
...
ci / api / api (push) Successful in 37s
ci / db / db (push) Successful in 55s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-28 14:29:50 +03:00
mrleo1nid and Claude Sonnet 5.5
8a007be036
feat(web): show spinner on play button while track is loading
...
ci / ts / ts (packages + web) (push) Successful in 3m15s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-28 14:23:19 +03:00
mrleo1nid and Claude Sonnet 5.5
f77148df2c
fix(web): show notification count as menu badge and mark read on open
...
ci / ts / ts (packages + web) (push) Successful in 2m52s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-28 13:56:05 +03:00
mrleo1nid and Claude Sonnet 5.5
139dd226fa
feat(genius): fetch artist avatars by name and match names with transliteration suffix
...
ci / api / api (push) Successful in 27s
ci / db / db (push) Successful in 53s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-28 13:50:55 +03:00
mrleo1nid and Claude Sonnet 5.5
795bb7de46
fix(library): split comma-separated main artists
...
ci / api / api (push) Successful in 1m17s
ci / module boundaries / boundaries (push) Successful in 8s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m21s
ci / ts / ts (packages + web) (push) Successful in 3m43s
ci / db / db (push) Canceled after 11m9s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-28 13:39:32 +03:00
mrleo1nid
11b890c2e7
docs: record architecture and correctness review
2026-10-24 02:16:05 +03:00
mrleo1nid
59983ed1b3
fix(social): complete shared listening request lifecycle
2026-10-24 02:16:00 +03:00
mrleo1nid
cb22f15912
fix(web): polish social UI and prevent doubled shared audio
ci / ts / ts (packages + web) (push) Successful in 3m9s
release / prune (старые файлы и прогоны) (push) Successful in 11s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m20s
release / desktop (Linux и Windows в релиз) (push) Successful in 19m22s
release / release (версия и заметки) (push) Successful in 10s
release / android (APK в релиз) (push) Successful in 4m7s
2026-10-23 19:54:10 +03:00
mrleo1nid
6450027b88
feat(web): add desktop mini chat and move social controls to profile
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m37s
ci / ts / ts (packages + web) (push) Successful in 4m55s
2026-10-23 18:37:32 +03:00
mrleo1nid
f087ec9f88
fix(ci): serialize integration suites sharing a database
release / release (версия и заметки) (push) Successful in 5s
release / android (APK в релиз) (push) Successful in 3m59s
release / desktop (Linux и Windows в релиз) (push) Successful in 12m17s
ci / db / db (push) Successful in 1m6s
release / prune (старые файлы и прогоны) (push) Successful in 6s
2026-10-23 12:55:53 +03:00
mrleo1nid
cd84ceecb2
feat(social): show friend presence and require online listening
ci / api / api (push) Successful in 1m11s
ci / db / db (push) Failing after 23s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m29s
ci / ts / ts (packages + web) (push) Successful in 3m15s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m27s
2026-10-23 12:52:00 +03:00
mrleo1nid
582c0dc3d4
fix(ci): align onboarding assertion with generated enum
ci / db / db (push) Successful in 57s
ci / api / api (push) Successful in 58s
2026-10-23 12:03:23 +03:00
mrleo1nid
1a693848f2
Redesign social conversations and shared music
ci / db / db (push) Failing after 18s
ci / api / api (push) Successful in 19m12s
ci / ts / ts (packages + web) (push) Successful in 2m44s
ci / module boundaries / boundaries (push) Successful in 18m23s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 59s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m18s
2026-10-23 11:27:47 +03:00
mrleo1nid
11a16cd023
feat(social): add listening activity, shared rooms and modern chat
ci / api / api (push) Canceled after 0s
ci / db / db (push) Canceled after 11m22s
ci / mobile / mobile (Metro-бандл Android) (push) Canceled after 6m43s
ci / ts / ts (packages + web) (push) Canceled after 1s
ci / module boundaries / boundaries (push) Canceled after 0s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Canceled after 11m29s
ci / recommender / recommender (push) Canceled after 6m47s
2026-10-23 10:45:40 +03:00
mrleo1nid
0a05bfe2cd
feat(social): add friends, private chats, inbox and music sharing
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m8s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m23s
ci / db / db (push) Successful in 2m29s
ci / ts / ts (packages + web) (push) Successful in 2m55s
ci / module boundaries / boundaries (push) Successful in 7s
ci / api / api (push) Successful in 1m9s
2026-10-23 03:19:29 +03:00
mrleo1nid
f1528de948
feat(admin): transfer user accounts and show local cover coverage
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m17s
ci / ts / ts (packages + web) (push) Successful in 3m13s
ci / api / api (push) Successful in 59s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m31s
ci / db / db (push) Successful in 2m50s
2026-10-23 02:17:06 +03:00
mrleo1nid
0a4cd4bff1
fix(library): parallelize cover processing and retry missing artwork
ci / db / db (push) Successful in 1m1s
ci / api / api (push) Successful in 50s
2026-10-23 02:02:36 +03:00
mrleo1nid
eed7038109
fix(web): hide browser URL preview for player artists
ci / ts / ts (packages + web) (push) Successful in 4m37s
2026-10-23 00:49:14 +03:00
mrleo1nid
7fa7ee2c7d
fix(web): follow server job log output automatically
ci / ts / ts (packages + web) (push) Successful in 2m14s
2026-10-23 00:35:39 +03:00
mrleo1nid
24707a0bfc
fix(admin): mask all stored configuration secrets and credential URLs
ci / ts / ts (packages + web) (push) Successful in 2m19s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 2m15s
2026-10-23 00:27:20 +03:00
mrleo1nid
a6c9fd8a00
fix(ui): reflect update availability and config changes; expand mobile player metadata
ci / api / api (push) Successful in 50s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m27s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m39s
ci / ts / ts (packages + web) (push) Successful in 2m40s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m0s
ci / db / db (push) Successful in 58s
2026-10-23 00:20:59 +03:00
mrleo1nid
bc55528afd
fix(deploy): provision management agent during server updates
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m21s
2026-10-22 23:43:11 +03:00
mrleo1nid
a29a8b18ad
feat(admin): manage server updates and local configuration
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m35s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m19s
release / desktop (Linux и Windows в релиз) (push) Successful in 14m27s
release / prune (старые файлы и прогоны) (push) Successful in 6s
ci / api / api (push) Successful in 52s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m9s
release / release (версия и заметки) (push) Successful in 5s
release / android (APK в релиз) (push) Successful in 4m6s
ci / db / db (push) Successful in 1m15s
ci / ts / ts (packages + web) (push) Successful in 2m34s
2026-10-22 23:01:36 +03:00
mrleo1nid
e33abc948c
docs(agents): limit local checks to affected areas
2026-10-22 22:46:44 +03:00
mrleo1nid
ab49e22357
feat(desktop): add offline cache and verified app updates
...
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m2s
ci / desktop / rust (desktop proxy) (push) Successful in 4m21s
ci / module boundaries / boundaries (push) Successful in 7s
ci / ts / ts (packages + web) (push) Successful in 3m8s
release / release (версия и заметки) (push) Successful in 6s
release / android (APK в релиз) (push) Successful in 4m0s
release / desktop (Linux и Windows в релиз) (push) Successful in 11m49s
release / prune (старые файлы и прогоны) (push) Successful in 5s
Clean release notes in Android and desktop update dialogs. Persist downloaded audio and offline playback events per server and user; add desktop update checks, checksum verification and installer launch.
2026-10-22 22:37:35 +03:00
mrleo1nid
75ae2092ad
feat(library): exclude configured folders from scanning and analysis
ci / api / api (push) Successful in 56s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m23s
ci / recommender / recommender (push) Failing after 40s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m25s
ci / ts / ts (packages + web) (push) Successful in 7m20s
ci / db / db (push) Successful in 1m8s
2026-10-22 15:51:15 +03:00
mrleo1nid
0dc0384c78
fix(library): expose scan activity and failed analysis file details
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m6s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m38s
ci / ts / ts (packages + web) (push) Successful in 3m20s
release / desktop (Linux и Windows в релиз) (push) Successful in 44m45s
ci / api / api (push) Successful in 55s
ci / db / db (push) Successful in 52s
release / android (APK в релиз) (push) Successful in 3m50s
release / release (версия и заметки) (push) Successful in 5s
release / prune (старые файлы и прогоны) (push) Successful in 7s
2026-10-22 15:25:48 +03:00
mrleo1nid
17b6dd2041
fix(web): clarify Genius processing progress and queue actions
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m27s
ci / ts / ts (packages + web) (push) Successful in 5m23s
2026-10-22 15:05:11 +03:00
mrleo1nid
0a59059738
feat(playlists): share playlists with revocable read-only links
release / desktop (Linux и Windows в релиз) (push) Successful in 20m58s
ci / db / db (push) Successful in 59s
ci / api / api (push) Successful in 55s
release / release (версия и заметки) (push) Successful in 5s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m21s
ci / ts / ts (packages + web) (push) Successful in 2m19s
release / android (APK в релиз) (push) Successful in 4m45s
release / prune (старые файлы и прогоны) (push) Successful in 9s
ci / module boundaries / boundaries (push) Successful in 7s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m35s
2026-10-22 14:57:14 +03:00
mrleo1nid
bfcf6e48b2
fix: harmonize wave colors from album covers
ci / ts / ts (packages + web) (push) Canceled after 5m28s
ci / module boundaries / boundaries (push) Successful in 5s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m18s
2026-10-22 14:52:57 +03:00
mrleo1nid
02307802bc
style(recommender): format demographic integration test
release / release (версия и заметки) (push) Successful in 5s
release / android (APK в релиз) (push) Successful in 3m54s
ci / recommender / recommender (push) Successful in 37s
release / prune (старые файлы и прогоны) (push) Successful in 5s
ci / db / db (push) Successful in 54s
release / desktop (Linux и Windows в релиз) (push) Successful in 12m38s
2026-10-22 14:25:11 +03:00
mrleo1nid
fff91c446b
feat(recommendations): collect demographics and advance age cohorts
ci / db / db (push) Successful in 53s
ci / api / api (push) Successful in 51s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m3s
ci / recommender / recommender (push) Failing after 16s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m15s
ci / ts / ts (packages + web) (push) Successful in 3m19s
ci / module boundaries / boundaries (push) Successful in 7s
2026-10-22 14:19:52 +03:00
mrleo1nid
e158558da3
refactor: isolate playback and upload use cases
ci / api / api (push) Successful in 47s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m2s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m30s
ci / ts / ts (packages + web) (push) Successful in 2m54s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m14s
ci / module boundaries / boundaries (push) Successful in 6s
ci / db / db (push) Successful in 1m4s
2026-10-22 13:52:16 +03:00
mrleo1nid
c84f90e2cc
fix(web): scope playlist creation locator in e2e test
ci / ts / ts (packages + web) (push) Successful in 2m1s
2026-10-22 12:57:25 +03:00
mrleo1nid and Cursor
72567acd28
feat(web): polish catalog motion, empty states, and mobile now-playing
...
release / prune (старые файлы и прогоны) (push) Successful in 6s
ci / ts / ts (packages + web) (push) Failing after 5m25s
release / desktop (Linux и Windows в релиз) (push) Successful in 16m22s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m23s
release / release (версия и заметки) (push) Successful in 6s
release / android (APK в релиз) (push) Successful in 4m18s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 09:53:37 +03:00
mrleo1nid and Cursor
39aaaed969
feat(web): list previous app builds on the download page
...
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m17s
ci / ts / ts (packages + web) (push) Successful in 2m1s
ci / db / db (push) Successful in 1m4s
ci / api / api (push) Successful in 48s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 58s
GET /app/clients now returns up to 8 Gitea releases per OS so users can download older installers while they still exist after prune.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 08:40:08 +03:00
mrleo1nid and Cursor
8eb6b36888
ci(release): keep files and Actions runs for the last 8 releases
...
release / desktop (Linux и Windows в релиз) (push) Successful in 16m4s
release / prune (старые файлы и прогоны) (push) Successful in 8s
ci / ts / ts (packages + web) (push) Successful in 3m30s
release / android (APK в релиз) (push) Successful in 8m57s
release / release (версия и заметки) (push) Successful in 8s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 08:32:18 +03:00
mrleo1nid and Cursor
83b604437c
perf(desktop): ship a .deb instead of an 80MB AppImage
...
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m13s
ci / desktop / rust (desktop proxy) (push) Successful in 5m33s
release / release (версия и заметки) (push) Successful in 9s
ci / api / api (push) Successful in 50s
ci / db / db (push) Successful in 50s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Failing after 49s
ci / ts / ts (packages + web) (push) Canceled after 2m4s
release / android (APK в релиз) (push) Failing after 4m6s
release / desktop (Linux и Windows в релиз) (push) Successful in 17m20s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 08:26:50 +03:00
mrleo1nid and Cursor
73ad61e7a5
feat(genius): load song metadata, lyrics, and artwork
...
ci / ts / ts (packages + web) (push) Canceled after 1m0s
ci / api / api (push) Successful in 46s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 56s
ci / db / db (push) Successful in 1m32s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m27s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m31s
Search hits omit album covers and artist images. The worker now reads the full song and artist, stores the description, and leaves Genius image URLs unchanged on mobile.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 08:23:54 +03:00
mrleo1nid
fb20258489
feat(player): add current track to playlists
2026-10-22 07:54:57 +03:00
mrleo1nid
78c006184b
feat(branding): add unified Pipu Music app icons
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 2m30s
ci / ts / ts (packages + web) (push) Successful in 3m29s
ci / desktop / rust (desktop proxy) (push) Successful in 3m15s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 2m10s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 56s
2026-10-22 07:48:00 +03:00
mrleo1nid and Cursor
d3116aba96
perf(desktop): stop packing GStreamer into the AppImage
...
ci / ts / ts (packages + web) (push) Successful in 2m54s
release / release (версия и заметки) (push) Successful in 9s
release / android (APK в релиз) (push) Successful in 7m28s
ci / desktop / rust (desktop proxy) (push) Successful in 7m20s
release / desktop (Linux и Windows в релиз) (push) Successful in 12m56s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 01:30:01 +03:00
mrleo1nid and Cursor
b7518aa450
fix(web): keep the track title readable in the 320px player
...
ci / ts / ts (packages + web) (push) Successful in 3m20s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 00:50:34 +03:00
mrleo1nid and Cursor
eb8031b126
ci(release): cross-compile Windows NSIS on the Linux runner
...
release / release (версия и заметки) (push) Successful in 7s
release / android (APK в релиз) (push) Successful in 6m0s
ci / desktop / rust (desktop proxy) (push) Successful in 10m12s
ci / ts / ts (packages + web) (push) Failing after 1m41s
release / desktop (Linux и Windows в релиз) (push) Successful in 20m8s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 00:43:16 +03:00
mrleo1nid and Cursor
e4b841a8d8
ci(release): attach Linux and Windows desktop installers
...
ci / ts / ts (packages + web) (push) Failing after 1m42s
release / release (версия и заметки) (push) Successful in 8s
ci / desktop / rust (desktop proxy) (push) Successful in 7m35s
release / desktop (Windows в релиз) (push) Canceled after 0s
release / android (APK в релиз) (push) Successful in 7m49s
release / desktop (Linux в релиз) (push) Canceled after 2m48s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 00:32:33 +03:00
mrleo1nid and Cursor
597067689a
feat: add a platform-aware apps download page
...
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m10s
ci / db / db (push) Successful in 57s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m1s
ci / desktop / rust (desktop proxy) (push) Successful in 5m37s
ci / ts / ts (packages + web) (push) Successful in 4m10s
release / release (версия и заметки) (push) Successful in 11s
release / android (APK в релиз) (push) Successful in 4m22s
ci / api / api (push) Successful in 48s
Serve desktop and Android builds from the latest Gitea release on /download, and fix the desktop compile and CI flakes that blocked v1.3.0.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-22 00:10:03 +03:00
mrleo1nid and Cursor
efe78d7e07
feat(desktop): wrap the web client in a Tauri app
...
ci / api / api (push) Successful in 43s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m19s
ci / desktop / rust (desktop proxy) (push) Failing after 3m34s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m28s
ci / ts / ts (packages + web) (push) Failing after 2m49s
release / release (версия и заметки) (push) Successful in 5s
ci / db / db (push) Successful in 40s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m12s
release / android (APK в релиз) (push) Failing after 2m0s
EOF
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-21 23:45:03 +03:00
mrleo1nid and Cursor
fa79394869
feat: add personal playlists and shareable track links
...
release / android (APK в релиз) (push) Successful in 4m8s
release / release (версия и заметки) (push) Successful in 6s
EOF
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-21 23:37:53 +03:00
mrleo1nid
3a097c15c8
perf(web): preload restored audio before playback
ci / ts / ts (packages + web) (push) Successful in 2m20s
release / release (версия и заметки) (push) Successful in 5s
release / android (APK в релиз) (push) Successful in 3m43s
2026-10-21 22:49:10 +03:00
mrleo1nid
20abe20686
fix(mobile): prevent crash when restoring a saved playback queue
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m32s
release / android (APK в релиз) (push) Successful in 4m20s
ci / ts / ts (packages + web) (push) Successful in 2m49s
release / release (версия и заметки) (push) Successful in 9s
2026-10-21 18:41:48 +03:00
mrleo1nid
c34272d508
fix(auth): allow admins to change any username including their own
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m6s
ci / ts / ts (packages + web) (push) Successful in 2m59s
ci / api / api (push) Successful in 49s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m25s
ci / db / db (push) Successful in 1m17s
2026-10-21 17:33:19 +03:00
mrleo1nid
b0cbd0f149
fix: repair Android startup and improve mobile web layouts
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m17s
ci / ts / ts (packages + web) (push) Successful in 2m22s
release / android (APK в релиз) (push) Successful in 4m15s
release / release (версия и заметки) (push) Successful in 6s
2026-10-21 17:14:05 +03:00
mrleo1nid
4c2286e70d
feat(web): react wave and ambient visuals to live audio
ci / ts / ts (packages + web) (push) Failing after 2m2s
2026-10-21 16:44:04 +03:00
mrleo1nid
9223516547
fix(web): soften wave glow and follow liquid shape
ci / ts / ts (packages + web) (push) Successful in 2m25s
2026-10-21 16:33:22 +03:00
mrleo1nid and Claude Opus 5.5
7b7ce78de8
fix(web): align the upload queue settings fields
...
ci / ts / ts (packages + web) (push) Successful in 1m53s
Labels that wrapped to two lines pushed their inputs down, the storage
select had its own label style, and the checkbox sat in the middle of its
cell. The section now lays label, input and hint rows out with subgrid, and
the select no longer stretches past its column.
Also add a web-fake launch config that runs the web app on the fake API.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 10:44:20 +03:00
mrleo1nid and Claude Opus 5.5
4d2c6ce22f
fix(web): treat AIFF and WavPack as lossless in the upload format hint
...
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m30s
ci / ts / ts (packages + web) (push) Successful in 2m11s
The web check only accepted FLAC and WAV, so AIFF files were flagged
"needs attention" although the server already counts them as lossless.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 10:35:43 +03:00
mrleo1nid and Claude Opus 5.5
dca7173a88
ci(ts): install Playwright system deps and cache the browser
...
ci / ts / ts (packages + web) (push) Successful in 3m30s
E2e failed to launch Chromium on the runner (missing libnspr4.so). Install
with --with-deps and cache ~/.cache/ms-playwright, since the primary download
host is unreachable from the runner and the fallback takes minutes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 10:25:21 +03:00
mrleo1nid
1e3b350dfc
feat(upload): enhance audio upload handling and user feedback
...
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m1s
ci / db / db (push) Successful in 1m16s
ci / api / api (push) Successful in 45s
ci / recommender / recommender (push) Successful in 1m50s
ci / ts / ts (packages + web) (push) Failing after 6m53s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m12s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m13s
- Introduced a new warning for users uploading non-FLAC or WAV formats, indicating that these formats should only be used as a last resort.
- Added functionality to highlight files needing format attention in the upload queue.
- Updated the UI to provide clearer guidance on acceptable audio formats during uploads.
- Improved documentation to reflect changes in upload requirements and user interface updates.
2026-10-21 10:07:43 +03:00
mrleo1nid and Claude Opus 5.5
74da457362
feat(auth): make upload review a separate grant instead of an admin privilege
...
Reviewing the upload queue is now a per-user flag (reviews_uploads), not part
of the admin role: several people can hold it, a moderator can have it, and an
admin may not. Only admins grant or revoke it; existing admins keep it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 10:07:05 +03:00
mrleo1nid and Cursor
066ba24834
feat: finish the upload, playback, and test gaps from the docs
...
ci / db / db (push) Successful in 1m3s
ci / ts / ts (packages + web) (push) Failing after 4m57s
ci / api / api (push) Successful in 40s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Failing after 1m48s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 46s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 5m7s
Quality upgrades, batch covers, staging preview, and resume after reload are in the queue. Loudness and crossfade work on web and Android, and the documented checks now have suites.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-21 09:37:53 +03:00
mrleo1nid and Cursor
2b76060ea3
fix(web): keep menu labels on one line and fold the admin section by default
...
ci / ts / ts (packages + web) (push) Successful in 1m27s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-21 09:06:33 +03:00
mrleo1nid and Cursor
dfc72b1d69
chore(deploy): leave database backups to external tools
...
ci / db / db (push) Successful in 1m40s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 3m51s
ci / ts / ts (packages + web) (push) Successful in 54s
The app no longer dumps Postgres, restores it, or checks copies in CI.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-21 09:03:06 +03:00
mrleo1nid and Claude Opus 5.5
978f03b8f8
feat(admin): reset a user's recommendations from the users panel
...
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 55s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m10s
ci / ts / ts (packages + web) (push) Successful in 1m23s
ci / api / api (push) Successful in 40s
ci / db / db (push) Successful in 2m35s
- POST /admin/users/{id}/reset-recommendations clears the taste profile
(onboarding, CF vector, bandit), play stats and wave impressions; likes,
dislikes and history stay, wave sessions stay so a playing wave keeps going
- moderators may reset plain users, admins anyone including themselves;
the reset is written to the audit log
- users panel gets the menu action with a confirmation; docs updated
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 08:52:31 +03:00
mrleo1nid and Claude Opus 5.5
b27b915b63
feat(web): settings to keep the search open and hide home pickers; collapsible menu sections
...
ci / api / api (push) Successful in 2m27s
ci / db / db (push) Successful in 2m23s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 2m44s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m43s
ci / ts / ts (packages + web) (push) Successful in 1m16s
- appearance settings get "collapse search" (off keeps the field always open)
and separate switches for the activity and mood pickers on the home page;
stored in ui_prefs (search_collapse, home_activities, home_moods)
- Collection and Admin headers in the sidebar fold their items; the state is
remembered in the browser, a folded Admin shows the review queue badge;
icon-only and phone layouts always show every item
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 08:26:48 +03:00
mrleo1nid and Claude Opus 5.5
73e642c1ec
fix(mobile): APK starts on Android 15+ 16 KB page devices and emulators
...
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 2m56s
release / android (APK в релиз) (push) Successful in 4m53s
ci / ts / ts (packages + web) (push) Successful in 1m48s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 3m27s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m2s
release / release (версия и заметки) (push) Successful in 8s
On an Android 16 emulator the release APK crashed at launch with
"Cannot read property 'NativeModule' of undefined": libexpo-modules-core.so
was missing for the ABI the device picked. Two build defects:
- librnskia.so was linked with 4 KB segment alignment (Skia 2.0.0-next.4
lacks ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES), so 16 KB page devices cannot
load it; a pnpm patch adds the flag
- the APK carried incomplete x86, x86_64 and armeabi-v7a folders from the
React Native libraries; an Expo config plugin keeps only arm64-v8a, the ABI
the native modules are built for (the APK also halves in size)
scripts/check-apk.mjs now fails the release on another ABI, a missing core
library or a library not aligned to 16 KB.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 03:22:13 +03:00
mrleo1nid and Claude Opus 5.5
66f5749fc1
fix(deploy): take the Gitea address for Android updates from git remote
...
ci / api / api (push) Successful in 22s
release / release (версия и заметки) (push) Successful in 5s
release / android (APK в релиз) (push) Successful in 4m11s
ci / db / db (push) Successful in 2m4s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m33s
The server kept the git.example.lan placeholder from .env.example, so the
/android page and in-app updates had no release. install.sh and update.sh now
fill GITEA_URL and GITEA_REPO from the clone's origin (https, ssh and scp
forms, credentials stripped) when they are empty or still the placeholder,
and the API treats the placeholder as not configured.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 00:23:28 +03:00
mrleo1nid and Claude Opus 5.5
823d1eb841
fix(web): suggestions stay open when you return to the search quickly
...
ci / ts / ts (packages + web) (push) Successful in 1m1s
release / android (APK в релиз) (push) Successful in 4m10s
release / release (версия и заметки) (push) Successful in 6s
Leaving the field scheduled a close 120 ms later; coming back and typing
within that window let the old timer hide the fresh suggestions. Focus now
cancels the pending close. This also made the search box test flaky.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 00:13:08 +03:00
mrleo1nid and Claude Opus 5.5
860072e542
feat(web): choose where the search sits, and controls no longer select text
...
ci / api / api (push) Successful in 36s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 48s
ci / ts / ts (packages + web) (push) Canceled after 12s
ci / db / db (push) Successful in 2m43s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 59s
- settings get a search position (left, center by default, right); the top bar
is three zones and the suggestions open towards the free space
- buttons, chips, tabs, menu items and the home screen controls are not
text-selectable, so clicks and double clicks no longer highlight labels
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 00:11:06 +03:00
mrleo1nid and Claude Opus 5.5
d2f17d8d62
ci(db): fail early with a clear message when the runner disk is full
...
ci / db / db (push) Successful in 45s
release / release (версия и заметки) (push) Successful in 6s
release / android (APK в релиз) (push) Successful in 3m47s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 00:03:32 +03:00
mrleo1nid and Claude Opus 5.5
4763339335
ci(db): wait for the service containers before the tests
...
ci / db / db (push) Successful in 53s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:59:28 +03:00
mrleo1nid and Claude Opus 5.5
fda6ed48ab
feat: Android download page, analysis retry and a collapsible search
...
ci / api / api (push) Successful in 37s
ci / db / db (push) Failing after 14s
ci / ts / ts (packages + web) (push) Successful in 57s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m2s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 46s
ci / recommender / recommender (push) Successful in 51s
- /android is a public page with the latest APK, the server address to copy
and three install steps; linked from the sign-in screen and the profile menu
- failed audio analysis can be retried from the library page, which also shows
the most common error; the analyzer no longer burns attempts on files that
are missing because the disk is not mounted
- the top bar search folds into a round button and slides open on click, "/"
or Ctrl+K
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:55:51 +03:00
mrleo1nid and Claude Opus 5.5
2d49cb3f19
fix(web): header dropdowns sit above the page again
...
release / android (APK в релиз) (push) Successful in 3m45s
ci / ts / ts (packages + web) (push) Successful in 50s
release / release (версия и заметки) (push) Successful in 5s
Every shell child got the same z-index, so the page painted over the search
suggestions and the profile menu and swallowed their clicks: suggestions could
not be picked, and the language switch and settings item did nothing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:47:18 +03:00
mrleo1nid and Claude Opus 5.5
3da82e902a
fix(library): survive a music disk that is not mounted
...
ci / db / db (push) Successful in 47s
release / release (версия и заметки) (push) Successful in 4s
ci / api / api (push) Successful in 29s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 52s
release / android (APK в релиз) (push) Successful in 3m20s
On the test server the host music folder was not mounted, so every stream and
fingerprint failed with no such file, and a scan of the empty folder would have
marked the whole library missing and purged it after 30 days.
- a scan of an empty source folder with known files aborts with a clear error
- fingerprinting skips such a source with one warning instead of one per file
- LIBRARY_HOST mounts use rslave, so a disk mounted after start shows up
- update.sh refuses to deploy with an empty LIBRARY_HOST
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:34:52 +03:00
mrleo1nid and Claude Opus 5.5
421b1a3eb9
ci: allow manual runs of the db and mobile checks
...
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 56s
release / release (версия и заметки) (push) Successful in 5s
release / android (APK в релиз) (push) Successful in 3m24s
ci / db / db (push) Successful in 54s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:18:11 +03:00
mrleo1nid and Claude Opus 5.5
b8243c3072
docs(roadmap): M6 and M7 status
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:15:59 +03:00
mrleo1nid and Claude Opus 5.5
30f063456e
fix(mobile): white text sits on the contrast-safe accent fill (M7)
...
ci / mobile / mobile (Metro-бандл Android) (push) Failing after 7s
ci / ts / ts (packages + web) (push) Successful in 49s
Primary buttons, selected segments and context chips use accent-fill, as on
the web, so their labels meet WCAG AA contrast.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:15:38 +03:00
mrleo1nid and Claude Opus 5.5
de4e59d9f8
fix(web): accessibility pass to WCAG 2.1 AA (M7)
...
ci / mobile / mobile (Metro-бандл Android) (push) Canceled after 31s
ci / ts / ts (packages + web) (push) Canceled after 0s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 44s
An axe-core audit of every screen in both themes found low contrast on white
text over the accent and on caption text, track rows using row roles without
cells, and unlabelled progress bars. Accent fills now use a darker token,
caption text meets 4.5:1, track lists are lists and progress bars are labelled.
The queue drawer slides in from the right as designed, takes focus, closes on
Escape and notes that the wave never ends.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:15:03 +03:00
mrleo1nid and Claude Opus 5.5
c0e50bf88e
docs: administrator guide (M7)
...
Day-to-day operation after install: users and roles, storages and scans, the
upload queue, wave metrics and training, updates, backups and restore,
monitoring and common situations.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:02:54 +03:00
mrleo1nid and Claude Opus 5.5
86c3e4e477
test(load): k6 smoke for 100 wave listeners and 20 rps suggest (M7)
...
Three minutes of wave sessions with stream starts, play events and next batches
alongside a steady suggest load; thresholds follow the documented p95 targets.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:01:10 +03:00
mrleo1nid and Claude Opus 5.5
aacf55679a
feat(deploy): nightly database backups with verified restore (M7)
...
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m3s
ci / db / db (push) Failing after 52s
A backup container dumps the database every night, keeps 14 daily and 8 weekly
copies and once a week restores a copy into a scratch database to check tables
and row counts. update.sh takes a copy before updating, restore.sh brings one
back and keeps the old database aside. CI runs the dump, verify and restore
cycle on the database the end-to-end journey filled.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 22:59:27 +03:00
mrleo1nid and Claude Opus 5.5
d91ff89c64
feat(admin): wave metrics split by model version (M6)
...
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 51s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m5s
ci / api / api (push) Successful in 29s
ci / db / db (push) Failing after 12s
ci / ts / ts (packages + web) (push) Successful in 1m3s
The library page compares listen-through, early-skip and like rates per
impression model version, so v1 and the trained ranker can be compared online.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 22:57:11 +03:00
mrleo1nid and Claude Opus 5.5
fbbe5d7528
feat(search): personalize suggestions by listening history (M6)
...
ci / api / api (push) Successful in 18s
ci / db / db (push) Successful in 30s
Suggest fetches three times as many candidates and reranks them in the API:
what the user plays, finishes and likes moves up a few positions and what they
dislike moves down, with Meilisearch relevance still the base order.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 22:55:07 +03:00
mrleo1nid and Claude Opus 5.5
e250837de9
fix(search): reindex on a fresh Meilisearch
...
ci / db / db (push) Successful in 34s
ci / api / api (push) Successful in 19s
release / android (APK в релиз) (push) Successful in 3m17s
release / release (версия и заметки) (push) Successful in 5s
Deleting a missing <uid>_next index is accepted with 202 and fails inside the
task with index_not_found. That error was not treated as not-found, so the first
reindex aborted and search stayed unavailable until indexes existed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 22:44:59 +03:00
mrleo1nid and Claude Opus 5.5
58bd14ef38
feat(recommender): LightGBM lambdarank ranker with impression features (M6)
...
ci / api / api (push) Successful in 17s
ci / db / db (push) Failing after 1m15s
ci / recommender / recommender (push) Successful in 32s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m41s
The wave logs each served candidate's feature vector to rec_impression_features.
Nightly training joins them with impression outcomes, validates on the last week
and activates the model only when it beats the v1 order and the active model.
The service loads the active ranker and uses its order in place of the v1 score.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 22:41:26 +03:00