File tree Expand file tree Collapse file tree
dashboard/frontend/src/pages Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -468,7 +468,7 @@ function DestinationsPanel({
468468 </ Link >
469469 { ( cryptoBroken || brain ?. last_error ) && (
470470 < Link
471- to = "/onboarding"
471+ to = "/onboarding?reconfigure=brain "
472472 className = { `${ pillBtn } bg-[#f87171]/10 text-[#f87171] border border-[#3a1515] hover:bg-[#f87171]/20` }
473473 >
474474 { t ( 'backups.destinations.reconnect' ) }
@@ -479,7 +479,7 @@ function DestinationsPanel({
479479 ) : (
480480 < div className = "mt-1" >
481481 < Link
482- to = "/onboarding"
482+ to = "/onboarding?reconfigure=brain "
483483 className = { `${ pillBtn } bg-[#00FFA7]/10 text-[#00FFA7] border border-[#00FFA7]/20 hover:bg-[#00FFA7]/20` }
484484 >
485485 { t ( 'backups.destinations.configure' ) }
@@ -1275,7 +1275,7 @@ export default function Backups() {
12751275 < p className = "text-sm text-[#8a9aae]" > { t ( 'backups.brainTab.notConnectedTitle' ) } </ p >
12761276 < p className = "text-xs mt-1" > { t ( 'backups.brainTab.notConnectedHint' ) } </ p >
12771277 < Link
1278- to = "/onboarding"
1278+ to = "/onboarding?reconfigure=brain "
12791279 className = "mt-4 px-4 py-2 rounded-lg bg-[#00FFA7]/10 text-[#00FFA7] border border-[#00FFA7]/20 hover:bg-[#00FFA7]/20 text-sm font-medium transition-colors"
12801280 > { t ( 'backups.destinations.configure' ) } </ Link >
12811281 </ div >
Original file line number Diff line number Diff line change @@ -32,8 +32,21 @@ export default function OnboardingRouter() {
3232 const [ loading , setLoading ] = useState ( true )
3333
3434 useEffect ( ( ) => {
35+ // Allow re-entry into a specific sub-flow even after onboarding is completed.
36+ // "?reconfigure=brain" enters the brain-repo connect step directly — used by the
37+ // "Configure" buttons on /backups and /settings/brain-repo when the user already
38+ // completed onboarding but never connected a brain repo (or disconnected it).
39+ const params = new URLSearchParams ( window . location . search )
40+ const reconfigure = params . get ( 'reconfigure' )
41+
3542 api . get ( '/onboarding/state' )
3643 . then ( ( data : OnboardingState ) => {
44+ if ( reconfigure === 'brain' ) {
45+ setFlow ( 'first-time' )
46+ setWantBrainRepo ( true )
47+ setStep ( 3 )
48+ return
49+ }
3750 // If already completed or skipped, go to agents
3851 if ( data . onboarding_state === 'completed' || data . onboarding_state === 'skipped' ) {
3952 navigate ( '/agents' , { replace : true } )
Original file line number Diff line number Diff line change @@ -298,7 +298,7 @@ export default function BrainRepo() {
298298 { t ( 'brainRepoSettings.empty.desc' ) }
299299 </ p >
300300 < a
301- href = "/onboarding"
301+ href = "/onboarding?reconfigure=brain "
302302 className = "inline-block mt-4 px-4 py-2 rounded-lg bg-[#00FFA7] text-[#080c14] hover:bg-[#00e69a] text-sm font-semibold transition-colors"
303303 >
304304 { t ( 'brainRepoSettings.empty.btn' ) }
You can’t perform that action at this time.
0 commit comments