github-archiver 1.0.8 → 1.0.9

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.
Files changed (3) hide show
  1. package/CHANGELOG.md +27 -12
  2. package/docs/RELEASE.md +133 -79
  3. package/package.json +16 -7
package/CHANGELOG.md CHANGED
@@ -1,32 +1,41 @@
1
1
  ## [1.0.8](https://github.com/mynameistito/github-archiver/compare/v1.0.7...v1.0.8) (2026-01-11)
2
2
 
3
- ## [1.0.7](https://github.com/mynameistito/github-archiver/compare/v1.0.6...v1.0.7) (2026-01-11)
3
+ ## 1.0.9
4
+
5
+ ### Patch Changes
6
+
7
+ - [`230c310`](https://github.com/mynameistito/github-archiver/commit/230c3106625c6b4170aff58dc8a79ed78f7a6938) Thanks [@mynameistito](https://github.com/mynameistito)! - Migrate from semantic-release to @changesets/cli for better release control
4
8
 
9
+ - Replace semantic-release with @changesets/cli for explicit version management
10
+ - Add GitHub-linked changelog generation with PR/commit references
11
+ - Update to two-step release process (Version Packages PR + manual merge)
12
+ - Integrate with bun for improved package management
13
+ - Update Node requirement to 22+ (aligns with actual dependencies)
14
+ - Update CI/CD workflows to use bun exclusively
15
+
16
+ ## [1.0.7](https://github.com/mynameistito/github-archiver/compare/v1.0.6...v1.0.7) (2026-01-11)
5
17
 
6
18
  ### Bug Fixes
7
19
 
8
- * update version number in source code to match package.json ([f9ef48c](https://github.com/mynameistito/github-archiver/commit/f9ef48c344cf46e2ebb37141a9db211bddf57d47))
20
+ - update version number in source code to match package.json ([f9ef48c](https://github.com/mynameistito/github-archiver/commit/f9ef48c344cf46e2ebb37141a9db211bddf57d47))
9
21
 
10
22
  ## [1.0.6](https://github.com/mynameistito/github-archiver/compare/v1.0.5...v1.0.6) (2026-01-11)
11
23
 
12
-
13
24
  ### Bug Fixes
14
25
 
15
- * ensure ESM output in bundled dist file ([48a242a](https://github.com/mynameistito/github-archiver/commit/48a242ad0b15c16e78c66aafab69ba84b64590b9))
26
+ - ensure ESM output in bundled dist file ([48a242a](https://github.com/mynameistito/github-archiver/commit/48a242ad0b15c16e78c66aafab69ba84b64590b9))
16
27
 
17
28
  ## [1.0.5](https://github.com/mynameistito/github-archiver/compare/v1.0.4...v1.0.5) (2026-01-11)
18
29
 
19
-
20
30
  ### Bug Fixes
21
31
 
22
- * build output as ESM to match package.json type ([e0aadd7](https://github.com/mynameistito/github-archiver/commit/e0aadd740c559333375e57b0f34e7e2d6a04240c))
32
+ - build output as ESM to match package.json type ([e0aadd7](https://github.com/mynameistito/github-archiver/commit/e0aadd740c559333375e57b0f34e7e2d6a04240c))
23
33
 
24
34
  ## [1.0.4](https://github.com/mynameistito/github-archiver/compare/v1.0.3...v1.0.4) (2026-01-11)
25
35
 
26
-
27
36
  ### Bug Fixes
28
37
 
29
- * add repository URL to package.json for npm provenance ([02ddb1c](https://github.com/mynameistito/github-archiver/commit/02ddb1c9f4b6a7b7ca91497b2633011accf94356))
38
+ - add repository URL to package.json for npm provenance ([02ddb1c](https://github.com/mynameistito/github-archiver/commit/02ddb1c9f4b6a7b7ca91497b2633011accf94356))
30
39
 
31
40
  ## [1.0.3](https://github.com/mynameistito/github-archiver/compare/v1.0.2...v1.0.3) (2026-01-11)
32
41
 
@@ -34,17 +43,15 @@
34
43
 
35
44
  ## [1.0.1](https://github.com/mynameistito/github-archiver/compare/v1.0.0...v1.0.1) (2026-01-11)
36
45
 
37
-
38
46
  ### Bug Fixes
39
47
 
40
- * correct relative import path in CLI wrapper ([cc64796](https://github.com/mynameistito/github-archiver/commit/cc64796d2d0a06175faf053d63e9c1e8ffe0d371))
48
+ - correct relative import path in CLI wrapper ([cc64796](https://github.com/mynameistito/github-archiver/commit/cc64796d2d0a06175faf053d63e9c1e8ffe0d371))
41
49
 
42
50
  # 1.0.0 (2026-01-11)
43
51
 
44
-
45
52
  ### Bug Fixes
46
53
 
47
- * separate CLI wrapper to resolve ESM shebang conflict ([fc9918a](https://github.com/mynameistito/github-archiver/commit/fc9918a46953634b1ad15a0f64175937acb4f29b))
54
+ - separate CLI wrapper to resolve ESM shebang conflict ([fc9918a](https://github.com/mynameistito/github-archiver/commit/fc9918a46953634b1ad15a0f64175937acb4f29b))
48
55
 
49
56
  # Changelog
50
57
 
@@ -56,6 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
56
63
  ## [1.0.0] - 2025-01-11
57
64
 
58
65
  ### Added
66
+
59
67
  - Initial release of GitHub Archiver CLI
60
68
  - Mass archive GitHub repositories with parallel processing
61
69
  - Three input methods: editor, file, and stdin
@@ -77,6 +85,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
85
  - Biome formatting and linting enforcement
78
86
 
79
87
  ### Commands
88
+
80
89
  - `auth login` - Authenticate with GitHub
81
90
  - `auth logout` - Remove stored token
82
91
  - `auth status` - Check authentication status
@@ -84,6 +93,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
84
93
  - `archive` - Archive repositories with multiple options
85
94
 
86
95
  ### Features
96
+
87
97
  - Parallel processing with p-queue
88
98
  - Retry logic with exponential backoff (1s → 2s → 4s)
89
99
  - Repository validation (exists, permissions, already archived)
@@ -93,6 +103,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
93
103
  - Support for configuration files and comments in input
94
104
 
95
105
  ### Documentation
106
+
96
107
  - Comprehensive README with quick start guide
97
108
  - Installation instructions
98
109
  - Command reference with examples
@@ -101,6 +112,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
101
112
  - Architecture overview
102
113
 
103
114
  ### Testing
115
+
104
116
  - 34 unit tests covering:
105
117
  - URL parsing (20+ tests)
106
118
  - Output formatting (15+ tests)
@@ -108,6 +120,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
108
120
  - Vitest configuration for fast testing
109
121
 
110
122
  ### Code Quality
123
+
111
124
  - TypeScript strict mode enabled
112
125
  - 0 compilation errors
113
126
  - 0 implicit any types
@@ -119,6 +132,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
119
132
  ## Unreleased
120
133
 
121
134
  ### Planned Features
135
+
122
136
  - [ ] Batch progress reporting with live updates
123
137
  - [ ] Support for organization-wide archiving
124
138
  - [ ] Integration tests for archive command
@@ -130,6 +144,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
130
144
  - [ ] Undo/rollback capability (unarchive)
131
145
 
132
146
  ### Under Consideration
147
+
133
148
  - Docker image distribution
134
149
  - NPX support for one-time use
135
150
  - Scheduled archiving via cron
package/docs/RELEASE.md CHANGED
@@ -1,123 +1,177 @@
1
1
  # Release Process
2
2
 
3
- This document details the automated release process for GitHub Archiver CLI using semantic-release.
3
+ This project uses **Changesets** for version management and publishing.
4
4
 
5
- ## How Releases Work
5
+ ## Overview
6
6
 
7
- ### 1. Commit Format
7
+ The release process is **two-step and automated**:
8
8
 
9
- Use [Conventional Commits](https://www.conventionalcommits.org/):
9
+ 1. **Developer creates changesets** - Explicit intent for what's being released
10
+ 2. **GitHub Actions automates the rest** - Creates version PR, then publishes
10
11
 
11
- - `feat:` - New features → **minor** version bump (1.0.0 → 1.1.0)
12
- - `fix:` - Bug fixes → **patch** version bump (1.0.0 → 1.0.1)
13
- - `BREAKING CHANGE:` - Breaking changes → **major** version bump (1.0.0 → 2.0.0)
14
- - `chore:`, `docs:`, `test:` - No version bump
12
+ ## For Contributors
15
13
 
16
- ### 2. Automatic Trigger
14
+ ### Creating a Changeset
17
15
 
18
- Push to `main` branch triggers the release workflow:
16
+ When you've made changes that should be included in a release:
19
17
 
20
- 1. Semantic release analyzes commits and determines version bump
21
- 2. Package version is updated, published to npm
22
- 3. GitHub release is created with changelog
23
- 4. Git tag is created automatically
18
+ 1. **Create a changeset file:**
19
+ ```bash
20
+ bun run changeset:add
21
+ ```
24
22
 
25
- ### 3. Trusted Publishing
23
+ 2. **Answer the prompts:**
24
+ - Which packages are affected? → Select `github-archiver`
25
+ - What's the type of change? → Choose:
26
+ - `patch` - bug fixes (1.0.0 → 1.0.1)
27
+ - `minor` - new features (1.0.0 → 1.1.0)
28
+ - `major` - breaking changes (1.0.0 → 2.0.0)
29
+ - Write a description of your change
26
30
 
27
- Uses OpenID Connect (OIDC) for secure, tokenless authentication:
31
+ 3. **Commit the generated changeset file:**
32
+ ```bash
33
+ git add .changeset/*.md
34
+ git commit -m "docs: add changeset for feature X"
35
+ ```
28
36
 
29
- - No npm tokens required - eliminates security risks
30
- - Short-lived, cryptographically-signed tokens for each publish
31
- - Works with personal GitHub accounts
37
+ 4. **Push your branch and open a PR as usual**
32
38
 
33
- ### 4. Node Version Requirements
39
+ ### Automated Release
34
40
 
35
- - Package runs on Node 18+ (see `package.json` engines)
36
- - Release workflow uses Node 22+ (semantic-release requirement)
37
- - CI tests on Node 18 and 22 for maximum compatibility
41
+ Once your PR is merged to `main`:
38
42
 
39
- ### 5. Example Workflow
43
+ 1. GitHub Actions detects the changeset files
44
+ 2. Creates a "Version Packages" PR with:
45
+ - Updated `package.json` version
46
+ - Updated `CHANGELOG.md` with your descriptions
47
+ - GitHub links to commits and PRs
48
+ 3. Merge the "Version Packages" PR
49
+ 4. GitHub Actions automatically:
50
+ - Publishes to npm
51
+ - Creates a GitHub release
52
+ - Tags the commit with the version
40
53
 
41
- ```bash
42
- git checkout main
43
- git pull
44
- # Make your commits with conventional format
45
- git commit -m "feat: add support for custom config file"
46
- git push
47
- # Release happens automatically!
54
+ ### Changeset File Format
55
+
56
+ Example: `.changeset/excited-newts-talk.md`
57
+
58
+ ```markdown
59
+ ---
60
+ "github-archiver": minor
61
+ ---
62
+
63
+ Add support for custom GitHub token configuration in config file
48
64
  ```
49
65
 
50
- ## Trusted Publishing Setup
66
+ **Note:** Changeset filenames are auto-generated with whimsical names (e.g., `silly-cats-dance.md`). Edit the description after generation if needed.
51
67
 
52
- This project uses npm's **Trusted Publishing** feature for secure, tokenless package publishing.
68
+ ## For Maintainers
53
69
 
54
- ### Setup (one-time)
70
+ ### Understanding Releases
55
71
 
56
- 1. Go to https://www.npmjs.com/package/github-archiver/settings
57
- 2. Under **Trusted Publisher**, click **GitHub Actions**
58
- 3. Fill in:
59
- - **Organization or user**: `mynameistito`
60
- - **Repository**: `github-archiver`
61
- - **Workflow filename**: `release.yml`
62
- 4. Click **Set up connection**
63
- 5. (Recommended) Enable **"Require two-factor authentication and disallow tokens"**
72
+ **What triggers a release?**
73
+ - Any changeset file committed to main
74
+ - Automatic via GitHub Actions (no manual intervention needed)
64
75
 
65
- That's it! No tokens to manage, rotate, or worry about.
76
+ **What happens?**
77
+ 1. Action detects changeset files
78
+ 2. Runs validation (tests, lint, typecheck, build)
79
+ 3. Creates "Version Packages" PR with:
80
+ - Version bumps in `package.json`
81
+ - Updated `CHANGELOG.md` with GitHub links
82
+ - Changeset files consumed
83
+ 4. After PR merge: Automatically publishes to npm
66
84
 
67
- ## Commit Message Examples
85
+ ### Merging the "Version Packages" PR
68
86
 
69
- ```bash
70
- # Feature (minor version bump)
71
- git commit -m "feat: add support for custom config file"
87
+ When GitHub Actions creates a "Version Packages" PR:
88
+ - Review the version bump (patch/minor/major)
89
+ - Review the changelog entries with GitHub links
90
+ - Merge to trigger automatic publish
91
+
92
+ ### Release Changelog
72
93
 
73
- # Bug fix (patch version bump)
74
- git commit -m "fix: handle empty repository list gracefully"
94
+ The changelog is auto-generated with GitHub links:
75
95
 
76
- # Breaking change (major version bump)
77
- git commit -m "feat!: change CLI command structure
96
+ ```markdown
97
+ ## 1.1.0
78
98
 
79
- BREAKING CHANGE: The 'auth' subcommand is now required"
99
+ ### Minor Changes
80
100
 
81
- # No release
82
- git commit -m "chore: update dependencies"
83
- git commit -m "docs: clarify installation steps"
84
- git commit -m "test: add unit tests for parser"
101
+ - [abc123d](https://github.com/mynameistito/github-archiver/commit/abc123d) ([#42](https://github.com/mynameistito/github-archiver/pull/42)): Add custom token config support
85
102
  ```
86
103
 
87
- ## Manual Releases
104
+ ### Manual Publishing (if needed)
88
105
 
89
- If you need to publish without merging to main:
106
+ If automation fails, you can publish manually on the commit with updated versions:
90
107
 
91
108
  ```bash
92
- npm run release -- --no-ci
109
+ bun run changeset:publish
93
110
  ```
94
111
 
95
- ## Release Workflow Details
112
+ ### Troubleshooting
113
+
114
+ **Action not creating PR?**
115
+ - Check that changesets exist in `.changeset/` directory
116
+ - Verify `GITHUB_TOKEN` and `NPM_TOKEN` secrets are configured
117
+ - Review workflow logs in GitHub Actions
118
+
119
+ **Publish failed?**
120
+ - Verify `NPM_TOKEN` has publish permissions
121
+ - Check npm registry status
122
+ - Review the error in GitHub Actions logs
123
+
124
+ **Version bump incorrect?**
125
+ - Verify correct changeset type was selected (patch/minor/major)
126
+ - Check that description was provided
127
+ - Ensure changeset file syntax is valid (YAML front matter)
96
128
 
97
- The `.github/workflows/release.yml` file handles:
129
+ ## Versioning Strategy
98
130
 
99
- - Running tests on Node 18 and 22
100
- - Building the project
101
- - Publishing to npm using Trusted Publishing
102
- - Creating GitHub releases with changelog
103
- - Managing version tags automatically
131
+ This project uses **Semantic Versioning**:
104
132
 
105
- ## Troubleshooting
133
+ - **patch**: Bug fixes, minor improvements (1.0.0 → 1.0.1)
134
+ - **minor**: New features, backward compatible (1.0.0 → 1.1.0)
135
+ - **major**: Breaking changes, incompatible updates (1.0.0 → 2.0.0)
106
136
 
107
- ### Release Not Triggered
137
+ Choose the appropriate type when creating your changeset.
108
138
 
109
- - Ensure commits follow conventional commit format
110
- - Check that workflow file is named `release.yml`
111
- - Verify GitHub Actions permissions are enabled
139
+ ## GitHub Releases
112
140
 
113
- ### Publish Failed
141
+ After publishing, a GitHub Release is automatically created with:
142
+ - Release notes generated from CHANGELOG.md
143
+ - Direct link to the npm package
144
+ - Git tag for the release (v1.1.0, etc.)
114
145
 
115
- - Check npm Trusted Publisher configuration
116
- - Ensure package name in package.json matches npm registry
117
- - Verify semantic-release version range is valid
146
+ ## Environment & CI/CD
147
+
148
+ **Required Secrets:**
149
+ - `GITHUB_TOKEN` - Auto-provided by GitHub Actions
150
+ - `NPM_TOKEN` - Set in repository settings with publish permissions
151
+
152
+ **Node Version:** 22.x (tested on 24.x and 25.x in CI)
153
+ **Package Manager:** Bun
154
+
155
+ **Publishing Method:** OIDC trusted publishing with npm
156
+
157
+ ## Trusted Publishing Setup
158
+
159
+ This project uses npm's **Trusted Publishing** feature for secure, tokenless package publishing.
160
+
161
+ ### Setup (one-time)
162
+
163
+ 1. Go to https://www.npmjs.com/package/github-archiver/settings
164
+ 2. Under **Trusted Publisher**, click **GitHub Actions**
165
+ 3. Fill in:
166
+ - **Organization or user**: `mynameistito`
167
+ - **Repository**: `github-archiver`
168
+ - **Workflow filename**: `release.yml`
169
+ 4. Click **Set up connection**
170
+ 5. (Recommended) Enable **"Require two-factor authentication and disallow tokens"**
171
+
172
+ That's it! No tokens to manage, rotate, or worry about.
118
173
 
119
- ### Version Bump Incorrect
174
+ ## See Also
120
175
 
121
- - Review commit history for proper prefixes
122
- - Check that `BREAKING CHANGE:` is in commit body (footer)
123
- - Ensure no duplicate release tags exist
176
+ - [Contributing Guidelines](../CONTRIBUTING.md#release-process)
177
+ - [Changesets Documentation](https://github.com/changesets/changesets)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-archiver",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "Archive GitHub repositories via CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -8,7 +8,8 @@
8
8
  "github-archiver": "bin/github-archiver.js"
9
9
  },
10
10
  "engines": {
11
- "node": ">=18.0.0"
11
+ "node": ">=22.0.0",
12
+ "bun": ">=1.0.0"
12
13
  },
13
14
  "scripts": {
14
15
  "build": "tsx scripts/build.ts",
@@ -20,7 +21,11 @@
20
21
  "tsc": "tsc --noEmit",
21
22
  "test": "vitest",
22
23
  "test:coverage": "vitest --coverage",
23
- "release": "semantic-release",
24
+ "changeset": "changeset",
25
+ "changeset:add": "changeset add",
26
+ "changeset:version": "changeset version",
27
+ "changeset:publish": "changeset publish",
28
+ "release": "changeset publish",
24
29
  "prepublishOnly": "npm run build && npm run typecheck && npm run lint"
25
30
  },
26
31
  "dependencies": {
@@ -31,11 +36,11 @@
31
36
  },
32
37
  "devDependencies": {
33
38
  "@biomejs/biome": "^2.3.11",
34
- "@semantic-release/changelog": "^6.0.3",
35
- "@semantic-release/git": "^10.0.1",
39
+ "@changesets/changelog-github": "^0.5.2",
40
+ "@changesets/cli": "^2.29.8",
41
+ "@changesets/get-github-info": "^0.7.0",
36
42
  "@types/node": "^25.0.6",
37
43
  "esbuild": "^0.27.2",
38
- "semantic-release": "^25.0.2",
39
44
  "tsx": "^4.21.0",
40
45
  "typescript": "^5.9.3",
41
46
  "ultracite": "^7.0.11",
@@ -52,6 +57,10 @@
52
57
  "license": "MIT",
53
58
  "repository": {
54
59
  "type": "git",
55
- "url": "https://github.com/mynameistito/github-archiver"
60
+ "url": "git+https://github.com/mynameistito/github-archiver.git"
61
+ },
62
+ "publishConfig": {
63
+ "access": "public",
64
+ "registry": "https://registry.npmjs.org/"
56
65
  }
57
66
  }