From 04c7800beadd99423be57aae0c0e780b74b4b81a Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Tue, 8 Sep 2026 15:09:44 +0200 Subject: [PATCH] site: correct every use-it surface; plain language throughout The /api page advertised the retired interscript.org/api endpoint in its curl hero and generated snippets (404 live; production is api.interscript.org/v1, POST JSON, open CORS) and showed a CDN import of the wrong package name with a strategy that cannot load the ISC-only maps endpoint. The npm card called bare transliterate() with no loader configured. The CLI section used a package and bin name that do not exist (interscript-ts; the bin is interscript) and could not have worked before 5.3.1 anyway - the CLI gained an ISC loader today. The home CTA's curl line fetched a .json the endpoint stopped serving. Every snippet now shows a verified command: the API examples against the live POST endpoint, the CDN/npm cards use the ISC strategy recipe (pinned 5.3.1, probed in a browser), the CLI examples run as shipped, and the new Python card states the one setup step it needs (a maps checkout). /ml adds the no-install paths (REST infer endpoint, the browser demo, the CDN recipe). Headlines rewritten in plain language per the house decision: 'Try it. Copy the snippet. Ship.' -> 'Try the API.', 'Where maps end, models begin' -> 'Neural models for what maps cannot cover', 'Every trap we fell into, now a rule' -> 'How we measure', '580M parameters against the frontier' -> 'Our results against the frontier', 'Measured, or it doesn't ship' -> 'Every number is measured'. --- src/pages/api.astro | 97 +++++++++++++++++++++++------------ src/pages/index.astro | 8 +-- src/pages/ml.astro | 19 ++++--- src/scripts/api-playground.ts | 19 ++++--- 4 files changed, 90 insertions(+), 53 deletions(-) diff --git a/src/pages/api.astro b/src/pages/api.astro index e9dfb74..6c0795f 100644 --- a/src/pages/api.astro +++ b/src/pages/api.astro @@ -19,20 +19,20 @@ const playgroundSystems = [

API & playground

-

Try it. Copy the snippet. Ship.

+

Try the API.

- The Interscript REST API runs at https://interscript.org/api/ — open to all, no auth, - no rate limits (yet). Three endpoints: /api/transliterate, /api/systems, /api/detect. Or run the same engine locally in JS, TypeScript, Ruby, or your - terminal. + The REST API runs at https://api.interscript.org/v1. No account, no API key. + Send a POST request with a JSON body. Endpoints: /transliterate (one + conversion), /transliterate/batch (many), /systems (the 289-system + catalogue), /detect (which system explains a source–target pair), and + /infer (neural models — diacritization and grapheme-to-phoneme). Responses + allow cross-origin requests, so browser scripts can call the API directly.

+ class="hero-curl">
@@ -55,9 +55,19 @@ curl -G 'https://interscript.org/api/transliterate' \\

npm

npm install interscript
-
+
+
+ Python +

pip

+
+
pip install interscript
+
+
+
Browser

CDN

-
npm install interscript
-# or: https://esm.sh/interscript-ts
+
No build step. Import from a CDN:
+) +// → "Anton Olehovych"`} />
@@ -143,8 +173,9 @@ const out = await transliterateAsync(

CLI & CI

Transliterate from the terminal.

- The interscript-ts CLI runs anywhere Node does — your laptop, a build pipeline, - a GitHub Action. Same engine, same maps, same byte-for-byte output. + The interscript CLI runs anywhere Node does — a laptop, a build pipeline, + a GitHub Action. Maps load from interscript.org; no local checkout needed + (npm package 5.3.1 or later). Same engine and same output as every other runtime.

@@ -154,9 +185,9 @@ const out = await transliterateAsync( CLI

Install

-
npm install -g interscript-ts
-# or use without installing:
-npx interscript-ts --help
+
npm install -g interscript
+# or run it once without installing:
+npx interscript --help
@@ -165,11 +196,11 @@ npx interscript-ts --help

Single call

@@ -179,11 +210,11 @@ interscript-ts t bgnpcgn-ukr-Cyrl-Latn-2019 \\

Batch (CSV)

 romanized.csv
 
 # Or: list every BGN/PCGN Cyrillic system
-interscript-ts list --authority bgnpcgn \\
+interscript list --authority bgnpcgn \\
   --source-script Cyrl --maps-dir ./maps`} />
@@ -202,7 +233,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: '20' } - - run: npx interscript-ts@latest \\ + - run: npx interscript@latest \\ b bgnpcgn-ukr-Cyrl-Latn-2019 \\ names.txt --csv \\ --http https://interscript.org/maps \\ diff --git a/src/pages/index.astro b/src/pages/index.astro index 5d0d734..7e2b86f 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -255,7 +255,7 @@ for (const code of systemCodes) {

The neural layer

-

Where maps end, models begin.

+

Neural models for what maps cannot cover.

Some conversions have no authority document: restoring the diacritics a scribe left out, reading Thai or Urdu as phonemes. Those ship as checksummed neural artifacts under the @@ -321,10 +321,10 @@ for (const code of systemCodes) { gem install interscript # TypeScript / JavaScript -npm install interscript-ts +npm install interscript -# Or load a single map's IR directly -curl interscript.org/maps/<system-code>.json +# Or fetch a single map's source directly +curl interscript.org/maps/<system-code>.isc

diff --git a/src/pages/ml.astro b/src/pages/ml.astro index ba12f87..535d3da 100644 --- a/src/pages/ml.astro +++ b/src/pages/ml.astro @@ -115,7 +115,7 @@ const clientModels = [

The neural layer

- Where maps end,
models begin. + Neural models for the
conversions maps cannot cover.

The 289 authority-backed maps cover romanization systems that a committee has published. @@ -134,7 +134,7 @@ const clientModels = [

The catalogue

-

Every model, with its number.

+

Every model, with its measured score.

The index resolves 23 models across five languages. No model is published without a measured metric next to its teacher's, on the same harness, in the open. Students are @@ -211,8 +211,8 @@ const clientModels = [

-

The frontier, measured

-

580M parameters against the frontier.

+

Measurements

+

Our results against the frontier.

SadeedDiac-25 — all 1,200 paragraphs, Misraj's own evaluator, windowed zero-skip protocol, one instrument for every row. Our dedicated 580M teacher is the best @@ -364,7 +364,7 @@ const clientModels = [

The instrument

-

Every trap we fell into, now a rule.

+

How we measure.

Measurement discipline isn't ceremony — each of these rules exists because the naive version produced a wrong number we nearly shipped. They are why a number on this page @@ -468,6 +468,13 @@ model.translate("สวัสดี") >SECRYST_CACHE. Both are read at call time in all three runtimes.

+

+ Without installing anything: the same models answer the REST endpoint + POST https://api.interscript.org/v1/infer (open CORS, no key), and run in the + browser at the demo page. In a script with no build step, the map + layer loads from esm.sh — full recipe in the + package's docs/CDN.md. +

@@ -478,7 +485,7 @@ model.translate("สวัสดี")

Provenance

-

Measured, or it doesn't ship.

+

Every number is measured.

Teachers are frozen before distillation and never LLM-generated — language-model teachers hallucinate diacritics. Every number in the ledger links to a protocol in the open results diff --git a/src/scripts/api-playground.ts b/src/scripts/api-playground.ts index 1f51a5f..db34018 100644 --- a/src/scripts/api-playground.ts +++ b/src/scripts/api-playground.ts @@ -42,9 +42,13 @@ const state: State = { } function snippetJs(s: State): string { - return `import { transliterate } from "interscript" + return `import { configure, iscStrategy, transliterateAsync } from "interscript" -const result = transliterate( +configure({ + strategies: [iscStrategy({ baseUrl: "https://interscript.org/maps" })], +}) + +const result = await transliterateAsync( "${s.system}", ${JSON.stringify(s.input)} ) @@ -64,15 +68,10 @@ puts result } function snippetCurl(s: State): string { - return `# GET request — easy to test in any terminal -curl -G 'https://interscript.org/api/transliterate' \\ - --data-urlencode 'system=${s.system}' \\ - --data-urlencode 'input=${s.input}' - -# Or POST a JSON body: -curl -X POST 'https://interscript.org/api/transliterate' \\ + return `curl -X POST 'https://api.interscript.org/v1/transliterate' \\ -H 'Content-Type: application/json' \\ - -d '{"system": "${s.system}", "input": ${JSON.stringify(s.input)}}'` + -d '{"system": "${s.system}", "input": ${JSON.stringify(s.input)}}' +# → {"system":"${s.system}","input":${JSON.stringify(s.input)},"output":${JSON.stringify(s.output)}}` } function render() {