@@ -27,8 +27,14 @@ export default class TutorialOrchestrator {
2727 private _getDashboardUrl ( runId ?: string ) : string {
2828 const baseUrl = vscode . workspace
2929 . getConfiguration ( "zenml" )
30- . get < string > ( "dashboardUrl" , "http://localhost:8080" ) ;
31- return runId ? `${ baseUrl } /workspaces/default/runs/${ runId } ` : baseUrl ;
30+ . get < string > ( "dashboardUrl" , "https://cloud.zenml.io" ) ;
31+ // If we have a run ID, show specific run, otherwise show pipelines page
32+ if ( runId ) {
33+ return `${ baseUrl } /workspaces/default/runs/${ runId } ` ;
34+ } else {
35+ // Fallback to generic pipelines page when no specific run ID
36+ return `${ baseUrl } /workspaces/default/pipelines` ;
37+ }
3238 }
3339
3440 constructor ( context : vscode . ExtensionContext , tutorial : Tutorial ) {
@@ -142,7 +148,7 @@ export default class TutorialOrchestrator {
142148 codeRunner (
143149 this . terminal ,
144150 this . _codePanel . document . uri ,
145- ( ) => {
151+ ( dashboardUrl ?: string ) => {
146152 vscode . window . showInformationMessage ( "Code Ran Successfully! 🎉" ) ;
147153 if ( callback ) {
148154 callback ( ) ;
@@ -196,27 +202,25 @@ export default class TutorialOrchestrator {
196202 codeRunner (
197203 this . terminal ,
198204 this . _codePanel . document . uri ,
199- ( runId ?: string ) => {
205+ ( dashboardUrl ?: string ) => {
200206 // Pipeline completed successfully
201207 this . _pipelineRunning = false ;
202208 this . _completedTutorials . add ( this . _tutorial . currentSection . index ) ;
203209 this . _sendWebviewMessage ( {
204210 type : "pipelineStatusUpdate" ,
205211 status : "completed" ,
206212 } ) ;
207- this . _sendWebviewMessage ( { type : "pipelineCompleted" , runId : runId } ) ;
213+ this . _sendWebviewMessage ( { type : "pipelineCompleted" } ) ;
208214
209215 // Save progress
210216 this . _saveProgress ( ) ;
211217
212- // Show dashboard URL
213- if ( runId ) {
214- const dashboardUrl = this . _getDashboardUrl ( runId ) ;
215- this . _sendWebviewMessage ( {
216- type : "showDashboardUrl" ,
217- url : dashboardUrl ,
218- } ) ;
219- }
218+ // Show dashboard URL - use the captured URL or fallback to generic
219+ const finalDashboardUrl = dashboardUrl || this . _getDashboardUrl ( ) ;
220+ this . _sendWebviewMessage ( {
221+ type : "showDashboardUrl" ,
222+ url : finalDashboardUrl ,
223+ } ) ;
220224 } ,
221225 ( ) => {
222226 // Pipeline failed
@@ -779,10 +783,16 @@ export default class TutorialOrchestrator {
779783 <i class="codicon codicon-chevron-left"></i>
780784 <span>Prev</span>
781785 </button>
782- <button class="run-pipeline-button" id="run-pipeline">
783- <i class="codicon codicon-play"></i>
784- <span>Run Pipeline</span>
785- </button>
786+ <div class="pipeline-button-group">
787+ <button class="run-pipeline-button" id="run-pipeline">
788+ <i class="codicon codicon-play"></i>
789+ <span>Run Pipeline</span>
790+ </button>
791+ <a class="dashboard-button-small" id="dashboard-button" href="#" style="display: none;">
792+ <i class="codicon codicon-link-external"></i>
793+ <span>View in dashboard</span>
794+ </a>
795+ </div>
786796 <button class="footer-nav-button next ${
787797 isLast && ! isCompletionScreen ? "disabled" : ""
788798 } " id="nav-next" ${ isLast && ! isCompletionScreen ? "disabled" : "" } >
0 commit comments