Skip to content

feat(ui): member dashboard as the home page (redesign step 2/6) - #65

Merged
florianjs merged 5 commits into
mainfrom
feat/ui-dashboard
Oct 8, 2026
Merged

florianjs merged 5 commits into
mainfrom
feat/ui-dashboard

Conversation

@florianjs

Copy link
Copy Markdown
Owner

⚠️ Built on top of #64. Merge #64 first. This PR's diff then shrinks to the dashboard commit. It targets main directly to avoid the stacked-PR retargeting issue we hit with #52.

Summary

The home page was a marketing hero ("High performance", "Multi-protocol") shown to members who are already signed in. It is now the member's dashboard.

  • Greeting: "Good evening, nova" and "Member since". The time of day uses the browser clock after hydration.
  • Account strip (one row instead of four look-alike tiles):
    • ratio, colored by health, with upload/download;
    • seeding count, plus leeching count;
    • bonus points, linking to the shop;
    • hit & runs, in red only when there are some.
  • Note from the staff: the admin welcome message was editable in Branding but displayed nowhere; it is now shown here.
  • Content: new torrents (size, seeders, leechers, age), open bounties and the latest forum topics. Each section has an empty state that points to the next action.
  • Data: everything comes from a single /api/dashboard request.
  • Per-user swarm activity: the tracker now records, per user, the torrents being seeded and leeched (Redis sorted sets, pruned at the peer TTL).
  • Transfer meter fix: it read upload/download from the sealed session, which only held sign-in time values, so it showed 0 B for an account with 1.2 TB uploaded. It now reads live values.

Note: the admin homepage content (hero title, subtitle, three feature blocks) is no longer displayed, because members land on the dashboard. The editor will be removed or repurposed in the admin step (5/6).

Test plan

  • npx vitest run, npm run build
  • Checked on a demo instance with realistic data (open movies, public-domain films, Linux ISOs) in light and dark themes: account strip, new torrents with live seeders/leechers, bounties, forum
  • Mobile width

🤖 Generated with Claude Code

florianjs and others added 2 commits October 8, 2026 16:09
- theme tokens as CSS variables: light, dark, or follow the system, chosen
  per user (cookie, applied during SSR so there is no flash)
- meaningful colors: green for upload/seed, amber for download/leech,
  violet for freeleech; contrast inks keep existing controls legible in
  both themes
- self-hosted IBM Plex Sans and Mono (Google Fonts was blocked by the CSP,
  so the app silently fell back to system fonts)
- app shell: grouped sidebar (browse, community, account, staff), top bar
  with a transfer meter, freeleech pill and account menu (passkey copy,
  points, theme, language)
- command palette (Cmd/Ctrl+K or /): search torrents and jump to pages
- mobile navigation drawer, skip link, visible focus, reduced motion
- dialog overlays stay dark in both themes; fix icons collapsed to zero
  width by an inline class

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- greeting, account strip (ratio with upload/download, seeding and leeching
  counts, bonus points, hit & runs), staff note, new torrents, open bounties
  and latest forum topics, from a single /api/dashboard request
- track per-user seeding/leeching torrents in Redis on announce
- show the admin welcome message, which was editable but never displayed
- transfer meter reads live upload/download (the sealed session only held
  the values from sign-in)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 11 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 2 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d170e92f-e1f3-4d91-aa62-2fd0af3bde87
📥 Commits

Reviewing files that changed from the base of the PR and between 22bd096 and b09d9b1.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (32)
  • app/app.vue
  • app/assets/css/main.css
  • app/components/EditTorrentModal.vue
  • app/components/ThemeSwitcher.vue
  • app/components/UploadTorrentModal.vue
  • app/components/admin/Announcements.vue
  • app/components/admin/Branding.vue
  • app/components/admin/HnR.vue
  • app/components/admin/HomepageContent.vue
  • app/components/admin/Panic.vue
  • app/components/admin/Registration.vue
  • app/components/admin/Reports.vue
  • app/components/admin/TorznabRateLimiting.vue
  • app/components/admin/TorznabUsers.vue
  • app/components/shell/AppSidebar.vue
  • app/components/shell/CommandPalette.vue
  • app/components/shell/TransferMeter.vue
  • app/components/shell/UserMenu.vue
  • app/composables/useTheme.ts
  • app/layouts/default.vue
  • app/pages/auth/register.vue
  • app/pages/forum/index.vue
  • app/pages/index.vue
  • app/pages/torrents/[hash].vue
  • i18n/locales/en/app.json
  • i18n/locales/fr/app.json
  • package.json
  • server/api/dashboard.get.ts
  • server/redis/userActivity.ts
  • server/tracker/handlers.ts
  • tailwind.config.ts
  • tests/theme.test.ts
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

florianjs and others added 3 commits October 8, 2026 17:13
- closed mobile drawer is invisible so its links leave the tab order;
  the sidebar gets a landmark label instead of an action label
- command palette drops late search answers and resets on close, and
  returns focus to the element that opened it
- passkey copy only shows Copied when the clipboard write succeeds
- account switch clears the previous balance and avatar
- theme cookie is validated, unknown values fall back to system
- fixed colors: paper (white) for text on colored fills and uploaded
  logos, scrim for shadows, so they do not flip with the theme

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- user activity tracking errors are logged instead of failing the
  announce (and skipping H&R and completion tracking after it)
- the dashboard falls back to empty swarm counts when stats are
  unavailable instead of returning a 500

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@florianjs

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@florianjs
florianjs merged commit 940d079 into main Oct 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant