From ecbee3334a092c6adb949f302adc97b73369ac94 Mon Sep 17 00:00:00 2001 From: Matthew Berman <748450+mberman84@users.noreply.github.com> Date: Wed, 24 Jun 2026 16:42:50 -0700 Subject: [PATCH] Migrate Loop Library URLs to forwardfuture.com --- AGENTS.md | 8 ++--- README.md | 14 ++++----- scripts/check.mjs | 10 +++--- site/agents/index.html | 22 +++++++------- site/index.html | 54 ++++++++++++++++----------------- site/learn/index.html | 20 ++++++------ skills/loop-library/SKILL.md | 4 +-- worker/bin/publish-loop.mjs | 2 +- worker/src/auth-votes.js | 4 +-- worker/src/index.js | 2 +- worker/src/loop-routes.js | 2 +- worker/src/render-loops.js | 18 +++++------ worker/test/auth-votes.test.js | 4 +-- worker/test/index.test.js | 8 ++--- worker/test/loop-routes.test.js | 4 +-- worker/wrangler.jsonc | 6 ++-- 16 files changed, 91 insertions(+), 91 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 61faead..363ed2d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -68,7 +68,7 @@ duplicate. Create the Cloudflare Turnstile widget in Managed mode and allow both -`signals.forwardfuture.ai` and the current backing `*.here.now` hostname. Keep +`signals.forwardfuture.com` and the current backing `*.here.now` hostname. Keep the site's Turnstile appearance set to `interaction-only` so most visitors do not see a challenge. @@ -89,7 +89,7 @@ npm run deploy ``` `TURNSTILE_HOSTNAMES` is a comma-separated exact allowlist containing -`signals.forwardfuture.ai` and the current backing `*.here.now` hostname. +`signals.forwardfuture.com` and the current backing `*.here.now` hostname. ## Authenticated voting @@ -119,7 +119,7 @@ npm run deploy ``` - Register this exact provider callback: - `https://signals.forwardfuture.ai/loop-library/auth/callback/github`. + `https://signals.forwardfuture.com/loop-library/auth/callback/github`. - For auth or proxy changes, set `VOTING_UI_ENABLED` to the exact string `false` for the staged production release. Vote controls render hidden and disabled, then appear only when `/api/votes` returns `uiEnabled: true`; @@ -179,6 +179,6 @@ curl -sS "https://here.now/api/v1/publishes/{slug}/data/weekly_signups?limit=50" database content and the backing here.now Site for the static shell before reporting success. - After a production content deployment, submit - `https://signals.forwardfuture.ai/loop-library/sitemap.xml` in Google Search + `https://signals.forwardfuture.com/loop-library/sitemap.xml` in Google Search Console and Bing Webmaster Tools. Verify that the custom domain's root `robots.txt` still allows Googlebot, Bingbot, and `OAI-SearchBot`. diff --git a/README.md b/README.md index 308014b..61d379a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Loop Library has two separate but related parts in this repository: | Part | What it is | Where it lives | | --- | --- | --- | -| **Loop Library website** | The public catalog where people and agents can browse published loops, read them, and copy their prompts. No installation is required. | [Live website](https://signals.forwardfuture.ai/loop-library/) · shell in [`site/`](site/), database and rendering in [`worker/`](worker/) | +| **Loop Library website** | The public catalog where people and agents can browse published loops, read them, and copy their prompts. No installation is required. | [Live website](https://signals.forwardfuture.com/loop-library/) · shell in [`site/`](site/), database and rendering in [`worker/`](worker/) | | **Loop Library skill** | An optional installable guide that helps an AI agent discover, find, audit, repair, adapt, or design loops through conversation. It uses the website's live catalog when recommending published loops. | source in [`skills/loop-library/`](skills/loop-library/) | The website is the library; the skill is a companion way to work with it. You @@ -12,10 +12,10 @@ can browse or give an agent the website without installing the skill. Installing the skill adds the guided workflow, but it does not install or host the website. Agents that do not have the skill can use the published -[agent guide](https://signals.forwardfuture.ai/loop-library/agents/), -[agent instructions](https://signals.forwardfuture.ai/loop-library/llms.txt), -[JSON catalog](https://signals.forwardfuture.ai/loop-library/catalog.json), or -[plain-text catalog](https://signals.forwardfuture.ai/loop-library/catalog.txt) +[agent guide](https://signals.forwardfuture.com/loop-library/agents/), +[agent instructions](https://signals.forwardfuture.com/loop-library/llms.txt), +[JSON catalog](https://signals.forwardfuture.com/loop-library/catalog.json), or +[plain-text catalog](https://signals.forwardfuture.com/loop-library/catalog.txt) directly. Each published loop tells an agent what to do, how to check its work, what to @@ -206,11 +206,11 @@ Every published loop also includes a few useful parts: ## Explore or contribute -Visit the [Loop Library](https://signals.forwardfuture.ai/loop-library/) to +Visit the [Loop Library](https://signals.forwardfuture.com/loop-library/) to browse published loops, copy one into your own workflow, or submit a loop that has worked well for you. -Loop Library is a [Forward Future](https://www.forwardfuture.ai/) project and is +Loop Library is a [Forward Future](https://www.forwardfuture.com/) project and is available under the [MIT License](LICENSE).
diff --git a/scripts/check.mjs b/scripts/check.mjs index 9a4d31b..eb01355 100644 --- a/scripts/check.mjs +++ b/scripts/check.mjs @@ -115,9 +115,9 @@ for (const value of [ 'id="loop-sort"', 'id="library-pagination"', 'name="loop-library-form-api"', - "https://signals.forwardfuture.ai/loop-library/catalog.json", - "https://signals.forwardfuture.ai/loop-library/sitemap.xml", - "https://signals.forwardfuture.ai/loop-library/feed.xml", + "https://signals.forwardfuture.com/loop-library/catalog.json", + "https://signals.forwardfuture.com/loop-library/sitemap.xml", + "https://signals.forwardfuture.com/loop-library/feed.xml", "https://here.now/r/signals", ]) { assert(html.includes(value), value); @@ -246,9 +246,9 @@ assert.match(wrangler.vars.BOOTSTRAP_CATALOG_DIGEST, /^[a-f0-9]{64}$/); assert.equal(wrangler.vars.BOOTSTRAP_LOOP_COUNT, "50"); assert.equal(wrangler.vars.PUBLIC_ORIGIN_URL, "https://calm-mortar-jtek.here.now/"); assert.equal(wrangler.vars.PUBLIC_SHELL_URL, "https://calm-mortar-jtek.here.now/index.html"); -assert.equal(wrangler.vars.PUBLIC_SITE_HOSTNAME, "signals.forwardfuture.ai"); +assert.equal(wrangler.vars.PUBLIC_SITE_HOSTNAME, "signals.forwardfuture.com"); assert.equal(wrangler.vars.PUBLIC_SITE_PATH, "/loop-library"); -assert.equal(wrangler.vars.VOTING_UI_ENABLED, "true"); +assert.equal(wrangler.vars.VOTING_UI_ENABLED, "false"); assert.deepEqual(Object.keys(proxyManifest.proxies).sort(), [ "/", "/api/loops", diff --git a/site/agents/index.html b/site/agents/index.html index 5154572..9ad5ca1 100644 --- a/site/agents/index.html +++ b/site/agents/index.html @@ -42,38 +42,38 @@ /> @@ -84,11 +84,11 @@ "@type": "TechArticle", "headline": "Loop Library Agent Guide", "description": "Agent instructions for discovering, selecting, adapting, and safely running published Loop Library workflows.", - "url": "https://signals.forwardfuture.ai/loop-library/agents/", + "url": "https://signals.forwardfuture.com/loop-library/agents/", "publisher": { "@type": "Organization", "name": "Forward Future", - "url": "https://forwardfuture.ai/" + "url": "https://forwardfuture.com/" } } @@ -203,7 +203,7 @@

Give this to an agent

- Read https://signals.forwardfuture.ai/loop-library/llms.txt, then use + Read https://signals.forwardfuture.com/loop-library/llms.txt, then use the live catalog to find the best published loop for my goal. Match on available inputs, tools, verification, authority, and stopping condition. Do not execute a loop until I ask. Never invent missing @@ -272,7 +272,7 @@

Install the full skill