Skip to content

PRDCT-692: describe the Apps actions the way the UI shows them - #1159

Merged
Iamfle4ka merged 28 commits into
mainfrom
PRDCT-692-apps-action-labels
Oct 8, 2026
Merged

Iamfle4ka merged 28 commits into
mainfrom
PRDCT-692-apps-action-labels

Conversation

@Iamfle4ka

Copy link
Copy Markdown
Collaborator

Linear: PRDCT-692

Why

The Apps pages name and describe an app's actions the way the UI looked in July and September. The UI builds of 1 and 2 October changed almost every one of them: the lifecycle buttons, the Kai actions, the ⋮ menu and the dialogs behind them. This PR brings the pages in line, one commit per group:

  1. Lifecycle buttons: Deploy, Redeploy and Start (were Deploy App, Redeploy App and Start App).
  2. Kai actions: Edit with Kai, Duplicate with Kai and Migrate to Python/JS with Kai (Modify with Kai is left only on flows).
  3. The other actions: Open, Pause app, Automate, Debug mode, the ⋮ menu and Download logs.
  4. Two changes in the 2 October build that commits 1 and 2 predate: Duplicate replaced Copy app, and Start no longer opens the wizard.

Each commit message lists the UI build and the source files it was checked against.

What changed

Commit 1: lifecycle buttons

On reference, operate, publish-and-share, getting-started, authentication, build-locally, troubleshooting, what-are-apps and lock-version:

  • The header button is Deploy on an app that has never run, Redeploy on a running one and Start on a stopped or sleeping one.
  • Open shows once the app has been deployed, not only while it runs.
  • Projects on pay-as-you-go have no backend size field.
  • The Redeploy wizard folds its fields into a collapsed Deploy settings section.
  • A VERIFY(Nikita) note in operate.md asks whether Start on a sleeping app clones the branch again after a push.

Commit 2: Kai actions

On operate, reference, publish-and-share and what-are-apps:

  • Edit with Kai replaces Modify with Kai. It shows on a Python/JS app with a Keboola-managed repository, to a user who can edit the app, in a project where Kai can build apps.
  • Migrate to Python/JS with Kai, on Streamlit apps, gets its own item.
  • Duplicate with Kai, on apps with a Keboola-managed repository, opens a Kai chat that copies the app once you confirm.
  • operate and what-are-apps say how to tell from the Overview tab which kind of repository an app has.
  • The three VERIFY(Michal Ševčík) comments are gone, because the labels were renamed and the copy item follows the repository, not who built the app.

Commit 3: the other actions

  • reference.md:
    • The Terminal log section names the Terminal Logs tab and the Download logs button.
    • App actions: Open opens the Open app dialog on any deployed app, whatever its authentication. The dialog has the address and the password, or a line saying why there is no password.
    • Pause app and Cancel start replace Suspend app.
    • Automate creates a flow that starts the app on a schedule.
    • Debug mode opens the raw JSON editor. It doesn't run the app.
    • The menu is "the ⋮ (More actions) menu".
  • operate.md:
    • The Stopping bullet becomes Pausing. It names the Pause now confirmation and says the app's page then shows Stopped while the Apps list shows Sleeping, and that the next visit or Start wakes the app.
    • kbagent data-app stop does the same as Pause app.
    • The Automate bullet says what the dialog asks for and that the preset Once per hour wakes the app every hour. It says how to pick a time of day (Custom schedule, in the timezone shown next to Schedule, UTC by default), that a started app still sleeps after its inactivity timeout, and which roles see the item. Its old redeploy example had no source and is gone.
  • getting-started, authentication, build-locally and troubleshooting say Open instead of Open App.
    • The password steps say "in the page header", because the App access card has an Open of its own that skips the dialog.
    • getting-started step 7 and the OIDC test step name the dialog's Open app button, since SSO apps get the dialog too.
    • Kai's chat card still says "Open App", so the line about Kai's final message stays.
  • The VERIFY(Nikita) comment in getting-started is gone. It asked whether apps Kai built get the same dialog, and the code answers it: the dialog never looks at who built the app.

Commit 4: two 2 October changes

  • On apps without a Keboola-managed repository, the copy item is Duplicate. It copies the app's code, or its repository and branch, plus its settings into a new app, which starts undeployed and gets its own address on its first deploy. This is on operate, publish-and-share and reference.
  • Start on an app that has run before starts it right away with its saved settings. The wizard opens only when Kai has undeployed drafts of the app, while Redeploy still opens it. This is on getting-started step 6, reference, operate and lock-version, in the wording branch PRDCT-692-streamlit-reshoot uses for the same lines. Before this PR, getting-started said only "The same wizard runs on Redeploy", which is still true, while operate and lock-version already sent Start through the wizard.

Evidence

A signed-in europe-west3 project page loaded kbc-ui/bundle.B71zPxpk.js and bundle.CF29sTZY.js on 1 October (commits 1 and 2), and bundle.7TCWrz7w.js (12:56 GMT) on 2 October (commits 3 and 4). The chunks and their source maps are public on ui.keboola-assets.com, and the file names below come from the maps.

  • helpers.ts getDeployActionLabel: created gives Deploy, running, starting and restarting give Redeploy, and anything else gives Start. The same label titles the wizard and its submit button.
  • DeployDataApp.tsx:
    • startsWithoutAsking = label === 'Start' && draftCount === 0, where draftCount counts Kai's undeployed drafts. Start then deploys readSavedSettings(), with the same patch as before.
    • Otherwise the wizard opens, folding its fields into Deploy settings for an app that has run before. With drafts, it adds Deploy without draft changes and Deploy draft changes.
    • Backend size is hidden on pay-as-you-go projects (WorkspaceSizeControl).
  • OpenBuilderButton.tsx and DataAppDetailHeader.tsx: Edit with Kai needs edit rights, Kai able to build apps (canUseChat and isKaiAgent) and a Python/JS app with a Keboola-managed repository. The same header renders Migrate to Python/JS with Kai, Open and the ⋮ menu.
  • DataAppCopyAction.tsx: an app with a managed repository gets Duplicate with Kai. Any other app gets CopyButton with the label "Duplicate", the title "Duplicate app" and a note saying what the copy gets.
  • OpenDataApp.tsx: the header's Open (tooltip "Open the production app in a new tab") renders once the state isn't created and always opens CredentialsModal. On 1 October it read "Open App". In CredentialsModalContent.tsx, the dialog's content branches only on authentication, address and state.
  • TerminateDataApp.tsx and stopAct.ts:
    • The item is "Pause app" on a running app and "Cancel start" on a starting one.
    • The confirmation says "Sleep mode will be activated and the app will wake up on the next visit or start."
    • actions.ts sends only desiredState: stopped, the same request Suspend app sent on 1 October, so the old "stops serving until Start" text was wrong before the rename too.
    • The page badge (StatusLabel.tsx) reads Stopped, and the Apps list (AppStatus.tsx) reads Sleeping.
  • DebugModeLink.tsx leads to the route generic-config-raw, which renders GenericDetailRaw.tsx: a full-screen JSON editor with the tabs "Update Configuration" and "Update State", and no run buttons for keboola.data-apps.
  • ScheduleConfigurationButton.tsx:
    • The dialog reads "You are about to create a single task flow with a given name and schedule."
    • The name defaults to "Scheduled ", and the schedule to "Once per hour" in UTC.
    • The task is keboola.data-app-control (flows-v2/helpers.ts). The public component index says that component "allows to start Data App from Flow", and all five multi-tenant stacks register it.
    • The header shows the item only to roles that can activate schedules, which in a project with Apps means Admin or Share (DataAppDetailHeader.tsx, privileges.ts). Projects with a protected default branch, where Production Manager would qualify, have no Apps (ApplicationStore.hasDataApps).
  • RowActionDropdown.tsx: the header's menu trigger is EllipsisVertical with aria-label="More actions" and no tooltip.
  • TerminalLogs/DownloadButton.tsx reads "Download logs", and the tab is "Terminal Logs".

Not in this PR

  • publish-and-share "Share with your team" (Open in new tab) is left to branch PRDCT-692-apps-app-access, which rewrites the section around the App access card and reshoots its screenshot. Until that lands, the section still names Open in new tab, as main does today.
  • Image alt texts and screenshots belong to the Apps screenshot reshoot.
  • The labels were last read from the 2 October build, on europe-west3 only. This PR opens without re-reading a newer build. The VERIFY(Nikita) note on build-locally, which asks for the us-east4 labels, stays.
  • reference.md still calls automatic sleep "the Suspend/Resume feature", and its "Terminal log" heading stays. Neither is a UI label, and renaming the heading would change its anchor.
  • operate.md gives Automate no terminal route.
  • management/project/limits still says the backend size is picked "each time you deploy or start the app". Start no longer opens the wizard, and the field is now labeled "Backend size". It isn't an Apps page.
  • The edited list items keep the "Label — description" dash that every other item in those lists uses, because the dash ruling for STYLE.md is still open.
  • Older issues noted while working:
    • publish-and-share deploys before it sets authentication.
    • The wizard's two draft buttons aren't documented.

Open questions

  • Does Start on a sleeping app clone the branch again after a push (VERIFY(Nikita) in operate.md)?
  • Does an hourly Automate start restart an app that is already running? The task's component has a private repository, so the page says only that the preset wakes a sleeping app.
  • Does a scheduled start reset the inactivity clock, or does it keep counting from the last visit? The page follows the deploy dialog's tooltip: the app sleeps "after the selected duration of inactivity".
  • Does Duplicate work on an app that has been deployed? It sends the stored configuration to POST /apps. After a deploy from the UI, that configuration has runtime.backend.size and no parameters.size, and keboola/cli saw the endpoint reject that shape with a 422 (commit c26867af). The same code path was behind Copy app before this PR.
  • In the Automate dialog, the preview under Custom schedule always says "in UTC Time Zone", even after a reader picks another timezone, while the saved schedule uses the one picked. That's a UI bug to report, so the page leaves it out.

Other branches

  • PRDCT-692-apps-lifecycle-labels and PRDCT-692-apps-kai-labels are folded into this PR as commits 1 and 2, so they get no PRs of their own.
  • The screenshot reshoot chain sits on the old lifecycle commit 63cf9786. That's the reshoot, then the App access, Create app screen and Streamlit reshoot branches. After this PR merges, it rebases with git rebase --onto main 63cf9786. The one conflict is getting-started step 6, where the reshoot and commit 4 edit different halves of one sentence. The Streamlit reshoot's final line is the merged result.
  • The wake-disabled branch conflicts in operate.md and reference.md. The resolution keeps this PR's Pause text and adds that branch's failed-starts text.

Checks

  • npm run build is clean (373 pages), and the pages and their markdown twins show the new text. check-cli-reference: 0 findings. audit-phase2: 0 broken links and 0 missing images, and its total is unchanged.
  • Commit 1: fact-checker, guide-tester (cold read) and checker PASS.
  • Commit 2: two fact-checker passes plus a delta pass, with 0 critical and 0 major findings. The guide-tester's two majors were fixed, and the checker passed after one FIX.
  • Commit 3: fact-checker pass and delta pass, with 0 critical and 0 major findings, and their minors fixed. The guide-tester found no blockers, and its major and six minors were fixed. The checker passed after one FIX.
  • Commit 4: fact-checker found 0 critical and 0 major, with 17 claims confirmed. Its two minor notes need no change here; one is the limits page, listed under Not in this PR.
  • checker on the whole PR: PASS. Its minors are fixed: two sentences in this body, two commit messages and the memory notes.
  • Test merges with git merge-tree, each simulated on this branch's tip:
    • clean with main and the name-mask hotfix;
    • clean for the App access, Create app screen and Streamlit reshoot branches on top of the reshoot;
    • the reshoot and wake-disabled conflicts are described above.

🤖 Generated with Claude Code

Nikita and others added 4 commits October 6, 2026 13:58
The kbc-ui build europe-west3 loads on 2026-10-01 (bundle.B71zPxpk.js ->
app-Ctfkb0Pk.js, label function qO in promise-C32ImHGm.js) labels the
header button, the wizard title and its submit button Deploy (state
created), Redeploy (running, starting, restarting) or Start (any other
state, including stopped and sleeping). The 30 Sep build
(bundle.D8PUgM9Y.js) already did; the 14 Sep build said Deploy App /
Redeploy App / Start App. All three submit the same request (patchApp
with desiredState running, restartIfRunning and the saved configVersion),
so the pages now offer Start wherever an app may be asleep. Whether Start
on a sleeping app clones the branch again is not tried yet, so operate.md
carries a VERIFY(Nikita) note.

The same build hides the Backend size field on projects with the
pay-as-you-go feature (WorkspaceSizeControl-DmN0mNiM.js returns null when
hasPayAsYouGo()), and on Redeploy and Start it folds the wizard's fields,
including the Streamlit "Update packages dependencies" switch, into a
collapsed Deploy settings section (CredentialsModal-B_bRWS_U.js). So
operate.md no longer says the wizard asks for them every time, and
getting-started's step 5 no longer sends readers to set size and
auto-sleep on the app's page. Open App shows on any deployed app with a
URL (StatusLabel-BG6QKoCN.js), not only running ones, and the App actions
intro on reference.md now names the header and the menu.

The two publish-and-share alt texts now describe what the 2026-07-10
screenshots show; the screenshots themselves still carry the older UI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 63cf978643ccdfeb1e564630ce592b8e0d3a8886)
The kbc-ui build europe-west3 loads on 2026-10-01 (bundle.CF29sTZY.js,
Last-Modified 13:38 GMT -> app-QW9Ajcyu.js; the 12:28 build
bundle.B71zPxpk.js agrees) has no "Modify with Kai" on apps. That label
survives only on flows (DetailHeader-BMtgH9uA.js). The app page header
(DataAppDetailHeader-Dmx7xNmH.js) shows "Edit with Kai"
(OpenBuilderButton-CMgXpIbI.js, data-testid open-data-app-builder-button)
only when the page isn't read-only, Kai can build apps in the project
(canUseChat and isKaiAgent; the Create app page says "Kai can't build apps
in this project yet" when only the first holds) and tO in
promise-3eZRphUI.js holds: the app is Python/JS and has a Keboola-managed
Git repository. It follows the repository, not who built the app. The
same header has "Migrate to Python/JS with Kai" on Streamlit apps (also
only for users who can edit, with Kai able to build apps, on stacks that
offer Python/JS; PromptButton renders nothing without canSendPrompt),
which the reference list lacked.

The ⋯ menu (data-app-actions-dropdown) shows "Duplicate with Kai" when
app.hasManagedGitRepo (StatusLabel-v2pya8eH.js). It opens a new Kai chat
and sends a prompt to copy the app, check first, say what carries over and
what to set up again, and copy once the user confirms; it is disabled when
Kai can't take prompts ("only Kai can copy it"). Other apps get the
generic copy item (CopyButton -> CopyVersionButton-B5pKl52S.js), whose
menu text is "Copy " followed by b, and b = "app" for keboola.data-apps,
so "Copy app" is still on screen there although no chunk holds the
literal string. copyVersion creates the new app from the configuration
minus parameters.id, so a copy of an app on its own repository deploys
the same branch; the operate page now says to give the copy its own
branch. Duplicate, Copy, Automate and Delete render only for users who
can edit the project.

The Overview (Detail-rhJ8jrVk.js, component yn) shows "The code of this
app is stored in a Keboola-managed Git repository, so there is nothing to
set up here." for a managed repository and a Git Repository (Python/JS)
or Code Source (Streamlit) section otherwise, so operate.md and
what-are-apps.md now tell readers how to see which kind their app has.
what-are-apps' old test ("if the Kai builder and the live preview are
missing, its code lives in a repository you host") fails wherever Edit
with Kai is hidden for other reasons, such as a read-only role.

operate.md, reference.md, publish-and-share.md and what-are-apps.md now
say Edit with Kai, and Duplicate with Kai or Copy app, with those
conditions. "Ship a code change" keys its first bullet on the managed
repository, as its intro ("where the code lives") already does, and links
the push-it-yourself route for projects without Kai. The three
VERIFY(Michal Ševčík) comments are gone: the labels were renamed, and the
copy item depends on the repository. The VERIFY(Nikita) question in
reference.md (do apps Kai built show the Open App dialog?) goes too: the
dialog (CredentialsModal-DKVAbjxh.js) branches only on the app's
authentication, address and state, never on its repository or builder.

The publish-and-share alt text still describes the 2026-07-10 screenshot
until it is reshot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 8353a599f95e99b02718921cdfe50a1c44cca902)
Checked against the kbc-ui build europe-west3 loads on 2026-10-02
(bundle.7TCWrz7w.js, Last-Modified 12:56:27 GMT -> app-ZybA-vsV.js,
770 chunks; read from a signed-in project 264 page, document.scripts
only), using the public source maps' original TypeScript. Compared with
the 2026-10-01 13:38 build (bundle.CF29sTZY.js), this build renamed two
of the actions the pages describe, so this commit takes those as well
(Nikita's call):

- The header button is "Open", no longer "Open App" (OpenDataApp.tsx,
  mode "header"; tooltip "Open the production app in a new tab"). It
  renders on any app whose state is not "created" and that has a URL,
  and it always opens the "Open app" dialog (CredentialsModal,
  CredentialsModalContent.tsx), whatever the authentication: App address
  with a copy button, then the Password field (hidden, reveal, copy) for
  password auth, or a NO_PASSWORD_REASON line for SSO, public or unset
  auth. The footer's "Open app" link opens the URL with target=_blank.
  reference, operate, publish-and-share, getting-started (twice),
  authentication (twice), build-locally (five times) and troubleshooting
  now say Open; authentication step 2 and getting-started step 7 now go
  through the dialog. Kai's chat card still says "Open App"
  (surface kai_card), so getting-started's line about Kai's final
  message stays. getting-started's VERIFY(Nikita) on whether Kai-built
  apps get the dialog goes: the dialog branches only on authentication,
  address and state.
- The menu item "Suspend app" is "Pause app" (TerminateDataApp.tsx,
  STOP_ACT.sleep in stopAct.ts), offered on a running app; on a
  starting app it is "Cancel start" (STOP_ACT.cancelStart). Pause sends
  patchApp { desiredState: "stopped" } only (actions.ts updateApp), as
  Suspend app already did on 01.10, so the old "stops serving until
  Start" text was wrong before the rename as well. The
  confirmation says "Sleep mode will be activated and the app will wake
  up on the next visit or start.", and appStatus.ts headlines a stopped
  app with auto-restart on as Sleeping ("A stopped app wakes on the next
  request unless autoRestartEnabled === false"). So operate's Stopping
  bullet becomes Pausing: the app sleeps early, keeps its configuration,
  and wakes on the next visit or Start. The bullet names the
  confirmation's "Pause now" and says what the reader then sees: the
  page badge reads Stopped (StatusLabel.tsx keys on the raw state) with
  Start in the header, while the Apps list says Sleeping (AppsTable ->
  AppStatus -> getStatusLabel). kbagent 0.95.0's data-app stop sends the
  same patch (stop_data_app -> patch_app(desired_state="stopped")), so
  the terminal line says it does what Pause app does.
- Two Open buttons exist on the Overview tab: the header's opens the
  dialog, the App access card's is a plain link to the app
  (AppUrlSetting.tsx). The password steps (authentication twice,
  troubleshooting, build-locally twice plus its two stage-strip items,
  getting-started step 7) now say "in the page header".

The items from the brief, all unchanged since 01.10 in this build:

- Debug mode (DebugModeLink.tsx) links to route generic-config-raw,
  path "raw" (components-directory/routes.tsx), which renders
  GenericDetailRaw: a full-screen JSON editor with the tabs "Update
  Configuration" and "Update State" and Save buttons. hideRun covers
  keboola.data-apps, so it has no Run Job buttons for apps. It never ran
  the app "with extra diagnostics". A saved configuration is a new
  version that Start and Redeploy pick up (DeployDataApp.tsx re-reads
  the latest configuration and sends its configVersion); a saved state
  goes through updateConfigurationState, which the Storage API spec says
  "does not create a new configuration version".
- Automate (ScheduleConfigurationButton.tsx): "You are about to create
  a single task flow with a given name and schedule." Flow name defaults
  to "Scheduled <app name>", the schedule to "Once per hour"
  (1 * * * *, UTC). handleSubmit creates a keboola.flow configuration
  with one task (prepareTaskRef -> keboola.data-app-control with the
  app's appId) and creates and activates its schedule. The public
  component index describes keboola.data-app-control as "This component
  allows to start Data App from Flow"; it is registered (tag 0.0.2) on
  all five multi-tenant stacks (/v2/storage, 2026-10-02). operate's
  "redeploy it after the data it reads has been refreshed" had no
  source; the "(add it to a flow)" parentheticals said the same. The
  bullet now says how to set a time of day (Custom schedule; the
  presets are every 5 or 10 minutes, twice per hour, once per hour,
  once per 6 hours, 5 am and 5 pm, 12 pm), that times follow the
  "Timezone:" picker next to Schedule (UTC by default,
  ScheduleTimezone.tsx), that a started app still sleeps after its
  inactivity timeout, and who sees the item: DataAppDetailHeader.tsx
  renders it for !readOnly && canManageSchedule, which is Admin or
  Share (admin/privileges.ts canActivateSchedule); the Production
  Manager branch of that check never applies, because projects with a
  protected default branch have no Apps (ApplicationStore.hasDataApps).
- publish-and-share "Share with your team" ("Open in new tab") is left
  alone here: branch PRDCT-692-apps-app-access (2060a0ce, stacked on the
  reshoot) rewrites that section around the App access card
  (AppUrlSetting.tsx: App URL with "Copy the address", Open with the
  tooltip "Open the production app in a new tab", the Password field)
  and reshoots publish-config.png, so a second edit would only conflict.
- reference Terminal log: the button is "Download logs"
  (TerminalLogs/DownloadButton.tsx) and the tab "Terminal Logs"
  (DataAppDetailHeader.tsx).
- The header menu trigger is a vertical ellipsis (EllipsisVertical)
  with aria-label "More actions" (RowActionDropdown.tsx, inHeader), and
  nothing visible names it. The pages wrote ⋯; they now write ⋮ and,
  once per page, "the ⋮ (More actions) menu" (Nikita's call).

Found in the same build and fixed in the next commit of this PR: the
non-managed-repo copy item is now "Duplicate" (DataAppCopyAction.tsx,
dialog "Duplicate app"), and Start on an app that has run before now
starts without the wizard unless Kai drafts are pending
(DeployDataApp.tsx startsWithoutAsking).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The two commits below this one were written against the 2026-10-01
build. The 2026-10-02 builds (bundle.DZIl0CMv.js 12:14 GMT and
bundle.7TCWrz7w.js 12:56 GMT) changed two things they describe:

- The copy item on apps without a Keboola-managed repository is
  "Duplicate" (DataAppCopyAction.tsx passes CopyButton label
  "Duplicate", title "Duplicate app" and the note "The new app gets this
  one's code (or repository and branch) and settings. It starts
  undeployed and gets its own address when you deploy it. Change the
  repository or branch afterwards if it should not follow this one.").
  operate.md (twice), publish-and-share.md and reference.md now say
  Duplicate, and operate and reference say what the copy gets.
  Duplicate with Kai is unchanged.
- Start on an app that has run before starts it right away with its
  saved settings: DeployDataApp.tsx has startsWithoutAsking = label ===
  'Start' && draftCount === 0, where draftCount counts Kai's undeployed
  drafts (useDeployableDrafts), and handleDeploy(readSavedSettings())
  sends the same patch as before. Redeploy still opens the wizard with
  Deploy settings collapsed. getting-started step 6, reference's deploy
  wizard paragraph, operate's Change settings and lock-version's
  "Updating package dependencies" step 1 now say so, in the wording
  branch PRDCT-692-streamlit-reshoot (d397b1a2) uses for the same lines,
  so that branch merges cleanly on top. On main before this PR,
  getting-started said only "The same wizard runs on Redeploy", which
  was right; operate.md said the wizard opens "each time you deploy or
  start the app" and lock-version said to start the app and then turn
  the toggle on, both already wrong for Start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Iamfle4ka Iamfle4ka added the apps-ga Apps GA on 1 Oct 2026 — docs work tracked under AJDA-3380 label Oct 6, 2026
@vercel

vercel Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
connection-docs Ready Ready Preview Oct 8, 2026 3:21pm UTC

Request Review

@linear-code

linear-code Bot commented Oct 6, 2026

Copy link
Copy Markdown

PRDCT-692

Seven Apps images showed the July or March UI (Redeploy App, Start App,
the Kai Agent Beta pill, the old Start Data App dialog, an Overview with
the App URL below Authentication), so they contradicted the lifecycle
text around them. All new shots come from demo project 264 on
europe-west3 on 2026-10-01 (kbc-ui bundle.CF29sTZY.js -> app-QW9Ajcyu.js),
2x, cropped to the part of the UI the step points at, with person names
in the Versions panel blurred.

- deploy-wizard.png (new): Deploy wizard of an app that has never run.
  Replaces deploy-timeout-backedsize.png on getting-started step 6 and
  publish-and-share step 1.
- redeploy-wizard.png (new): Redeploy wizard of a running app with Deploy
  settings collapsed, for reference "Sleep and resume".
- app-actions-menu.png: stopped app header with the menu open (Duplicate
  with Kai, Automate, Debug mode, Delete app); now also on reference "App
  actions", replacing the March manage-redeploy.png panel.
- build-in-ui-config.png: a never-deployed Python/JS app's Overview with
  the App access card (getting-started step 5, authentication Step 1).
- streamlit/lock-start-data-app.png, lock-update-dependencies.png: the
  Start wizard, and the Redeploy wizard expanded with the Update packages
  dependencies switch.
- streamlit/lock-freeze-version-toggle.png: Packages card with Freeze
  Version on (taken while freezing was on for the shot above).
- Removed the now unreferenced deploy-timeout-backedsize.png and
  manage-redeploy.png.

Text: alt text for every changed image. authentication says the App URL
block is in the App access card, above Authentication, and that the card's
not-deployed notice doesn't matter there. getting-started step 6 and
publish-and-share step 1 say to click Deploy in the wizard. lock-version
says "Freeze Version" (the UI label) in the Packages card, puts the wizard
shots under their steps, shows the Packages card as it looks after the
first start, adds the confirm step to section 3, and says what to do when
the Update packages dependencies toggle is missing (start once, reload,
reopen the wizard): the wizard
(CredentialsModal-DKVAbjxh.js) renders it only when
parameters.dataApp.freezeDependencies and state.data_app["requirements.txt"]
are set, and the state key appeared after one start with freezing on.

Masked a colleague's name (three Versions lines) in the old
streamlit/lock-update-requirements.png and in its byte-identical,
unreferenced copy lock-streamlit-version/code-deployment/update-requirements.png,
which help.keboola.com still serves (PRDCT-616 rule).

Project 264 changes made for the shots, approved by Nikita: new
docs-manual-app (App ID 74022487, repo keboola/titanic-python-app, never
deployed), and on docs-test-oidc-google (74021824) Freeze Version on, one
start, Suspend App, Freeze Version off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
publish-and-share said the app URL was in the App URL block "with a copy
button and Open in new tab", and publish-config.png showed the July UI
(OPEN IN NEW TAB, the Git Repository card above App URL). The Overview
tab now has an App access card: Open at its top right once the app has
been deployed, the App URL block (URL prefix plus the generated part,
with a copy button), then Authentication, which has a Password field on
a Basic (Password) app. No other Apps page said "Open in new tab".

- publish-and-share "Share with your team": where the URL is and what
  its copy button (Copy the address) copies; the card's own Open only
  after the first deploy, with a notice such as "Not deployed yet. Deploy
  it to get an address you can share." before it; that the first visit
  wakes a sleeping app, with a link to Stop, start, sleep. For Basic
  (Password): the Password field in the same card (hidden until the eye
  icon reveals it; copy works while hidden), what to do when the card
  asks for a deploy first, and what Reset does (the old password stops
  working, usually within a minute).
- publish-config.png: reshot from Toy Store Sales Dashboard (project
  264, App ID 74016144, deployed and stopped; its state read through the
  Sandboxes API before and after the capture, stopped both times;
  nothing clicked), 1100 px at 2x, cropped to the App access card and
  the right rail (App Info, Last App Runs, Versions), person names in
  the Versions panel blurred, the password masked as the UI shows it.

Checked against the UI build loaded on 2026-10-02 (bundle.DZIl0CMv.js ->
app-725wdyTu.js, Last-Modified 12:14 GMT) through its public source maps:
- AppUrlSetting.tsx: Open renders only when the app has been deployed and
  has a URL; it is a link with target="_blank" (tooltip "Open the
  production app in a new tab"). The copy button ("Copy the address")
  copies https:// plus the prefix and the generated part. The status line
  reads "Not deployed yet. Deploy it to get an address you can share."
  with a Deploy button, or No code yet / No authentication yet /
  Deploying.
- AppPasswordField.tsx: the password is masked (hiddenByDefault), an eye
  (aria-label "Show password") reveals it and a copy button copies the
  real value. Reset, hidden from read-only users, asks first: "A new
  password is generated and this one stops working, for everyone who has
  it." The success toast (promise-D6gHcaBZ.js) adds "this change may take
  effect within the next minute"; the apps proxy (keboola-as-code
  appsproxy) refetches app config when its max-age runs out and checks
  each visitor's cookie against the current password.
- Before a Basic app has a password, the card shows "<Deploy|Start|
  Redeploy> the app to generate its password." instead of the field
  (AppUrlSetting.tsx passwordPending).

Reviews: fact-checker 0 critical / 0 major, 16 of 16 claims confirmed
plus every element the alt text names; guide-tester (cold read) no
blockers, its in-scope points applied. Delta pass on the revised text:
7 confirmed; its MAJOR was that operate.md's stopping text is stale
(today's menu has Pause app, "Sleep mode will be activated and the app
will wake up on the next visit or start.", where 1 October had Suspend
app), so the pointer now covers sleeping apps only; its two minors
(the eye's label is only an aria-label, "usually within a minute") are
applied. Humanizer pass on the final section: the authentication
sentence no longer repeats step 3 of the list above it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Steps 1-4 of getting-started "Create an app manually" and
build-in-ui-create.png still showed the July Create App screen: "or create
manually" above a Streamlit card and a Python / JS card. Today's screen is
titled Create app: Build with Kai, then Other ways to start with Build
locally with your coding agent, Deploy from your own Git repository
(Python / JS, No Kai) and a Create a Streamlit app link. Read live in
project 264 on europe-west3 (kbc-ui bundle.DZIl0CMv.js on 2026-10-02, and
bundle.7TCWrz7w.js later that afternoon, same text); the CreateAppPage code
comes from bundle.CF29sTZY.js of 2026-10-01, which has the same strings.

getting-started, Create an app manually:
- Steps 1-4 follow the new screen: Create app; choose the stack under Other
  ways to start; name the app (Folder optional; the Python / JS form takes
  an optional Repository URL and shows a Private repository switch once one
  is typed); add the code. Python / JS needs a keboola-config/ folder (link
  to App structure), then the Git Repository card: URL and credentials if
  skipped, Load branches, branch, save. Streamlit uses the Code Source card:
  Code + Add Code, or Git Repository with a Main File Path.
- The App access card says No code yet and Deploy is disabled until the
  app has code. A saved repository URL already counts as code, so Deploy
  turns on before a branch is picked; the step says to pick it first
  (Detail zt notices; TO/wO/SO behind Deploy). These post-creation states
  are code-only, so they carry VERIFY(Nikita).
- A project with no apps has no Create app button; its Apps page shows the
  same choices (Header-CLb288SU returns null for an empty list; Index empty
  state). VERIFY(Nikita), as project 264 has apps.
- Single-tenant and Streamlit-only stacks still get the older layout
  (CreateAppPage renders DataAppsEmptyState when $O holds): one sentence
  plus VERIFY(Jordan).
- The stack hints (custom app, existing Streamlit app) stay, linked to
  what-are-apps and the Streamlit section. Steps 5-7 are unchanged.

getting-started Step 1 (Kai walkthrough): the Create app button, the new
screen, and the no-apps case (use the Apps page's prompt for Step 2).
getting-started-create-app.png (a byte-identical copy of the old create
shot) and getting-started-apps-list.png (old + Create App button, Kai Agent
Beta pill, colleagues' names in Last Change) are reshot.

index.md and build-locally: Create App -> Create app. build-locally "Sync to
your project": step 1 is Apps -> Create app -> Deploy from your own Git
repository with a link to the manual steps, step 2 skips what was given at
creation, step 3 says Load branches and save, and the comment below gives
the Load branches rule as the 2026-10-01 UI code has it.

Shots: 2x at a 960 px viewport, cropped below the top bar (no project,
branch or avatar) and above the apps table (no names); the Git form is
filled with docs-manual-app and keboola/titanic-python-app and was not
submitted. Mean luma 243-247. Nothing was created or changed in project
264.

Checks: npm run build clean (373 pages); audit-phase2 identical to the base
(0 broken links, 0 missing images, 70 known); docs-link-redirect-check 0
blockers. fact-checker: 0 critical, 0 major, 32 confirmed; three minors
applied, two filed as follow-ups (Build on Keboola, build-locally's skill
offer). Second fact-check pass on the added sentences: 0 / 0, 8 confirmed,
both minors applied. guide-tester (live, read-only): no blockers, its three
majors applied, minors applied except two outside the rewritten steps.
checker: PASS, its text minors applied; the Streamlit page's stale create
steps are filed as a follow-up.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nikita and others added 2 commits October 6, 2026 15:57
Eight Streamlit images showed the March UI (General Setting, Deployment Type,
Data App Repository, the old Upload requirement.txt dialog). They are reshot on
europe-west3, project 264, app docs-test-oidc-google (74021824), 2x, headless
Playwright with the saved session, on 2026-10-02 against build
bundle.7TCWrz7w.js -> app-ZybA-vsV.js (deployed 12:56 GMT). The sources quoted
below were read in the 12:14 build bundle.DZIl0CMv.js and are byte-identical in
both builds.

- streamlit/custom-data-app-url.png: App access card (App URL; Authentication collapsed)
- streamlit/development-type-code.png: Code Source card with Code selected
- streamlit/packages.png: Packages card, cropped above the Click Here line a
  new app doesn't have
- streamlit/theming-predefined.png: Theme card with the Color Palette list open
- streamlit/lock-upload-requirements.png: Upload requirements.txt File dialog, empty
- streamlit/lock-update-requirements.png: the same dialog after picking a
  three-line sample requirements.txt (Nikita's OK, 2026-10-02; the browser reads
  the file locally)
- streamlit/git-repository-public.png and git-repository-private-ssh.png: the
  empty Git Repository form, with Private off and on (Nikita's OK for the radio
  and the Private switch only: nothing typed, Load branches not clicked)
Nothing was saved: the config stayed at version 7 through every capture.

The text follows the same build (public source maps): Create app -> Create a
Streamlit app, the empty-project link, the single-tenant and Streamlit-only
layouts (CreateAppPage, DataAppsEmptyState, Header, singleTenant; VERIFY(Jordan)
because not seen live); the prefilled New App name, Description and Folder,
Create app, the name becoming the URL prefix, Basic (Password) as the default
access (wizardConfig, getDataAppConfig, basicProxyAuthorization); App URL up to
50 characters, the new address from the next deploy (AppUrlSetting, helpers);
Code Source, Add Code, the collapsed card (DeploymentCard, CodeField); saving
one deployment method removes the other's settings (DeploymentCard,
GitSetting, PackagesCard); Packages saving on every change and shown only with
Code (PackagesCard, PackagesSelect, Deployment); Git Repository, Project URL,
Load branches, Private, the repo-scope note, SSH Private Key, no passphrase
field, the key-wins rule (GitSetting, GitSettingHelpers, SshKey; the
Project URL form an SSH key needs is a VERIFY(Jordan) comment); Theme on
Advanced Settings, Streamlit Default, Keboola as the start palette (ThemeSettings,
constants, withStreamlitTheme); the upload dialog's merge strategies and the
lines Save Packages skips, which include any line starting with http, so
packages such as httpx (UploadRequirementsFileModalContent, utils). Save is the
shared SaveButtons label.

Removed 11 images no page has referenced since 8c1f39e (July):
general-design-guide/pic1, pic3, pic4 (copies of streamlit/design-guide-*),
lock-streamlit-version/code-deployment/*.png (5), streamlit/hello-world-code.png,
streamlit/theming-custom.png, terminal-log-tab/hello-world.png. No reference in
src or _data; no open PR's branch has one (29 stale remote branches still carry
the pre-July pages); none in developers-docs main; gh search code, org-wide and
GitHub-wide, finds only page URLs, which redirect_from still covers (the dist
redirect pages for all three old paths were checked).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Since the 2026-10-02 builds (bundle.DZIl0CMv.js 12:14 GMT and
bundle.7TCWrz7w.js 12:56 GMT; DeployDataApp.tsx is identical in both), Start
on an app that has run before starts it right away with its saved settings:
`startsWithoutAsking = label === 'Start' && draftCount === 0`, where draftCount
counts Kai's undeployed drafts of the app (useDeployableDrafts).
getDeployActionLabel: created -> Deploy, running/starting/restarting ->
Redeploy, else Start. The Update packages dependencies switch renders in the
wizard only when Freeze Version is on and frozen requirements exist, so it is
reachable through Redeploy only. Kai edits a Streamlit app in place (its tool
reads "Modifying app"; the Python/JS one reads "Creating draft"), so the
Streamlit page leaves the drafts case out.

- lock-version, Enable version freezing, step 2: Start starts the app; Deploy
  and Redeploy open the wizard. The Start-wizard image gives way to
  redeploy-wizard.png (running Streamlit app, from f9bb4733), and
  lock-start-data-app.png, now unreferenced, is removed.
- lock-version, Updating package dependencies: Redeploy only; start the app
  first if the header shows Start; the missing-toggle note says Redeploy.
- getting-started step 6, reference (deploy wizard paragraph) and operate
  (changing settings): Redeploy opens the wizard; Start starts directly unless
  Kai has undeployed drafts; operate says how to change size or timeout on a
  stopped or sleeping app.

Outside the original brief. On 2026-10-04 Nikita chose to extend it to
getting-started and reference; operate.md made the same claim (found
afterwards by the fact-checker) and gets the same fix plus one how-to
sentence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
After an app fails to start several times in a row, the platform stops
retrying and opening its URL no longer wakes it; someone has to fix the
cause and start it by hand. The Apps pages promised that the next visit
always wakes a sleeping app, and none of them mentioned this case.

Troubleshooting now covers it: the visitor page, the warning on the
app's page, Fix with Kai for apps Kai built, the failed run's reason and
startup log (All Runs, or kbagent data-app runs with --json for the
logs), and starting the app with Start or kbagent data-app deploy. Its
first table row quoted the same visitor page by its pre-August heading,
"Data App is not running", and now uses the current one. The reference
and Operate name the exception and link there. Operate's terminal line
says to use deploy after a fix, because start keeps the configuration
version the app was last deployed with.

This first sat on #1153 and is now rebuilt on #1159, which renamed
Suspend app to Pause app and says a paused app wakes on the next visit,
as the UI's confirmation dialog does. Operate and the reference keep
#1159's Pause app and Redeploy text, and the question whether a visit
wakes a suspended app is gone. Two VERIFY(Miro) comments stay: does a
manual start turn waking back on, and does one failed deploy turn it
off at once?

The evidence is public code: the kbc-ui builds europe-west3 served on
2026-09-30 and 2026-10-01 (and 2026-10-02 for Pause app), the
Sandboxes API definition of
ExistingApp.autoRestartEnabled, the apps proxy in keboola/keboola-as-code
(restart-disabled page instead of a wakeup), and kbagent's data-app
commands in keboola/cli.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The reshot app-actions-menu.png shows the More actions menu as ⋮, the
glyph #1159 uses in the text, but the alt text on publish-and-share and
reference still said ⋯.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@keboola-pr-reviewer-bot keboola-pr-reviewer-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: needs_human (risk 3/5) · profile connection-docs

Content-bucket docs PR, but a newly added VERIFY(Nikita) marker in operate.md fails auto-approve gate 3.

Concerns:

  • src/content/docs/data-apps/operate.md: Newly added unresolved VERIFY(Nikita) marker on line 26 fails auto-approve gate 3.
  • src/content/docs/data-apps/publish-and-share.md: Reworded alt text still names old labels (Modify with Kai, Copy app); deferred to reshoot branch.

Suggested reviewers: @keboola/docs

Nikita and others added 2 commits October 6, 2026 18:50
python-js-config.png in "Sync to your project" dated from July. It showed
the old Overview layout (a separate Authentication card, no App access
card), the Kai Agent Beta pill, and a Keboola-managed repository URL in a
section about a repository you host. A user's name appeared three times
in the Versions panel, which PRDCT-616 says to blur or crop.

The new image is the Git Repository card alone: Project URL, the Private
switch, Branch and Reload branches. The crop leaves out the top bar and
the Versions panel, so no names show. It now sits under step 3, the step
whose result it shows, indented as publish-and-share and lock-version do.

Step 3 is in click order: Load branches, the Branch field, save. It adds
that the button reads Reload branches once the branches have loaded,
which is what the screenshot shows. The alt text describes the card.

Source: docs-manual-app (App ID 74022487, config
01m3vxjspktqh2tbhmn0kzyese) in project 264 on europe-west3, repository
keboola/titanic-python-app, branch main, never deployed. Headless
Playwright with the saved session, build bundle.BeQYTX6g.js ->
app-DYO4ae3t.js, 1100 px viewport at 2x, crop = card + 16 px.

The card loaded collapsed. The only UI action was expanding it with a
click() from JS, so the mouse never moved and nothing has focus. The
Branch combobox stayed closed. Nothing was saved (versions are still #1
to #3) and nothing was deployed.

DOM on 2026-10-06: the button text is "Reload branches" (uppercased by
CSS), Private is a switch with aria-checked=false, Project URL is
https://github.com/keboola/titanic-python-app, Branch is main.

Load branches as the first label, and its change on load, come from the
UI code of 2026-10-01. No app in project 264's production branch has a
repository without a branch (kbagent config list, 2026-10-06), so the
comment carries a VERIFY(Nikita).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
app-actions-menu.png was shot on 1 October, when the header button read
Open App. The UI renamed it Open on 2 October, so the shot and its alt
text on publish-and-share and reference no longer matched the text
around them (#1159). The review bot flagged both on this PR.

Retaken on 6 October in project 264 (europe-west3), UI build
kbc-ui/bundle.BeQYTX6g.js (Last-Modified 06 Oct 11:46 GMT), on the same
app as before: Toy Store Sales Dashboard, App ID 74016144, deployed and
stopped (GET data-science /apps/74016144 said stopped before and after).
Headless Playwright with the saved session. The only click was the ⋮
(More actions) trigger, closed with Escape. Same framing as the
1 October shot: 1100 px viewport at 2x, cropped to the breadcrumb,
header, tabs and the open menu (Duplicate with Kai, Automate, Debug mode,
Delete app). The top bar is cropped out, and the Versions panel's names
were blurred before the shot and fall outside the crop. Mean luma 242.7.

Source: OpenDataApp.tsx (TerminateDataApp-DvAPVWPU.js.map) labels the
header button Open, tooltip "Open the production app in a new tab". The
data-apps sources in this build match 2 October's bundle.DZIl0CMv.js
byte for byte, except Builder/kaiPrompts.ts, which adds two Kai prompts
for drafts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Streamlit page's "Create your first Streamlit app" (as #1167 left it)
describes the create flow in its own words, including the rare layouts
that getting-started's "Create an app manually" (#1166) also covers.
Keep the Streamlit steps here and send the rare layouts there:

- Old steps 1 and 2 become one step in getting-started's words: open Apps
  from the left navigation, click Create app, then under Other ways to
  start click Create a Streamlit app, the small link below the list. The
  step names the Create Streamlit app dialog it opens, so a reader whose
  Create app opens that dialog straight away knows where they are. A
  reader who can't find the button or the link follows the link to
  getting-started and comes back for step 2. Getting-started covers the
  Apps page of a project with no apps, the older single-tenant layout and
  the Streamlit-only stack, with its own VERIFY(Nikita) and VERIFY(Jordan)
  notes. The VERIFY(Jordan) comment on this page leaves with the
  sentences it flagged.
- Logged deletion: the old text named the single-tenant card "Streamlit
  App". Getting-started says "a card per stack" and names its Create
  Streamlit app button, which is what the reader clicks.
- The naming step adds that the app opens marked Not Deployed.
- The URL prefix step says the App access card shows the address the app
  gets once it's deployed: a new app's card carries a "No code yet" or
  "Not deployed yet" notice above that field.
- custom-data-app-url.png is cropped to the App URL field and its hint,
  pixel for pixel from #1167's shot, which showed a deployed app's card
  (Open button, OIDC). The App URL row looks the same on deployed and
  never-deployed apps; the alt text follows the crop.
- The Deploy step links to getting-started for the wizard's fields and
  for opening the app once it runs.
- Old steps 4 to 6 are renumbered 3 to 5.

The link target's new text arrives with #1166; on this branch's parent
getting-started still has the July section. Merge #1166 before this.

Checked read-only in project 264 on 6 Oct 2026 (kbc-ui bundle.BeQYTX6g.js,
newer than the 2 Oct builds): the Create app screen (data-apps/new) has
Other ways to start with two cards and the Create a Streamlit app link
below them; the link opens "Create Streamlit app" with Name prefilled
"New App", Description (optional), Folder (optional) and Create app (the
dialog was closed, nothing created); apps that never ran show the Not
Deployed badge and "Not deployed yet. Deploy it to get an address you can
share."; Code Source offers Git Repository and Code. #1167's
custom-data-app-url.png was pixel-identical to today's App access card of
docs-test-oidc-google before the crop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…amlit steps

Two reviewer findings from the Streamlit create-steps follow-up, which
now links to this section for the rare layouts:

- The VERIFY(Jordan) under step 2 named only the single-tenant layout.
  Step 2 also says that where only Streamlit is offered, Create app opens
  the Streamlit dialog straight away, which is known from the UI code of
  1-2 Oct too. The Streamlit page's VERIFY used to name both and is gone in
  the follow-up, so this one now does.
- The Streamlit bullet linked to the top of the Streamlit page. It now
  lands on "Create your first Streamlit app" there. Those steps describe
  today's flow once #1167 is in; before that the link lands on the old
  steps, which were one scroll below the old target anyway.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PRDCT-692: say when visiting a sleeping app no longer wakes it
PRDCT-692: reshoot the Apps screenshots against today's UI
PRDCT-692: describe today's Create app screen in Create an app manually

@eruveo eruveo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quick visual review looks good, this will be changing again soon i think

PRDCT-692: point "Share with your team" at the App access card
PRDCT-692: reshoot the Streamlit screenshots and drop stray Apps images
PRDCT-692: point the Streamlit create steps at Create an app manually
Nikita and others added 2 commits October 7, 2026 18:50
An app created with a Repository URL and no branch shows Load branches
and no Branch field; after loading, the Branch field appears next to
Reload branches (project 264, 2026-10-07, bundle.KLJ3B_2i.js).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PRDCT-692: reshoot the Git Repository screenshot on Build locally
Nikita and others added 2 commits October 8, 2026 00:18
No code yet with Deploy disabled, Not deployed yet once a URL is saved,
Add Code, Main File Path's streamlit_app.py default and Load branches
all checked on temporary apps in project 264 (2026-10-07,
bundle.KLJ3B_2i.js); the page text already matched.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n-labels

# Conflicts:
#	public/data-apps/lock-streamlit-version/code-deployment/update-requirements.png
#	public/data-apps/streamlit/lock-update-requirements.png
…markers

Measured on a temporary app in project 264 (2026-10-08): a single failed
start of a stopped app sets autoRestartEnabled to false, and a visit gets
"This app is not running" without waking it. Start after the fix turns
waking back on, and a visit after Pause app wakes the app. A failed
Redeploy of a running app keeps the old version up. Operate and
Troubleshooting said "several failed starts in a row"; they now say one
failed start is enough, and that a manual Start restores waking.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Iamfle4ka
Iamfle4ka merged commit 17fb78f into main Oct 8, 2026
3 checks passed
@Iamfle4ka
Iamfle4ka deleted the PRDCT-692-apps-action-labels branch October 8, 2026 15:22

This branch was successfully deployed

1 active deployment
Preview — 7005a34e Deployed Oct 8, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-needs-human agent-profile:connection-docs apps-ga Apps GA on 1 Oct 2026 — docs work tracked under AJDA-3380

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants