Commit e08a892
Eric Bower
·
2026-05-09 12:51:40 -0400 EDT
parent fc52491
docs: copy
1 files changed,
+23,
-19
+23,
-19
1@@ -384,6 +384,7 @@ p { margin-bottom: 1rem; }
2 .cta-section h2 {
3 font-size: 1.8rem;
4 margin-bottom: 0.5rem;
5+ display: block;
6 }
7
8 .cta-section .subtitle {
9@@ -640,13 +641,13 @@ code {
10 <div> </div>
11 <div><span class="comment"># These run in parallel — no config needed</span></div>
12 <div><span class="cmd">zmx run lint docker run golangci-lint run</span></div>
13- <div><span class="output"> TODO: add example output</span></div>
14+ <div><span class="info"> → started session: ci.myrepo.lint</span></div>
15 <div> </div>
16 <div><span class="cmd">zmx run test go test ./...</span></div>
17- <div><span class="output"> TODO: add example output</span></div>
18+ <div><span class="info"> → started session: ci.myrepo.test</span></div>
19 <div> </div>
20- <div><span class="cmd">zmx run build to build -o bin/pici .</span></div>
21- <div><span class="output"> TODO: add example output</span></div>
22+ <div><span class="cmd">zmx run build go build -o bin/pici .</span></div>
23+ <div><span class="info"> → started session: ci.myrepo.build</span></div>
24 <div> </div>
25 <div><span class="comment"># Wait for all to finish</span></div>
26 <div><span class="cmd">zmx wait "*"</span></div>
27@@ -812,17 +813,24 @@ code {
28 <div class="terminal-body">
29 <div><span class="comment">--- docker-compose.yml ---</span></div>
30 <div>services:</div>
31- <div> api:</div>
32- <div> image: myapp:latest</div>
33- <div> labels:</div>
34- <div> pico.http.expose: "true"</div>
35- <div> pico.http.host: "api.myapp.pico.sh"</div>
36+ <div> echo:</div>
37+ <div> build: .</div>
38+ <div> networks:</div>
39+ <div> - default</div>
40+ <div> - pdeploy-ingress</div>
41+ <div> labels:</div>
42+ <div> traefik.enable: true</div>
43+ <div> traefik.http.routers.echo.rule: Host(`echo-<user>.apps.pico.sh`)</div>
44 <div> </div>
45- <div><span class="prompt">$ </span><span class="cmd">git remote add deploy ssh://deploy.pico.sh/myapp</span></div>
46- <div><span class="prompt">$ </span><span class="cmd">git push deploy main</span></div>
47+ <div>networks:</div>
48+ <div> pdeploy-ingress:</div>
49+ <div> external: true</div>
50+ <div> </div>
51+ <div><span class="prompt">$ </span><span class="cmd">git remote add pdeploy ssh://deploy.pico.sh/user/project.git</span></div>
52+ <div><span class="prompt">$ </span><span class="cmd">git push pdeploy main</span></div>
53 <div> </div>
54 <div><span class="info">→ containers deployed</span></div>
55- <div><span class="info">→ api.myapp.pico.sh is live</span></div>
56+ <div><span class="info">→ echo-<user>.apps.pico.sh is live</span></div>
57 </div>
58 </div>
59 </div>
60@@ -838,7 +846,6 @@ code {
61 <h2>Built for terminals, agents, and humans.</h2>
62 <div class="feature-grid">
63 <div class="feature-card">
64- <div class="icon">🤖</div>
65 <h3>AI-Agent Friendly</h3>
66 <p>
67 Terminal workflows, rsync + SSH pubsub, JSONL status streams — everything an agent
68@@ -848,7 +855,6 @@ code {
69 </p>
70 </div>
71 <div class="feature-card">
72- <div class="icon">🔌</div>
73 <h3>SSH-First</h3>
74 <p>
75 No HTTP APIs to expose. No webhooks to configure. No OAuth tokens to manage.
76@@ -857,7 +863,6 @@ code {
77 </p>
78 </div>
79 <div class="feature-card">
80- <div class="icon">📄</div>
81 <h3>Static Site Artifacts</h3>
82 <p>
83 Build artifacts are plain HTML + CSS. No JavaScript. No app server. No build step.
84@@ -866,7 +871,6 @@ code {
85 </p>
86 </div>
87 <div class="feature-card">
88- <div class="icon">🔐</div>
89 <h3>Build Attestation</h3>
90 <p>
91 Automatic provenance baked into every job: runner hostname, OS, arch, repo, branch,
92@@ -972,8 +976,9 @@ code {
93 </footer>
94
95 <script>
96-// Auto-generate anchor links for all h2 elements
97+// Auto-generate anchor links for all h2 elements (skip CTA)
98 document.querySelectorAll('h2').forEach(h2 => {
99+ if (h2.closest('.cta-section')) return;
100 const section = h2.closest('section, [id]');
101 if (section && section.id) {
102 const a = document.createElement('a');
103@@ -994,8 +999,7 @@ function handleSignup(e) {
104 e.preventDefault();
105 const form = e.target;
106 const email = form.email.value;
107- // TODO: wire up to your backend / pipe.pico.sh / etc.
108- // For now, just show a confirmation
109+ // wire up to your backend / pipe.pico.sh / etc.
110 form.innerHTML = `<p style="color: var(--green); padding: 0.7rem 0;">✓ You're on the list, ${email}.</p>`;
111 }
112 </script>