diff --git a/README.md b/README.md
index f3230e8..e2c77b8 100644
--- a/README.md
+++ b/README.md
@@ -137,7 +137,7 @@ Everything lives under the [nanoodlecom](https://github.com/nanoodlecom) GitHub
| [nanoodle-skill](https://github.com/nanoodlecom/nanoodle-skill) | One agent skill that teaches an agent to build any graph — use when the agent should author workflows itself |
| [noodle-skills](https://github.com/nanoodlecom/noodle-skills) | Prebuilt one-task agent skills — use when you want a ready-made skill, no graph editing |
| [awesome-noodles](https://github.com/nanoodlecom/awesome-noodles) | Gallery of ready-to-open graphs — use when you want examples to start from |
-| [built-with-nanoodle](https://github.com/nanoodlecom/built-with-nanoodle) | Showcase of apps people shipped — use when you want to see (or show) what nanoodle makes |
+| [built-with-nanoodle](https://github.com/nanoodlecom/built-with-nanoodle) | Showcase of finished apps, every one still ours — use when you want to see what nanoodle makes, or to put yours on the list |
| [noodle-embed](https://github.com/nanoodlecom/noodle-embed) | `` web component — use when a page should render a workflow read-only |
| [mp4cat](https://github.com/nanoodlecom/mp4cat) | Lossless mp4 concat, browser or Node — use when you just need to join clips, no ffmpeg |
diff --git a/guide/index.html b/guide/index.html
index 9a9c9cd..7b484b3 100644
--- a/guide/index.html
+++ b/guide/index.html
@@ -95,6 +95,8 @@ Elsewhere
github.com/nanoodlecom/nanoodle — the site's source (MIT).
nanoodle-js and
nanoodle-py — headless executors (npm / PyPI, both named nanoodle).
+ awesome-noodles — the workflow gallery behind the editor's 📚 Examples panel: one graph file per entry.
+ built-with-nanoodle — the showcase of finished apps. Every entry opens and runs in your browser. They are all ours so far, so yours would be the first from outside, and adding it takes one line.
/llms.txt — a machine-readable summary of the site for LLMs.
Terms, Privacy & FAQ.
diff --git a/guide/share-links.html b/guide/share-links.html
index 724b997..f47ea15 100644
--- a/guide/share-links.html
+++ b/guide/share-links.html
@@ -106,6 +106,17 @@ Shortening — first-party too
flow re-encodes the preview smaller or drops it — and tells you it did — rather than
failing silently.
+ Where shared apps end up
+ A share link is the whole distribution step: there is nothing to host and nothing to
+ publish. If you want an audience for one,
+ built-with-nanoodle
+ is the public showcase — every entry is a #a= link like yours. Send the full
+ link, not a shortened one: the showcase reads the app straight out of the fragment, and a
+ short link hides it. They are all ours so far, so yours would be the first from outside,
+ and adding it is a single line in a README. The workflow gallery behind the editor's
+ 📚 Examples panel is
+ its sibling, awesome-noodles.
+
For recipients
Treat shared apps as untrusted, like any web page. Shared apps run sandboxed and never
carry the sharer's key; review what an app does before connecting your own key and
diff --git a/index.html b/index.html
index 2d778e4..d257cbf 100644
--- a/index.html
+++ b/index.html
@@ -1012,7 +1012,11 @@
📚 Examples
- loading replaces your current workflow — it’s autosaved, and ↺ Undo brings it back.
these come from awesome-noodles — remix one and send us yours.
+ loading replaces your current workflow — it’s autosaved, and ↺ Undo brings it back.
these come from awesome-noodles — remix one and send us yours.
+
+
Made an app from one? built-with-nanoodle — the showcase. Every app on it is still one of ours; make yours the first that isn’t. One line.
@@ -1679,6 +1683,8 @@ Top up to keep running
"paste AI-sounding text, get it back human":"pega texto que suena a IA y recupéralo humano",
"these come from":"estos vienen de",
"— remix one and send us yours.":"— remezcla uno y envíanos el tuyo.",
+ "Made an app from one?":"¿Hiciste una app con uno?",
+ "— the showcase. Every app on it is still one of ours; make yours the first that isn’t. One line.":"— la vitrina. Todas las apps que hay siguen siendo nuestras; haz que la tuya sea la primera que no lo sea. Una línea.",
"Use in your agent":"Úsalo en tu agente",
"nanoodle in your coding agent":"nanoodle en tu agente de código",
"One command teaches your agent to design and run nanoodle workflows — from your terminal, on your own NanoGPT key.":"Un solo comando enseña a tu agente a diseñar y ejecutar flujos de nanoodle — desde tu terminal, con tu propia clave de NanoGPT.",
@@ -2192,6 +2198,8 @@ Top up to keep running
"paste AI-sounding text, get it back human":"collez un texte qui sent l'IA, récupérez-le humain",
"these come from":"ils viennent de",
"— remix one and send us yours.":"— remixez-en un et envoyez-nous le vôtre.",
+ "Made an app from one?":"Vous en avez fait une app ?",
+ "— the showcase. Every app on it is still one of ours; make yours the first that isn’t. One line.":"— la vitrine. Toutes les apps qui s’y trouvent sont encore les nôtres ; faites de la vôtre la première qui ne l’est pas. Une ligne.",
"Use in your agent":"Utiliser dans votre agent",
"nanoodle in your coding agent":"nanoodle dans votre agent de code",
"One command teaches your agent to design and run nanoodle workflows — from your terminal, on your own NanoGPT key.":"Une seule commande apprend à votre agent à concevoir et exécuter des flux nanoodle — depuis votre terminal, avec votre propre clé NanoGPT.",
@@ -2705,6 +2713,8 @@ Top up to keep running
"paste AI-sounding text, get it back human":"KI-Text einfügen, menschlich zurückbekommen",
"these come from":"diese stammen aus",
"— remix one and send us yours.":"— remixe eins und schick uns deins.",
+ "Made an app from one?":"Daraus eine App gebaut?",
+ "— the showcase. Every app on it is still one of ours; make yours the first that isn’t. One line.":"— das Schaufenster. Alle Apps darin sind noch unsere eigenen; mach deine zur ersten, die es nicht ist. Eine Zeile.",
"Use in your agent":"In deinem Agenten nutzen",
"nanoodle in your coding agent":"nanoodle in deinem Coding-Agenten",
"One command teaches your agent to design and run nanoodle workflows — from your terminal, on your own NanoGPT key.":"Ein Befehl bringt deinem Agenten bei, nanoodle-Workflows zu entwerfen und auszuführen — direkt im Terminal, mit deinem eigenen NanoGPT-Schlüssel.",
@@ -3218,6 +3228,8 @@ Top up to keep running
"paste AI-sounding text, get it back human":"cole um texto com cara de IA e receba-o humano",
"these come from":"estes vêm de",
"— remix one and send us yours.":"— remixe um e mande o seu.",
+ "Made an app from one?":"Fez um app a partir de um deles?",
+ "— the showcase. Every app on it is still one of ours; make yours the first that isn’t. One line.":"— a vitrine. Todos os apps nela ainda são nossos; faça o seu ser o primeiro que não é. Uma linha.",
"Use in your agent":"Use no seu agente",
"nanoodle in your coding agent":"nanoodle no seu agente de código",
"One command teaches your agent to design and run nanoodle workflows — from your terminal, on your own NanoGPT key.":"Um único comando ensina o seu agente a criar e executar fluxos do nanoodle — do seu terminal, com a sua própria chave NanoGPT.",
@@ -3731,6 +3743,8 @@ Top up to keep running
"paste AI-sounding text, get it back human":"AIっぽい文章を貼ると、人間らしい文章が返る",
"these come from":"出典は",
"— remix one and send us yours.":"— リミックスして、あなたの作品もぜひ送ってください。",
+ "Made an app from one?":"そこからアプリを作りましたか?",
+ "— the showcase. Every app on it is still one of ours; make yours the first that isn’t. One line.":"— ショーケースです。今あるアプリはまだ全部わたしたちのもの。最初の1つは、あなたのアプリに。追加は1行です。",
"Use in your agent":"エージェントで使う",
"nanoodle in your coding agent":"コーディングエージェントで nanoodle",
"One command teaches your agent to design and run nanoodle workflows — from your terminal, on your own NanoGPT key.":"コマンド1つで、エージェントが nanoodle ワークフローを設計・実行できるようになります — ターミナルから、自分の NanoGPT キーで。",
diff --git a/llms-full.txt b/llms-full.txt
index 79d3eae..1f3b09c 100644
--- a/llms-full.txt
+++ b/llms-full.txt
@@ -141,7 +141,7 @@ Everything lives under the [nanoodlecom](https://github.com/nanoodlecom) GitHub
| [nanoodle-skill](https://github.com/nanoodlecom/nanoodle-skill) | One agent skill that teaches an agent to build any graph — use when the agent should author workflows itself |
| [noodle-skills](https://github.com/nanoodlecom/noodle-skills) | Prebuilt one-task agent skills — use when you want a ready-made skill, no graph editing |
| [awesome-noodles](https://github.com/nanoodlecom/awesome-noodles) | Gallery of ready-to-open graphs — use when you want examples to start from |
-| [built-with-nanoodle](https://github.com/nanoodlecom/built-with-nanoodle) | Showcase of apps people shipped — use when you want to see (or show) what nanoodle makes |
+| [built-with-nanoodle](https://github.com/nanoodlecom/built-with-nanoodle) | Showcase of finished apps, every one still ours — use when you want to see what nanoodle makes, or to put yours on the list |
| [noodle-embed](https://github.com/nanoodlecom/noodle-embed) | `` web component — use when a page should render a workflow read-only |
| [mp4cat](https://github.com/nanoodlecom/mp4cat) | Lossless mp4 concat, browser or Node — use when you just need to join clips, no ffmpeg |
diff --git a/llms.txt b/llms.txt
index 79cf1f2..e71651a 100644
--- a/llms.txt
+++ b/llms.txt
@@ -18,6 +18,11 @@ Everything is MIT-licensed under the nanoodlecom GitHub org. Naming note: the in
- [nanoodle-js](https://github.com/nanoodlecom/nanoodle-js): zero-dependency Node.js (≥ 20) library + CLI that re-runs saved graphs headlessly. Install: `npm install nanoodle`
- [nanoodle-py](https://github.com/nanoodlecom/nanoodle-py): stdlib-only Python (≥ 3.9) library + CLI, same graphs and same semantics as the JS package. Install: `pip install nanoodle`
+## Examples
+
+- [awesome-noodles](https://github.com/nanoodlecom/awesome-noodles): the workflow gallery. One committed `noodle-graph.json` per entry plus an editor share link. The Examples panel in the editor is this repository, one card per graph. Start here when you want a graph to open, run, or remix.
+- [built-with-nanoodle](https://github.com/nanoodlecom/built-with-nanoodle): the app showcase. Each entry is a `#a=` share link that opens a finished, runnable app in the browser. Every entry is still one of ours, so an app you add would be the first from outside. Use the full link, not a shortened one — the showcase reads the app out of the fragment. Start here when you want to see what a finished nanoodle app looks like, or to add one you shipped.
+
## Formats
- noodle-graph.json: the portable graph format. Save it from the editor (💾), load it back, or execute it headlessly with the `nanoodle` npm / PyPI package.
diff --git a/play.html b/play.html
index be10681..e89ce29 100644
--- a/play.html
+++ b/play.html
@@ -197,6 +197,11 @@
background:var(--panel2); border:1px solid var(--line); border-radius:.45rem; padding:.4rem .5rem; }
.sm-copy{ flex:none; }
.sm-note{ font-size:.74rem; color:var(--faint); margin:.4rem .15rem .1rem; line-height:1.4; }
+ /* the showcase nudge is owner-only: a recipient sharing someone else's app has nothing of
+ their own to submit. display:none can never reveal a hidden element, so no [hidden] guard
+ is needed here (see scripts/check-hidden-css.mjs). */
+ #sm-showcase{ margin-top:.7rem; }
+ body.recipient #sm-showcase{ display:none; }
.sm-warn{ font-size:.74rem; color:var(--dim); margin:.15rem .15rem .35rem; line-height:1.45;
border-left:2px solid var(--accent-line); padding:.1rem .5rem; }
.sm-svc, .sm-social:not([hidden]){ display:flex; gap:.4rem; flex-wrap:wrap; } /* :not([hidden]) — a bare display rule would defeat the hidden attr when the social row is blanked */
@@ -490,6 +495,17 @@
Facebook
Email
+
+
+ Proud of it? add your app to the showcase ↗ — it needs the full link, not a shortened one.
@@ -5419,6 +5435,9 @@ Open a workflow from the editor
"not signed in":{es:"sin iniciar sesión",fr:"non connecté",de:"nicht angemeldet",pt:"não conectado",ja:"サインインしていません"},
"✱ edits aren’t shared":{es:"✱ los cambios no se comparten",fr:"✱ les modifications ne sont pas partagées",de:"✱ Änderungen werden nicht geteilt",pt:"✱ as edições não são compartilhadas",ja:"✱ 編集は共有されません"},
"The whole app lives in this link — nothing hits a server when someone opens it. That's why it can get long.":{es:"Toda la app vive en este enlace — nada llega a un servidor cuando alguien lo abre. Por eso puede quedar largo.",fr:"Toute l’app tient dans ce lien — rien n’atteint un serveur quand quelqu’un l’ouvre. C’est pourquoi il peut devenir long.",de:"Die ganze App steckt in diesem Link — beim Öffnen wird kein Server kontaktiert. Deshalb kann er lang werden.",pt:"O app inteiro vive neste link — nada chega a um servidor quando alguém o abre. Por isso ele pode ficar longo.",ja:"アプリ全体がこのリンクに含まれています — 誰かが開いてもサーバーには何も送られません。だからリンクは長くなることがあります。"},
+ "Proud of it?":{es:"¿Orgulloso del resultado?",fr:"Fier du résultat ?",de:"Stolz darauf?",pt:"Orgulhoso do resultado?",ja:"自信作ですか?"},
+ "add your app to the showcase ↗":{es:"añade tu app a la vitrina ↗",fr:"ajoutez votre app à la vitrine ↗",de:"füge deine App dem Schaufenster hinzu ↗",pt:"adicione seu app à vitrine ↗",ja:"あなたのアプリをショーケースに追加 ↗"},
+ "— it needs the full link, not a shortened one.":{es:"— necesita el enlace completo, no uno acortado.",fr:"— il lui faut le lien complet, pas un lien raccourci.",de:"— dafür braucht es den vollständigen Link, keinen gekürzten.",pt:"— ele precisa do link completo, não de um encurtado.",ja:"— 必要なのは短縮リンクではなく完全なリンクです。"},
"This shared-app link looks incomplete or damaged — ask the sender for a fresh one. Shortened links survive messengers better.":{es:"Este enlace de app compartida parece incompleto o dañado — pídele al remitente uno nuevo. Los enlaces acortados aguantan mejor en los mensajeros.",fr:"Ce lien d’app partagée semble incomplet ou endommagé — demandez-en un nouveau à l’expéditeur. Les liens raccourcis résistent mieux aux messageries.",de:"Dieser geteilte App-Link scheint unvollständig oder beschädigt — bitte den Absender um einen neuen. Gekürzte Links überstehen Messenger besser.",pt:"Este link de app compartilhado parece incompleto ou danificado — peça um novo ao remetente. Links encurtados resistem melhor aos mensageiros.",ja:"この共有アプリのリンクは不完全か壊れているようです — 送信者に新しいリンクをもらってください。短縮リンクの方がメッセンジャーで壊れにくいです。"},
"Dismiss":{es:"Descartar",fr:"Fermer",de:"Schließen",pt:"Dispensar",ja:"閉じる"},
"✨ Like it? Make it yours — customize this app or export it.":{es:"✨ ¿Te gusta? Hazla tuya — personaliza esta app o expórtala.",fr:"✨ Ça vous plaît ? Faites-la vôtre — personnalisez cette app ou exportez-la.",de:"✨ Gefällt sie dir? Mach sie zu deiner — passe diese App an oder exportiere sie.",pt:"✨ Gostou? Torne-a sua — personalize este app ou exporte-o.",ja:"✨ 気に入りましたか? 自分のものに — このアプリをカスタマイズするかエクスポートしましょう。"},