Skip to content

feat(ui): register a Tapis application from the model form - #369

Merged
wmobley merged 2 commits into
developfrom
feat/dynamo-register-tapis-app
Oct 29, 2026
Merged

wmobley merged 2 commits into
developfrom
feat/dynamo-register-tapis-app

Conversation

@wmobley

@wmobley wmobley commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

Adds a Register a new application dialog to the model form's component location section. The author pastes or uploads an app.json, reviews what it will create, and confirms. DYNAMO creates the app in Tapis, makes it public, selects it, and offers to fill the form's inputs and parameters from it.

Design: docs/design/2026-10-29-dynamo-tapis-app-registration.md, reviewed by security and architecture reviewers.

  • The browser calls Tapis directly with the user's own token. The model catalog API is not involved and is unchanged.
  • The picker's list and read now go to Tapis directly too. Behaviour change: the list uses listType=ALL and limit=-1, so public apps from other users appear (31 to 164 apps on the dev tenant). Without limit=-1 Tapis stops at 100.
  • Checks before sending: valid JSON, id/version/image present, no / in id or version, id is not share, image has a version tag (not latest), no tenant/isPublic/deleted keys, owner only as the ${apiUserId} macro. They guide the author and are not a security boundary; Tapis is the authority.
  • Create and share are separate calls. If sharing fails the app exists and is private; the dialog says so and retries only the share.
  • Warnings, not blocks: environment variables (the app is public), unnamed inputs (DYNAMO cannot match them), uncommon fields.

Tests: 13 dialog tests, library tests for every check and request, existing section tests moved to the direct URLs. Full suite 131 files / 1251 tests, tsc and eslint clean. Removing the share step on purpose fails exactly the two share tests.

Not done here: the guide update (waits on the cookbook guide PR #368), a dialog screenshot (needs the deployed dev site), and a live create on the dev tenant (needs approval at run time). The model catalog API's two Tapis routes still build the Tapis URL from an unchecked tenant; that is a separate issue.

Add a dialog to the component location section that creates a Tapis
application from a pasted or uploaded app.json and makes it public.
The browser calls Tapis directly with the signed-in user's token; the
model catalog API is not involved. The picker now lists and reads apps
from Tapis directly, with listType=ALL and limit=-1 so public apps
appear.
@vercel

vercel Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
monorepo Ready Ready Preview Oct 29, 2026 10:20pm UTC

@wmobley
wmobley merged commit fb0752e into develop Oct 29, 2026
35 checks passed

This branch was successfully deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant