lobo
b811255c16
feat: add What's new feature
...
Build, Test & Push Frontend / quality-check (push) Successful in 25s
Build, Test & Push Frontend / docker (push) Successful in 39s
Dashboard dialog shows unseen news entries. Users mark them seen with "Got it"
or revisit via the /whats-new page. Admins publish, edit, and delete entries
on /admin/news. Full i18n support and test coverage included.
2026-10-01 10:03:39 +02:00
lobo
79b086c525
feat(registration): no invite code, request text
Build, Test & Push Frontend / quality-check (push) Successful in 22s
Build, Test & Push Frontend / docker (push) Successful in 22s
2026-10-01 09:18:47 +02:00
lobo
f4e69e1a94
feat(admin): accept, deny and pending count
2026-10-01 09:18:47 +02:00
lobo
b8f70e7578
feat(registration): send the browser language
Build, Test & Push Frontend / quality-check (push) Successful in 22s
Build, Test & Push Frontend / docker (push) Successful in 25s
2026-10-01 08:30:24 +02:00
lobo
43968b3b7a
test(import): wait for the URL without the store list
2026-10-01 08:30:24 +02:00
lobo
f01ad03f6e
feat(import): bookmarklet for store pages
Build, Test & Push Frontend / quality-check (push) Successful in 22s
Build, Test & Push Frontend / docker (push) Successful in 25s
2026-09-30 15:59:05 +02:00
lobo
c6d76b4cb5
fix(session): keep the hash on the login round trip
2026-09-30 15:59:05 +02:00
lobo
8e31eafc06
feat(import): read the exports of GOG Galaxy, Grouvee, HowLongToBeat and Playnite
2026-09-30 15:59:05 +02:00
lobo
89d0b29698
refactor: item 29 cleanup
...
F16 F17 F18 F19 F20 F21: import polling backs off and pauses in a hidden tab, one date format module, fake timers in the import tests, error codes instead of raw messages, one safe storage wrapper, dead code.
2026-09-30 15:00:47 +02:00
lobo
aa5832225d
refactor(import): move the import parts to components/import
Build, Test & Push Frontend / quality-check (push) Successful in 23s
Build, Test & Push Frontend / docker (push) Successful in 33s
2026-09-30 08:46:51 +02:00
lobo
28ff6eae52
refactor(settings): one card per section
...
The name field takes its value from the page's own load, not from the user context: the context can still be empty when the form mounts.
2026-09-30 08:46:51 +02:00
lobo
6da612bebd
refactor(dashboard): load in useDashboardData, welcome and most played cards
2026-09-30 08:46:51 +02:00
lobo
05f4ca42e5
refactor(game-detail): load in useGame, hero and achievements cards
2026-09-30 08:46:51 +02:00
lobo
628920a006
feat(backlog): save only the changed fields
2026-09-30 07:57:52 +02:00
lobo
9ddc50f819
fix: abort old loads, stale sync state, warn before unsaved edits are lost
2026-09-30 07:51:09 +02:00
lobo
cbafa3d540
refactor(session): one session store for login, logout and 401
2026-09-30 07:36:08 +02:00
lobo
2a22789435
test: data router, one render helper, fetchRoutes in every test
2026-09-29 16:15:50 +02:00
lobo
d0ea9e900d
refactor(frontend): lint, one session guard, one request helper, one user context
2026-09-29 15:40:55 +02:00
lobo
111ab1e200
fix(import): readable dropdowns in dark mode, select all and none
2026-09-29 15:10:41 +02:00
lobo
24a98062ee
refactor(limits): server limits in one file, own texts for unknown errors
Build, Test & Push Frontend / quality-check (push) Successful in 19s
Build, Test & Push Frontend / docker (push) Successful in 27s
2026-09-29 14:48:28 +02:00
lobo
f605917874
fix(settings): keep the language and save settings one after the other
2026-09-29 13:27:31 +02:00
lobo
14dd59f9e0
feat(import): add the import page, multi-select add and the favorite platform
2026-09-29 10:20:54 +02:00
lobo
aa9e83e0cb
feat(tiles): let users arrange the dashboard and profile tiles
Build, Test & Push Frontend / quality-check (push) Successful in 18s
Build, Test & Push Frontend / docker (push) Successful in 28s
2026-09-28 15:03:16 +02:00
lobo
b55fcfec92
feat(profile): let users design their public profile
2026-09-28 14:20:14 +02:00
lobo
a5458b3f86
feat(game): play confetti for finished games
2026-09-28 13:36:36 +02:00
lobo
09e1f767d8
docs(readme): describe the local setup
2026-09-28 13:07:40 +02:00
lobo
78ba0700c8
feat(library): add the merge duplicate dialog
Build, Test & Push Frontend / quality-check (push) Successful in 18s
Build, Test & Push Frontend / docker (push) Successful in 24s
2026-09-28 11:25:45 +02:00
lobo
01ae372b2d
feat(dashboard): show admin hints and add the hints admin page
Build, Test & Push Frontend / quality-check (push) Successful in 18s
Build, Test & Push Frontend / docker (push) Successful in 25s
2026-09-28 10:07:49 +02:00
lobo
6601277961
feat(library): add the game data correction dialog
Build, Test & Push Frontend / quality-check (push) Successful in 17s
Build, Test & Push Frontend / docker (push) Successful in 25s
2026-09-28 09:31:39 +02:00
lobo
afe00ceae9
feat(admin): add the admin users page and view as
Build, Test & Push Frontend / quality-check (push) Successful in 17s
Build, Test & Push Frontend / docker (push) Successful in 28s
2026-09-27 12:18:10 +02:00
lobo
46587dfb5c
feat(settings): let users delete their account
Build, Test & Push Frontend / quality-check (push) Successful in 16s
Build, Test & Push Frontend / docker (push) Successful in 26s
2026-09-27 11:46:22 +02:00
lobo
cfceca5e5e
feat(settings): show the build version of each service
Build, Test & Push Frontend / quality-check (push) Successful in 15s
Build, Test & Push Frontend / docker (push) Successful in 27s
2026-09-27 10:27:01 +02:00
lobo
9d1c7bb40d
feat(stats): add stats page and pile trend
...
Build, Test & Push Frontend / quality-check (push) Successful in 15s
Build, Test & Push Frontend / docker (push) Successful in 22s
Show the stat groups on /stats, the pile trend on the dashboard card,
one switch per group in the settings, and the shared groups on the
public profile.
2026-09-27 07:16:10 +02:00
lobo
83bbc2730d
feat(library): ask whether a game is finished
Build, Test & Push Frontend / quality-check (push) Successful in 15s
Build, Test & Push Frontend / docker (push) Successful in 23s
2026-09-26 19:00:57 +02:00
lobo
011711fe4f
feat(library): hide and unhide games
Build, Test & Push Frontend / quality-check (push) Successful in 16s
Build, Test & Push Frontend / docker (push) Successful in 22s
2026-09-26 12:27:58 +02:00
lobo
42ed0afe51
feat(images): report broken covers and achievement icons
Build, Test & Push Frontend / quality-check (push) Successful in 15s
Build, Test & Push Frontend / docker (push) Successful in 22s
2026-09-26 12:07:47 +02:00
lobo
ca75e6a530
feat(settings): link the Steam account through Steam
...
Build, Test & Push Frontend / quality-check (push) Successful in 16s
Build, Test & Push Frontend / docker (push) Successful in 25s
A Steam card in the settings links, verifies or unlinks the Steam
account through "Sign in through Steam". After the way back the page
shows the outcome and refreshes the session, so Core gets the new
Steam ID at once. Registration and settings no longer ask for a typed
Steam ID.
2026-09-26 11:20:04 +02:00
lobo
23ab5a91e7
feat(picker): add the speedrun mood and the speedrun.com link
...
Build, Test & Push Frontend / quality-check (push) Successful in 15s
Build, Test & Push Frontend / docker (push) Successful in 23s
"What to play next" gets a Speedrun mood. The game detail links the
game's speedrun.com page when Core found one with verified runs; only
https://www.speedrun.com/ links are shown.
2026-09-26 10:39:10 +02:00
lobo
b0c78d8dca
docs(readme): add the architecture overview
Build, Test & Push Frontend / quality-check (push) Successful in 14s
Build, Test & Push Frontend / docker (push) Successful in 24s
2026-09-26 07:37:44 +02:00
lobo
fa1bd59509
feat(play-next): pick games by mood
2026-09-26 07:37:16 +02:00
lobo
7d9cf907fc
feat(security): enforce the Content Security Policy
...
The report-only run showed no violation in production.
2026-09-26 07:15:14 +02:00
lobo
c52c5e02d2
feat(ui): add the ToBePlayed logo and name
...
Build, Test & Push Frontend / quality-check (push) Successful in 14s
Build, Test & Push Frontend / docker (push) Successful in 22s
The logo is a traced SVG whose colors follow the accent color;
violet shows it as designed. Favicon, PWA and Apple icons use
it with fixed colors. The header and landing page say
ToBePlayed instead of Game Log. Below 380 px the header shows
only the logo, and the home link keeps its name for screen
readers.
2026-09-26 07:05:57 +02:00
lobo
25d2f0d0bd
fix(ui): stop old translations and page shrink on Android
...
Build, Test & Push Frontend / quality-check (push) Successful in 14s
Build, Test & Push Frontend / docker (push) Successful in 26s
The translation files get a content version in their URL, so a
browser that cached an old file loads the new one. On touch
screens the scroll lock of menus and selects no longer adds a
right margin: Android Chrome reported one and the whole page
became narrower.
2026-09-26 06:29:57 +02:00
lobo
6edb53162e
feat(security): add a report-only CSP and security headers
...
Build, Test & Push Frontend / quality-check (push) Successful in 14s
Build, Test & Push Frontend / docker (push) Successful in 23s
nginx.conf is now an nginx template, so connect-src takes
AUTH_HOST and API_HOST from the container env. The image
sets both to empty by default, so nginx still starts
without them. Report-only until production shows no
violation. Also nosniff, Referrer-Policy and
Permissions-Policy.
2026-09-25 15:47:23 +02:00
lobo
f8e6c2c970
feat(pwa): make the app installable
...
Manifest, gamepad icon (also the new favicon, instead of
the Vite logo), iOS meta tags and the tab title
ToBePlayed. No service worker, so a deploy never meets
an old cached bundle. The title bar color follows
light and dark mode. The README also lists adding a
game by name.
2026-09-25 15:32:55 +02:00
lobo
444b03acee
feat(library): search IGDB and add games by hand
Build, Test & Push Frontend / quality-check (push) Successful in 13s
Build, Test & Push Frontend / docker (push) Successful in 23s
2026-09-25 14:37:21 +02:00
lobo
d9a39dda22
feat(auth): use the cookie session and refresh on 401
...
The token is no longer stored; a tbp_session flag remembers the
login. apiFetch renews the session once on a 401 and sends the
request again. Parallel requests and other tabs share one refresh,
because Auth revokes the session when a refresh token is used twice.
Only a 401 from the refresh ends the session; a 502 or no network
shows the normal error.
2026-09-25 13:45:08 +02:00
lobo
5ff8d48c53
refactor(auth): send login token through apiFetch
...
Build, Test & Push Frontend / quality-check (push) Successful in 13s
Build, Test & Push Frontend / docker (push) Successful in 23s
All authenticated calls now use apiFetch, and only utils/auth.js
touches the stored token. The cookie login can then change these two
files instead of every page.
2026-09-25 11:29:14 +02:00
lobo
085fcf15a4
feat(achievements): dashboard card, library badge, 100 % hint and profile stats
2026-09-25 10:13:31 +02:00
lobo
2efdf64675
feat(play-next): page that picks the next backlog game
2026-09-25 09:29:15 +02:00