From 8931aeb2c98213a3c4c150a01ec63025dc2fc67f Mon Sep 17 00:00:00 2001 From: Anthony Ettinger Date: Sun, 8 Nov 2026 15:57:05 +0000 Subject: [PATCH] Point retired domains at their pit.world hosts The 28 retired apps now live at .pwa.pit.world and the old domains only 308 until they lapse. Links, hosts, webring/footer params and supabase. URLs move to the pwa hosts. Emails, GitHub/npm paths, brand text and old nginx server_name files are left alone. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/deploy-dev2.yml | 2 +- README.md | 4 ++-- apps/web/public/index.html | 2 +- apps/web/src/app.js | 8 ++++---- apps/web/src/crawl-gate.js | 2 +- apps/web/src/universal-footer.js | 8 ++++---- bin/install.sh | 2 +- design/build.py | 2 +- packages/cli/README.md | 4 ++-- packages/cli/package.json | 2 +- packages/cli/src/client.js | 2 +- packages/mcp/README.md | 2 +- packages/mcp/package.json | 2 +- test/app.test.js | 4 ++-- test/crawl-gate.test.js | 2 +- 15 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/deploy-dev2.yml b/.github/workflows/deploy-dev2.yml index 795e7b4..cbb5bce 100644 --- a/.github/workflows/deploy-dev2.yml +++ b/.github/workflows/deploy-dev2.yml @@ -52,7 +52,7 @@ jobs: - name: Verify the site answers run: | for i in $(seq 1 10); do - code=$(curl -s -o /dev/null -w '%{http_code}' "https://tleehealth.com/api/v1/health" || true) + code=$(curl -s -o /dev/null -w '%{http_code}' "https://tleehealth.pwa.pit.world/api/v1/health" || true) case "$code" in 2*) echo "tleehealth.com $code"; exit 0;; esac echo "attempt $i: $code"; sleep 10 done diff --git a/README.md b/README.md index 1c37e84..2c1ec62 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ up to 1,000 seats, whichever is lower. Patients and leads are free. | `packages/cli` | `@profullstack/tleehealth`: CLI, hqtui front-desk TUI (`tleehealth tui`), API client | | `packages/mcp` | `@profullstack/tleehealth-mcp`: MCP server over stdio | | `docs/e2ee-record-vault.md` | E2EE vault protocol, limits and legacy-data boundary | -| `bin/install.sh` | `curl -fsSL https://tleehealth.com/install.sh \| sh` | +| `bin/install.sh` | `curl -fsSL https://tleehealth.pwa.pit.world/install.sh \| sh` | ```sh bun install @@ -56,4 +56,4 @@ bun run dev # http://localhost:3000 (without RESEND_API_KEY the sign-in l `release.yml` tags that CLI version, creates the GitHub release, and publishes both packages to npm. The CLI package exports the shared vault crypto module. -The API is listed at https://tleehealth.com/llms.txt. +The API is listed at https://tleehealth.pwa.pit.world/llms.txt. diff --git a/apps/web/public/index.html b/apps/web/public/index.html index dd69787..9927884 100644 --- a/apps/web/public/index.html +++ b/apps/web/public/index.html @@ -5,7 +5,7 @@ tleehealth: the practice that runs itself - + diff --git a/apps/web/src/app.js b/apps/web/src/app.js index 71071ea..089b43d 100644 --- a/apps/web/src/app.js +++ b/apps/web/src/app.js @@ -293,7 +293,7 @@ app.post('/webhooks/telnyx', async (c) => { /* --------------------------------------------------------------------- API -- */ -app.get('/api/v1', (c) => c.json({ name: 'tleehealth', version: VERSION, docs: 'https://tleehealth.com/llms.txt' })); +app.get('/api/v1', (c) => c.json({ name: 'tleehealth', version: VERSION, docs: 'https://tleehealth.pwa.pit.world/llms.txt' })); // Up means the app AND its database answer; 503 otherwise. app.get('/api/v1/health', async (c) => { @@ -334,7 +334,7 @@ app.get('/.well-known/jwks-sandbox.json', jwksRoute); app.get('/.well-known/openwebring.json', (c) => c.json({ openwebring: '0.1', - site: { url: 'https://tleehealth.com/', name: 'tleehealth' }, + site: { url: 'https://tleehealth.pwa.pit.world/', name: 'tleehealth' }, made_by: 'both', rings: [{ ring: 'https://rssamplifier.com/ring/profullstack', slug: 'tleehealth-com' }], }), @@ -353,7 +353,7 @@ app.get('/llms.txt', (c) => Pricing: $10 per team seat per month, or $199/month for up to 1,000 seats. Patients and leads are free. -## API (https://tleehealth.com/api/v1) +## API (https://tleehealth.pwa.pit.world/api/v1) Authenticate with a session cookie or \`Authorization: Bearer th_live_...\` (create a key in the app under Settings). - GET /health - GET /me your practices and user type in each @@ -391,7 +391,7 @@ Authenticate with a session cookie or \`Authorization: Bearer th_live_...\` (cre the month's billable codes per patient, ready or on hold with the reason ## Tools -- CLI + TUI: npm i -g @profullstack/tleehealth (or: curl -fsSL https://tleehealth.com/install.sh | sh) +- CLI + TUI: npm i -g @profullstack/tleehealth (or: curl -fsSL https://tleehealth.pwa.pit.world/install.sh | sh) - MCP: npx -y @profullstack/tleehealth-mcp `), ); diff --git a/apps/web/src/crawl-gate.js b/apps/web/src/crawl-gate.js index 7c317ae..0779eff 100644 --- a/apps/web/src/crawl-gate.js +++ b/apps/web/src/crawl-gate.js @@ -12,7 +12,7 @@ export function createCrawlGate(env = process.env) { const apiKey = env.COINPAY_X402_KEY || ''; const payTo = env.CRAWL_PAY_TO || ''; if (!apiKey || !payTo) return null; - const site = env.SITE_URL && !/localhost|127\.0\.0\.1/.test(env.SITE_URL) ? env.SITE_URL : 'https://tleehealth.com'; + const site = env.SITE_URL && !/localhost|127\.0\.0\.1/.test(env.SITE_URL) ? env.SITE_URL : 'https://tleehealth.pwa.pit.world'; return createGateway({ siteUrl: site.replace(/\/+$/, ''), siteName: 'tleehealth', diff --git a/apps/web/src/universal-footer.js b/apps/web/src/universal-footer.js index 1114bd8..8b98bda 100644 --- a/apps/web/src/universal-footer.js +++ b/apps/web/src/universal-footer.js @@ -1,16 +1,16 @@ import { footerHtml, footerHtmlSync } from '@profullstack/footer'; const options = { - site: 'https://tleehealth.com/', - owner: { name: 'tleehealth', url: 'https://tleehealth.com/' }, + site: 'https://tleehealth.pwa.pit.world/', + owner: { name: 'tleehealth', url: 'https://tleehealth.pwa.pit.world/' }, links: [ { label: 'Start a practice', href: '/app' }, { label: 'Terms', href: '/terms' }, { label: 'Privacy', href: '/privacy' }, { label: 'Contact', href: 'mailto:hello@tleehealth.com' }, ], - pwamartHref: 'https://pwamart.com/for?site=https://tleehealth.com/', - builtIndieHref: 'https://built.indie.pit.world/for?site=https://tleehealth.com/', + pwamartHref: 'https://pwamart.com/for?site=https://tleehealth.pwa.pit.world/', + builtIndieHref: 'https://built.indie.pit.world/for?site=https://tleehealth.pwa.pit.world/', }; const TTL_MS = 15 * 60 * 1000; diff --git a/bin/install.sh b/bin/install.sh index 13978cb..1fcb955 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -1,5 +1,5 @@ #!/bin/sh -# tleehealth installer: curl -fsSL https://tleehealth.com/install.sh | sh +# tleehealth installer: curl -fsSL https://tleehealth.pwa.pit.world/install.sh | sh # Installs the tleehealth CLI + TUI (@profullstack/tleehealth) with bun or npm, # pinned to the registry's exact latest version (a bare @latest can be served # from a package manager's cache). diff --git a/design/build.py b/design/build.py index 3069a78..c7ab57d 100644 --- a/design/build.py +++ b/design/build.py @@ -14,7 +14,7 @@ 'Main.dc.html': ('index.html', 'tleehealth: the practice that runs itself', 'Telehealth and practice management with an AI agent that calls every patient. ' 'Scheduling, prescriptions, labs, care plans and Medicare navigation billing. $10 per seat or $199 for up to 1,000.', - 'https://tleehealth.com/'), + 'https://tleehealth.pwa.pit.world/'), } for src, (out, title, desc, canonical) in PAGES.items(): diff --git a/packages/cli/README.md b/packages/cli/README.md index 021c82a..051e5fa 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -1,9 +1,9 @@ # @profullstack/tleehealth -The [tleehealth](https://tleehealth.com) CLI and dashboard TUI. +The [tleehealth](https://tleehealth.pwa.pit.world) CLI and dashboard TUI. ```sh -npm i -g @profullstack/tleehealth # or: curl -fsSL https://tleehealth.com/install.sh | sh +npm i -g @profullstack/tleehealth # or: curl -fsSL https://tleehealth.pwa.pit.world/install.sh | sh tleehealth schedule --date today tleehealth dashboard # Today · Needs · Caseload · Records (alias: tleehealth tui) ``` diff --git a/packages/cli/package.json b/packages/cli/package.json index 3c80ca5..9d7f290 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -5,7 +5,7 @@ "type": "module", "license": "MIT", "author": "Profullstack, Inc.", - "homepage": "https://tleehealth.com", + "homepage": "https://tleehealth.pwa.pit.world", "repository": { "type": "git", "url": "https://github.com/profullstack/tleehealth.com", diff --git a/packages/cli/src/client.js b/packages/cli/src/client.js index 4cd3bdd..4238b66 100644 --- a/packages/cli/src/client.js +++ b/packages/cli/src/client.js @@ -31,7 +31,7 @@ export async function saveConfig(patch) { export async function resolveAuth({ server, key } = {}) { const saved = await loadConfig(); return { - server: (server || process.env.TLEEHEALTH_URL || saved.server || 'https://tleehealth.com').replace(/\/+$/, ''), + server: (server || process.env.TLEEHEALTH_URL || saved.server || 'https://tleehealth.pwa.pit.world').replace(/\/+$/, ''), key: key || process.env.TLEEHEALTH_API_KEY || saved.key || '', }; } diff --git a/packages/mcp/README.md b/packages/mcp/README.md index b857ec7..8bfe6e5 100644 --- a/packages/mcp/README.md +++ b/packages/mcp/README.md @@ -1,6 +1,6 @@ # @profullstack/tleehealth-mcp -MCP server for [tleehealth](https://tleehealth.com). +MCP server for [tleehealth](https://tleehealth.pwa.pit.world). ```json { "mcpServers": { "tleehealth": { "command": "npx", "args": ["-y", "@profullstack/tleehealth-mcp"] } } } diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 68a370a..2ccf192 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -5,7 +5,7 @@ "type": "module", "license": "MIT", "author": "Profullstack, Inc.", - "homepage": "https://tleehealth.com", + "homepage": "https://tleehealth.pwa.pit.world", "repository": { "type": "git", "url": "https://github.com/profullstack/tleehealth.com", diff --git a/test/app.test.js b/test/app.test.js index 1e0b22c..5b115b8 100644 --- a/test/app.test.js +++ b/test/app.test.js @@ -47,8 +47,8 @@ describe('web', () => { const foot = home.match(/]*data-pfs-footer[^>]*>[\s\S]*?<\/footer>/)?.[0] ?? ''; expect(foot).not.toBe(''); expect(foot).toContain('class="webring pfs-footer__ring"'); - expect(foot).toContain('https://rssamplifier.com/ring/profullstack/next?from=https%3A%2F%2Ftleehealth.com%2F'); - expect(foot).toContain('https://rssamplifier.com/ring/profullstack/previous?from=https%3A%2F%2Ftleehealth.com%2F'); + expect(foot).toContain('https://rssamplifier.com/ring/profullstack/next?from=https%3A%2F%2Ftleehealth.pwa.pit.world%2F'); + expect(foot).toContain('https://rssamplifier.com/ring/profullstack/previous?from=https%3A%2F%2Ftleehealth.pwa.pit.world%2F'); expect(foot.match(/©/g)?.length).toBe(1); }); test('healthz', async () => expect((await get('/healthz')).status).toBe(200)); diff --git a/test/crawl-gate.test.js b/test/crawl-gate.test.js index b881a15..20840c4 100644 --- a/test/crawl-gate.test.js +++ b/test/crawl-gate.test.js @@ -10,7 +10,7 @@ const CHROME = { 'sec-fetch-dest': 'document', }; const gate = createCrawlGate({ COINPAY_X402_KEY: 'cp_live_test', CRAWL_PAY_TO: '0xCC3b072391AE7A8d10cF00DdC5F61DB2cA5541E5' }); -const ask = (path, headers) => gate.handle(new Request(`https://tleehealth.com${path}`, { headers })); +const ask = (path, headers) => gate.handle(new Request(`https://tleehealth.pwa.pit.world${path}`, { headers })); describe('crawl gate', () => { test('is off without a key', () => {