Skip to content

feat(local): open the step-by-step guides from the app - #2433

Merged
MODSetter merged 2 commits into
devfrom
feat/in-app-guides
Nov 10, 2026
Merged

MODSetter merged 2 commits into
devfrom
feat/in-app-guides

Conversation

@MODSetter

@MODSetter MODSetter commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

What

The app's way into the step-by-step guides on surfsense.com (#2428, #2429, #2430, #2432), as plans/community-local/tutorials.md planned it. Nothing is bundled and nothing is fetched: every link opens the site in the browser on a click.

  • Help › Guides and Videos in the application menu, beside Documentation, in English like the menu's other items.
  • Settings › About › Links › Guides and videos.
  • A Guides and videos row in the sidebar footer, above the license row. It opens a dialog listing all 27 guides by area, in the app's language, each opening its page. The pages are English, which the dialog says.
  • "How to" links where a task starts: the empty Sources list, Studio's empty artifact list, No plugins connected, Jobs with no runs, Add from the web before the first search, the speech setup box, and an empty chat or speech recognition model section.

Every link goes through siteVisitUrl, tagged with its own utm_content (help_menu, about_guides, guides_dialog, sources_empty, studio_empty, plugins_empty, jobs_runs_empty, web_search_start, speech_setup, models_empty). 47 new strings, translated into all nine other catalogs with the glossary's terms. docs/architecture/guides.md maps where each link opens from; about.md and license/app.md follow.

The footer's row is always there, so the footer no longer hides until the license status arrives: only the license row waits for it.

Why

The second half of "include them in frontend and in our local app itself".

The guides these links open are on dev (#2428 to #2432, #2435), so the links work once dev is deployed, which happens no later than the release that ships these links in the app.

Fixes # (none: asked in chat)

How to test

  • cd surfsense_local/frontend && pnpm test: every file these changes touch passes. Locally, the only failures are 7 in server-voices.test.tsx, which this PR doesn't touch and which pass in Desktop Tests on dev's tip (this machine runs Node 22; the repo pins 24).
  • pnpm typecheck, pnpm exec eslint and prettier --check on the changed files, pnpm translations:verify and node scripts/check_translations.mjs (2152 keys in 10 languages, 0 problems): pass.
  • cd surfsense_local/electron && node --test src/main/menu/help-menu.test.ts: 4 of 4 pass.
  • In pnpm dev: the sidebar footer's Guides and videos row, Settings › About › Links, Help › Guides and Videos, and an empty Sources list.

High-level PR Summary

This PR adds pathways throughout the SurfSense app to access step-by-step guides hosted on surfsense.com. It introduces Guides and Videos links in three main locations: the Help menu, the Settings › About section, and a new persistent row in the sidebar footer. The sidebar footer also gets a dialog listing all 26 guides organized by topic area. Additionally, contextual "How to" links appear at natural starting points for tasks (empty states for sources, Studio artifacts, plugins, job runs, web search, speech setup, and model configuration). Each link opens in the browser with UTM tracking to identify where in the app it was triggered. The implementation includes a guide catalog mirroring the website structure, comprehensive test coverage, and 46 new localized strings translated into all ten supported languages. The guides themselves remain on the website—nothing is bundled or fetched by the app.

⏱️ Estimated Review Time: 30-90 minutes

💡 Review Order Suggestion
Order File Path
1 docs/architecture/guides.md
2 surfsense_local/frontend/src/features/guides/guide-links.ts
3 surfsense_local/frontend/src/features/guides/guide-catalog.ts
4 surfsense_local/frontend/src/features/guides/guides-dialog.tsx
5 surfsense_local/frontend/src/features/guides/guide-link.tsx
6 surfsense_local/frontend/src/features/guides/guide-links.test.ts
7 surfsense_local/electron/src/main/menu/help-menu.ts
8 surfsense_local/electron/src/main/menu/help-menu.test.ts
9 surfsense_local/frontend/src/features/about/about-settings.tsx
10 surfsense_local/frontend/src/features/dashboard/sidebar-footer.tsx
11 surfsense_local/frontend/src/features/dashboard/sidebar-footer.test.tsx
12 surfsense_local/frontend/src/features/sources/sources-panel.tsx
13 surfsense_local/frontend/src/features/studio/artifact-list.tsx
14 surfsense_local/frontend/src/features/plugins/yours/no-plugins-connected.tsx
15 surfsense_local/frontend/src/features/jobs/runs/job-runs-list.tsx
16 surfsense_local/frontend/src/features/sources/web/web-search-start.tsx
17 surfsense_local/frontend/src/features/speech-setup/speech-setup-popover.tsx
18 surfsense_local/frontend/src/features/settings/models/model-slot-settings.tsx
19 surfsense_local/frontend/src/features/sources/source-upload.test.tsx
20 surfsense_local/frontend/src/features/studio/artifact-list.test.tsx
21 docs/architecture/about.md
22 docs/architecture/license/app.md
23 docs/architecture/overview.md
24 surfsense_local/frontend/translations/en.json
25 surfsense_local/frontend/translations/de.json
26 surfsense_local/frontend/translations/es.json
27 surfsense_local/frontend/translations/fr.json
28 surfsense_local/frontend/translations/hi.json
29 surfsense_local/frontend/translations/ja.json
30 surfsense_local/frontend/translations/ko.json
31 surfsense_local/frontend/translations/pt-BR.json
32 surfsense_local/frontend/translations/ru.json
33 surfsense_local/frontend/translations/zh-CN.json

Need help? Join our Discord

Help › Guides and Videos, Settings › About › Links › Guides and videos, and a
Guides and videos row in the sidebar footer whose dialog lists every guide by
area, in the app's language. Where a task starts, a How to link opens its
guide: the empty Sources list, Studio's empty artifact list, No plugins
connected, Jobs with no runs, Add from the web before the first search, the
speech setup box, and an empty chat or speech recognition model section.

Every link opens surfsense.com in the browser through siteVisitUrl, with its
own utm_content; nothing is bundled or fetched. 46 new strings, in every
catalog. The footer's guides row is always there, so only the license row
waits for the license status. Two tests now render through test-utils, as
main.tsx does, since the Sources panel and the artifact list read the app's
version for their links. docs/architecture/guides.md maps every link.
@vercel

vercel Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
surf-sense-frontend Ignored Ignored Preview Nov 10, 2026 5:32am UTC

Request Review

@coderabbitai

coderabbitai Bot commented Nov 10, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • 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

@MODSetter
MODSetter marked this pull request as ready for review November 10, 2026 08:24
@MODSetter
MODSetter merged commit 80414f7 into dev Nov 10, 2026
29 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