Skip to content

feat(desktop): privacy choices as an onboarding step, and updates in the title bar - #2347

Merged
AnishSarkar22 merged 5 commits into
MODSetter:devfrom
AnishSarkar22:feat/privacy-choices-ui
Oct 25, 2026
Merged

AnishSarkar22 merged 5 commits into
MODSetter:devfrom
AnishSarkar22:feat/privacy-choices-ui

Conversation

@AnishSarkar22

@AnishSarkar22 AnishSarkar22 commented Oct 25, 2026 •

Copy link
Copy Markdown
Collaborator

What

  • Onboarding: Privacy choices is now the first counted step, shown every time onboarding runs, with earlier answers preselected. Back from the first model step returns to it.
  • Privacy rows: each choice is one line, with the full description and every host behind an info icon. Yes/No is one control with a visible selected state. Settings › About uses the same text and info icon.
  • Updates: a pill beside the right-panel toggle shows a download's progress as a ring, then a ready update; a click restarts into it. On hover it widens to "Downloading x%" or "Update". The sidebar no longer shows updates.
  • macOS menu: Check for Updates… reports "up to date" or a failed check in a toast, since Settings may be closed.

Why

The privacy step was easy to skip past and its rows were walls of text. Update status was split between the sidebar and the title bar, and a download gave no feedback.

Fixes #

How to test

  • Fresh onboarding: Privacy choices shows as step 1 of 7. Answer, continue, go Back: the answers are kept.
  • Hover the info icons in onboarding and Settings › About: the full description and hosts show.
  • Updates need a packaged build with a newer release. The title bar shows the ring while downloading, then the pill; Check for Updates… in the macOS menu toasts when up to date or offline.
  • cd surfsense_local/frontend && pnpm test and cd surfsense_local/electron && pnpm test.

High-level PR Summary

This PR restructures the privacy choices onboarding flow to be the first numbered step and consolidates update status display in the title bar with a downloadable progress indicator and restart button, removing update information from the sidebar.

⏱️ Estimated Review Time: 30-90 minutes

💡 Review Order Suggestion
Order File Path
1 docs/architecture/updates.md
2 docs/architecture/usage-statistics.md
3 surfsense_local/frontend/src/features/updates/title-bar-update.tsx
4 surfsense_local/frontend/src/features/updates/download-ring.tsx
5 surfsense_local/frontend/src/features/updates/menu-update-check.tsx
6 surfsense_local/frontend/src/features/updates/update-settings.tsx
7 surfsense_local/frontend/src/features/dashboard/dashboard-page.tsx
8 surfsense_local/frontend/src/features/dashboard/sidebar-footer.tsx
9 surfsense_local/frontend/src/features/onboarding/onboarding-page.tsx
10 surfsense_local/frontend/src/features/onboarding/privacy-step/privacy-step.tsx
11 surfsense_local/frontend/src/features/onboarding/privacy-step/privacy-choice-row.tsx
12 surfsense_local/frontend/src/features/privacy-choices/choice-text.ts
13 surfsense_local/frontend/src/features/privacy-choices/details-tooltip.tsx
14 surfsense_local/frontend/src/features/privacy-choices/usage-statistics-settings.tsx
15 surfsense_local/frontend/src/features/about/data-folder.tsx
16 surfsense_local/electron/src/main/updater.ts
17 surfsense_local/frontend/src/features/updates/use-check-for-updates.ts
18 surfsense_local/frontend/src/lib/api.ts
19 surfsense_local/frontend/src/components/ui/icons.tsx
20 surfsense_local/frontend/src/features/privacy-choices/stub-privacy-bridge.ts
21 surfsense_local/electron/src/main/updater.test.ts
22 surfsense_local/frontend/src/features/updates/title-bar-update.test.tsx
23 surfsense_local/frontend/src/features/updates/menu-update-check.test.tsx
24 surfsense_local/frontend/src/features/updates/update-settings.test.tsx
25 surfsense_local/frontend/src/features/dashboard/sidebar-footer.test.tsx
26 surfsense_local/frontend/src/features/onboarding/onboarding-page.test.tsx
27 surfsense_local/frontend/src/features/privacy-choices/usage-statistics-settings.test.tsx
28 surfsense_local/frontend/translations/en.json
29 surfsense_local/frontend/translations/de.json
30 surfsense_local/frontend/translations/es.json
31 surfsense_local/frontend/translations/fr.json
32 surfsense_local/frontend/translations/hi.json
33 surfsense_local/frontend/translations/ja.json
34 surfsense_local/frontend/translations/ko.json
35 surfsense_local/frontend/translations/pt-BR.json
36 surfsense_local/frontend/translations/ru.json
37 surfsense_local/frontend/translations/zh-CN.json

Need help? Join our Discord

…hoices

Privacy choices is now onboarding's first step, counted in the progress bar
and shown every time onboarding runs, with earlier answers chosen. Back from
the first model step returns to it.

Each choice is one line, with the full description and every host behind an
info icon and a link to the exact request or report. Yes and No are one
control whose chosen half is filled. Settings › About uses the same text and
info icon.
…tle bar

While an update downloads, a ring around a pill beside the right-panel
toggle fills with the percentage electron-updater reports, sent once per
whole percent. Once ready, the pill fills and restarts into the update on
click. On hover or focus it widens to show "Downloading 64%" or "Update".

The sidebar no longer shows updates. Check for Updates… in the macOS menu
reports up to date or a failed check in a toast, since Settings may be
closed.
@vercel

vercel Bot commented Oct 25, 2026

Copy link
Copy Markdown

@AnishSarkar22 is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Caution

Review failed

The pull request is closed.

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · 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.

@AnishSarkar22
AnishSarkar22 merged commit 497248a into MODSetter:dev Oct 25, 2026
22 of 24 checks 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