{{define "app_releases"}}{{template "top" .}} {{if .Flash}}
{{end}} {{if .FlashErr}}{{end}} {{template "appnav" .}}{{$.StatusCopy.NoInstances}}
{{else if not .Deployment.HasReportable}}—
{{else if not .Deployment.HasReportedVersion}}{{$.StatusCopy.NoVersion}}
{{else}}{{.Deployment.ReportingText}}
{{.Version}}{{$.StatusCopy.Partial}}
{{end}} {{end}} {{if .NextVersion}}{{.CandidateText}}
{{if and $.CanPromote $.IsOwner}} {{else if $.CanPromote}}Only an account owner can make it live.
{{end}} {{end}}Retention: the newest {{.RetentionKeep}} releases are kept; older releases not promoted, tagged, or recently shipped are pruned automatically.
{{end}} {{if .Versions}}| Version | Label | Kind | Built | {{if and .CanPromote (not .Detail.OneChannelPipeline)}}Promote | {{end}}|||
|---|---|---|---|---|---|---|---|
{{.Version}}{{if .Tag}} {{.Tag}}{{end}} |
{{if .Err}}
{{.Err}} | {{else}}{{if .Label}}{{.Label}}{{end}}{{if .Notes}}
notes{{.Notes}} |
{{.Kind}} | {{if .BuiltAt}}{{.BuiltAt}}{{else}}—{{end}} | {{end}} {{if and $.CanPromote (not $.Detail.OneChannelPipeline)}}{{end}} | ||
Nothing shipped yet. Ship your first release from your repo:
carlos ship --app {{.Detail.App}} --version $(git rev-parse --short HEAD) --target linux-arm64 <binary>
carlos ship --app {{.Detail.App}} --kind static --version v1 <site-dir>
Releases appear here once shipped, and get promoted to channels from this page.
{{end}} {{if .Detail.OneChannelPipeline}}| Channel | Version | Promoted | Goes live | ||||
|---|---|---|---|---|---|---|---|
| {{.Name}} | {{if .Err}}{{.Err}} | {{else}}{{.Version}}{{if .Tag}} {{.Tag}}{{end}} |
{{ago .PromotedAt}} | {{if .BakedUntil.IsZero}}live now{{else}}in {{until .BakedUntil}}{{end}}{{if .FastTrack}} · delay skipped{{end}} | {{end}}{{if and $.CanPromote .HasHistory (not .Err) (or $.Detail.Pipeline $.IsOwner (ne .Name "stable"))}} {{end}} | ||
Go-live times are estimates — each copy keeps its own clock. Rollbacks skip the delay.
{{else}}No channels yet — ship a release, then promote it below to create the first one.
{{end}} {{template "canaries" .}} {{template "apptags" .}}This app has one channel — carlos deploy ships straight to it, with no
promotion step in between. Set up a pipeline to
add more.
Deploys are unavailable on this console — it has no signing key.
{{end}} {{template "bottom" .}}{{end}} {{/* The canary section and the tag list are NOT channel vocabulary, so both app shapes get them: canary/* lives outside the pipeline entirely and is always allowed (release pipelines v2 §2), and a tag names a release, not a rung. Shared through one definition so the two shapes cannot drift into different canary controls. */}} {{define "canaries"}}| Name | Channel | Version | Created | URL | ||||
|---|---|---|---|---|---|---|---|---|
| {{.Name}} | {{.Channel}} |
{{if .Err}}
{{.Err}} | {{else}}{{.Version}} |
{{ago .PromotedAt}} | {{if .Hosts}}{{range .Hosts}}{{.}} {{end}}{{else}}no host yet{{end}} | {{end}}{{if $.CanPromote}} {{end}} | ||
No test versions — a test version is a private copy serving one chosen build immediately, with no safety delay.
{{end}} {{if and .CanPromote .Versions}}Creates canary/<name> — a test version serving the chosen build immediately, no delay. It gets its own URL from an address that follows it:
{{.AttachEnable}}
{{.AttachCmd}}
This app has no addresses yet, so the first line sets one up under this account's platform subdomain. It comes live within a couple of minutes.
{{else}}{{.AttachCmd}}
The address comes live within a couple of minutes.
{{end}} {{end}}{{end}} {{define "apptags"}}{{if .Tags}}{{.Version}} — {{.Release}}{{if .Actor}} · {{.Actor}}{{end}}{{.Changelog}}
Puts the previous build back in front of everyone straight away — rollbacks skip the safety delay. You'll be asked to confirm, and told which build it lands on.
{{range .}} {{end}} {{end}}{{end}}{{end}}