carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1{{define "trash"}}{{template "top" .}}
2{{if .Flash}}<p class="banner">{{.Flash}}</p>{{end}}
3{{if .FlashErr}}<p class="banner error">{{.FlashErr}}</p>{{end}}
4<h1>Trash</h1>
5{{if .Trashed}}
6<p>A deleted app serves nothing and is hidden from the app list, but everything it had —
7 its releases, its channels, its history — is still here. Restoring one brings all of that
8 back with <strong>no routes</strong>: run <code>carlos add &lt;host&gt;</code> afterwards to
9 serve it again.</p>
10<p class="small">A temporary app (named tmp-...) needs no carlos add: its instance records are kept
11 in the Trash, so hosts serve it again on their own once it is restored.</p>
12<p class="small">Left alone, the platform destroys a trashed app on its own on the date in the last column:
13 30 days after it was deleted, or 3 days for a temporary app. That is permanent. The objects go, and the
14 name is free for anyone in this account to claim again.</p>
15<div class="tablewrap">
16<table>
17 <tr><th>App</th><th>Deleted by</th><th>Deleted</th><th>Destroyed on</th><th></th></tr>
18 {{range .Trashed}}
19 <tr>
20 <td>{{.App}}</td>
21 <td>{{emptyOrDash .Actor}}</td>
22 <td>{{fmtTime .DeletedAt}}</td>
23 <td>{{fmtTime .PurgesAt}}</td>
24 <td>
25 <form method="post" action="{{$.Base}}/trash/restore">
26 <input type="hidden" name="csrf" value="{{$.CSRF}}">
27 <input type="hidden" name="app" value="{{.App}}">
28 <button class="linkish" type="submit">Restore</button>
29 </form>
30 </td>
31 </tr>
32 {{end}}
33</table>
34</div>
35{{if .IsOwner}}
36<h2>Delete now</h2>
37<p class="small">Deleting now does what the wait would do on its own, immediately and
38 permanently: every object the app owns is destroyed and its name is freed. There is no undo
39 and no copy anywhere. Type the app's name to confirm, then confirm with your passkey. A
40 signed-in browser on its own is not enough. An app still marked as production cannot be
41 permanently deleted, whatever you type. Turn its safety delay off first.</p>
42{{range .Trashed}}
43<form class="signin" method="post" action="{{$.Base}}/trash/delete">
44 <input type="hidden" name="csrf" value="{{$.CSRF}}">
45 <input type="hidden" name="app" value="{{.App}}">
46 <label class="visually-hidden" for="confirm-{{.App}}">Type {{.App}} to delete it permanently</label>
47 <input id="confirm-{{.App}}" type="text" name="confirm" placeholder="{{.App}}">
48 <button type="submit">Delete “{{.App}}” permanently</button>
49</form>
50{{end}}
51{{end}}
52{{else}}
53<p>Nothing here. An app deleted with <code>carlos apps delete</code> waits in this Trash,
54 restorable the whole time, until the platform destroys it: 30 days for most apps, 3 days for a
55 temporary one.</p>
56{{end}}
57{{template "bottom" .}}{{end}}
58