@holdyourvoice/hyv 2.9.4 → 2.9.5
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 +6 -0
- package/dist/index.js +75 -7
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
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.5] — 2026-06-12
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- Post-signup browser opens `/app/billing` (live dashboard) instead of `/dashboard` (404)
|
|
9
|
+
- Worker redirects `/dashboard` → `/app` for old links
|
|
10
|
+
|
|
5
11
|
## [2.9.4] — 2026-06-12
|
|
6
12
|
|
|
7
13
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -4612,6 +4612,40 @@ var require_source = __commonJS({
|
|
|
4612
4612
|
});
|
|
4613
4613
|
|
|
4614
4614
|
// src/lib/config.ts
|
|
4615
|
+
var config_exports = {};
|
|
4616
|
+
__export(config_exports, {
|
|
4617
|
+
API_BASE: () => API_BASE,
|
|
4618
|
+
AUTH_FILE: () => AUTH_FILE,
|
|
4619
|
+
CACHE_DIR: () => CACHE_DIR,
|
|
4620
|
+
CONFIG_FILE: () => CONFIG_FILE,
|
|
4621
|
+
HYV_DIR: () => HYV_DIR,
|
|
4622
|
+
LAST_SESSION_FILE: () => LAST_SESSION_FILE,
|
|
4623
|
+
PROFILES_DIR: () => PROFILES_DIR,
|
|
4624
|
+
QUEUE_DIR: () => QUEUE_DIR,
|
|
4625
|
+
appendSecureLine: () => appendSecureLine,
|
|
4626
|
+
assertSafeOAuthUrl: () => assertSafeOAuthUrl,
|
|
4627
|
+
assertSafeOpenUrl: () => assertSafeOpenUrl2,
|
|
4628
|
+
assertSafeProfileName: () => assertSafeProfileName,
|
|
4629
|
+
clearAuth: () => clearAuth,
|
|
4630
|
+
clearQueuedSignals: () => clearQueuedSignals,
|
|
4631
|
+
cliApiUrl: () => cliApiUrl,
|
|
4632
|
+
ensureHyvDir: () => ensureHyvDir,
|
|
4633
|
+
getQueuedSignals: () => getQueuedSignals,
|
|
4634
|
+
getToken: () => getToken,
|
|
4635
|
+
isInitialized: () => isInitialized,
|
|
4636
|
+
listCachedProfiles: () => listCachedProfiles,
|
|
4637
|
+
profilePathForName: () => profilePathForName,
|
|
4638
|
+
queueSignal: () => queueSignal,
|
|
4639
|
+
readAuth: () => readAuth,
|
|
4640
|
+
readCachedProfile: () => readCachedProfile,
|
|
4641
|
+
readConfig: () => readConfig,
|
|
4642
|
+
readLastEditSession: () => readLastEditSession,
|
|
4643
|
+
saveLastEditSession: () => saveLastEditSession,
|
|
4644
|
+
writeAuth: () => writeAuth,
|
|
4645
|
+
writeCachedProfile: () => writeCachedProfile,
|
|
4646
|
+
writeConfig: () => writeConfig,
|
|
4647
|
+
writeSecureFile: () => writeSecureFile
|
|
4648
|
+
});
|
|
4615
4649
|
function validateApiBase(raw) {
|
|
4616
4650
|
const trimmed = raw.replace(/\/$/, "");
|
|
4617
4651
|
let parsed;
|
|
@@ -4703,6 +4737,10 @@ function ensureHyvDir() {
|
|
|
4703
4737
|
}
|
|
4704
4738
|
}
|
|
4705
4739
|
}
|
|
4740
|
+
function writeSecureFile(filePath, content) {
|
|
4741
|
+
ensureHyvDir();
|
|
4742
|
+
fs.writeFileSync(filePath, content, { mode: 384 });
|
|
4743
|
+
}
|
|
4706
4744
|
function appendSecureLine(filePath, line, dir) {
|
|
4707
4745
|
if (dir) {
|
|
4708
4746
|
if (!fs.existsSync(dir))
|
|
@@ -4741,6 +4779,11 @@ function writeAuth(auth) {
|
|
|
4741
4779
|
ensureHyvDir();
|
|
4742
4780
|
fs.writeFileSync(AUTH_FILE, JSON.stringify(auth, null, 2), { mode: 384 });
|
|
4743
4781
|
}
|
|
4782
|
+
function clearAuth() {
|
|
4783
|
+
if (fs.existsSync(AUTH_FILE)) {
|
|
4784
|
+
fs.unlinkSync(AUTH_FILE);
|
|
4785
|
+
}
|
|
4786
|
+
}
|
|
4744
4787
|
function readConfig() {
|
|
4745
4788
|
try {
|
|
4746
4789
|
if (!fs.existsSync(CONFIG_FILE))
|
|
@@ -4811,6 +4854,17 @@ function queueSignal(signal) {
|
|
|
4811
4854
|
const filePath = path.join(QUEUE_DIR, `${id}.json`);
|
|
4812
4855
|
fs.writeFileSync(filePath, JSON.stringify(signal, null, 2), { mode: 384 });
|
|
4813
4856
|
}
|
|
4857
|
+
function clearQueuedSignals() {
|
|
4858
|
+
try {
|
|
4859
|
+
if (!fs.existsSync(QUEUE_DIR))
|
|
4860
|
+
return;
|
|
4861
|
+
const files = fs.readdirSync(QUEUE_DIR).filter((f) => f.endsWith(".json"));
|
|
4862
|
+
for (const f of files) {
|
|
4863
|
+
fs.unlinkSync(path.join(QUEUE_DIR, f));
|
|
4864
|
+
}
|
|
4865
|
+
} catch {
|
|
4866
|
+
}
|
|
4867
|
+
}
|
|
4814
4868
|
function saveLastEditSession(session) {
|
|
4815
4869
|
ensureHyvDir();
|
|
4816
4870
|
const data = { ...session, saved_at: (/* @__PURE__ */ new Date()).toISOString() };
|
|
@@ -5494,8 +5548,7 @@ async function openAuthenticatedDashboard(opts = {}) {
|
|
|
5494
5548
|
const response = await authenticatedRequest(cliApiUrl("/cli/auth/web-handoff"), {
|
|
5495
5549
|
method: "POST",
|
|
5496
5550
|
body: {
|
|
5497
|
-
next: opts.next || "/
|
|
5498
|
-
tab: opts.tab || "billing"
|
|
5551
|
+
next: opts.next || "/app/billing"
|
|
5499
5552
|
}
|
|
5500
5553
|
});
|
|
5501
5554
|
if (response.status !== 200) {
|
|
@@ -5566,6 +5619,17 @@ var init_auth = __esm({
|
|
|
5566
5619
|
});
|
|
5567
5620
|
|
|
5568
5621
|
// src/lib/free-paid.ts
|
|
5622
|
+
var free_paid_exports = {};
|
|
5623
|
+
__export(free_paid_exports, {
|
|
5624
|
+
COMMUNITY_URL: () => COMMUNITY_URL,
|
|
5625
|
+
DASHBOARD_BILLING_URL: () => DASHBOARD_BILLING_URL,
|
|
5626
|
+
FREE_CLI_COMMANDS: () => FREE_CLI_COMMANDS,
|
|
5627
|
+
FREE_WEB_TOOLS: () => FREE_WEB_TOOLS,
|
|
5628
|
+
NPX_EXAMPLES: () => NPX_EXAMPLES,
|
|
5629
|
+
PAID_FEATURES: () => PAID_FEATURES,
|
|
5630
|
+
PRICING_URL: () => PRICING_URL,
|
|
5631
|
+
printFreePaidMatrix: () => printFreePaidMatrix
|
|
5632
|
+
});
|
|
5569
5633
|
function printFreePaidMatrix(opts = {}) {
|
|
5570
5634
|
if (opts.compact) {
|
|
5571
5635
|
console.log(import_chalk2.default.bold("\nFree forever (local)"));
|
|
@@ -5646,7 +5710,7 @@ var init_free_paid = __esm({
|
|
|
5646
5710
|
];
|
|
5647
5711
|
COMMUNITY_URL = "https://holdyourvoice.com/community";
|
|
5648
5712
|
PRICING_URL = "https://holdyourvoice.com/#pricing";
|
|
5649
|
-
DASHBOARD_BILLING_URL = "https://holdyourvoice.com/
|
|
5713
|
+
DASHBOARD_BILLING_URL = "https://holdyourvoice.com/app/billing";
|
|
5650
5714
|
}
|
|
5651
5715
|
});
|
|
5652
5716
|
|
|
@@ -11796,10 +11860,14 @@ async function stepSignup(profileName) {
|
|
|
11796
11860
|
}
|
|
11797
11861
|
try {
|
|
11798
11862
|
console.log(import_chalk12.default.cyan("\n opening billing in your dashboard ($1 first month)..."));
|
|
11799
|
-
await withSpinner("opening dashboard\u2026", () => openAuthenticatedDashboard({
|
|
11863
|
+
await withSpinner("opening dashboard\u2026", () => openAuthenticatedDashboard({ next: "/app/billing" }));
|
|
11800
11864
|
await briefPause();
|
|
11801
11865
|
} catch {
|
|
11802
|
-
|
|
11866
|
+
const { DASHBOARD_BILLING_URL: DASHBOARD_BILLING_URL2 } = await Promise.resolve().then(() => (init_free_paid(), free_paid_exports));
|
|
11867
|
+
const { assertSafeOpenUrl: assertSafeOpenUrl3 } = await Promise.resolve().then(() => (init_config(), config_exports));
|
|
11868
|
+
const { default: open3 } = await Promise.resolve().then(() => __toESM(require_open()));
|
|
11869
|
+
console.log(import_chalk12.default.yellow(" handoff unavailable \u2014 opening billing (sign in if prompted)..."));
|
|
11870
|
+
await open3(assertSafeOpenUrl3(DASHBOARD_BILLING_URL2));
|
|
11803
11871
|
}
|
|
11804
11872
|
markStepComplete("signup");
|
|
11805
11873
|
console.log(import_chalk12.default.dim("\n you're signed in \u2014 pick a plan in billing, no second login.\n"));
|
|
@@ -16830,7 +16898,7 @@ async function showPlan() {
|
|
|
16830
16898
|
async function upgradePlan() {
|
|
16831
16899
|
console.log(import_chalk14.default.cyan("\nOpening billing in your dashboard ($1 first month)...\n"));
|
|
16832
16900
|
try {
|
|
16833
|
-
await openAuthenticatedDashboard({
|
|
16901
|
+
await openAuthenticatedDashboard({ next: "/app/billing" });
|
|
16834
16902
|
console.log(import_chalk14.default.green("\n\u2713 Dashboard opened \u2014 you're already signed in"));
|
|
16835
16903
|
console.log(import_chalk14.default.dim("Pick a plan in billing. No second login."));
|
|
16836
16904
|
} catch {
|
|
@@ -18414,7 +18482,7 @@ var import_chalk29 = __toESM(require_source());
|
|
|
18414
18482
|
var PAGES = {
|
|
18415
18483
|
dashboard: "https://holdyourvoice.com/dashboard",
|
|
18416
18484
|
profiles: "https://holdyourvoice.com/dashboard",
|
|
18417
|
-
pricing: "https://holdyourvoice.com/
|
|
18485
|
+
pricing: "https://holdyourvoice.com/app/billing",
|
|
18418
18486
|
settings: "https://holdyourvoice.com/dashboard"
|
|
18419
18487
|
};
|
|
18420
18488
|
function registerOpenCommand(program3) {
|
package/package.json
CHANGED