Skip to content

[Feat]: one-click deploy with draft pre-fill and live service status#389

Merged
rorychatt merged 5 commits intomainfrom
feat/sliplane-deploy-form-url-params
Mar 6, 2026
Merged

[Feat]: one-click deploy with draft pre-fill and live service status#389
rorychatt merged 5 commits intomainfrom
feat/sliplane-deploy-form-url-params

Conversation

@ArtemLazarchuk
Copy link
Collaborator

Summary

Improves the Sliplane deploy flow with structured draft data, optional server/project pre-fill, and more accurate service status from events.

Changes

Deploy flow

  • DeployDraft – Store and pass a full draft (repo URL, branch, docker context, dockerfile path) instead of only the repo URL. Parse GitHub URLs including /tree/{branch}/{subpath} into branch and context.
  • RepoCaptureFilter – On GET /sliplane-deploy-app?repo=..., parse the URL and save a DeployDraft via SaveDraft() instead of a raw string.
  • DeploymentDraftStore – Store DeployDraft; add ReadAndClearDraft() for one-shot pre-fill and ParseGitHubUrl() for GitHub repo/tree URLs.
  • SliplaneDeployApp – Resolve draft from args or ReadAndClearDraft(). When draft is present, load first server and project via UseQuery and pass their IDs to DeployView. On refresh or opening Deploy without repo, do not pre-fill (form starts blank).
  • DeployView – Accept DeployDraft and optional defaultServerId / defaultProjectId. Initialize form from draft (name, branch, context, dockerfile, repo) and pre-fill server/project when provided. Add smart defaults (e.g. healthcheck /, auto-deploy, network). Remove persistent draft sync; keep one-shot pre-fill only. Derive service name from docker context or repo.

Services list

  • ServicesView – For services with status pending, poll events every 5s and show error or live based on latest event (error/fail vs success/deployed). Refactor BuildServiceCards to take ctx, client, apiToken and use shared GetStatusVisual() for consistent status icon and label.

Technical notes

  • Pre-fill of server/project only when draft exists (e.g. coming from “Host on Sliplane” button); refresh or sidebar open leaves form empty.
  • Pending status uses UseQuery with RefreshInterval and KeepPrevious for events; error/success detection via event type and message.
sliplane-manage_2.mp4

Example:

Host your Ivy app on Sliplane

Code:

<p align="center">
  <a href="https://YOUR-DEPLOY-APP-DOMAIN/sliplane-deploy-app?repo=https://github.com/OWNER/REPO/PATH">
    <img src="https://raw.githubusercontent.com/Ivy-Interactive/Ivy-Examples/main/project-demos/sliplane-manage/Assets/deploy-button.svg"
         alt="Host your Ivy app on Sliplane" />
  </a>
</p>

@ArtemLazarchuk ArtemLazarchuk requested a review from rorychatt March 5, 2026 21:12
@ArtemLazarchuk ArtemLazarchuk self-assigned this Mar 5, 2026
@rorychatt rorychatt merged commit 4341078 into main Mar 6, 2026
79 checks passed
@rorychatt rorychatt deleted the feat/sliplane-deploy-form-url-params branch March 6, 2026 09:35
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.

2 participants