diff --git a/README.md b/README.md index 3ff6db6..abb131e 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Same concepts, different words — like British vs. American English. Roughly 80 **What it does:** Scans a customer's existing codebase and checks how their TwiML and Twilio SDK usage maps to Bandwidth's BXML. -**Outcome:** Size the migration effort and identify blockers **without writing a line of code**. You get a migration-complexity score and a per-feature *works-as-is / heads-up / blocker* breakdown. +**Outcome:** Size the migration effort and identify what needs a redesign **without writing a line of code**. You get a migration-complexity score and a per-feature *works-as-is / heads-up / no direct equivalent* breakdown. ```bash npm install @@ -56,7 +56,7 @@ npm run bxml-generator -- # writes out/bxml/*, out/MIGRAT ## Try the Compatibility Check in your browser — no command needed -The **Migration Compatibility Check** is a single, self-contained HTML file a sales engineer can double-click and present to a prospect. Paste a customer's TwiML (or pick a curated example) and it shows — live — a migration-complexity score, a *works-as-is / heads-up / blocker* verdict, the translated BXML, and a forwardable report. +The **Migration Compatibility Check** is a single, self-contained HTML file a sales engineer can double-click and present to a prospect. Paste a customer's TwiML (or pick a curated example) and it shows — live — a migration-complexity score, a *works-as-is / heads-up / no direct equivalent* verdict, the translated BXML, and a forwardable report. ```bash npm install diff --git a/src/bxml-generator/report.ts b/src/bxml-generator/report.ts index 1c10725..faecf30 100644 --- a/src/bxml-generator/report.ts +++ b/src/bxml-generator/report.ts @@ -22,7 +22,7 @@ export function renderMigration(result: GenerateResult): string { "# Twilio → Bandwidth migration — generated BXML", "", `Translated **${docs.length}** TwiML document${docs.length === 1 ? "" : "s"} to native BXML` + - ` (${clean} clean, ${withBlockers} with blockers).`, + ` (${clean} clean, ${withBlockers} with verbs that have no direct equivalent).`, "", "Generated BXML is written under `bxml/`. Action/redirect URLs are preserved", "exactly as your Twilio app used them — point those endpoints at your migrated", @@ -37,7 +37,7 @@ export function renderMigration(result: GenerateResult): string { if (errors.length === 0 && warnings.length === 0) lines.push("✅ Translated cleanly.", ""); if (errors.length) { - lines.push("### 🛑 Blockers — need a human", ""); + lines.push("### 🛑 No direct equivalent — needs a human", ""); for (const f of errors) lines.push(`- **${f.verb}** — ${f.message}${f.docsUrl ? ` ([docs](${f.docsUrl}))` : ""}`); lines.push(""); diff --git a/src/compatibility-check/report.ts b/src/compatibility-check/report.ts index e805d36..a48593b 100644 --- a/src/compatibility-check/report.ts +++ b/src/compatibility-check/report.ts @@ -13,7 +13,7 @@ export function renderReport(analyses: FileAnalysis[]): string { const lines: string[] = [ "# Twilio → Bandwidth migration — Compatibility Check", "", - `**Migration complexity: ${score}/10** (1 + warnings + 3×blockers, capped at 10)`, + `**Migration complexity: ${score}/10** (1 + heads-up + 3× no-equivalent, capped at 10)`, "", `Files with Twilio voice usage: ${relevant.length}`, "", @@ -25,7 +25,7 @@ export function renderReport(analyses: FileAnalysis[]): string { if (errors.length === 0 && warnings.length === 0) lines.push("✅ Runs through the translator as-is.", ""); if (errors.length) { - lines.push("### 🛑 Blockers", ""); + lines.push("### 🛑 No direct equivalent", ""); for (const f of errors) lines.push(`- **${f.verb}** — ${f.message}${f.docsUrl ? ` ([docs](${f.docsUrl}))` : ""}`); lines.push(""); diff --git a/web/README.md b/web/README.md index 63eb490..a848f4b 100644 --- a/web/README.md +++ b/web/README.md @@ -1,6 +1,6 @@ # Migration Compatibility Check playground -A single, self-contained HTML file a sales engineer can **double-click** and present to a prospect. Paste a customer's TwiML (or pick a curated example) and it shows — live — how much of that Twilio voice app runs on Bandwidth unchanged: a works-as-is / heads-up / blocker verdict, a migration-complexity score, the translated BXML, and a forwardable report. +A single, self-contained HTML file a sales engineer can **double-click** and present to a prospect. Paste a customer's TwiML (or pick a curated example) and it shows — live — how much of that Twilio voice app runs on Bandwidth unchanged: a works-as-is / heads-up / no direct equivalent verdict, a migration-complexity score, the translated BXML, and a forwardable report. No server, no install, no network. It works offline on a plane. diff --git a/web/app.ts b/web/app.ts index 2d4eb46..8c1784c 100644 --- a/web/app.ts +++ b/web/app.ts @@ -79,7 +79,7 @@ function renderVerdict(v: PreflightView): string {
${tile("clean", v.counts.clean, "Clean")} ${tile("warn", v.counts.headsUp, "Heads-up")} - ${tile("block", v.counts.blocker, "Blocker")} + ${tile("block", v.counts.blocker, "No direct equivalent")}
`; @@ -106,7 +106,7 @@ function tile(kind: "clean" | "warn" | "block", n: number, label: string): strin // ---- Findings ---- function renderFindings(v: PreflightView): string { const groups: Array<[string, "block" | "warn" | "clean", VerbCard[]]> = [ - ["Blockers", "block", v.blockers], + ["No direct equivalent", "block", v.blockers], ["Heads-up", "warn", v.headsUp], ["Clean", "clean", v.clean], ];