🚀 SurfSense 2026 Roadmap #565
MODSetter
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
SurfSense Contribution Roadmap
Welcome contributors! This discussion tracks the current set of curated good first issues for the SurfSense frontend (
surfsense_web/). All issues are deeply verified before being added here — each one has a clear scope, a safe fix path, and acceptance criteria.If you'd like to pick one up, drop a comment on the issue and we'll assign it.
How to get started
🏗️ Architecture / Refactor
These improve the codebase's structural health — reducing duplication, fixing leaky module boundaries, and deepening interfaces.
getConnectorTelemetryMetaout ofcomponents/solib/posthog/events.tsdoesn't depend upward into UI #1375 — MovegetConnectorTelemetryMetaout ofcomponents/solib/posthog/events.tsdoesn't depend upward into UIprocess.env.NEXT_PUBLIC_FASTAPI_BACKEND_URLreads withBACKEND_URLfromlib/env-config#1374 — Replace inlineprocess.env.NEXT_PUBLIC_FASTAPI_BACKEND_URLreads withBACKEND_URLfromlib/env-configz.infertypes fromcontracts/types/log.types.tsinstead of redefiningLog/LogFilters/LogSummaryinuse-logs.ts#1372 — Usez.infertypes fromcontracts/types/log.types.tsinstead of redefiningLog/LogFilters/LogSummaryinuse-logs.tscacheKeys.*.withQueryParamskeys order-stable (sort entries instead ofObject.values) #1370 — MakecacheKeys.*.withQueryParamskeys order-stable (sort entries instead ofObject.values)extractDomainhelper — currently duplicated in 4 places with 3 different fallbacks #1368 — Extract a singleextractDomainhelper — currently duplicated in 4 places with 3 different fallbackshasPermissionhelper instead of duplicating the predicate in two components #1366 — Extract sharedhasPermissionhelper instead of duplicating the predicate in two componentslocalStorage.setIteminTokenHandler(already done bysetBearerToken) #1365 — Drop redundantlocalStorage.setIteminTokenHandler(already done bysetBearerToken)surfsense_redirect_pathlocalStorage key behindauth-utils#1364 — Centralizesurfsense_redirect_pathlocalStorage key behindauth-utilsnotesApiService(orphan API module) #1363 — Delete unusednotesApiService(orphan API module)contracts/types/oauth.types.ts#1362 — Define a typed contract for the OAuth callback cookie incontracts/types/oauth.types.tsupdateSearchSpaceMutationAtominprompt-config-managerinstead of rawauthenticatedFetch#1361 — UseupdateSearchSpaceMutationAtominprompt-config-managerinstead of rawauthenticatedFetchLayoutShell.documentsPanelinterface: drop unusedisDocked/onDockedChange#1360 — ShrinkLayoutShell.documentsPanelinterface: drop unusedisDocked/onDockedChangeSLIDEOUT_PANEL_OPENED_EVENTwindow event with a jotai "ticks" atom #1358 — ReplaceSLIDEOUT_PANEL_OPENED_EVENTwindow event with a jotai "ticks" atom🐛 Bug Fixes
Real bugs with clear, low-risk fixes.
meta.suppressGlobalErrorToaston mutations with their ownonErrortoast #1371 — Stop double-toasting on mutation errors: setmeta.suppressGlobalErrorToaston mutations with their ownonErrortoastuseLogsactually subscribes to #1369 — Fix log mutations: invalidate the keysuseLogsactually subscribes toexpandedstate whenchunkIdchanges inCitationPanelContent#1367 — Resetexpandedstate whenchunkIdchanges inCitationPanelContentuseIsMobile(768px) inSidebarSlideOutPanelinstead of an ad-hoc 640px media query #1359 — Use shareduseIsMobile(768px) inSidebarSlideOutPanelinstead of an ad-hoc 640px media query⚡ Performance
.find()lookups in chat and document hooks #1047 — Build index Maps for repeated.find()lookups in chat and document hooks🎨 UX
📖 Documentation
PlateEditorJSDoc — actual save shortcut isMod+Shift+S, not⌘+S#1373 — FixPlateEditorJSDoc — actual save shortcut isMod+Shift+S, not⌘+SA note on quality
Past rounds of "good first issues" sometimes resulted in subtle bugs because the proposed fixes weren't deeply verified. This batch (and going forward) follows a stricter rule:
If you spot anything off in an issue — missing context, an unsafe assumption, or a behavior you don't think we should change — please call it out on the issue thread before opening a PR.
Happy contributing!
Beta Was this translation helpful? Give feedback.
All reactions