Repository navigation
docs(apps-dataapi): re-verify on the Docker demo stack - #22
Merged
Merged
Conversation
Data Apps now run on the demo stack, so the Apps pages describe the real editor, viewer, publishing, versions and sharing instead of the "apps origin not configured" state. Data API pages are re-shot against seeded endpoints, clients and traffic, with re-measured rate-limit and expiry behaviour. - add idempotent seeds: scripts/seed-apps.mjs, scripts/seed-data-api.mjs (TRAFFIC=1 fills Activity) - move Apps shots to scripts/shots/apps.mjs; reset the viewport per shot - replace edit-unavailable/view-unavailable with editor, viewer, viewer-trends, restore-dialog and not-published screenshots Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
viethqb
force-pushed
the
docs/demo-apps-dataapi
branch
from
October 20, 2026 15:07
ab3ec71 to
3c44f6a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Re-verified the Apps (
platform/explore/apps/*) and Data API (platform/data-api/**) pages against the running Docker demo stack.apps/+explore-apps), of which 5 are new:editor,viewer,viewer-trends,restore-dialog,not-published. 25 Data API (20 underdata-api/+ 5data-api-*). The staleapps/edit-unavailable.pngandapps/view-unavailable.pngare removed; nothing references them any more.egret_marimoand the gateway answered (run from an app), Altair vsplotly.express, publishing and the 409 race, the stale Versions dialog, restore, sharing with Blocked and expiry, run-as-connection-user ontrino-demo, and the viewer. The 14 Data API pages get updated counts, menus, alt text, re-measured rate limits (per client), expired clients, demo-stack URLs, the OpenAPI paths, and a correction on the Access tab's "Revoking will not remove access" note.scripts/seed-apps.mjs(4 apps, 4 versions with restores, 3 shares, a folder, a bookmark) andscripts/seed-data-api.mjs(3 service accounts, 6 clients including a revoked and an expired one, 8 endpoints covering live, draft and disabled, a transform, a script statement, a breaking v2 and a breaking unpublished draft).TRAFFIC=1makes about 140 real calls (cache hits, 400/401/403/404/409 and a 429 burst), so Activity has data. Apps shots move toscripts/shots/apps.mjs, and each shot resets the viewport (screenshots.mjs reuses one page).Still not verifiable, and why
data_access_denied(KI-030). They need a governed or per-user connection. Thedefaultworkspace is shared by every area, so I did not add or change a connection.trino-demoruns every query asegret(SELECT current_userfrom an app answeredegret), so all viewers see the same rows. The page says so.Build:
npm run buildpasses. The shared webpack cache picked up another worktree's files, so I built withDOCUSAURUS_NO_PERSISTENT_CACHE=1.Backlog (apps-dataapi)
New rows
killbinary (/bin/killand/usr/bin/killare both missing), soSubprocessPodLauncher::kill_group(crates/egret-apps/src/subprocess_pod.rs) cannot signal the process group. When the idle reaper callsstop_run, it then waits forever onchild.wait()while it holds therunning_runmutex, and everyensure_runblocks behind that lock. Edit pods use a separate lock and keep working. Steps: open any published app as a viewer. More than 5 minutes later, open another app, for exampleCustomer lookup.POST …/ticketreturns 200, butGET http://apps.localtest.me:18080/r/<key>/never answers (aborted after 90 s and 180 s), and no new/var/lib/egret-apps/<key>/directory is created. The run processes from the first open (egret_marimo.launcher --internal run, pids 80/96 after the 12:40 restart) are still alive at 12:50, and the log has no "stopped an idle app run pod". The hang was seen twice, before and after a coordinator restart of egret. Fix: install procps (or usenix::sys::signal::killpg), and do not hold the mutex acrosskill_group(the guard ofif let Some(mut r) = self.running_run.lock().await.remove(&key)lives through the block). Edit pods (stop_edit, idle 30 min) almost certainly have the same problem.usePublishApp(frontend/src/api/apps.ts:119) invalidates the app and the list but notgetAppsVersionsQueryKey, whileuseRestoreVersiondoes. Steps: create app → Versions (empty) → Ctrl+S, wait, Publish draft rev 2 → toast Published version 1 → Versions still says Nothing has been published yet. → reload →v1.409 {"error":"the draft changed since it was read","current_revision":2}with the toast The draft changed while you were publishing…, because the header re-reads the draft revision only every 5 s (useApp(..., {refetchMs})). The author did nothing wrong and has to wait and press again. Steps: new app → add cell1 + 1→ Ctrl+S → press Publish draft rev 1 within about 0.3 s → 409. About 7 s later the button reads Publish draft rev 2 and publishing works./api/lsp/health(403), so the console shows "Language server initialization failed". It also refuses/api/packages/sandbox,/api/datasources/discoverand/api/usage(403), so marimo's package and data-source panels do not work and every editor load logs 5 or 6 console errors. This is by design for the LSP (demo guide), but nothing in the editor tells the author. Steps: open any app's editor and watch the network log.plotly(7.1.0) andaltairbut notnumpyorpandas. Soimport plotly.expressfails (Plotly Express requires numpy to be installed), and anything that calls.to_pandas()fails too. Only Altair (mo.ui.altair_chart) andplotly.graph_objectswith lists work. Steps:docker exec egret-demo-egret-1 python3 -c "import plotly.express";apps-image/constraints.txthas no numpy.egret_session(host-only onegret.localtest.me) with no__Host-prefix. Author code served from the siblingapps.localtest.mecan setDomain=localtest.mecookies that the browser then sends to Egret (cookie tossing / session fixation). Demo-only in practice (production is https), but the demo stack is what new users run. Steps: the cookie names in a signed-in storage state areegret_session,egret_csrf; the demo guide "Safety" section.finance-dashboardandorders-reporting-botboth carry the note. Revokefinance-dashboard(DELETE …/grants/{sa}) → its next call answers403 not_granted, and/orders/by-statusdisappears from its OpenAPIpaths. The inherited-access check seems to read the account's own OpenAPI document, which lists the endpoint because of the grant.POST …/ticket200) andGET …/apps/{id}200, butGET /api/ws/{ws}/appsanswers 403. They have no list or workspace switcher entry to find the app from, so it can only be opened by direct URL. Steps: share Revenue explorer withmember-sso@egret.local(not a member ofdefault) → as member-sso: list 403, detail 200, ticket run 200, ticket edit 403./explore/default/apps, accessible names of the⋯buttons./explore/default/data-api/clients/newvs/endpoints/new(screenshotsdata-api/service-account-new,data-api/endpoint-new).restored_from. Opening a draft-only app shows the raw server detail in lower case under the title (the app has no published version to run; publish it first). Steps: Revenue explorer → Versions (v3, v4); open Shipping modes by URL.member-sso@egret.localhad already been added todata-science-labby another area and landed in its SQL Lab. Seen first-hand by the demo-stack guide author.schedule_report_format_matches_targetCHECK (migration 0112;crates/egret-automation/src/runner.rsbuild_chart_report). The report editor should say so before save. From the demo guide and source; the UI was not exercised by this area (Alerts & reports belong to another area).Rows to update or close
apps/editor,apps/viewer,apps/viewer-trends,apps/versions-dialog). The only remaining blocker is the viewer hang, KI-NEW-1.admin@egret.local(screenshotdata-api/endpoint-versions). The Apps Versions dialog still showsby 8a66d837.zz/probe-awith its draft path changed tozz/probe-banswers 404not_foundon the old path and 200 withmeta.version1 on the new one, before any publish (the probe endpoint was deleted afterwards).data-api/endpoint-versions,data-api/clients-listexpires 9 months ago,data-api/endpoint-params,apps/create-dialog; the Query tab still opens with Database and parameters collapsed).egret initprints the admin password). Not re-observed: the restarted container's log has no init output.Page text now stale outside this area
platform/known-issues.md"Not verified" paragraph lists the Data Apps editor and viewer.docs/en/guides/demo-stack.md) gives load times of 7.4 s (first editor load) and 4.8 s (first view). Measured here: first editor load 15 to 18 s, first view 20 to 60 s, and a cold first view once over 70 s. It does not mention KI-NEW-1, nor thatplotly.expressis unusable.platform/workspace-settings/databases: the Apps and Data API pages rely on the Per-user delegation and Run queries as the logged-in user switch names. Please keep them in sync if that page renames them.🤖 Generated with Claude Code