Admin
ecf9faf640
Merge branch 'frontend-refactor-rev' into audit-merge-three
2026-09-24 17:25:31 +02:00
Admin
35d6314ce8
Point the IDE dev settings at the shared Infrastructure stack
...
CI/CD / BackEnd (push) Successful in 1m18s
CI/CD / WebPlayer (push) Successful in 41s
CI/CD / Deploy (push) Skipped
appsettings.Development.json still targeted Musify's old own Postgres
(port 59000) with the superuser, the default RabbitMQ vhost as guest and
the admin S3 keys. They now use Infrastructure's dev ports and Musify's
own dev credentials (role, vhost and S3 identity), the same defaults as
deploy/.env.example.
The API's non-secret Zitadel settings (issuer, metadata, endpoints) move
there too, so user-secrets only need the per-machine client id.
2026-09-24 17:11:50 +02:00
Admin
f99f74f4a1
Use Musify's own credentials on the shared services
...
Infrastructure now gives each project its own Postgres role, RabbitMQ
user and vhost, S3 identity limited to its bucket and a Zitadel service
account that owns only its project, instead of handing out the admin
accounts.
- Postgres, RabbitMQ and S3 settings default to Musify's own (musify).
- MassTransit connects to the `musify` vhost (RABBITMQ_VHOST, taken from
the address path); RABBITMQ_DEFAULT_USER/PASS become RABBITMQ_USER and
RABBITMQ_PASSWORD.
- zitadel-init mounts ZITADEL_PAT_DIR (Infrastructure's
zitadel/.output/musify) and uses that PAT. It no longer creates the
Zitadel project, which that account can't do: Infrastructure does.
2026-09-24 17:05:23 +02:00
Admin
f2765e2e7b
Call the API by container name from the web player
...
In prod every project shares infra-net, where the `api` service name
can resolve to another project's container as well.
2026-09-24 15:06:25 +02:00
Admin
7b8f3f1222
Use a reverse-domain redirect scheme for the native app
...
- Android/iOS now return to cat.ikerdemo.musify:/callback instead of
musify://callback: a private-use scheme based on a domain we own
(RFC 8252 section 7.1), so another app is unlikely to claim it.
- The Musify Native app no longer needs devMode: loopback and custom
scheme redirects are both valid for a native app.
- zitadel-init also updates an existing app's config, so the change
reaches instances created before it (the client id is kept).
- iOS takes the scheme from everything before the first ':', since the
new URI has a single slash.
2026-09-24 15:06:25 +02:00
Admin
c33b0e8bfd
Stop disabling Zitadel Login V2 from zitadel-init
...
The shared Infrastructure stack now runs the Login V2 container, and
turning the feature off here would switch every project on the shared
instance back to the old login.
2026-09-24 15:06:25 +02:00
Admin
8e85af2b3b
Render unknown URLs inside the app shell and move ListeningStats to the domain types
...
CI/CD / BackEnd (push) Successful in 1m19s
CI/CD / WebPlayer (push) Successful in 46s
CI/CD / Deploy (push) Skipped
Add catch-all routes so unknown pages 404 inside the (app) layout and unknown
/api URLs return a JSON 404 instead of redirecting to the login page. Restore
the full root error page.
2026-09-24 14:29:45 +02:00
Admin
2d23eb87c6
Update frontend docs for the new structure and fix session test typing
2026-09-24 14:06:46 +02:00
Admin
e5ce63a192
Add tests for API endpoints, liked store, listen tracker and paged list
2026-09-24 14:04:43 +02:00
Admin
b5c9658d65
Add tests for sessions, guards, API error details and the app layout load
2026-09-24 14:03:35 +02:00
Admin
ba0a2373b5
Normalize API counters in the server mappers instead of route loaders
2026-09-24 14:02:23 +02:00
Admin
b0163f6a4d
Split the explore page into genre grid, top result and search results components
2026-09-24 14:01:33 +02:00
Admin
0a192645d6
Drive the theme accent from the app layout instead of the player
2026-09-24 13:59:54 +02:00
Admin
351b333529
Split the server API module into client, guards, form fields and action helpers
2026-09-24 13:59:21 +02:00
Admin
155f0e2b6a
Move liked tracks state to state/ and recently played merge to player/
2026-09-24 13:58:43 +02:00
Admin
a54d1ef077
Move store-connected components out of ui/ into components/music and lint the ui boundary
2026-09-24 13:58:13 +02:00
Admin
2361b88e0a
Rename the app shell components folder and move AccountMenu next to its consumers
2026-09-24 13:57:35 +02:00
Admin
e7c2fd5571
Move the app shell and its data loading into the (app) route group layout
2026-09-24 13:57:02 +02:00
Admin
3126cb6dd6
web-player: regenerate package-lock with npm 10 so npm ci works on Node 22
CI/CD / BackEnd (push) Successful in 1m19s
CI/CD / WebPlayer (push) Successful in 45s
CI/CD / Deploy (push) Skipped
2026-09-24 13:16:43 +02:00
Admin
03afcc8a90
web-player: sync package-lock with missing emnapi optional dependencies
CI/CD / BackEnd (push) Successful in 1m24s
CI/CD / WebPlayer (push) Failing after 8s
CI/CD / Deploy (push) Skipped
2026-09-24 13:02:38 +02:00
Admin
f210fa4702
web-player: add albums to playlists through the bulk endpoint
CI/CD / BackEnd (push) Successful in 1m29s
CI/CD / WebPlayer (push) Failing after 7s
CI/CD / Deploy (push) Skipped
2026-09-24 12:05:34 +02:00
Admin
4b708aa987
backend: add endpoint to add a whole album to a playlist
2026-09-24 12:04:28 +02:00
Admin
bd07b1134e
web-player: fix icon size guardrail and add larger icon tokens
2026-09-24 11:56:09 +02:00
Admin
c041daf649
web-player: add lint guardrails for imports, non-null assertions, unused props and icon sizes; refresh docs
2026-09-24 11:54:38 +02:00
Admin
975fa7e4fd
web-player: consistent imports, tokens, glossary and app route grouping
2026-09-24 11:52:57 +02:00
Admin
1a2ae37f49
web-player: show only real upload steps
2026-09-24 11:51:47 +02:00
Admin
1cad36b929
web-player: extract menu, paged list and play-all components from pages
2026-09-24 11:51:14 +02:00
Admin
8cb9386447
web-player: unify primitive link/button rendering, add onEscape action and self-contained AccountMenu
2026-09-24 05:27:25 +02:00
Admin
5cda7cb4c1
web-player: split player, navigation and accent state into focused modules
2026-09-24 05:25:35 +02:00
Admin
e89463fb83
web-player: use playlist totals from the API, cache genres and parallelize explore requests
2026-09-24 05:21:29 +02:00
Admin
b011ccdd5b
backend: expose track count and duration on playlist responses
2026-09-24 05:20:20 +02:00
Admin
1df7f6ccf6
web-player: share form limits between client and server and extract form parsers
2026-09-24 05:19:41 +02:00
Admin
2915737f03
web-player: centralize server helpers (apiFor, authedAction, form readers) and unify page sizes
2026-09-24 05:13:51 +02:00
Admin
5b2a0e4d46
web-player: normalize tracks, albums and playlists into single domain types at the server boundary
2026-09-24 05:09:37 +02:00
Admin
37fc229bf6
web-player: remove dead code and unused props
2026-09-24 05:04:09 +02:00
Admin
bc43b4b6eb
web-player: fix playlist ownership, sidebar counts, home spotlight and assorted page bugs
2026-09-24 05:02:26 +02:00
Admin
dda8c30d45
backend: expose owner user id on playlist responses
2026-09-24 04:59:50 +02:00
Admin
906f38140a
web-player: dedupe queue, stop at end of queue, open queue once and harden localStorage
2026-09-24 04:59:28 +02:00
Admin
3e546d4a1e
web-player: fix open redirect via returnTo, require SESSION_SECRET and validate API inputs
2026-09-24 04:58:08 +02:00
Admin
b2f450dcf7
web-player: add Vitest, unit tests and pure queue operations
2026-09-24 04:54:09 +02:00
NotS1mp
87c3f97529
Merge pull request 'Web player general changes' ( #22 ) from web-player-general-changes into master
...
CI/CD / BackEnd (push) Successful in 1m17s
CI/CD / WebPlayer (push) Successful in 40s
CI/CD / Deploy (push) Successful in 2m4s
Reviewed-on: #22
2026-09-23 22:37:30 +00:00
Admin
302dd1e0f8
Merge master into web-player-general-changes
CI/CD / BackEnd (push) Canceled after 0s
CI/CD / WebPlayer (push) Canceled after 0s
CI/CD / BackEnd (pull_request) Successful in 1m23s
CI/CD / WebPlayer (pull_request) Successful in 40s
CI/CD / Deploy (pull_request) Skipped
CI/CD / Deploy (push) Canceled after 0s
2026-09-24 00:32:03 +02:00
NotS1mp
421fc929e8
Merge pull request 'Dynamic genres' ( #20 ) from dynamic-genres into master
...
CI/CD / BackEnd (push) Successful in 1m23s
CI/CD / WebPlayer (push) Successful in 39s
CI/CD / Deploy (push) Successful in 1m38s
Reviewed-on: #20
2026-09-23 22:24:22 +00:00
NotS1mp
c4ab5dc388
Merge branch 'master' into dynamic-genres
CI/CD / BackEnd (push) Canceled after 0s
CI/CD / WebPlayer (push) Canceled after 0s
CI/CD / Deploy (push) Canceled after 0s
CI/CD / BackEnd (pull_request) Successful in 1m20s
CI/CD / WebPlayer (pull_request) Successful in 40s
CI/CD / Deploy (pull_request) Skipped
2026-09-23 22:15:22 +00:00
NotS1mp
920dcc6779
Merge pull request 'Listening time accuracy' ( #19 ) from listening-time-accuracy into master
...
CI/CD / BackEnd (push) Successful in 1m18s
CI/CD / WebPlayer (push) Successful in 39s
CI/CD / Deploy (push) Successful in 1m40s
Reviewed-on: #19
2026-09-23 22:15:10 +00:00
Admin
430c711ff2
Refactor CI/CD workflow to improve database migration process and key generation
CI/CD / BackEnd (push) Successful in 1m18s
CI/CD / WebPlayer (push) Successful in 40s
CI/CD / Deploy (push) Skipped
CI/CD / BackEnd (pull_request) Successful in 1m27s
CI/CD / WebPlayer (pull_request) Successful in 39s
CI/CD / Deploy (pull_request) Skipped
2026-09-23 23:59:45 +02:00
Admin
cfdc61a4b8
Scroll content inside the shell so the player shares the ambient backdrop
...
CI/CD / BackEnd (push) Successful in 1m17s
CI/CD / WebPlayer (push) Successful in 40s
CI/CD / Deploy (push) Skipped
The player dock used to sit fixed over the scrolling page, so it needed an
opaque background. The shell is now a fixed-height frame where only the
content column scrolls, letting the dock stay transparent like the sidebar
and queue. Scroll reset/restore on navigation moves to restoreScroll(), and
the stable scrollbar gutter moves from <html> to the content scroller.
2026-09-23 23:52:27 +02:00
Admin
0f28e19c1d
Remove follow button from user rows
CI/CD / BackEnd (push) Successful in 1m24s
CI/CD / WebPlayer (push) Successful in 40s
CI/CD / Deploy (push) Skipped
2026-09-23 23:20:27 +02:00
Admin
7316e355ee
Add a second greeting variant per time slot
2026-09-23 23:20:27 +02:00
Admin
b39e55fd87
Restore master hero and spotlight gradients and sway them in place
2026-09-23 23:15:15 +02:00