Commit e08a892
Eric Bower
·
2026-05-09 12:51:40 -0400 EDT
parent fc52491
docs: copy
1 files changed,
+23,
-19
+23,
-19
| ... | ... | @@ -384,6 +384,7 @@ p { margin-bottom: 1rem; } | |
| 384 | 384 | .cta-section h2 { | |
| 385 | 385 | font-size: 1.8rem; | |
| 386 | 386 | margin-bottom: 0.5rem; | |
| 387 | + | display: block; | |
| 387 | 388 | } | |
| 388 | 389 | ||
| 389 | 390 | .cta-section .subtitle { |
| ... | ... | @@ -640,13 +641,13 @@ code { | |
| 640 | 641 | <div> </div> | |
| 641 | 642 | <div><span class="comment"># These run in parallel — no config needed</span></div> | |
| 642 | 643 | <div><span class="cmd">zmx run lint docker run golangci-lint run</span></div> | |
| 643 | - | <div><span class="output"> TODO: add example output</span></div> | |
| 644 | + | <div><span class="info"> → started session: ci.myrepo.lint</span></div> | |
| 644 | 645 | <div> </div> | |
| 645 | 646 | <div><span class="cmd">zmx run test go test ./...</span></div> | |
| 646 | - | <div><span class="output"> TODO: add example output</span></div> | |
| 647 | + | <div><span class="info"> → started session: ci.myrepo.test</span></div> | |
| 647 | 648 | <div> </div> | |
| 648 | - | <div><span class="cmd">zmx run build to build -o bin/pici .</span></div> | |
| 649 | - | <div><span class="output"> TODO: add example output</span></div> | |
| 649 | + | <div><span class="cmd">zmx run build go build -o bin/pici .</span></div> | |
| 650 | + | <div><span class="info"> → started session: ci.myrepo.build</span></div> | |
| 650 | 651 | <div> </div> | |
| 651 | 652 | <div><span class="comment"># Wait for all to finish</span></div> | |
| 652 | 653 | <div><span class="cmd">zmx wait "*"</span></div> |
| ... | ... | @@ -812,17 +813,24 @@ code { | |
| 812 | 813 | <div class="terminal-body"> | |
| 813 | 814 | <div><span class="comment">--- docker-compose.yml ---</span></div> | |
| 814 | 815 | <div>services:</div> | |
| 815 | - | <div> api:</div> | |
| 816 | - | <div> image: myapp:latest</div> | |
| 817 | - | <div> labels:</div> | |
| 818 | - | <div> pico.http.expose: "true"</div> | |
| 819 | - | <div> pico.http.host: "api.myapp.pico.sh"</div> | |
| 816 | + | <div> echo:</div> | |
| 817 | + | <div> build: .</div> | |
| 818 | + | <div> networks:</div> | |
| 819 | + | <div> - default</div> | |
| 820 | + | <div> - pdeploy-ingress</div> | |
| 821 | + | <div> labels:</div> | |
| 822 | + | <div> traefik.enable: true</div> | |
| 823 | + | <div> traefik.http.routers.echo.rule: Host(`echo-<user>.apps.pico.sh`)</div> | |
| 820 | 824 | <div> </div> | |
| 821 | - | <div><span class="prompt">$ </span><span class="cmd">git remote add deploy ssh://deploy.pico.sh/myapp</span></div> | |
| 822 | - | <div><span class="prompt">$ </span><span class="cmd">git push deploy main</span></div> | |
| 825 | + | <div>networks:</div> | |
| 826 | + | <div> pdeploy-ingress:</div> | |
| 827 | + | <div> external: true</div> | |
| 828 | + | <div> </div> | |
| 829 | + | <div><span class="prompt">$ </span><span class="cmd">git remote add pdeploy ssh://deploy.pico.sh/user/project.git</span></div> | |
| 830 | + | <div><span class="prompt">$ </span><span class="cmd">git push pdeploy main</span></div> | |
| 823 | 831 | <div> </div> | |
| 824 | 832 | <div><span class="info">→ containers deployed</span></div> | |
| 825 | - | <div><span class="info">→ api.myapp.pico.sh is live</span></div> | |
| 833 | + | <div><span class="info">→ echo-<user>.apps.pico.sh is live</span></div> | |
| 826 | 834 | </div> | |
| 827 | 835 | </div> | |
| 828 | 836 | </div> |
| ... | ... | @@ -838,7 +846,6 @@ code { | |
| 838 | 846 | <h2>Built for terminals, agents, and humans.</h2> | |
| 839 | 847 | <div class="feature-grid"> | |
| 840 | 848 | <div class="feature-card"> | |
| 841 | - | <div class="icon">🤖</div> | |
| 842 | 849 | <h3>AI-Agent Friendly</h3> | |
| 843 | 850 | <p> | |
| 844 | 851 | Terminal workflows, rsync + SSH pubsub, JSONL status streams — everything an agent |
| ... | ... | @@ -848,7 +855,6 @@ code { | |
| 848 | 855 | </p> | |
| 849 | 856 | </div> | |
| 850 | 857 | <div class="feature-card"> | |
| 851 | - | <div class="icon">🔌</div> | |
| 852 | 858 | <h3>SSH-First</h3> | |
| 853 | 859 | <p> | |
| 854 | 860 | No HTTP APIs to expose. No webhooks to configure. No OAuth tokens to manage. |
| ... | ... | @@ -857,7 +863,6 @@ code { | |
| 857 | 863 | </p> | |
| 858 | 864 | </div> | |
| 859 | 865 | <div class="feature-card"> | |
| 860 | - | <div class="icon">📄</div> | |
| 861 | 866 | <h3>Static Site Artifacts</h3> | |
| 862 | 867 | <p> | |
| 863 | 868 | Build artifacts are plain HTML + CSS. No JavaScript. No app server. No build step. |
| ... | ... | @@ -866,7 +871,6 @@ code { | |
| 866 | 871 | </p> | |
| 867 | 872 | </div> | |
| 868 | 873 | <div class="feature-card"> | |
| 869 | - | <div class="icon">🔐</div> | |
| 870 | 874 | <h3>Build Attestation</h3> | |
| 871 | 875 | <p> | |
| 872 | 876 | Automatic provenance baked into every job: runner hostname, OS, arch, repo, branch, |
| ... | ... | @@ -972,8 +976,9 @@ code { | |
| 972 | 976 | </footer> | |
| 973 | 977 | ||
| 974 | 978 | <script> | |
| 975 | - | // Auto-generate anchor links for all h2 elements | |
| 979 | + | // Auto-generate anchor links for all h2 elements (skip CTA) | |
| 976 | 980 | document.querySelectorAll('h2').forEach(h2 => { | |
| 981 | + | if (h2.closest('.cta-section')) return; | |
| 977 | 982 | const section = h2.closest('section, [id]'); | |
| 978 | 983 | if (section && section.id) { | |
| 979 | 984 | const a = document.createElement('a'); |
| ... | ... | @@ -994,8 +999,7 @@ function handleSignup(e) { | |
| 994 | 999 | e.preventDefault(); | |
| 995 | 1000 | const form = e.target; | |
| 996 | 1001 | const email = form.email.value; | |
| 997 | - | // TODO: wire up to your backend / pipe.pico.sh / etc. | |
| 998 | - | // For now, just show a confirmation | |
| 1002 | + | // wire up to your backend / pipe.pico.sh / etc. | |
| 999 | 1003 | form.innerHTML = `<p style="color: var(--green); padding: 0.7rem 0;">✓ You're on the list, ${email}.</p>`; | |
| 1000 | 1004 | } | |
| 1001 | 1005 | </script> |