gh-manager-cli 1.2.0 → 1.4.0
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 +14 -0
- package/README.md +6 -7
- package/dist/index.js +34 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [1.4.0](https://github.com/wiiiimm/gh-manager-cli/compare/v1.3.0...v1.4.0) (2025-08-31)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* add GitHub Packages publishing to release workflow ([0cc2052](https://github.com/wiiiimm/gh-manager-cli/commit/0cc2052591d01717fbdaf7d844f2b210c3013341))
|
|
7
|
+
|
|
8
|
+
# [1.3.0](https://github.com/wiiiimm/gh-manager-cli/compare/v1.2.0...v1.3.0) (2025-08-31)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **auth:** add Logout modal (Ctrl+L) with confirm/cancel; return to Authentication Required on confirm; fix modalOpen; center footer; clarify fork metric labels; refine key handling (case-insensitive, Ctrl+G/G separation); clear screen on quit; set page size to 5 (dev)/15 (prod) ([7a6a0fb](https://github.com/wiiiimm/gh-manager-cli/commit/7a6a0fb8767986b8640371e483f0fc5a084e75a2))
|
|
14
|
+
|
|
1
15
|
# [1.2.0](https://github.com/wiiiimm/gh-manager-cli/compare/v1.1.1...v1.2.0) (2025-08-31)
|
|
2
16
|
|
|
3
17
|
|
package/README.md
CHANGED
|
@@ -5,12 +5,8 @@ Interactive terminal app to browse and manage your personal GitHub repositories.
|
|
|
5
5
|
## Quick Start
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
#
|
|
9
|
-
npx
|
|
10
|
-
|
|
11
|
-
# Option 2: Install globally via NPM
|
|
12
|
-
npm install -g gh-manager-cli
|
|
13
|
-
gh-manager
|
|
8
|
+
# Run with npx (no installation required)
|
|
9
|
+
npx gh-manager-cli
|
|
14
10
|
```
|
|
15
11
|
|
|
16
12
|
On first run, you'll be prompted for a GitHub Personal Access Token.
|
|
@@ -49,7 +45,10 @@ On first run, you'll be prompted for a GitHub Personal Access Token.
|
|
|
49
45
|
Run instantly without installing:
|
|
50
46
|
|
|
51
47
|
```bash
|
|
52
|
-
#
|
|
48
|
+
# From NPM registry (clean, fast)
|
|
49
|
+
npx gh-manager-cli
|
|
50
|
+
|
|
51
|
+
# From GitHub (always latest)
|
|
53
52
|
npx github:wiiiimm/gh-manager-cli
|
|
54
53
|
```
|
|
55
54
|
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ var require_package = __commonJS({
|
|
|
9
9
|
"package.json"(exports, module) {
|
|
10
10
|
module.exports = {
|
|
11
11
|
name: "gh-manager-cli",
|
|
12
|
-
version: "1.
|
|
12
|
+
version: "1.4.0",
|
|
13
13
|
private: false,
|
|
14
14
|
description: "Interactive CLI to manage your GitHub repos (personal) with Ink",
|
|
15
15
|
license: "MIT",
|
|
@@ -441,7 +441,7 @@ function RepoRow({ repo, selected, index, maxWidth, spacingLines, dim, forkTrack
|
|
|
441
441
|
spacingLines > 0 && /* @__PURE__ */ jsx(Box, { height: spacingLines, children: /* @__PURE__ */ jsx(Text, { children: " " }) })
|
|
442
442
|
] });
|
|
443
443
|
}
|
|
444
|
-
function RepoList({ token, maxVisibleRows }) {
|
|
444
|
+
function RepoList({ token, maxVisibleRows, onLogout }) {
|
|
445
445
|
const { exit } = useApp();
|
|
446
446
|
const { stdout } = useStdout();
|
|
447
447
|
const client = useMemo(() => makeClient(token), [token]);
|
|
@@ -479,6 +479,9 @@ function RepoList({ token, maxVisibleRows }) {
|
|
|
479
479
|
const [syncing, setSyncing] = useState(false);
|
|
480
480
|
const [syncError, setSyncError] = useState(null);
|
|
481
481
|
const [syncFocus, setSyncFocus] = useState("confirm");
|
|
482
|
+
const [logoutMode, setLogoutMode] = useState(false);
|
|
483
|
+
const [logoutFocus, setLogoutFocus] = useState("confirm");
|
|
484
|
+
const [logoutError, setLogoutError] = useState(null);
|
|
482
485
|
function closeArchiveModal() {
|
|
483
486
|
setArchiveMode(false);
|
|
484
487
|
setArchiveTarget(null);
|
|
@@ -702,6 +705,35 @@ function RepoList({ token, maxVisibleRows }) {
|
|
|
702
705
|
}
|
|
703
706
|
return;
|
|
704
707
|
}
|
|
708
|
+
if (logoutMode) {
|
|
709
|
+
if (key.escape || input && input.toUpperCase() === "C") {
|
|
710
|
+
setLogoutMode(false);
|
|
711
|
+
setLogoutError(null);
|
|
712
|
+
setLogoutFocus("confirm");
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
715
|
+
if (key.leftArrow) {
|
|
716
|
+
setLogoutFocus("confirm");
|
|
717
|
+
return;
|
|
718
|
+
}
|
|
719
|
+
if (key.rightArrow) {
|
|
720
|
+
setLogoutFocus("cancel");
|
|
721
|
+
return;
|
|
722
|
+
}
|
|
723
|
+
if (key.return || input && input.toUpperCase() === "Y") {
|
|
724
|
+
if (logoutFocus === "cancel") {
|
|
725
|
+
setLogoutMode(false);
|
|
726
|
+
return;
|
|
727
|
+
}
|
|
728
|
+
try {
|
|
729
|
+
onLogout && onLogout();
|
|
730
|
+
} catch (e) {
|
|
731
|
+
setLogoutError(e?.message || "Failed to logout.");
|
|
732
|
+
}
|
|
733
|
+
return;
|
|
734
|
+
}
|
|
735
|
+
return;
|
|
736
|
+
}
|
|
705
737
|
if (filterMode) {
|
|
706
738
|
if (key.escape) {
|
|
707
739
|
setFilterMode(false);
|