Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
a48f52f
fix(site): full-sweep pass 3 — nav chain repair, retention counterwei…
teovl Jul 9, 2026
2aa575f
chore(plain): auto-regenerate stale machine-UI twins
github-actions[bot] Jul 9, 2026
f378fc7
ci: retrigger checks after plain-sync bot push
teovl Jul 9, 2026
6bd624a
feat(home): 'Two paths' section — the skill-injection choice, framed …
teovl Jul 9, 2026
e88944a
chore(plain): auto-regenerate stale machine-UI twins
github-actions[bot] Jul 9, 2026
9c2d31f
ci: retrigger checks after plain-sync bot push
teovl Jul 9, 2026
df324b2
feat(home): adopt the concept narratives — Network OS hero, 3-prop va…
teovl Jul 9, 2026
e95e8f8
chore(plain): auto-regenerate stale machine-UI twins
github-actions[bot] Jul 9, 2026
66510ed
ci: retrigger checks after plain-sync bot push
teovl Jul 9, 2026
18ade06
Sweep 4: fix every validated inconsistency site-wide
teovl Jul 10, 2026
b20a9aa
Add sentence-level claim audit ledger (167 pages, 16,608 sentences)
teovl Jul 10, 2026
61e20e0
Add autonomous claim-fix loop prompt
teovl Jul 10, 2026
da8eddb
loop prompt: SMS progress notifications with full URLs
teovl Jul 10, 2026
f35f11c
loop prompt: drain SMS inbox at iteration start
teovl Jul 10, 2026
fe41c09
loop prompt: standing goals + needs-user sections
teovl Jul 10, 2026
0364a14
audit-fix: docs/consent (33 false, 6 unverifiable resolved)
teovl Jul 10, 2026
9e45a7f
loop prompt: behavior-first fix policy (fix product, not just disclose)
teovl Jul 10, 2026
a49f8b8
audit-fix: consent telemetry — behavior-first (app_usage removed in w…
teovl Jul 10, 2026
1752d38
audit-fix: GA4 off /plain + set-mode disabled strong-promise copy
teovl Jul 10, 2026
77afafc
audit-fix: docs/cli-reference (21 false, 6 unverifiable resolved)
teovl Jul 10, 2026
931cc9d
audit-fix: docs/comparison-networking (13 false, 3 unverifiable resol…
teovl Jul 10, 2026
422448b
audit-fix: docs/comparison (10 false, 6 unverifiable resolved)
teovl Jul 10, 2026
ed69d83
audit-fix: docs/app-store (7 false, 2 unverifiable resolved)
teovl Jul 10, 2026
d01cbae
audit-fix: for/compatibility (16 false, 33 unverifiable resolved)
teovl Jul 10, 2026
d0af140
audit-fix: docs/enterprise-blueprints (24 false resolved)
teovl Jul 10, 2026
4f670ec
audit-fix: cookies (7 false, 4 unverifiable resolved)
teovl Jul 10, 2026
04aefbd
audit-fix: privacy (11 false, 37 unverifiable resolved)
teovl Jul 10, 2026
d8c9c41
audit-fix: docs/enterprise-identity (22 false resolved)
teovl Jul 10, 2026
8247051
audit-fix: enterprise-production blog (62 unverifiable resolved, hist…
teovl Jul 10, 2026
8201cff
audit-fix: docs/service-agents (16 false resolved)
teovl Jul 10, 2026
633bf02
audit-fix: for/setups/[slug] (56 unverifiable resolved + meta bug)
teovl Jul 10, 2026
36315b5
audit-fix: zero-dependency-encryption blog (15 false, 9 unverifiable)
teovl Jul 10, 2026
e0f51cf
audit-fix: docs/tags (15 false, 2 unverifiable resolved)
teovl Jul 10, 2026
bc39207
audit-fix: docs/gateway (15 false, 1 unverifiable resolved)
teovl Jul 10, 2026
e0c4879
audit-fix: github-com-alternatives blog (3 false, 43 unverifiable)
teovl Jul 10, 2026
e06e164
audit-fix: lightweight-swarm blog (9 false, 20 unverifiable)
teovl Jul 10, 2026
ad6c859
audit-fix: repo-wide batch — driver import/Connect/pub-sub across blogs
teovl Jul 10, 2026
8546b0e
audit-fix: benchmarking-http-vs-udp blog (4 false, 32 unverifiable)
teovl Jul 10, 2026
e799bbb
audit-fix: contributing-codebase-tour blog (9 false, 14 unverifiable)
teovl Jul 10, 2026
7cf5d62
audit-fix: zero-trust blog (4 false + roster/A2A corrections)
teovl Jul 10, 2026
63db34a
audit-fix: nat-traversal deep-dive blog (8 false, 12 unverifiable)
teovl Jul 10, 2026
d8495ce
audit-fix: 3 blogs (emergent-trust, openanp, build-multi-agent)
teovl Jul 10, 2026
c6770df
audit-fix: for/p2p (9 false, 6 unverifiable)
teovl Jul 10, 2026
3566c06
audit-fix: distributed-monitoring + marketplace blogs (11 false)
teovl Jul 10, 2026
7f4bff5
audit-fix: replace-webhooks + private-agent-network blogs (14 false)
teovl Jul 10, 2026
74d2945
audit-fix: 3 blogs (build-agent-swarm, replace-message-broker, encryp…
teovl Jul 10, 2026
a61ccab
audit-fix: 3 blogs (mcp-plus, build-openclaw, cloud-networking) — 20 …
teovl Jul 10, 2026
c84ece3
audit-fix: 3 blogs (pilot-vs-tcp, decentralized-networking, connect-a…
teovl Jul 10, 2026
3a00711
audit-fix: publish + enterprise-audit (11 false)
teovl Jul 10, 2026
d03ecc7
audit-fix: python-sdk + pubsub + networks docs (21 false)
teovl Jul 10, 2026
e668825
docs: fix backtick-dropped words in needs-user note
teovl Jul 10, 2026
2defabf
audit-fix: error-codes + pilot-director + messaging docs (18 false)
teovl Jul 10, 2026
e2993c3
audit-fix: getting-started + enterprise-rbac + webhooks docs (16 false)
teovl Jul 10, 2026
58e1270
audit-fix: for-networks + diagnostics + concepts (15 false)
teovl Jul 10, 2026
3a68cf2
audit-fix: configuration + integration + mcp-setup (11 false)
teovl Jul 10, 2026
253dc43
audit-fix: services + sdk-parity + research docs (9 false)
teovl Jul 10, 2026
861ae2c
audit-fix: mcp + enterprise-policies + firewalls docs (12 false)
teovl Jul 10, 2026
259ffdf
audit-fix: enterprise + go-sdk + index (6 false)
teovl Jul 10, 2026
e5dd60d
audit-fix: app-store data drift + terms date (apps/[id], app-store, t…
teovl Jul 10, 2026
a7abc88
audit-fix: troubleshooting + for/skills + node-sdk (4 false)
teovl Jul 10, 2026
363a2f5
audit-fix: http-services + trust-model blogs (12 false)
teovl Jul 10, 2026
213b0e0
audit-fix: cross-company + file-transfer blogs (10 false)
teovl Jul 10, 2026
19706ca
audit-fix: how-pilot-protocol-works packet layout (5 false)
teovl Jul 10, 2026
bf1948b
audit-fix: move-beyond-rest + chain-ai + distributed-rag (13 false)
teovl Jul 10, 2026
b9ce46c
audit-fix: a2a + aegis + agent-comm-security blogs (12 false)
teovl Jul 10, 2026
4ac7f7d
audit-fix: skills + enterprise-rbac + research-collab blogs (12 false)
teovl Jul 10, 2026
6185bc0
audit-fix: discovery + pipelines + openclaw-meets blogs (9 false)
teovl Jul 10, 2026
666104c
audit-fix: direct-comm + smart-home + sociology blogs (9 false)
teovl Jul 10, 2026
2ab0ec2
audit-fix: python-sdk + overlay + userspace-tcp blogs (9 false)
teovl Jul 10, 2026
a109eb9
audit-fix: scriptorium + ietf-draft + hipaa blogs (6 false)
teovl Jul 10, 2026
29570c1
audit-fix: run-agent + openclaw-nat blogs (8 false)
teovl Jul 10, 2026
8f07e35
audit-fix: network-stack + pilot-vs-vpns + discover blogs (6 false)
teovl Jul 10, 2026
27271b8
audit-fix: virtual-addresses + p2p-no-server + mcp-across blogs (6 fa…
teovl Jul 10, 2026
1af3edd
audit-fix: p2p-examples + mas-guide + claude-teams blogs (6 false)
teovl Jul 10, 2026
831a85a
audit-fix: blog/index + clawhub + advanced-automation (6 false)
teovl Jul 10, 2026
9762cc2
audit-fix: secure-comm + scaling-fleets + persistent-addressing (3 fa…
teovl Jul 10, 2026
5a850b5
audit-fix: persistent-strategies + net-security + multi-cloud (3 false)
teovl Jul 10, 2026
f0c21f1
audit-fix: legacy-integration + ietf-rev01 + federated-learning (3 fa…
teovl Jul 10, 2026
0b246c8
audit-fix: last 4 FALSE claims (roadmap, encryption, nat-vpn, a2a-exa…
teovl Jul 10, 2026
d944362
audit: milestone — all FALSE claims across 167 pages resolved
teovl Jul 10, 2026
0bb2a93
audit-soften: how-626 + preferential-attachment (paper-backed pages)
teovl Jul 10, 2026
ce19b47
audit-soften: workflow + mutual-trust + decentralized-comm (accept)
teovl Jul 10, 2026
bfb1f36
audit-review: clear 13 low-flag pages (2 fixes, legal->needs-user)
teovl Jul 10, 2026
e628454
audit: COMPLETE — every ledger row resolved (167 pages)
teovl Jul 10, 2026
161ef0f
ci: trigger website build + preview on main-targeted PR #116
teovl Jul 11, 2026
f5b3ee2
chore(plain): auto-regenerate stale machine-UI twins
github-actions[bot] Jul 11, 2026
b14ac0c
fix(docs/enterprise): repair gating table — two clean lists, no blank…
teovl Jul 12, 2026
b4f7b46
chore(plain): auto-regenerate stale machine-UI twins
github-actions[bot] Jul 12, 2026
00450d5
ci: deploy enterprise-table fix (twin already regenerated in b4f7b46)
teovl Jul 12, 2026
39147cc
fix(home): skills command pills unreadable in light mode
teovl Jul 12, 2026
d456322
chore(plain): auto-regenerate stale machine-UI twins
github-actions[bot] Jul 12, 2026
4110bbc
ci: deploy home skills-pill contrast fix (twin regenerated in d456322)
teovl Jul 12, 2026
a113e75
fix(home+docs): center closing CTA heading; make wide doc tables scroll
teovl Jul 12, 2026
d8ce894
chore(plain): auto-regenerate stale machine-UI twins
github-actions[bot] Jul 12, 2026
a0c8217
ci: deploy closing-CTA + doc-table fixes
teovl Jul 12, 2026
5480cbf
chore: remove audit working docs before merge
teovl Jul 12, 2026
2278118
content: remove deleted public networks (network 9), align to enterpr…
teovl Jul 12, 2026
d4b72dd
chore(plain): auto-regenerate stale machine-UI twins
github-actions[bot] Jul 12, 2026
1e52f18
ci: re-trigger after plain-twin regen (network-9 sweep)
teovl Jul 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions .github/workflows/publish-manifest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
name: publish-manifest

# Receives a `repository_dispatch` event of type `manifest-update` from
# `web4/.github/workflows/release.yml` after a tag ships. The event carries
# the rendered manifest in `client_payload.manifest`; this workflow merges it
# into `public/.well-known/latest.json` and commits to main, which triggers
# the Cloudflare Pages deploy.
#
# Merge rules:
# - `latest_stable` is only advanced when the incoming manifest is for a
# non-prerelease tag (`is_prerelease == false`). RC tags update only
# `latest_prerelease` and `channels.edge`.
# - `platforms` is replaced wholesale with the incoming map for the tag.
# - `updated_at` is taken from the incoming manifest.
#
# Manual trigger (`workflow_dispatch`) is available for the case where the
# dispatch from web4 was dropped (missing token, transient 5xx) and the
# operator needs to nudge the manifest forward by hand.

on:
repository_dispatch:
types: [manifest-update]
workflow_dispatch:
inputs:
manifest:
description: 'Inline manifest JSON (overrides the dispatch payload path)'
required: true

permissions:
contents: write

jobs:
merge-and-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: main
fetch-depth: 0

- name: Resolve incoming manifest
id: incoming
env:
DISPATCH_MANIFEST: ${{ toJson(github.event.client_payload.manifest) }}
MANUAL_MANIFEST: ${{ inputs.manifest }}
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "$MANUAL_MANIFEST" > /tmp/incoming.json
else
echo "$DISPATCH_MANIFEST" > /tmp/incoming.json
fi
jq . /tmp/incoming.json > /tmp/incoming.pretty.json
cp /tmp/incoming.pretty.json /tmp/incoming.json
echo "incoming manifest:"
cat /tmp/incoming.json

- name: Merge into public/.well-known/latest.json
run: |
INCOMING=/tmp/incoming.json
CURRENT=public/.well-known/latest.json
mkdir -p public/.well-known
if [ ! -f "$CURRENT" ]; then
# First-ever publish — start from the incoming manifest, but
# rewrite the prerelease-aware fields into their final names.
jq '{
"$schema": "https://pilotprotocol.network/.well-known/latest.schema.json",
"updated_at": .updated_at,
"latest_stable": (.proposed_stable // ""),
"latest_prerelease": (.proposed_edge // .tag),
"channels": {
"stable": (.proposed_stable // ""),
"edge": (.proposed_edge // .tag)
},
"release_notes_url": .release_notes_url,
"homebrew_formula_url": .homebrew_formula_url,
"platforms": .platforms
}' "$INCOMING" > "$CURRENT"
else
jq --slurpfile inc "$INCOMING" '
. as $cur |
$inc[0] as $i |
{
"$schema": ($cur["$schema"] // "https://pilotprotocol.network/.well-known/latest.schema.json"),
"updated_at": $i.updated_at,
"latest_stable": (if $i.is_prerelease then $cur.latest_stable else $i.proposed_stable end),
"latest_prerelease": ($i.proposed_edge // $i.tag),
"channels": {
"stable": (if $i.is_prerelease then $cur.channels.stable else $i.proposed_stable end),
"edge": ($i.proposed_edge // $i.tag)
},
"release_notes_url": $i.release_notes_url,
"homebrew_formula_url": $i.homebrew_formula_url,
"platforms": $i.platforms
}
' "$CURRENT" > "$CURRENT.new"
mv "$CURRENT.new" "$CURRENT"
fi
echo "merged manifest:"
cat "$CURRENT"

- name: Commit and push
run: |
if git diff --quiet public/.well-known/latest.json; then
echo "manifest unchanged — nothing to commit."
exit 0
fi
git config user.name "pilot-release-bot"
git config user.email "release-bot@pilotprotocol.network"
TAG=$(jq -r '.latest_prerelease // .latest_stable // "unknown"' public/.well-known/latest.json)
git add public/.well-known/latest.json
git commit -m "manifest: bump to ${TAG}" \
-m "Triggered by upstream release workflow."
git push origin main
30 changes: 30 additions & 0 deletions public/.well-known/latest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"$schema": "https://pilotprotocol.network/.well-known/latest.schema.json",
"updated_at": "2026-05-28T14:00:00Z",
"latest_stable": "v1.10.5",
"latest_prerelease": "v1.10.5",
"channels": {
"stable": "v1.10.5",
"edge": "v1.10.5"
},
"release_notes_url": "https://github.com/pilot-protocol/pilotprotocol/releases/tag/v1.10.5",
"homebrew_formula_url": "https://github.com/pilot-protocol/homebrew-pilot/raw/main/Formula/pilotprotocol.rb",
"platforms": {
"darwin-amd64": {
"url": "https://github.com/pilot-protocol/pilotprotocol/releases/download/v1.10.5/pilot-darwin-amd64.tar.gz",
"sha256": "eab41da1108068e965e4c500bfae6f5aa1b6a21d02b7feb3942fd2b6434fc3be"
},
"darwin-arm64": {
"url": "https://github.com/pilot-protocol/pilotprotocol/releases/download/v1.10.5/pilot-darwin-arm64.tar.gz",
"sha256": "125fe7c8b83ce89f53487ec0ac1fe22decd4defd4af2b42559809042e2083597"
},
"linux-amd64": {
"url": "https://github.com/pilot-protocol/pilotprotocol/releases/download/v1.10.5/pilot-linux-amd64.tar.gz",
"sha256": "b062e355f24d85b884345de396398cd95d5c70fd44d23a9633c1bbcd3003022b"
},
"linux-arm64": {
"url": "https://github.com/pilot-protocol/pilotprotocol/releases/download/v1.10.5/pilot-linux-arm64.tar.gz",
"sha256": "37428a4b08e6880cffca5049df872746358c41f9d63c25d5896446c48aa7e165"
}
}
}
9 changes: 5 additions & 4 deletions src/components/Nav.astro
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
---
interface Props {
active?: 'home' | 'docs' | 'blog' | 'plans' | 'for';
active?: 'home' | 'docs' | 'blog' | 'plans' | 'for' | 'tech' | 'apps';
}
const { active } = Astro.props;

const forLinks = [
{ href: '/for/p2p', label: 'Direct P2P', desc: 'Peer-to-peer for AI agents' },
{ href: '/for/mcp', label: 'MCP + Pilot', desc: 'Give your MCP servers a network' },
{ href: '/app-store', label: 'App Store', desc: 'Agent apps, one command to install' },
{ href: '/for/networks', label: 'Networks', desc: 'Domain networks agents self-organize into' },
];

Expand Down Expand Up @@ -48,8 +47,10 @@ const statusText = version ? `Network live · v${version}` : 'Network live';
data-track="nav_click" data-track-target="docs">Docs</a>
<a href="/blog/" class:list={['nav-link', active === 'blog' && 'active']}
data-track="nav_click" data-track-target="blog">Blog</a>
<a href="/app-store" class:list={['nav-link', active === 'apps' && 'active']}
data-track="nav_click" data-track-target="app-store">App Store</a>
<a href="/plans" class:list={['nav-link', active === 'plans' && 'active']}
data-track="nav_click" data-track-target="enterprise">Plans</a>
data-track="nav_click" data-track-target="plans">Plans</a>

<div class:list={['nav-dropdown', active === 'for' && 'active']}>
<button type="button" class="nav-dropdown-trigger" aria-haspopup="true" aria-expanded="false">
Expand All @@ -69,7 +70,7 @@ const statusText = version ? `Network live · v${version}` : 'Network live';
</div>
</div>

<div class="nav-dropdown">
<div class:list={['nav-dropdown', active === 'tech' && 'active']}>
<button type="button" class="nav-dropdown-trigger" aria-haspopup="true" aria-expanded="false">
Tech
<svg class="caret" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
Expand Down
1 change: 0 additions & 1 deletion src/data/app-overrides.json
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,6 @@
"vendor": "Pilot Protocol",
"vendorUrl": "https://pilotprotocol.network",
"license": "Proprietary",
"sourceUrl": "https://github.com/pilot-protocol/plainweb",
"homepage": "https://pilotprotocol.network",
"version": "1.0.0",
"categoriesRaw": [
Expand Down
20 changes: 15 additions & 5 deletions src/data/apps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -847,8 +847,8 @@ export const apps: App[] = [
"depends": [],
"protection": "guarded",
"featured": false,
"real": true,
"inCatalogue": true,
"real": false,
"inCatalogue": false,
"icon": {
"mode": "mask",
"img": null,
Expand Down Expand Up @@ -2061,7 +2061,17 @@ export const apps: App[] = [
"license": "MIT",
"sourceUrl": "https://github.com/pilot-protocol/catalog",
"homepage": null,
"methods": [],
"methods": [
{ "name": "slipstream.leaderboard", "summary": null },
{ "name": "slipstream.signals", "summary": null },
{ "name": "slipstream.tape", "summary": null },
{ "name": "slipstream.markets", "summary": null },
{ "name": "slipstream.wallet", "summary": null },
{ "name": "slipstream.skilled", "summary": null },
{ "name": "slipstream.opportunities", "summary": null },
{ "name": "slipstream.stats", "summary": null },
{ "name": "slipstream.help", "summary": null }
],
"changelog": [],
"grants": [],
"bundles": [
Expand Down Expand Up @@ -2714,8 +2724,8 @@ export const apps: App[] = [
"depends": [],
"protection": "shareable",
"featured": false,
"real": true,
"inCatalogue": true,
"real": false,
"inCatalogue": false,
"icon": {
"mode": "image",
"img": "/appicons/io.pilot.didit.png",
Expand Down
14 changes: 0 additions & 14 deletions src/data/blogPosts.json
Original file line number Diff line number Diff line change
Expand Up @@ -701,20 +701,6 @@
"banner": "banners/multi-agent-system-networking-guide-ai-developers.jpg",
"iso_date": "2026-03-28"
},
{
"slug": "pilot-console-manage-agent-networks",
"title": "Introducing the Pilot Console: Manage Agent Networks From a Browser",
"description": "The Pilot Console is a web dashboard for managing private agent networks, monitoring nodes, generating API keys, and handling billing all from your browser.",
"date": "Mar 26",
"category": "Enterprise",
"tags": [
"console",
"enterprise",
"dashboard"
],
"banner": "banners/pilot-console-manage-agent-networks.webp",
"iso_date": "2026-03-26"
},
{
"slug": "enterprise-phase-3-rbac-policies-audit-fleet",
"title": "Enterprise Phase 3: RBAC, Policies, Audit Trail, and Fleet Enrollment",
Expand Down
2 changes: 2 additions & 0 deletions src/data/docsNav.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ export const docsNav: NavItem[] = [
icon: '<svg viewBox="0 0 24 24"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg>' },
{ label: 'Gateway', href: '/docs/gateway', slug: 'gateway',
icon: '<svg viewBox="0 0 24 24"><rect x="2" y="7" width="20" height="10" rx="2"/><line x1="12" y1="7" x2="12" y2="17"/><line x1="2" y1="12" x2="22" y2="12"/></svg>' },
{ label: 'Tags', href: '/docs/tags', slug: 'tags',
icon: '<svg viewBox="0 0 24 24"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"/><line x1="7" y1="7" x2="7.01" y2="7"/></svg>' },
{ label: 'pilot-director', href: '/docs/pilot-director', slug: 'pilot-director',
icon: '<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="3"/><path d="M12 2v4M12 18v4M2 12h4M18 12h4M5 5l3 3M16 16l3 3M19 5l-3 3M8 16l-3 3"/></svg>' },
{ label: 'Service Agents', href: '/docs/service-agents', slug: 'service-agents',
Expand Down
12 changes: 3 additions & 9 deletions src/layouts/PlainLayout.astro
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,8 @@ const { title, description, canonical } = Astro.props;
{canonical && <link rel="canonical" href={canonical}>}
<meta name="robots" content="index,follow">
<meta name="pilot-variant" content="plain">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-EEWEKT0GW5"></script>
<script is:inline>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-EEWEKT0GW5');
</script>
<!-- No analytics on the plain variant: it is a JS-stripped surface for agents
and screen readers, so no GA4 / cookies are loaded (nothing to consent to). -->
</head>
<body>
<p style="text-align:right"><a href="/">[ Switch to styled version &rarr; ]</a></p>
Expand All @@ -40,8 +35,7 @@ const { title, description, canonical } = Astro.props;
<footer>
<p>Pilot Protocol - plain text variant for AI agents and screen readers. <a href="/">Switch to styled version</a>.</p>
<p><small>We actually made a page for agents. &ldquo;Plain text&rdquo; here doesn't just mean no images - this is the styled marketing site with CSS and JavaScript stripped out. What you see is what your parser gets: semantic HTML, nothing else. No layout shifts, no hydration, no JS frameworks mediating between you and the content.</small></p>
<!-- TODO: pilot-protocol/pilot-skills repo does not exist yet — update URL once repo is transferred/created -->
<p><small>We make every effort to keep this plain variant in sync with the styled site, but it may lag. Treat live numbers (agent counts, network stats, pricing) with a grain of salt and verify against the canonical sources when precision matters: <a href="https://raw.githubusercontent.com/pilot-protocol/pilot-skills/main/skills.json">skills.json</a>.</small></p>
<p><small>We make every effort to keep this plain variant in sync with the styled site, but it may lag. Treat live numbers (agent counts, network stats, pricing) with a grain of salt and verify against the canonical sources when precision matters: <a href="https://raw.githubusercontent.com/TeoSlayer/pilot-skills/main/skills.json">skills.json</a>.</small></p>
</footer>
</body>
</html>
2 changes: 1 addition & 1 deletion src/pages/500.astro
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import '../styles/system.css';
<div class="eyebrow">Error · 500</div>
<h1>Something <em>broke.</em></h1>
<p class="lede">
Something went wrong on our end. We've been notified and are working on it.
Something went wrong on our end. Please try again in a moment.
Try refreshing in a moment, or head back to the <a href="/">home page</a>.
</p>

Expand Down
2 changes: 1 addition & 1 deletion src/pages/app-store.astro
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ const publishHref = '/publish';
})}></script>
</head>
<body>
<Nav active="for" />
<Nav active="apps" />

<main class="store">

Expand Down
4 changes: 2 additions & 2 deletions src/pages/apps/[id].astro
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ const canonicalUrl = `https://pilotprotocol.network/apps/${app.id}`;
})}></script>
</head>
<body>
<Nav active="for" />
<Nav active="apps" />

<main class="store">

Expand Down Expand Up @@ -243,7 +243,7 @@ const canonicalUrl = `https://pilotprotocol.network/apps/${app.id}`;
<div class="info-row"><span class="k">Runtime</span><span class="val">{app.runtimes.join(', ')}</span></div>
<div class="info-row"><span class="k">Min Pilot</span><span class="val">v{app.minPilotVersion}</span></div>
{app.publishedAt && <div class="info-row"><span class="k">Published</span><span class="val">{fmtDate(app.publishedAt)}</span></div>}
{app.sourceUrl && <div class="info-row"><span class="k">Source</span><span class="val"><a href={app.sourceUrl} target="_blank" rel="noopener">GitHub ↗</a></span></div>}
{app.sourceUrl && <div class="info-row"><span class="k">Source</span><span class="val"><a href={app.sourceUrl} target="_blank" rel="noopener">{app.sourceUrl.includes('github.com') ? 'GitHub' : 'Source'} ↗</a></span></div>}
</div>

{app.grants.length > 0 && (
Expand Down
Loading
Loading