openvibe 0.63.1 → 0.63.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/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.63.2] - 2025-03-14
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **Version Check**: Removed 24-hour cache, now checks npm registry on every startup
|
|
13
|
+
- **Real-time Update Detection**: Always fetches latest version from npm registry for accurate update notifications
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
8
17
|
## [0.63.1] - 2025-03-14
|
|
9
18
|
|
|
10
19
|
### Added
|
|
@@ -114,9 +123,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
114
123
|
|
|
115
124
|
---
|
|
116
125
|
|
|
126
|
+
[0.63.2]: https://github.com/boxiaolanya2008/openvibe/compare/v0.63.1...v0.63.2
|
|
127
|
+
[0.63.1]: https://github.com/boxiaolanya2008/openvibe/compare/v0.63.0...v0.63.1
|
|
117
128
|
[0.63.0]: https://github.com/boxiaolanya2008/openvibe/compare/v0.62.0...v0.63.0
|
|
118
129
|
[0.61.0]: https://github.com/boxiaolanya2008/openvibe/compare/v0.60.0...v0.61.0
|
|
119
130
|
[0.60.0]: https://github.com/boxiaolanya2008/openvibe/compare/v0.59.0...v0.60.0
|
|
120
131
|
[0.59.0]: https://github.com/boxiaolanya2008/openvibe/releases/tag/v0.59.0
|
|
121
|
-
60.0
|
|
122
|
-
[0.59.0]: https://github.com/boxiaolanya2008/openvibe/releases/tag/v0.59.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"AA+EA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA4CrD","sourcesContent":["import chalk from \"chalk\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { join } from \"path\";\n\nconst CACHE_DIR = join(homedir(), \".openvibe\");\nconst CACHE_FILE = join(CACHE_DIR, \"version-check.json\");\n\ninterface VersionCache {\n\tlastCheck: number;\n\tlatestVersion: string;\n}\n\nfunction getCurrentVersion(): string {\n\ttry {\n\t\tconst pkg = JSON.parse(readFileSync(new URL(\"../../package.json\", import.meta.url), \"utf-8\"));\n\t\treturn pkg.version;\n\t} catch {\n\t\treturn \"0.0.0\";\n\t}\n}\n\nfunction parseVersion(version: string): number[] {\n\treturn version.split(\".\").map((v) => parseInt(v, 10));\n}\n\nfunction isNewer(current: string, latest: string): boolean {\n\tconst currentParts = parseVersion(current);\n\tconst latestParts = parseVersion(latest);\n\n\tfor (let i = 0; i < Math.max(currentParts.length, latestParts.length); i++) {\n\t\tconst currentPart = currentParts[i] || 0;\n\t\tconst latestPart = latestParts[i] || 0;\n\t\tif (latestPart > currentPart) return true;\n\t\tif (latestPart < currentPart) return false;\n\t}\n\treturn false;\n}\n\nasync function fetchLatestVersion(): Promise<string | null> {\n\ttry {\n\t\tconst controller = new AbortController();\n\t\tconst timeout = setTimeout(() => controller.abort(), 5000);\n\n\t\tconst response = await fetch(\"https://registry.npmjs.org/openvibe\", {\n\t\t\tsignal: controller.signal,\n\t\t});\n\t\tclearTimeout(timeout);\n\n\t\tif (!response.ok) return null;\n\n\t\tconst data = (await response.json()) as { \"dist-tags\"?: { latest?: string } };\n\t\treturn data[\"dist-tags\"]?.latest || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction readCache(): VersionCache | null {\n\ttry {\n\t\tif (!existsSync(CACHE_FILE)) return null;\n\t\tconst content = readFileSync(CACHE_FILE, \"utf-8\");\n\t\treturn JSON.parse(content);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction writeCache(cache: VersionCache): void {\n\ttry {\n\t\tif (!existsSync(CACHE_DIR)) {\n\t\t\tmkdirSync(CACHE_DIR, { recursive: true });\n\t\t}\n\t\twriteFileSync(CACHE_FILE, JSON.stringify(cache));\n\t} catch {\n\t\t// Ignore cache write errors\n\t}\n}\n\nexport async function checkForUpdates(): Promise<void> {\n\tconst currentVersion = getCurrentVersion();\n\n\t// Always fetch from npm registry (no cache)\n\tconst latestVersion = await fetchLatestVersion();\n\n\tif (latestVersion) {\n\t\t// Still write to cache for other purposes (e.g., display last known version offline)\n\t\twriteCache({ lastCheck: Date.now(), latestVersion });\n\t}\n\n\tif (latestVersion && isNewer(currentVersion, latestVersion)) {\n\t\tconsole.log();\n\t\tconsole.log(chalk.yellow(\"┌─────────────────────────────────────────────────────────┐\"));\n\t\tconsole.log(\n\t\t\tchalk.yellow(\"│\") +\n\t\t\t\t\" \" +\n\t\t\t\tchalk.bold(\"Update Available\") +\n\t\t\t\t\" \" +\n\t\t\t\tchalk.yellow(\"│\"),\n\t\t);\n\t\tconsole.log(\n\t\t\tchalk.yellow(\"│\") +\n\t\t\t\t` Current: ${chalk.gray(currentVersion)}` +\n\t\t\t\t\" \" +\n\t\t\t\tchalk.yellow(\"│\"),\n\t\t);\n\t\tconsole.log(\n\t\t\tchalk.yellow(\"│\") +\n\t\t\t\t` Latest: ${chalk.green(latestVersion)}` +\n\t\t\t\t\" \" +\n\t\t\t\tchalk.yellow(\"│\"),\n\t\t);\n\t\tconsole.log(chalk.yellow(\"│\") + \" \" + chalk.yellow(\"│\"));\n\t\tconsole.log(\n\t\t\tchalk.yellow(\"│\") +\n\t\t\t\t\" Run \" +\n\t\t\t\tchalk.cyan(\"npm i -g openvibe\") +\n\t\t\t\t\" to update \" +\n\t\t\t\tchalk.yellow(\"│\"),\n\t\t);\n\t\tconsole.log(chalk.yellow(\"└─────────────────────────────────────────────────────────┘\"));\n\t\tconsole.log();\n\t}\n}\n"]}
|
|
@@ -4,9 +4,7 @@ import { homedir } from "os";
|
|
|
4
4
|
import { join } from "path";
|
|
5
5
|
const CACHE_DIR = join(homedir(), ".openvibe");
|
|
6
6
|
const CACHE_FILE = join(CACHE_DIR, "version-check.json");
|
|
7
|
-
const CHECK_INTERVAL = 24 * 60 * 60 * 1000; // 24 hours
|
|
8
7
|
function getCurrentVersion() {
|
|
9
|
-
// Read version from package.json
|
|
10
8
|
try {
|
|
11
9
|
const pkg = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf-8"));
|
|
12
10
|
return pkg.version;
|
|
@@ -72,19 +70,11 @@ function writeCache(cache) {
|
|
|
72
70
|
}
|
|
73
71
|
export async function checkForUpdates() {
|
|
74
72
|
const currentVersion = getCurrentVersion();
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
latestVersion = cache.latestVersion;
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
// Fetch from npm registry
|
|
84
|
-
latestVersion = await fetchLatestVersion();
|
|
85
|
-
if (latestVersion) {
|
|
86
|
-
writeCache({ lastCheck: now, latestVersion });
|
|
87
|
-
}
|
|
73
|
+
// Always fetch from npm registry (no cache)
|
|
74
|
+
const latestVersion = await fetchLatestVersion();
|
|
75
|
+
if (latestVersion) {
|
|
76
|
+
// Still write to cache for other purposes (e.g., display last known version offline)
|
|
77
|
+
writeCache({ lastCheck: Date.now(), latestVersion });
|
|
88
78
|
}
|
|
89
79
|
if (latestVersion && isNewer(currentVersion, latestVersion)) {
|
|
90
80
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { join } from \"path\";\n\nconst CACHE_DIR = join(homedir(), \".openvibe\");\nconst CACHE_FILE = join(CACHE_DIR, \"version-check.json\");\n\ninterface VersionCache {\n\tlastCheck: number;\n\tlatestVersion: string;\n}\n\nfunction getCurrentVersion(): string {\n\ttry {\n\t\tconst pkg = JSON.parse(readFileSync(new URL(\"../../package.json\", import.meta.url), \"utf-8\"));\n\t\treturn pkg.version;\n\t} catch {\n\t\treturn \"0.0.0\";\n\t}\n}\n\nfunction parseVersion(version: string): number[] {\n\treturn version.split(\".\").map((v) => parseInt(v, 10));\n}\n\nfunction isNewer(current: string, latest: string): boolean {\n\tconst currentParts = parseVersion(current);\n\tconst latestParts = parseVersion(latest);\n\n\tfor (let i = 0; i < Math.max(currentParts.length, latestParts.length); i++) {\n\t\tconst currentPart = currentParts[i] || 0;\n\t\tconst latestPart = latestParts[i] || 0;\n\t\tif (latestPart > currentPart) return true;\n\t\tif (latestPart < currentPart) return false;\n\t}\n\treturn false;\n}\n\nasync function fetchLatestVersion(): Promise<string | null> {\n\ttry {\n\t\tconst controller = new AbortController();\n\t\tconst timeout = setTimeout(() => controller.abort(), 5000);\n\n\t\tconst response = await fetch(\"https://registry.npmjs.org/openvibe\", {\n\t\t\tsignal: controller.signal,\n\t\t});\n\t\tclearTimeout(timeout);\n\n\t\tif (!response.ok) return null;\n\n\t\tconst data = (await response.json()) as { \"dist-tags\"?: { latest?: string } };\n\t\treturn data[\"dist-tags\"]?.latest || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction readCache(): VersionCache | null {\n\ttry {\n\t\tif (!existsSync(CACHE_FILE)) return null;\n\t\tconst content = readFileSync(CACHE_FILE, \"utf-8\");\n\t\treturn JSON.parse(content);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction writeCache(cache: VersionCache): void {\n\ttry {\n\t\tif (!existsSync(CACHE_DIR)) {\n\t\t\tmkdirSync(CACHE_DIR, { recursive: true });\n\t\t}\n\t\twriteFileSync(CACHE_FILE, JSON.stringify(cache));\n\t} catch {\n\t\t// Ignore cache write errors\n\t}\n}\n\nexport async function checkForUpdates(): Promise<void> {\n\tconst currentVersion = getCurrentVersion();\n\n\t// Always fetch from npm registry (no cache)\n\tconst latestVersion = await fetchLatestVersion();\n\n\tif (latestVersion) {\n\t\t// Still write to cache for other purposes (e.g., display last known version offline)\n\t\twriteCache({ lastCheck: Date.now(), latestVersion });\n\t}\n\n\tif (latestVersion && isNewer(currentVersion, latestVersion)) {\n\t\tconsole.log();\n\t\tconsole.log(chalk.yellow(\"┌─────────────────────────────────────────────────────────┐\"));\n\t\tconsole.log(\n\t\t\tchalk.yellow(\"│\") +\n\t\t\t\t\" \" +\n\t\t\t\tchalk.bold(\"Update Available\") +\n\t\t\t\t\" \" +\n\t\t\t\tchalk.yellow(\"│\"),\n\t\t);\n\t\tconsole.log(\n\t\t\tchalk.yellow(\"│\") +\n\t\t\t\t` Current: ${chalk.gray(currentVersion)}` +\n\t\t\t\t\" \" +\n\t\t\t\tchalk.yellow(\"│\"),\n\t\t);\n\t\tconsole.log(\n\t\t\tchalk.yellow(\"│\") +\n\t\t\t\t` Latest: ${chalk.green(latestVersion)}` +\n\t\t\t\t\" \" +\n\t\t\t\tchalk.yellow(\"│\"),\n\t\t);\n\t\tconsole.log(chalk.yellow(\"│\") + \" \" + chalk.yellow(\"│\"));\n\t\tconsole.log(\n\t\t\tchalk.yellow(\"│\") +\n\t\t\t\t\" Run \" +\n\t\t\t\tchalk.cyan(\"npm i -g openvibe\") +\n\t\t\t\t\" to update \" +\n\t\t\t\tchalk.yellow(\"│\"),\n\t\t);\n\t\tconsole.log(chalk.yellow(\"└─────────────────────────────────────────────────────────┘\"));\n\t\tconsole.log();\n\t}\n}\n"]}
|