mover-os 4.4.1 → 4.4.2
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/install.js +36 -5
- package/package.json +1 -1
package/install.js
CHANGED
|
@@ -343,7 +343,16 @@ function textInput({ label = "", initial = "", mask = null, placeholder = "" })
|
|
|
343
343
|
value = value.slice(0, pos) + value.slice(pos + 1);
|
|
344
344
|
}
|
|
345
345
|
}
|
|
346
|
-
else if (data
|
|
346
|
+
else if (data === "\x1b") {
|
|
347
|
+
// Escape — cancel input
|
|
348
|
+
stdin.removeListener("data", handler);
|
|
349
|
+
stdin.setRawMode(false);
|
|
350
|
+
stdin.pause();
|
|
351
|
+
ln();
|
|
352
|
+
resolve(null);
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
else if (data.startsWith("\x1b")) { /* ignore other escape sequences */ }
|
|
347
356
|
else {
|
|
348
357
|
for (const ch of data) {
|
|
349
358
|
if (ch.charCodeAt(0) >= 32) {
|
|
@@ -3024,6 +3033,7 @@ async function cmdCapture(opts) {
|
|
|
3024
3033
|
if (!type) return;
|
|
3025
3034
|
}
|
|
3026
3035
|
content = await textInput({ label: `Enter ${type}:` });
|
|
3036
|
+
if (content === null) return;
|
|
3027
3037
|
}
|
|
3028
3038
|
if (!type) type = "task";
|
|
3029
3039
|
|
|
@@ -3536,7 +3546,9 @@ async function cmdPrayer(opts) {
|
|
|
3536
3546
|
if (choice === "fetch") {
|
|
3537
3547
|
barLn();
|
|
3538
3548
|
const city = await textInput({ label: "City", placeholder: "London" });
|
|
3549
|
+
if (city === null) return;
|
|
3539
3550
|
const country = await textInput({ label: "Country", placeholder: "United Kingdom" });
|
|
3551
|
+
if (country === null) return;
|
|
3540
3552
|
barLn();
|
|
3541
3553
|
|
|
3542
3554
|
if (city && country) {
|
|
@@ -3562,7 +3574,7 @@ async function cmdPrayer(opts) {
|
|
|
3562
3574
|
barLn(dim(" Format examples:"));
|
|
3563
3575
|
barLn(dim(" 2026-03-08 05:20 13:00 16:15 18:01 19:45"));
|
|
3564
3576
|
barLn(dim(" March 8: Fajr 05:20, Dhuhr 13:00, Asr 16:15, Maghrib 18:01, Isha 19:45"));
|
|
3565
|
-
barLn(dim(" Type 'done' on
|
|
3577
|
+
barLn(dim(" Type 'done' or press Enter on empty line to finish. 'back' to cancel."));
|
|
3566
3578
|
barLn();
|
|
3567
3579
|
|
|
3568
3580
|
const lines = [];
|
|
@@ -3570,7 +3582,14 @@ async function cmdPrayer(opts) {
|
|
|
3570
3582
|
await new Promise((resolve) => {
|
|
3571
3583
|
const ask = () => {
|
|
3572
3584
|
rl.question(`${BAR_COLOR}\u2502${S.reset} `, (line) => {
|
|
3573
|
-
|
|
3585
|
+
const t = line.trim().toLowerCase();
|
|
3586
|
+
if (t === "done" || t === "") {
|
|
3587
|
+
rl.close();
|
|
3588
|
+
resolve();
|
|
3589
|
+
return;
|
|
3590
|
+
}
|
|
3591
|
+
if (t === "back" || t === "cancel") {
|
|
3592
|
+
lines.length = 0; // clear
|
|
3574
3593
|
rl.close();
|
|
3575
3594
|
resolve();
|
|
3576
3595
|
return;
|
|
@@ -4410,6 +4429,7 @@ async function main() {
|
|
|
4410
4429
|
mask: "\u25AA",
|
|
4411
4430
|
placeholder: "MOVER-XXXX-XXXX",
|
|
4412
4431
|
});
|
|
4432
|
+
if (key === null) return;
|
|
4413
4433
|
|
|
4414
4434
|
const sp = spinner("Validating...");
|
|
4415
4435
|
const valid = await validateKey(key);
|
|
@@ -4503,6 +4523,7 @@ async function main() {
|
|
|
4503
4523
|
label: "Where is your Obsidian vault?",
|
|
4504
4524
|
initial: path.join(os.homedir(), "Mover-OS"),
|
|
4505
4525
|
});
|
|
4526
|
+
if (vaultPath === null) return;
|
|
4506
4527
|
} else {
|
|
4507
4528
|
vaultPath = selected;
|
|
4508
4529
|
}
|
|
@@ -4511,6 +4532,7 @@ async function main() {
|
|
|
4511
4532
|
label: "Where is your Obsidian vault?",
|
|
4512
4533
|
initial: path.join(os.homedir(), "Mover-OS"),
|
|
4513
4534
|
});
|
|
4535
|
+
if (vaultPath === null) return;
|
|
4514
4536
|
}
|
|
4515
4537
|
} else {
|
|
4516
4538
|
barLn(dim(`Vault: ${vaultPath}`));
|
|
@@ -4958,7 +4980,7 @@ async function main() {
|
|
|
4958
4980
|
barLn(dim(" 2026-03-08 05:20 13:00 16:15 18:01 19:45"));
|
|
4959
4981
|
barLn(dim(" March 8: Fajr 05:20, Dhuhr 13:00, Asr 16:15, Maghrib 18:01, Isha 19:45"));
|
|
4960
4982
|
barLn(dim(" Or paste a whole table — the system will parse it."));
|
|
4961
|
-
barLn(dim("
|
|
4983
|
+
barLn(dim(" Type 'done' or press Enter on empty line to finish. 'back' to cancel."));
|
|
4962
4984
|
barLn();
|
|
4963
4985
|
|
|
4964
4986
|
const lines = [];
|
|
@@ -4966,7 +4988,14 @@ async function main() {
|
|
|
4966
4988
|
await new Promise((resolve) => {
|
|
4967
4989
|
const ask = () => {
|
|
4968
4990
|
rl.question(`${BAR_COLOR}\u2502${S.reset} `, (line) => {
|
|
4969
|
-
|
|
4991
|
+
const t = line.trim().toLowerCase();
|
|
4992
|
+
if (t === "done" || t === "") {
|
|
4993
|
+
rl.close();
|
|
4994
|
+
resolve();
|
|
4995
|
+
return;
|
|
4996
|
+
}
|
|
4997
|
+
if (t === "back" || t === "cancel") {
|
|
4998
|
+
lines.length = 0;
|
|
4970
4999
|
rl.close();
|
|
4971
5000
|
resolve();
|
|
4972
5001
|
return;
|
|
@@ -4991,7 +5020,9 @@ async function main() {
|
|
|
4991
5020
|
} else if (method === "fetch") {
|
|
4992
5021
|
barLn();
|
|
4993
5022
|
const city = await textInput({ label: "City (e.g. London, Watford, Istanbul)", placeholder: "London" });
|
|
5023
|
+
if (city === null) break;
|
|
4994
5024
|
const country = await textInput({ label: "Country", placeholder: "United Kingdom" });
|
|
5025
|
+
if (country === null) break;
|
|
4995
5026
|
barLn();
|
|
4996
5027
|
|
|
4997
5028
|
if (city && country) {
|