aethel 0.1.0 → 0.2.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 CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.5 (2026-04-05)
4
+
5
+ - Fix Node.js v25 Proxy invariant violation in withDriveRetry
6
+
7
+ ## 0.2.4 (2026-04-05)
8
+
9
+ - Fix npm publish authentication in CI workflow
10
+
11
+ ## 0.2.3 (2026-04-05)
12
+
13
+ - Enable npm trusted publishing via version workflow
14
+
15
+ ## 0.2.2 (2026-04-05)
16
+
17
+ - Retry npm publish after CI release attempt
18
+
19
+ ## 0.2.1 (2026-04-05)
20
+
21
+ - Fix auth error propagation
22
+
23
+ ## 0.2.0 (2026-04-05)
24
+
25
+ - Fix auth error propagation
26
+
27
+ ## 0.1.1 (2026-04-05)
28
+
29
+ - Add retry logic for Drive API calls
30
+
3
31
  ## 0.1.0
4
32
 
5
33
  - Initial npm release of the Aethel CLI and Ink TUI
package/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Aethel
2
2
 
3
- Git-style Google Drive sync CLI with an interactive terminal UI.
3
+ [![CI](https://github.com/CCJ-0617/Aethel/actions/workflows/ci.yml/badge.svg)](https://github.com/CCJ-0617/Aethel/actions/workflows/ci.yml)
4
+ [![npm version](https://img.shields.io/npm/v/aethel)](https://www.npmjs.com/package/aethel)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
7
+
8
+ **Git-style Google Drive sync CLI with an interactive terminal UI.**
4
9
 
5
10
  Aethel lets you manage a local workspace mirrored to Google Drive using
6
11
  familiar commands (`init`, `status`, `diff`, `add`, `commit`, `pull`, `push`)
@@ -34,7 +39,8 @@ npm run install:cli # symlinks `aethel` into ~/.local/bin
34
39
  ## GitHub Automation
35
40
 
36
41
  - `CI`: runs `npm ci`, `npm test`, and `npm run pack:check` on every push and pull request across Node.js 18, 20, and 22
37
- - `Release`: publishes to npm with trusted publishing when a GitHub Release is published or when the workflow is triggered manually
42
+ - `Version & Release`: bumps the version, updates the changelog, creates a GitHub Release, publishes to npm, and publishes to GitHub Packages
43
+ - `Publish GitHub Packages (manual)`: manually publishes the package to GitHub Packages only
38
44
  - `Dependabot`: opens weekly dependency update PRs for npm packages and GitHub Actions
39
45
 
40
46
  To enable npm trusted publishing, configure a trusted publisher for package `aethel` on npm with:
@@ -42,9 +48,9 @@ To enable npm trusted publishing, configure a trusted publisher for package `aet
42
48
  - provider: GitHub Actions
43
49
  - owner: `CCJ-0617`
44
50
  - repository: `Aethel`
45
- - workflow filename: `release.yml`
51
+ - workflow filename: `version.yml`
46
52
 
47
- After trusted publishing works once, disable token-based publishing in npm package settings and revoke any old npm automation tokens.
53
+ After trusted publishing works once, disable token-based npm publishing in GitHub Actions and revoke any old npm automation tokens.
48
54
 
49
55
  ## Google Cloud Setup
50
56
 
@@ -185,6 +191,10 @@ npm publish
185
191
  For a GitHub release, push the tagged version and create a release that matches
186
192
  the published npm version.
187
193
 
194
+ ## Contributing
195
+
196
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
197
+
188
198
  ## License
189
199
 
190
200
  [MIT](LICENSE)
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "aethel",
3
- "version": "0.1.0",
3
+ "version": "0.2.5",
4
4
  "description": "Git-style Google Drive sync CLI with interactive TUI",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/aethel/aethel.git"
9
+ "url": "git+https://github.com/CCJ-0617/Aethel.git"
10
10
  },
11
- "homepage": "https://github.com/aethel/aethel#readme",
11
+ "homepage": "https://github.com/CCJ-0617/Aethel#readme",
12
12
  "bugs": {
13
- "url": "https://github.com/aethel/aethel/issues"
13
+ "url": "https://github.com/CCJ-0617/Aethel/issues"
14
14
  },
15
15
  "keywords": [
16
16
  "google-drive",
@@ -44,15 +44,15 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "chalk": "^5.3.0",
47
- "commander": "^12.1.0",
48
- "googleapis": "^140.0.1",
47
+ "commander": "^14.0.3",
48
+ "googleapis": "^171.4.0",
49
49
  "ignore": "^7.0.5",
50
- "ink": "^5.1.0",
50
+ "ink": "^6.8.0",
51
51
  "ink-select-input": "^6.0.0",
52
52
  "ink-spinner": "^5.0.0",
53
53
  "ink-text-input": "^6.0.0",
54
- "open": "^10.1.0",
55
- "react": "^18.3.1"
54
+ "open": "^11.0.0",
55
+ "react": "^19.2.4"
56
56
  },
57
57
  "engines": {
58
58
  "node": ">=18"
package/src/cli.js CHANGED
@@ -1058,6 +1058,8 @@ async function main() {
1058
1058
  }
1059
1059
 
1060
1060
  main().catch((error) => {
1061
- console.error(`Error: ${error.message}`);
1061
+ const message =
1062
+ error instanceof Error ? error.message : typeof error === "string" ? error : JSON.stringify(error ?? "Unknown error");
1063
+ console.error(`Error: ${message}`);
1062
1064
  process.exitCode = 1;
1063
1065
  });
package/src/core/auth.js CHANGED
@@ -263,11 +263,11 @@ export async function getAuthClient(credentialsPath, tokenPath) {
263
263
 
264
264
  try {
265
265
  return await _authPromise;
266
- } catch {
266
+ } catch (error) {
267
267
  // Clear the cache on failure so the next call retries.
268
268
  _authPromise = null;
269
269
  _authKey = null;
270
- throw arguments[0];
270
+ throw error;
271
271
  }
272
272
  }
273
273
 
@@ -71,11 +71,8 @@ export function withDriveRetry(drive) {
71
71
  return (...args) => withRetry(() => value.apply(target, args));
72
72
  },
73
73
  });
74
- return new Proxy(drive, {
75
- get(target, prop, receiver) {
76
- if (prop === "files") return filesProxy;
77
- return Reflect.get(target, prop, receiver);
78
- },
74
+ return Object.create(drive, {
75
+ files: { value: filesProxy, configurable: true, enumerable: true },
79
76
  });
80
77
  }
81
78
 
package/.env.example DELETED
@@ -1,2 +0,0 @@
1
- GOOGLE_DRIVE_CREDENTIALS_PATH=credentials.json
2
- GOOGLE_DRIVE_TOKEN_PATH=token.json