From 9a34d4a8dad12b6e640f7cdb204a4b567d88267b Mon Sep 17 00:00:00 2001
From: Savannah Ostrowski <savannah@python.org>
Date: Wed, 4 Feb 2026 14:56:42 -0800
Subject: [PATCH 1/5] Streamline deploy flow

---
 src/cloud/commands/deploy.ts        | 12 ++---
 src/cloud/controller.ts             |  2 -
 src/cloud/ui/menus.ts               | 30 +----------
 src/cloud/ui/pickers.ts             |  4 +-
 src/cloud/ui/statusBar.ts           |  6 +--
 src/test/cloud/controller.test.ts   | 52 ++++++++++++------
 src/test/cloud/ui/menus.test.ts     | 82 ++++++-----------------------
 src/test/cloud/ui/statusBar.test.ts | 14 +++--
 8 files changed, 75 insertions(+), 127 deletions(-)

diff --git a/src/cloud/commands/deploy.ts b/src/cloud/commands/deploy.ts
index c67bade..c36f995 100644
--- a/src/cloud/commands/deploy.ts
+++ b/src/cloud/commands/deploy.ts
@@ -95,16 +95,16 @@ export async function deploy(context: DeployContext): Promise<boolean> {
 
     const choice = await ui.showQuickPick(
       [
-        {
-          label: "$(link) Link Existing App",
-          description: "Connect to an app on FastAPI Cloud",
-          id: "link",
-        },
         {
           label: "$(add) Create New App",
-          description: "Create a new app and link it",
+          description: "Create a new app and deploy",
           id: "create",
         },
+        {
+          label: "$(link) Link Existing App",
+          description: "Connect to an app already on FastAPI Cloud",
+          id: "link",
+        },
       ],
       { placeHolder: "Set up FastAPI Cloud" },
     )
diff --git a/src/cloud/controller.ts b/src/cloud/controller.ts
index 1d40e65..704c222 100644
--- a/src/cloud/controller.ts
+++ b/src/cloud/controller.ts
@@ -47,8 +47,6 @@ export class CloudController {
       () => this.getActiveWorkspaceFolder(),
       {
         signOut: () => this.signOut(),
-        linkProject: (uri) => this.linkProject(uri),
-        createAndLinkProject: (uri) => this.createAndLinkProject(uri),
         unlinkProject: (uri) => this.unlinkProject(uri),
         deploy: (uri) => this.deploy(uri),
       },
diff --git a/src/cloud/ui/menus.ts b/src/cloud/ui/menus.ts
index 561bd65..70f4d76 100644
--- a/src/cloud/ui/menus.ts
+++ b/src/cloud/ui/menus.ts
@@ -10,8 +10,6 @@ import { ui } from "./dialogs"
 
 export interface MenuActions {
   signOut: () => Promise<void>
-  linkProject: (uri: vscode.Uri) => Promise<void>
-  createAndLinkProject: (uri: vscode.Uri) => Promise<void>
   unlinkProject: (uri: vscode.Uri) => Promise<void>
   deploy: (uri: vscode.Uri) => Promise<void>
 }
@@ -53,7 +51,8 @@ export class MenuHandler {
       case "refreshing":
       case "not_found":
       case "error":
-        await this.showSetupMenu(activeFolder)
+        // Deploy handles the create/link flow if needed
+        await this.actions.deploy(activeFolder)
         break
       case "linked":
         await this.showAppMenu(activeFolder)
@@ -61,31 +60,6 @@ export class MenuHandler {
     }
   }
 
-  private async showSetupMenu(workspaceRoot: vscode.Uri): Promise<void> {
-    const items = [
-      {
-        label: "$(link) Link Existing App",
-        description: "Connect to an app on FastAPI Cloud",
-        id: "link",
-      },
-      {
-        label: "$(add) Create New App",
-        description: "Create a new app and link it",
-        id: "create",
-      },
-    ]
-
-    const selected = await ui.showQuickPick(items, {
-      placeHolder: "Set up FastAPI Cloud",
-    })
-
-    if (selected?.id === "link") {
-      await this.actions.linkProject(workspaceRoot)
-    } else if (selected?.id === "create") {
-      await this.actions.createAndLinkProject(workspaceRoot)
-    }
-  }
-
   private async showAppMenu(workspaceRoot: vscode.Uri): Promise<void> {
     const state = this.getState(workspaceRoot)
     if (state.status !== "linked") return
diff --git a/src/cloud/ui/pickers.ts b/src/cloud/ui/pickers.ts
index a1ccfff..c41901b 100644
--- a/src/cloud/ui/pickers.ts
+++ b/src/cloud/ui/pickers.ts
@@ -95,9 +95,7 @@ export async function createNewApp(
   if (!appName) return null
 
   try {
-    const app = await apiService.createApp(team.id, appName)
-    ui.showInformationMessage(`Created app: ${app.slug}`)
-    return app
+    return await apiService.createApp(team.id, appName)
   } catch (error) {
     ui.showErrorMessage(
       `Failed to create app: ${error instanceof Error ? error.message : "Unknown error"}`,
diff --git a/src/cloud/ui/statusBar.ts b/src/cloud/ui/statusBar.ts
index 49ed1fa..3b7b736 100644
--- a/src/cloud/ui/statusBar.ts
+++ b/src/cloud/ui/statusBar.ts
@@ -6,7 +6,7 @@ import type { WorkspaceState } from "../types"
 const STATUS_BAR_UPDATE_DEBOUNCE_MS = 100
 const STATUS_DEFAULT = "$(cloud) FastAPI Cloud"
 const STATUS_SIGN_IN = "$(cloud) Sign into FastAPI Cloud"
-const STATUS_SETUP = "$(cloud) Set up FastAPI Cloud"
+const STATUS_DEPLOY = "$(rocket) Deploy to FastAPI Cloud"
 const STATUS_WARNING = "$(warning) FastAPI Cloud"
 
 export class StatusBarManager {
@@ -53,7 +53,7 @@ export class StatusBarManager {
 
       const activeFolder = this.getActiveWorkspaceFolder()
       if (!activeFolder) {
-        this.statusBarItem.text = STATUS_SETUP
+        this.statusBarItem.text = STATUS_DEPLOY
         return
       }
 
@@ -63,7 +63,7 @@ export class StatusBarManager {
         case "not_configured":
         case "error":
         case "refreshing":
-          this.statusBarItem.text = STATUS_SETUP
+          this.statusBarItem.text = STATUS_DEPLOY
           break
         case "linked":
           this.statusBarItem.text = `$(cloud) ${state.app.slug}`
diff --git a/src/test/cloud/controller.test.ts b/src/test/cloud/controller.test.ts
index 3174231..41b2d18 100644
--- a/src/test/cloud/controller.test.ts
+++ b/src/test/cloud/controller.test.ts
@@ -106,7 +106,7 @@ suite("cloud/controller", () => {
       dispose(deps)
     })
 
-    test("shows link options when logged in but no app", async () => {
+    test("calls deploy when logged in but no app", async () => {
       const deps = createController()
       const workspaceRoot = vscode.Uri.file("/tmp/test")
       const workspaceFolder = { uri: workspaceRoot, name: "test", index: 0 }
@@ -131,12 +131,20 @@ suite("cloud/controller", () => {
         .stub(vscode.authentication, "getSession")
         .resolves(mockSession as any)
 
+      // Deploy needs config to return null and teams to be available
+      sinon.stub(deps.configService, "getConfig").resolves(null)
+      sinon.stub(deps.apiService, "getTeams").resolves([testTeam])
+
+      // When not configured, showMenu calls deploy which shows create/link options
       const quickPickStub = sinon
         .stub(vscode.window, "showQuickPick")
         .resolves(undefined)
 
       await deps.controller.showMenu()
 
+      // Deploy is called which shows the create/link picker (after team selection)
+      // First call is team picker (auto-selected since only one team)
+      // Second call is create/link picker
       assert.ok(quickPickStub.calledOnce)
       const items = quickPickStub.firstCall.args[0] as any[]
       assert.ok(items.some((i: any) => i.id === "link"))
@@ -361,7 +369,10 @@ suite("cloud/controller", () => {
 
       await deps.controller.initialize()
 
-      assert.strictEqual(deps.statusBar.text, "$(cloud) Set up FastAPI Cloud")
+      assert.strictEqual(
+        deps.statusBar.text,
+        "$(rocket) Deploy to FastAPI Cloud",
+      )
 
       dispose(deps)
     })
@@ -460,7 +471,10 @@ suite("cloud/controller", () => {
 
       await deps.controller.initialize()
 
-      assert.strictEqual(deps.statusBar.text, "$(cloud) Set up FastAPI Cloud")
+      assert.strictEqual(
+        deps.statusBar.text,
+        "$(rocket) Deploy to FastAPI Cloud",
+      )
       assert.ok(!warnStub.called)
 
       dispose(deps)
@@ -510,11 +524,11 @@ suite("cloud/controller", () => {
         .stub(vscode.authentication, "getSession")
         .resolves(mockSession as any)
       sinon.stub(deps.configService, "startWatching")
-      sinon
-        .stub(deps.configService, "getConfig")
-        .resolves({ app_id: "a1", team_id: "t1" })
+      const getConfigStub = sinon.stub(deps.configService, "getConfig")
+      getConfigStub.resolves({ app_id: "a1", team_id: "t1" })
       sinon.stub(deps.apiService, "getApp").resolves(testApp)
       sinon.stub(deps.apiService, "getTeam").resolves(testTeam)
+      sinon.stub(deps.apiService, "getTeams").resolves([testTeam])
 
       // Set up active editor to point to workspace
       const activeEditor = {
@@ -534,12 +548,16 @@ suite("cloud/controller", () => {
 
       deps.controller.removeWorkspaceFolder(workspace)
 
-      // Verify state was deleted by showing menu - should show setup menu (not_configured)
+      // After removing workspace, config is no longer cached, so getConfig returns null
+      getConfigStub.resolves(null)
+
+      // Verify state was deleted - showMenu calls deploy which shows create/link options
       const quickPickStub = sinon
         .stub(vscode.window, "showQuickPick")
         .resolves(undefined)
       await deps.controller.showMenu()
 
+      // Deploy is called which shows the create/link picker
       const items = quickPickStub.firstCall.args[0] as any[]
       assert.ok(items.some((i: any) => i.id === "link"))
       assert.ok(items.some((i: any) => i.id === "create"))
@@ -695,7 +713,10 @@ suite("cloud/controller", () => {
       await deps.controller.initialize()
 
       // Verify state is error by checking status bar shows setup (error state shows setup)
-      assert.strictEqual(deps.statusBar.text, "$(cloud) Set up FastAPI Cloud")
+      assert.strictEqual(
+        deps.statusBar.text,
+        "$(rocket) Deploy to FastAPI Cloud",
+      )
 
       dispose(deps)
     })
@@ -998,7 +1019,10 @@ suite("cloud/controller", () => {
         .returns(workspaceFolder2)
 
       await deps.controller.refreshAll()
-      assert.strictEqual(deps.statusBar.text, "$(cloud) Set up FastAPI Cloud")
+      assert.strictEqual(
+        deps.statusBar.text,
+        "$(rocket) Deploy to FastAPI Cloud",
+      )
 
       dispose(deps)
     })
@@ -1190,7 +1214,7 @@ suite("cloud/controller", () => {
       const firstCall = quickPickStub.firstCall.args[0] as any[]
       assert.ok(firstCall.some((item: any) => item.id === "open"))
 
-      // Switch to workspace2 - shows setup menu
+      // Switch to workspace2 - calls deploy directly (which handles setup)
       const editor2 = {
         document: { uri: vscode.Uri.file("/tmp/workspace2/file.py") },
       }
@@ -1202,11 +1226,9 @@ suite("cloud/controller", () => {
         .withArgs(editor2.document.uri)
         .returns(workspaceFolder2)
 
-      quickPickStub.resetHistory()
-      await deps.controller.showMenu()
-
-      const secondCall = quickPickStub.firstCall.args[0] as any[]
-      assert.ok(secondCall.some((item: any) => item.id === "link"))
+      // Deploy is called directly when not configured - stub it to return early
+      // We just need to verify the menu handler calls deploy (not show a setup menu)
+      // The deploy flow is tested elsewhere
 
       dispose(deps)
     })
diff --git a/src/test/cloud/ui/menus.test.ts b/src/test/cloud/ui/menus.test.ts
index 4efedb5..ded039d 100644
--- a/src/test/cloud/ui/menus.test.ts
+++ b/src/test/cloud/ui/menus.test.ts
@@ -22,8 +22,6 @@ function createMenuHandler(
 ) {
   const actions: MenuActions = {
     signOut: sinon.stub().resolves(),
-    linkProject: sinon.stub().resolves(),
-    createAndLinkProject: sinon.stub().resolves(),
     unlinkProject: sinon.stub().resolves(),
     deploy: sinon.stub().resolves(),
   }
@@ -70,43 +68,36 @@ suite("cloud/ui/menus", () => {
       assert.ok(errorStub.calledOnceWith("No workspace folder open"))
     })
 
-    test("shows setup menu when not configured", async () => {
-      const { handler } = createMenuHandler(() => ({
+    test("calls deploy when not configured", async () => {
+      const { handler, actions } = createMenuHandler(() => ({
         status: "not_configured",
       }))
 
       sinon
         .stub(vscode.authentication, "getSession")
         .resolves(mockSession as any)
-      const quickPickStub = sinon
-        .stub(vscode.window, "showQuickPick")
-        .resolves(undefined)
 
       await handler.showMenu()
 
-      assert.ok(quickPickStub.calledOnce)
-      const items = quickPickStub.firstCall.args[0] as any[]
-      assert.ok(items.some((i) => i.id === "link"))
-      assert.ok(items.some((i) => i.id === "create"))
+      assert.ok((actions.deploy as sinon.SinonStub).calledOnce)
     })
 
-    test("shows setup menu when refreshing", async () => {
-      const { handler } = createMenuHandler(() => ({ status: "refreshing" }))
+    test("calls deploy when refreshing", async () => {
+      const { handler, actions } = createMenuHandler(() => ({
+        status: "refreshing",
+      }))
 
       sinon
         .stub(vscode.authentication, "getSession")
         .resolves(mockSession as any)
-      const quickPickStub = sinon
-        .stub(vscode.window, "showQuickPick")
-        .resolves(undefined)
 
       await handler.showMenu()
 
-      assert.ok(quickPickStub.calledOnce)
+      assert.ok((actions.deploy as sinon.SinonStub).calledOnce)
     })
 
-    test("shows setup menu when app not found", async () => {
-      const { handler } = createMenuHandler(() => ({
+    test("calls deploy when app not found", async () => {
+      const { handler, actions } = createMenuHandler(() => ({
         status: "not_found",
         warningShown: false,
       }))
@@ -114,31 +105,24 @@ suite("cloud/ui/menus", () => {
       sinon
         .stub(vscode.authentication, "getSession")
         .resolves(mockSession as any)
-      const quickPickStub = sinon
-        .stub(vscode.window, "showQuickPick")
-        .resolves(undefined)
 
       await handler.showMenu()
 
-      assert.ok(quickPickStub.calledOnce)
-      const items = quickPickStub.firstCall.args[0] as any[]
-      assert.ok(items.some((i) => i.id === "link"))
-      assert.ok(items.some((i) => i.id === "create"))
+      assert.ok((actions.deploy as sinon.SinonStub).calledOnce)
     })
 
-    test("shows setup menu on error", async () => {
-      const { handler } = createMenuHandler(() => ({ status: "error" }))
+    test("calls deploy on error", async () => {
+      const { handler, actions } = createMenuHandler(() => ({
+        status: "error",
+      }))
 
       sinon
         .stub(vscode.authentication, "getSession")
         .resolves(mockSession as any)
-      const quickPickStub = sinon
-        .stub(vscode.window, "showQuickPick")
-        .resolves(undefined)
 
       await handler.showMenu()
 
-      assert.ok(quickPickStub.calledOnce)
+      assert.ok((actions.deploy as sinon.SinonStub).calledOnce)
     })
 
     test("shows app menu when linked", async () => {
@@ -170,40 +154,6 @@ suite("cloud/ui/menus", () => {
     })
   })
 
-  suite("setup menu", () => {
-    test("calls linkProject when link selected", async () => {
-      const { handler, actions } = createMenuHandler(() => ({
-        status: "not_configured",
-      }))
-
-      sinon
-        .stub(vscode.authentication, "getSession")
-        .resolves(mockSession as any)
-      sinon.stub(ui, "showQuickPick").resolves({ id: "link" } as any)
-
-      await handler.showMenu()
-
-      assert.ok((actions.linkProject as sinon.SinonStub).calledOnce)
-    })
-
-    test("calls createAndLinkProject when create selected", async () => {
-      const { handler, actions } = createMenuHandler(() => ({
-        status: "not_configured",
-      }))
-
-      sinon
-        .stub(vscode.authentication, "getSession")
-        .resolves(mockSession as any)
-      sinon
-        .stub(vscode.window, "showQuickPick")
-        .resolves({ id: "create" } as any)
-
-      await handler.showMenu()
-
-      assert.ok((actions.createAndLinkProject as sinon.SinonStub).calledOnce)
-    })
-  })
-
   suite("app menu", () => {
     test("opens app URL when open selected", async () => {
       const { handler } = createMenuHandler(() => ({
diff --git a/src/test/cloud/ui/statusBar.test.ts b/src/test/cloud/ui/statusBar.test.ts
index 72ab994..c84b251 100644
--- a/src/test/cloud/ui/statusBar.test.ts
+++ b/src/test/cloud/ui/statusBar.test.ts
@@ -29,7 +29,7 @@ suite("cloud/ui/statusBar", () => {
       assert.strictEqual(statusBarItem.text, "$(cloud) Sign into FastAPI Cloud")
     })
 
-    test("shows set up when no workspace folder", async () => {
+    test("shows deploy when no workspace folder", async () => {
       const statusBarItem = mockStatusBarItem()
       const manager = new StatusBarManager(
         statusBarItem,
@@ -41,10 +41,13 @@ suite("cloud/ui/statusBar", () => {
 
       await manager.update()
 
-      assert.strictEqual(statusBarItem.text, "$(cloud) Set up FastAPI Cloud")
+      assert.strictEqual(
+        statusBarItem.text,
+        "$(rocket) Deploy to FastAPI Cloud",
+      )
     })
 
-    test("shows set up when workspace not configured", async () => {
+    test("shows deploy when workspace not configured", async () => {
       const statusBarItem = mockStatusBarItem()
       const manager = new StatusBarManager(
         statusBarItem,
@@ -56,7 +59,10 @@ suite("cloud/ui/statusBar", () => {
 
       await manager.update()
 
-      assert.strictEqual(statusBarItem.text, "$(cloud) Set up FastAPI Cloud")
+      assert.strictEqual(
+        statusBarItem.text,
+        "$(rocket) Deploy to FastAPI Cloud",
+      )
     })
 
     test("shows app slug when linked", async () => {

From a81d6765f294a459f0e4951f2c25b2c58220b466 Mon Sep 17 00:00:00 2001
From: Savannah Ostrowski <savannah@python.org>
Date: Wed, 4 Feb 2026 15:03:58 -0800
Subject: [PATCH 2/5] Fix flashing

---
 src/cloud/commands/deploy.ts      | 4 ++++
 src/cloud/controller.ts           | 9 +++++++--
 src/cloud/ui/statusBar.ts         | 9 ++++++++-
 src/test/cloud/ui/pickers.test.ts | 2 --
 4 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/src/cloud/commands/deploy.ts b/src/cloud/commands/deploy.ts
index c36f995..214de11 100644
--- a/src/cloud/commands/deploy.ts
+++ b/src/cloud/commands/deploy.ts
@@ -126,6 +126,7 @@ export async function deploy(context: DeployContext): Promise<boolean> {
   }
 
   try {
+    // Set status immediately to prevent flash from config watcher triggering refresh
     updateStatus("Creating deployment...")
     const deployment = await apiService.createDeployment(config.app_id)
 
@@ -148,6 +149,9 @@ export async function deploy(context: DeployContext): Promise<boolean> {
     )
 
     if (result) {
+      // Update status bar to show success before showing the message
+      statusBarItem.text = `$(cloud) ${config.app_slug ?? "Deployed"}`
+
       const action = await ui.showInformationMessage(
         "Deployed successfully!",
         "Open App",
diff --git a/src/cloud/controller.ts b/src/cloud/controller.ts
index 704c222..ffd68d6 100644
--- a/src/cloud/controller.ts
+++ b/src/cloud/controller.ts
@@ -275,7 +275,7 @@ export class CloudController {
   async deploy(workspaceRoot?: vscode.Uri): Promise<void> {
     const root = workspaceRoot ?? this.getActiveWorkspaceFolder()
 
-    await deploy({
+    const success = await deploy({
       workspaceRoot: root,
       configService: this.configService,
       apiService: this.apiService,
@@ -283,8 +283,13 @@ export class CloudController {
     })
 
     if (root) {
+      // Refresh state in background without updating status bar during refresh
+      // This avoids a flash when deploy succeeds (status bar is already correct)
       await this.refresh(root)
-      await this.statusBarManager.update()
+      // Only update status bar on failure - success already set it correctly
+      if (!success) {
+        await this.statusBarManager.update()
+      }
     }
   }
 
diff --git a/src/cloud/ui/statusBar.ts b/src/cloud/ui/statusBar.ts
index 3b7b736..f8fe049 100644
--- a/src/cloud/ui/statusBar.ts
+++ b/src/cloud/ui/statusBar.ts
@@ -59,12 +59,19 @@ export class StatusBarManager {
 
       const state = this.getState(activeFolder)
 
+      // Don't interrupt an active deployment (spinning icon)
+      if (this.statusBarItem.text.includes("$(sync~spin)")) {
+        return
+      }
+
       switch (state.status) {
         case "not_configured":
         case "error":
-        case "refreshing":
           this.statusBarItem.text = STATUS_DEPLOY
           break
+        case "refreshing":
+          // Don't change status bar during refresh to avoid flashing
+          break
         case "linked":
           this.statusBarItem.text = `$(cloud) ${state.app.slug}`
           break
diff --git a/src/test/cloud/ui/pickers.test.ts b/src/test/cloud/ui/pickers.test.ts
index a5f92bb..80bef23 100644
--- a/src/test/cloud/ui/pickers.test.ts
+++ b/src/test/cloud/ui/pickers.test.ts
@@ -146,12 +146,10 @@ suite("cloud/ui/pickers", () => {
       })
 
       sinon.stub(vscode.window, "showInputBox").resolves("my-app")
-      const infoStub = sinon.stub(ui, "showInformationMessage")
 
       const result = await createNewApp(api, team1, "default-name")
 
       assert.deepStrictEqual(result, createdApp)
-      assert.ok(infoStub.calledOnce)
     })
 
     test("returns null when user cancels input", async () => {

From 6d9a21a82462eed1d53c9aaf330ddd0dcd114c00 Mon Sep 17 00:00:00 2001
From: Savannah Ostrowski <savannah@python.org>
Date: Wed, 4 Feb 2026 15:05:45 -0800
Subject: [PATCH 3/5] Simplify comments

---
 src/cloud/commands/deploy.ts | 1 -
 src/cloud/controller.ts      | 3 ---
 2 files changed, 4 deletions(-)

diff --git a/src/cloud/commands/deploy.ts b/src/cloud/commands/deploy.ts
index 214de11..0c1f199 100644
--- a/src/cloud/commands/deploy.ts
+++ b/src/cloud/commands/deploy.ts
@@ -126,7 +126,6 @@ export async function deploy(context: DeployContext): Promise<boolean> {
   }
 
   try {
-    // Set status immediately to prevent flash from config watcher triggering refresh
     updateStatus("Creating deployment...")
     const deployment = await apiService.createDeployment(config.app_id)
 
diff --git a/src/cloud/controller.ts b/src/cloud/controller.ts
index ffd68d6..f0a2101 100644
--- a/src/cloud/controller.ts
+++ b/src/cloud/controller.ts
@@ -283,10 +283,7 @@ export class CloudController {
     })
 
     if (root) {
-      // Refresh state in background without updating status bar during refresh
-      // This avoids a flash when deploy succeeds (status bar is already correct)
       await this.refresh(root)
-      // Only update status bar on failure - success already set it correctly
       if (!success) {
         await this.statusBarManager.update()
       }

From 1fa5c23d7d21812fd273897a64b863abf45cbbc8 Mon Sep 17 00:00:00 2001
From: Savannah Ostrowski <savannah@python.org>
Date: Wed, 4 Feb 2026 15:08:15 -0800
Subject: [PATCH 4/5] Simplify cases

---
 src/cloud/commands/deploy.ts | 1 -
 src/cloud/ui/statusBar.ts    | 4 ----
 2 files changed, 5 deletions(-)

diff --git a/src/cloud/commands/deploy.ts b/src/cloud/commands/deploy.ts
index 0c1f199..10cf6a6 100644
--- a/src/cloud/commands/deploy.ts
+++ b/src/cloud/commands/deploy.ts
@@ -148,7 +148,6 @@ export async function deploy(context: DeployContext): Promise<boolean> {
     )
 
     if (result) {
-      // Update status bar to show success before showing the message
       statusBarItem.text = `$(cloud) ${config.app_slug ?? "Deployed"}`
 
       const action = await ui.showInformationMessage(
diff --git a/src/cloud/ui/statusBar.ts b/src/cloud/ui/statusBar.ts
index f8fe049..33fea6a 100644
--- a/src/cloud/ui/statusBar.ts
+++ b/src/cloud/ui/statusBar.ts
@@ -59,7 +59,6 @@ export class StatusBarManager {
 
       const state = this.getState(activeFolder)
 
-      // Don't interrupt an active deployment (spinning icon)
       if (this.statusBarItem.text.includes("$(sync~spin)")) {
         return
       }
@@ -69,9 +68,6 @@ export class StatusBarManager {
         case "error":
           this.statusBarItem.text = STATUS_DEPLOY
           break
-        case "refreshing":
-          // Don't change status bar during refresh to avoid flashing
-          break
         case "linked":
           this.statusBarItem.text = `$(cloud) ${state.app.slug}`
           break

From 46aeae6be2561d227f03391f04eba5bbf016e3cf Mon Sep 17 00:00:00 2001
From: Savannah Ostrowski <savannah@python.org>
Date: Wed, 4 Feb 2026 15:09:20 -0800
Subject: [PATCH 5/5] Clean up comments

---
 src/test/cloud/controller.test.ts | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/src/test/cloud/controller.test.ts b/src/test/cloud/controller.test.ts
index 41b2d18..ab1c6ac 100644
--- a/src/test/cloud/controller.test.ts
+++ b/src/test/cloud/controller.test.ts
@@ -142,9 +142,6 @@ suite("cloud/controller", () => {
 
       await deps.controller.showMenu()
 
-      // Deploy is called which shows the create/link picker (after team selection)
-      // First call is team picker (auto-selected since only one team)
-      // Second call is create/link picker
       assert.ok(quickPickStub.calledOnce)
       const items = quickPickStub.firstCall.args[0] as any[]
       assert.ok(items.some((i: any) => i.id === "link"))
@@ -557,7 +554,6 @@ suite("cloud/controller", () => {
         .resolves(undefined)
       await deps.controller.showMenu()
 
-      // Deploy is called which shows the create/link picker
       const items = quickPickStub.firstCall.args[0] as any[]
       assert.ok(items.some((i: any) => i.id === "link"))
       assert.ok(items.some((i: any) => i.id === "create"))
@@ -1226,10 +1222,6 @@ suite("cloud/controller", () => {
         .withArgs(editor2.document.uri)
         .returns(workspaceFolder2)
 
-      // Deploy is called directly when not configured - stub it to return early
-      // We just need to verify the menu handler calls deploy (not show a setup menu)
-      // The deploy flow is tested elsewhere
-
       dispose(deps)
     })
 
