@holdyourvoice/hyv 2.9.8 → 2.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  All notable CLI changes. Also mirrored to [holdyourvoice.com/changelog](https://holdyourvoice.com/changelog) for user-facing releases.
4
4
 
5
+ ## [2.9.9] — 2026-06-12
6
+
7
+ ### Fixed
8
+ - Welcome step 4 failure copy — says `hyv welcome` retry, not `hyv sync` (sync requires paid plan)
9
+ - CLI plan/init/export/api messages point to `/app` and `/app/billing`, not `/dashboard`
10
+ - Rewrite prompts no longer silently pick a cached profile when none is passed (generic rules as intended)
11
+ - Web auth forgot-password and session check retry on cold-start 503s
12
+ - Marketing email links point to `/app` not `/dashboard`
13
+
5
14
  ## [2.9.7] — 2026-06-12
6
15
 
7
16
  ### Fixed
@@ -36,7 +36,7 @@ npx @holdyourvoice/hyv mcp
36
36
  - profile-aware rewrite prompts (`hyv rewrite`)
37
37
  - hybrid server analysis (`hyv scan --server`, MCP `hyv_analyze`)
38
38
  - multiple profiles + team voices (team plan)
39
- - dashboard at https://holdyourvoice.com/dashboard
39
+ - dashboard at https://holdyourvoice.com/app
40
40
 
41
41
  First month $1 → https://holdyourvoice.com/#pricing
42
42
 
package/dist/index.js CHANGED
@@ -5753,7 +5753,7 @@ async function request2(method, path26, body) {
5753
5753
  if (res.status === 401)
5754
5754
  throw new Error("your session expired. run: hyv init to sign in again.");
5755
5755
  if (res.status === 403)
5756
- throw new Error("you don't have access to this feature. check your plan at holdyourvoice.com/dashboard");
5756
+ throw new Error("you don't have access to this feature. check your plan at holdyourvoice.com/app/billing");
5757
5757
  if (!res.ok) {
5758
5758
  throw new Error(`something went wrong (${res.status}). try again or contact support.`);
5759
5759
  }
@@ -11798,11 +11798,13 @@ async function stepSignup(profileName) {
11798
11798
  } else {
11799
11799
  const detail = response.data?.error;
11800
11800
  console.log(import_chalk12.default.yellow(
11801
- ` profile saved locally \u2014 sync with \`hyv sync\`${detail ? ` (${detail})` : ` (HTTP ${response.status})`}`
11801
+ ` profile saved locally \u2014 retry \`hyv welcome\` when online${detail ? ` (${detail})` : ` (HTTP ${response.status})`}`
11802
11802
  ));
11803
11803
  }
11804
11804
  } catch (err) {
11805
- console.log(import_chalk12.default.yellow(` profile saved locally \u2014 run \`hyv sync\` (${err?.message || "sync failed"})`));
11805
+ console.log(import_chalk12.default.yellow(
11806
+ ` profile saved locally \u2014 retry \`hyv welcome\` (${err?.message || "sync failed"})`
11807
+ ));
11806
11808
  }
11807
11809
  console.log(import_chalk12.default.cyan("\n opening billing in your dashboard ($1 first month)..."));
11808
11810
  await withSpinner("opening billing\u2026", () => openAuthenticatedDashboard({ next: "/app/billing" }));
@@ -15473,7 +15475,7 @@ function registerInitCommand(program3) {
15473
15475
  } else if (options?.browser === false) {
15474
15476
  console.log(import_chalk4.default.red("License key required when --no-browser is set."));
15475
15477
  console.log("\nUsage: hyv init <license-key>");
15476
- console.log("\nGenerate a license key at: https://holdyourvoice.com/dashboard");
15478
+ console.log("\nGenerate a license key at: https://holdyourvoice.com/app");
15477
15479
  process.exit(1);
15478
15480
  } else {
15479
15481
  authData = await authenticateWithBrowser();
@@ -15939,25 +15941,12 @@ Draft with line numbers ({draft_name}):
15939
15941
  `;
15940
15942
  }
15941
15943
  function loadProfile(name) {
15942
- if (name) {
15943
- const content = readCachedProfile(name);
15944
- if (content) {
15945
- return { content, name };
15946
- }
15944
+ if (!name) {
15945
+ return null;
15947
15946
  }
15948
- try {
15949
- if (!fs10.existsSync(PROFILES_DIR)) {
15950
- return null;
15951
- }
15952
- const profiles = fs10.readdirSync(PROFILES_DIR).filter((f) => f.endsWith(".md"));
15953
- if (profiles.length > 0) {
15954
- const defaultProfile = profiles[0].replace(".md", "");
15955
- const content = readCachedProfile(defaultProfile);
15956
- if (content) {
15957
- return { content, name: defaultProfile };
15958
- }
15959
- }
15960
- } catch {
15947
+ const content = readCachedProfile(name);
15948
+ if (content) {
15949
+ return { content, name };
15961
15950
  }
15962
15951
  return null;
15963
15952
  }
@@ -16865,13 +16854,13 @@ async function openBillingPortal() {
16865
16854
  }
16866
16855
  } else {
16867
16856
  console.log(import_chalk14.default.yellow("Could not open billing portal."));
16868
- console.log(import_chalk14.default.dim("Visit https://holdyourvoice.com/dashboard to manage billing."));
16857
+ console.log(import_chalk14.default.dim(`Visit ${DASHBOARD_BILLING_URL} to manage billing.`));
16869
16858
  }
16870
16859
  }
16871
16860
  async function downgradePlan() {
16872
16861
  console.log(import_chalk14.default.yellow("\nDowngrade Plan\n"));
16873
16862
  console.log("To downgrade your plan, please visit:");
16874
- console.log(import_chalk14.default.dim(" https://holdyourvoice.com/dashboard"));
16863
+ console.log(import_chalk14.default.dim(` ${DASHBOARD_BILLING_URL}`));
16875
16864
  console.log("\nOr contact support at shashank@holdyourvoice.com");
16876
16865
  }
16877
16866
 
@@ -19521,7 +19510,7 @@ async function exportCommand(format, opts) {
19521
19510
  } else {
19522
19511
  console.log(`
19523
19512
  ${c.red("\u2717")} no voice profiles found`);
19524
- console.log(` ${c.dim("create one at")} ${c.cyan("https://holdyourvoice.com/dashboard")}`);
19513
+ console.log(` ${c.dim("create one at")} ${c.cyan("https://holdyourvoice.com/app")}`);
19525
19514
  }
19526
19515
  process.exit(1);
19527
19516
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@holdyourvoice/hyv",
3
- "version": "2.9.8",
3
+ "version": "2.9.9",
4
4
  "description": "Free local AI writing scan for cursor & claude. MCP server, 220+ pattern detection, voice profiles. npx @holdyourvoice/hyv welcome",
5
5
  "main": "dist/index.js",
6
6
  "bin": {