Repository navigation
feat(local): open the step-by-step guides from the app - #2433
Merged
Merged
Conversation
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.
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The app's way into the step-by-step guides on surfsense.com (#2428, #2429, #2430, #2432), as
plans/community-local/tutorials.mdplanned it. Nothing is bundled and nothing is fetched: every link opens the site in the browser on a click.Every link goes through
siteVisitUrl, tagged with its ownutm_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.mdmaps where each link opens from;about.mdandlicense/app.mdfollow.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 inserver-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 eslintandprettier --checkon the changed files,pnpm translations:verifyandnode 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.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
docs/architecture/guides.mdsurfsense_local/frontend/src/features/guides/guide-links.tssurfsense_local/frontend/src/features/guides/guide-catalog.tssurfsense_local/frontend/src/features/guides/guides-dialog.tsxsurfsense_local/frontend/src/features/guides/guide-link.tsxsurfsense_local/frontend/src/features/guides/guide-links.test.tssurfsense_local/electron/src/main/menu/help-menu.tssurfsense_local/electron/src/main/menu/help-menu.test.tssurfsense_local/frontend/src/features/about/about-settings.tsxsurfsense_local/frontend/src/features/dashboard/sidebar-footer.tsxsurfsense_local/frontend/src/features/dashboard/sidebar-footer.test.tsxsurfsense_local/frontend/src/features/sources/sources-panel.tsxsurfsense_local/frontend/src/features/studio/artifact-list.tsxsurfsense_local/frontend/src/features/plugins/yours/no-plugins-connected.tsxsurfsense_local/frontend/src/features/jobs/runs/job-runs-list.tsxsurfsense_local/frontend/src/features/sources/web/web-search-start.tsxsurfsense_local/frontend/src/features/speech-setup/speech-setup-popover.tsxsurfsense_local/frontend/src/features/settings/models/model-slot-settings.tsxsurfsense_local/frontend/src/features/sources/source-upload.test.tsxsurfsense_local/frontend/src/features/studio/artifact-list.test.tsxdocs/architecture/about.mddocs/architecture/license/app.mddocs/architecture/overview.mdsurfsense_local/frontend/translations/en.jsonsurfsense_local/frontend/translations/de.jsonsurfsense_local/frontend/translations/es.jsonsurfsense_local/frontend/translations/fr.jsonsurfsense_local/frontend/translations/hi.jsonsurfsense_local/frontend/translations/ja.jsonsurfsense_local/frontend/translations/ko.jsonsurfsense_local/frontend/translations/pt-BR.jsonsurfsense_local/frontend/translations/ru.jsonsurfsense_local/frontend/translations/zh-CN.json