Commit Graph
173 Commits
Author SHA1 Message Date
lobo 3712e3905f feat(nav): simplify navigation and terms (#57)
Build, Test & Push Frontend / quality-check (push) Successful in 40s
Build, Test & Push Frontend / docker (push) Successful in 29s
One glossary (docs/GLOSSARY.md) for all de and en texts.
Five nav items; phones get a bottom bar with labels.
Community page with following, followers, player search and stats.
The bell is the one place for notes, news and open questions.
Settings in tabs; auto-save is silent and rolls back on error.
Questions page explains itself; removed games are a library filter.
Own profile: menu link, public chip, copy link, private hint.
Points page starts with a short summary; stats use status colors.
2026-10-21 14:54:48 +02:00
lobo 45f5087227 feat(library): set status and rating in one step (#56)
Library rows: the status badge is a menu that saves at once.
Game page: status and rating in the top card, saved on click.
Status changes and hiding a game show an Undo toast.
Other game actions moved into a "..." menu; split and unlink ask first.
New sorts: name, last played, time to beat; "last synced" is gone.
Page numbers and 44 px touch targets on phones.
2026-10-21 11:09:44 +02:00
lobo f9f0d94e2c feat(onboarding): remove dead ends for new users (#55)
Registration shows the address used and can start over.
Confirm page says an admin approves; no login link.
Welcome puts next steps first; Steam link returns to the dashboard.
Dashboard and library explain an empty or private library.
First sync shows queued, polls slower up to 10 min, then a calm text.
Login: simple checks, resend offer after 401, password toggles.
Only a real expired link counts as invalid; typed passwords stay.
Default language follows the browser; texts are platform-neutral.
2026-10-21 09:37:17 +02:00
lobo a60010e055 fix(ux): apply UX quick wins (#54)
Get started links to registration and says an admin approves accounts.
Back navigation restores the library scroll; search no longer fills history.
Steam and PSN unlink ask first. Any close marks news as seen.
Confetti plays only when the level rises on the page.
Count-ups respect reduced motion. Html lang follows the UI language.
Add a 404 page, translated role and dialog close label.
2026-10-21 08:21:39 +02:00
lobo 60dcfe8992 feat(search): add game search page (#50)
Build, Test & Push Frontend / quality-check (push) Successful in 44s
Build, Test & Push Frontend / docker (push) Successful in 27s
Add /search to find games by name on IGDB.
A game in the library opens its game page. Other hits open a
detail view with an Add button. The query stays in the URL.
To fit the new nav icon on 360 px phones, the header padding is
smaller and the points chip hides while the Questions icon shows.
2026-10-20 10:42:06 +02:00
lobo 5be0d42bca feat(follow): add feed links, following page and tile (#52, #51)
Build, Test & Push Frontend / quality-check (push) Successful in 37s
Build, Test & Push Frontend / docker (push) Successful in 1m23s
Feed links go to the game and to the profile view of that game.
Add /following page, nav item and an opt-in Following tile.
Games not in your library show a catalog view with an add button.
2026-10-14 16:23:11 +02:00
lobo 720764bf68 feat(docker): fail at start when AUTH_HOST or API_HOST is unset
Build, Test & Push Frontend / quality-check (push) Successful in 38s
Build, Test & Push Frontend / docker (push) Successful in 29s
An empty host gives a CSP connect-src that blocks every API call.
The new entrypoint check stops the container early with a clear error.
2026-10-14 15:22:20 +02:00
lobo 25ade98989 docs(readme): update features, repos and container env
Build, Test & Push Frontend / quality-check (push) Successful in 38s
Build, Test & Push Frontend / docker (push) Successful in 36s
Match README to the code: PlayStation import, stat charts, public
routes, Gitea CI, and the AUTH_HOST/API_HOST image variables.
2026-10-14 14:51:40 +02:00
lobo 42bc83bb28 chore(imprint): use info@andreas-dahm.eu as contact email
Build, Test & Push Frontend / quality-check (push) Successful in 36s
Build, Test & Push Frontend / docker (push) Successful in 27s
2026-10-14 07:53:04 +02:00
lobo ec0b2844c3 test: use fake steam id in test fixtures
Build, Test & Push Frontend / quality-check (push) Successful in 37s
Build, Test & Push Frontend / docker (push) Successful in 25s
Replace the real Steam ID with the fake 76561198000000001 in the
SettingsPage and validation tests. Keep personal data out of the repo.
2026-10-13 12:03:56 +02:00
lobo c599054059 docs(readme): replace screenshots with neutral demo data
Old screenshots showed a real account. Retake them from the local
stack with 30 demo games and persona "Dev". Add a dashboard shot and
docs/screenshots/README.md.
Refs Lobo_Corp/ToBePlayed-Deployment#12
2026-10-13 12:03:56 +02:00
lobo ad6f5575d2 feat(inbox): add expandable details to digest notes
Digest notes only showed counts. Now a digest note opens to list its
games and items, grouped by kind. The list loads once, from
GET /api/inbox/{id}/details. Achievements show 5 per game first.
2026-10-13 09:17:41 +02:00
lobo 600cf07b5a test(game-detail): wait for points refetch instead of fixed sleep 2026-10-13 09:17:41 +02:00
lobo 0924600d95 perf(library): one dashboard call, stored game detail first
Build, Test & Push Frontend / quality-check (push) Successful in 36s
Build, Test & Push Frontend / docker (push) Successful in 28s
The Dashboard loads the top and playing tiles from
GET /api/library/dashboard-games in one call. The game page shows the
stored game first (refresh=false) and calls again only when
achievementsStale is true. The second answer merges the achievement
fields; it takes status and finishedHint only when the user did not
change the status. The points check runs again after the refresh.

Refs #47
2026-10-12 09:25:49 +02:00
lobo 73ad4fd3b8 refactor(hooks): add useSetStatus for game status saves
Build, Test & Push Frontend / quality-check (push) Successful in 37s
Build, Test & Push Frontend / docker (push) Successful in 23s
Replaces 5 copies of the save code in hints, PlayNextPage and sync.
An empty 2xx body now counts as saved, not a network error.
Refs #46
2026-10-11 17:55:30 +02:00
lobo bbc707de87 feat(sync): add Set to 100% button for all-unlocked games
Build, Test & Push Frontend / quality-check (push) Successful in 40s
Build, Test & Push Frontend / docker (push) Successful in 23s
The sync details show a Set to 100% button for ALL_UNLOCKED games.
The button uses the existing status PUT, checks points, and reloads
the Dashboard. Refs #21
2026-10-11 16:22:49 +02:00
lobo c966877b23 feat(points): show early-since date in point texts
Refs #44. Core sends earlySince in the games and wallet responses.
COMPLETION_TOO_OLD and the COMPLETED rule show it as {{date}}.
2026-10-11 13:51:34 +02:00
lobo e044959629 fix(rewards): explain manual edition finish opens COMPLETED
COMPLETED rule and missing-reason texts (de, en) now name the manual
edition finish as a way to open it. Refs #35
2026-10-11 13:07:26 +02:00
lobo 2794696daa fix(i18n): clarify de and en texts, add i18n tests
Build, Test & Push Frontend / quality-check (push) Successful in 39s
Build, Test & Push Frontend / docker (push) Successful in 22s
Review all de and en texts for clear wording. Use informal "du" and one
glossary (Nachweis, Punkte, Spieldauer). Add tests for matching
placeholders, matching hint links and points texts that say earn, not pay.

Refs #41 #42
2026-10-11 11:29:59 +02:00
lobo 4b25e7f5fe perf(dashboard): load core data in parallel with /me
Build, Test & Push Frontend / quality-check (push) Successful in 36s
Build, Test & Push Frontend / docker (push) Successful in 22s
The dashboard no longer waits for /me before it calls the library.
History loads when games-count says canSync or fails. Refs #40.
2026-10-11 11:05:18 +02:00
lobo 84b16a2ca8 feat(questions): list and restore removed games
Build, Test & Push Frontend / quality-check (push) Successful in 36s
Build, Test & Push Frontend / docker (push) Successful in 26s
Add a "Removed games" section on the questions page and an Undo
toast after removing a manual game (#39).
2026-10-11 09:52:11 +02:00
lobo c126592887 feat(points): show early finish and expected points on questions
Build, Test & Push Frontend / quality-check (push) Successful in 36s
Build, Test & Push Frontend / docker (push) Successful in 24s
Core pays 10 early points for an unproven Steam finish. The rest
comes with proof. Show this in the toast and the game line.
Questions cards show the full value from GET /api/rewards/expected.
2026-10-09 16:00:06 +02:00
lobo 814decc781 feat(points): show points result on every status save
Core now settles on GET /api/rewards/games/{appid}. The Frontend
shows a toast, refreshes the header balance, and lists the paid
rows and reasons on the game page. Deploy Core first.
2026-10-09 15:25:04 +02:00
lobo 9adc606c57 feat(library): show set total playtime on dashboard cards
Most played and currently playing cards show the total playtime of
the game set. Use the own minutes when the API sends no total.
2026-10-09 14:35:07 +02:00
lobo f1a6bc0443 feat(library): show playtime per platform on game detail
Hero and library card show the set total. Fall back to the
row's own minutes when the API sends no total.
2026-10-09 13:55:57 +02:00
lobo 16651a1f56 feat(library): add platform badges, remove hide duplicates
Gitea #34 slice 2 of 3. Core lists each set once now.
The hide duplicates toggle and its param are not needed.
PlatformIcons shows a badge per platform (platforms[]).
2026-10-09 11:31:11 +02:00
lobo 25cc5ff2d8 feat(library): add not the same game button to editions
Part of Gitea #34 slice 1 of 3: one entry per game across platforms.
Status, rating and notes are shared, so the detail page reloads after a save.
2026-10-09 10:57:23 +02:00
lobo e136a7abc1 feat(library): add source chips to game library
Chips show only when the user has 2 or more sources.
A selected source the user lacks stays visible, so it can be cleared.
2026-10-09 10:03:05 +02:00
lobo d3ad19e2fa feat(questions): add questions page with open count badge
Add /questions page and a nav badge with the open count.
Core decides which question is open. The page only shows and answers.
Move RatingStars out of BacklogCard so both pages share it.
2026-10-09 09:31:48 +02:00
lobo 1dab069a4d feat(header): add community link to nav
Build, Test & Push Frontend / quality-check (push) Successful in 39s
Build, Test & Push Frontend / docker (push) Successful in 23s
Add an icon-only nav link to "/" so logged-in users can get back
to the community stats. Make room for it: less nav link padding
below sm, points chip no longer shrinks from lg, and the view-as
badge hangs below the header at every width.
2026-10-08 13:17:29 +02:00
lobo e7b08cfb47 feat(psn): show trophy sets on game detail and dashboard
Build, Test & Push Frontend / quality-check (push) Successful in 35s
Build, Test & Push Frontend / docker (push) Successful in 33s
Detail page groups achievements by set: Steam, then PSN trophies.
Tiles show the real count; a perfect game gets an amber trophy.
Dashboard card shows for PSN-only users; CSP allows PSN icons.
2026-10-08 09:18:15 +02:00
lobo 27c402fa34 feat(psn): replace PSN import button with sync review
Remove the PSN import tab; linking now starts a sync.
Show the PSN review link, last played date and PSN expiry notes.
PSN rows hide the hours field; unchecked titles you saw are dismissed,
unseen ones stay open.
2026-10-08 08:15:37 +02:00
lobo 599b083591 feat(psn): add PlayStation link card and PSN import
Build, Test & Push Frontend / quality-check (push) Successful in 34s
Build, Test & Push Frontend / docker (push) Successful in 22s
Settings card to link and unlink with the NPSSO, shows the expiry
date. Import page gets a PSN source; blocked when the link has ended.
English and German texts.
2026-10-07 13:30:48 +02:00
lobo 6ae2abee07 feat(play-next): add FRIENDS row and reason text
Shows games from followed users. Reason displays friend name and finish
or playtime status. Supports reroll without mood. Added English and
German translations.
2026-10-07 09:42:10 +02:00
lobo e041c71cf8 feat(play-next): add series and studio rows
Build, Test & Push Frontend / quality-check (push) Successful in 34s
Build, Test & Push Frontend / docker (push) Successful in 23s
2026-10-06 20:22:53 +02:00
lobo df3d6d2537 feat(play-next): show picks as category rows with reroll per row
Four rows: up next, because you played, longest on list, mood.
Each row rerolls alone and tracks its own loading state.
Mood change reloads only the mood row. Phones scroll each row
sideways; wider screens show 3 columns.
2026-10-06 19:41:24 +02:00
lobo 43c4862606 feat(ui): add follow button, follows card, and inbox page
Build, Test & Push Frontend / quality-check (push) Successful in 34s
Build, Test & Push Frontend / docker (push) Successful in 23s
2026-10-06 16:22:22 +02:00
lobo 3aed243e35 feat(ui): add people lists for game owners and community stats
Build, Test & Push Frontend / quality-check (push) Successful in 47s
Build, Test & Push Frontend / docker (push) Successful in 22s
2026-10-06 13:19:58 +02:00
lobo b213b067dc feat(library): add ordered backlog page and up-next dashboard tile
Build, Test & Push Frontend / quality-check (push) Successful in 34s
Build, Test & Push Frontend / docker (push) Successful in 24s
2026-10-06 09:06:51 +02:00
lobo c158909083 feat(games): add coming badge for unreleased games
Build, Test & Push Frontend / quality-check (push) Successful in 32s
Build, Test & Push Frontend / docker (push) Successful in 22s
2026-10-05 20:33:25 +02:00
lobo edeea5a43d feat(play-next): show why each game was picked
Build, Test & Push Frontend / quality-check (push) Successful in 1m15s
Build, Test & Push Frontend / docker (push) Successful in 2m33s
Each card shows a reason line under the game name. Issue #28.
2026-10-05 16:13:20 +02:00
lobo 2b20b389b7 refactor(hooks): move import polling and settings load into hooks
useImportPolling and useSettingsLoad take the effects out of ImportView
and SettingsPage, line for line. useSettingsLoad no longer sets state
after unmount. Tests for both hooks. Issue #6.
2026-10-05 15:37:16 +02:00
lobo de199a20b7 feat(stats): add chart form pickers to dashboard and profile tiles
Build, Test & Push Frontend / quality-check (push) Successful in 31s
Build, Test & Push Frontend / docker (push) Successful in 23s
2026-10-04 21:06:21 +02:00
lobo 13b0d5e7e9 feat(admin): add user role dialog
Admins change a user's role and see the change log. The last admin
gets a clear error when deleting their own account.
2026-10-04 20:09:22 +02:00
lobo e5091de50e feat(sync): follow the visit sync on the dashboard
Show the "Syncing with Steam" badge while a visit sync runs, then
reload the sync changes banner and the library.
2026-10-04 19:05:23 +02:00
lobo 8aa3181c37 feat(stats): status donut, meters and fixed chart colors
Build, Test & Push Frontend / quality-check (push) Successful in 35s
Build, Test & Push Frontend / docker (push) Successful in 22s
Pie and donut charts use one fixed color-blind safe palette in every
skin and accent. The overview and the profile status tile show a status
donut with the total in the middle. Habits and achievements get meter
bars, top games get share bars, the pile of shame bar uses the palette.
2026-10-04 12:03:52 +02:00
lobo dabb0c941c feat(sync): show sync changes in banner and details dialog 2026-10-04 11:36:09 +02:00
lobo e054e13a59 feat(stats): add chart form selection and pie, donut, line charts
Build, Test & Push Frontend / quality-check (push) Successful in 30s
Build, Test & Push Frontend / docker (push) Successful in 22s
Tag rows with 0 games are no longer clickable.
2026-10-04 10:43:02 +02:00
lobo 8b94a25844 fix(stats): open game detail pages from stat lists, perfect games clickable
Add perfect games click-through on the dashboard. Remove Steam store
links from game lists. Stat numbers with count 0 are not clickable.
Tests cover the perfect-games click, zero guards, and owner versus
visitor behavior.
2026-10-04 10:07:27 +02:00
lobo 777ba87fd6 feat(ui): make stat numbers clickable to open games
Build, Test & Push Frontend / quality-check (push) Successful in 28s
Build, Test & Push Frontend / docker (push) Successful in 26s
StatDrill context holds one dialog for a page. StatCount wraps a number:
total and status counts link to the library filter, other numbers open
StatGamesDialog. DrillRow and DrillButton support drill-down in tag bars
(genres, platforms, moods) and other stat displays. Dialog shows 40 games
per page with bottom-sheet layout on phones, handles pagination and errors
(403 not shared, 401 expired, 400 bad argument).
2026-10-03 18:51:59 +02:00