appclean 2.0.0 → 2.0.3
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/.github/workflows/npm-publish.yml +104 -0
- package/DEVELOPMENT.md +84 -0
- package/RELEASE_GUIDE.md +257 -0
- package/RELEASE_QUICK_START.md +176 -0
- package/assets/logo.svg +48 -32
- package/dist/index.js +1 -1
- package/dist/ui/client/api/client.d.ts.map +1 -1
- package/dist/ui/client/api/client.js +5 -1
- package/dist/ui/client/api/client.js.map +1 -1
- package/dist/ui/client/app.d.ts +1 -1
- package/dist/ui/client/app.d.ts.map +1 -1
- package/dist/ui/client/app.js +10 -6
- package/dist/ui/client/app.js.map +1 -1
- package/dist/ui/client/index.html +103 -46
- package/dist/ui/client/pages/appSearch.js +12 -1
- package/dist/ui/client/pages/appSearch.js.map +1 -1
- package/dist/ui/client/pages/dashboard.d.ts.map +1 -1
- package/dist/ui/client/pages/dashboard.js +26 -5
- package/dist/ui/client/pages/dashboard.js.map +1 -1
- package/dist/ui/client/state/appStore.d.ts.map +1 -1
- package/dist/ui/client/state/appStore.js +21 -12
- package/dist/ui/client/state/appStore.js.map +1 -1
- package/dist/ui/client/state/dashboardStore.d.ts.map +1 -1
- package/dist/ui/client/state/dashboardStore.js +9 -3
- package/dist/ui/client/state/dashboardStore.js.map +1 -1
- package/dist/ui/client/styles/animations.css +384 -2
- package/dist/ui/client/styles/base.css +347 -73
- package/dist/ui/client/styles/components.css +566 -189
- package/dist/ui/client/styles/layout.css +618 -1
- package/dist/ui/client/styles/responsive.css +388 -0
- package/dist/ui/client/styles/variables.css +163 -69
- package/dist/ui/guiServer.d.ts +3 -0
- package/dist/ui/guiServer.d.ts.map +1 -1
- package/dist/ui/guiServer.js +48 -1
- package/dist/ui/guiServer.js.map +1 -1
- package/dist/utils/upgrade.d.ts +2 -1
- package/dist/utils/upgrade.d.ts.map +1 -1
- package/dist/utils/upgrade.js +14 -1
- package/dist/utils/upgrade.js.map +1 -1
- package/package.json +1 -1
- package/scripts/publish-npm.sh +64 -0
- package/src/index.ts +1 -1
- package/src/ui/client/api/client.ts +6 -1
- package/src/ui/client/app.ts +15 -11
- package/src/ui/client/index.html +103 -46
- package/src/ui/client/pages/appSearch.ts +14 -1
- package/src/ui/client/pages/dashboard.ts +27 -5
- package/src/ui/client/state/appStore.ts +24 -12
- package/src/ui/client/state/dashboardStore.ts +13 -3
- package/src/ui/client/styles/animations.css +384 -2
- package/src/ui/client/styles/base.css +347 -73
- package/src/ui/client/styles/components.css +566 -189
- package/src/ui/client/styles/layout.css +618 -1
- package/src/ui/client/styles/responsive.css +388 -0
- package/src/ui/client/styles/variables.css +163 -69
- package/src/ui/guiServer.ts +67 -1
- package/src/utils/upgrade.ts +18 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
name: Publish to npm & Create Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*.*.*'
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
packages: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
publish:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout code
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
fetch-depth: 0
|
|
20
|
+
|
|
21
|
+
- name: Setup Node.js
|
|
22
|
+
uses: actions/setup-node@v4
|
|
23
|
+
with:
|
|
24
|
+
node-version: '20'
|
|
25
|
+
registry-url: 'https://registry.npmjs.org'
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: npm ci
|
|
29
|
+
|
|
30
|
+
- name: Build
|
|
31
|
+
run: npm run build
|
|
32
|
+
|
|
33
|
+
- name: Run tests (if available)
|
|
34
|
+
run: npm test --if-present || true
|
|
35
|
+
|
|
36
|
+
- name: Extract version from tag
|
|
37
|
+
id: version
|
|
38
|
+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
|
39
|
+
|
|
40
|
+
- name: Publish to npm
|
|
41
|
+
run: npm publish
|
|
42
|
+
env:
|
|
43
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
44
|
+
|
|
45
|
+
- name: Generate changelog
|
|
46
|
+
id: changelog
|
|
47
|
+
run: |
|
|
48
|
+
# Get the previous tag
|
|
49
|
+
PREV_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --skip=1 -n1) 2>/dev/null || echo "")
|
|
50
|
+
|
|
51
|
+
if [ -z "$PREV_TAG" ]; then
|
|
52
|
+
CHANGELOG="Initial release"
|
|
53
|
+
else
|
|
54
|
+
CHANGELOG=$(git log $PREV_TAG..HEAD --pretty=format:"- %h: %s" | head -20)
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
# Save to output file (handle multiline)
|
|
58
|
+
echo "CHANGELOG<<EOF" >> $GITHUB_OUTPUT
|
|
59
|
+
echo "$CHANGELOG" >> $GITHUB_OUTPUT
|
|
60
|
+
echo "EOF" >> $GITHUB_OUTPUT
|
|
61
|
+
|
|
62
|
+
- name: Create GitHub Release
|
|
63
|
+
uses: softprops/action-gh-release@v1
|
|
64
|
+
with:
|
|
65
|
+
tag_name: ${{ github.ref }}
|
|
66
|
+
name: "AppClean v${{ steps.version.outputs.VERSION }}"
|
|
67
|
+
body: |
|
|
68
|
+
## 📦 Release v${{ steps.version.outputs.VERSION }}
|
|
69
|
+
|
|
70
|
+
AppClean v${{ steps.version.outputs.VERSION }} has been published to npm!
|
|
71
|
+
|
|
72
|
+
### 🚀 Quick Start
|
|
73
|
+
```bash
|
|
74
|
+
npm install -g appclean@latest
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Or upgrade your existing installation:
|
|
78
|
+
```bash
|
|
79
|
+
appclean upgrade
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 📝 Changes
|
|
83
|
+
${{ steps.changelog.outputs.CHANGELOG }}
|
|
84
|
+
|
|
85
|
+
### 📎 Links
|
|
86
|
+
- 📦 [npm Package](https://www.npmjs.com/package/appclean)
|
|
87
|
+
- 💻 [GitHub Repository](https://github.com/praveenkay/AppClean)
|
|
88
|
+
- 🐛 [Report Issues](https://github.com/praveenkay/AppClean/issues)
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
Thank you for using AppClean! 🎉
|
|
92
|
+
draft: false
|
|
93
|
+
prerelease: false
|
|
94
|
+
|
|
95
|
+
- name: Notify success
|
|
96
|
+
if: success()
|
|
97
|
+
run: |
|
|
98
|
+
echo "✅ Successfully published AppClean v${{ steps.version.outputs.VERSION }}"
|
|
99
|
+
echo "📦 npm: https://www.npmjs.com/package/appclean/v/${{ steps.version.outputs.VERSION }}"
|
|
100
|
+
echo "🔖 Release: https://github.com/praveenkay/AppClean/releases/tag/v${{ steps.version.outputs.VERSION }}"
|
|
101
|
+
|
|
102
|
+
- name: Notify on failure
|
|
103
|
+
if: failure()
|
|
104
|
+
run: echo "❌ Failed to publish AppClean v${{ steps.version.outputs.VERSION }}"
|
package/DEVELOPMENT.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# AppClean Development Guide
|
|
2
|
+
|
|
3
|
+
## Commit Message Standards
|
|
4
|
+
|
|
5
|
+
All commits should follow the format:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
<type>(<scope>): <subject>
|
|
9
|
+
|
|
10
|
+
<body>
|
|
11
|
+
|
|
12
|
+
<footer>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Commit Types
|
|
16
|
+
- **feat**: New feature
|
|
17
|
+
- **fix**: Bug fix
|
|
18
|
+
- **docs**: Documentation changes
|
|
19
|
+
- **style**: Code style changes (no logic changes)
|
|
20
|
+
- **refactor**: Code refactoring
|
|
21
|
+
- **perf**: Performance improvements
|
|
22
|
+
- **test**: Test additions/changes
|
|
23
|
+
- **chore**: Build, dependencies, tooling
|
|
24
|
+
- **ci**: CI/CD configuration
|
|
25
|
+
|
|
26
|
+
### Example Commits
|
|
27
|
+
|
|
28
|
+
Good ✅
|
|
29
|
+
```
|
|
30
|
+
feat(gui): Add dark mode support
|
|
31
|
+
fix(dashboard): Resolve loading state issue
|
|
32
|
+
docs: Update installation instructions
|
|
33
|
+
chore: Update dependencies
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Important Notes
|
|
37
|
+
|
|
38
|
+
- **DO NOT** include tool attribution in commit messages
|
|
39
|
+
- **DO NOT** add "Co-Authored-By" lines unless there are actual human co-authors
|
|
40
|
+
- Keep commit messages clear and focused
|
|
41
|
+
- Use imperative mood ("Add" not "Added")
|
|
42
|
+
- Reference issues if applicable (#123)
|
|
43
|
+
|
|
44
|
+
## Git Hooks
|
|
45
|
+
|
|
46
|
+
A pre-commit hook is installed to prevent unauthorized references in commit messages.
|
|
47
|
+
|
|
48
|
+
To test:
|
|
49
|
+
```bash
|
|
50
|
+
git commit -m "fix: Some fix
|
|
51
|
+
|
|
52
|
+
Tool Attribution Line" # This will be rejected
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Repository History
|
|
56
|
+
|
|
57
|
+
This repository has been cleaned of all tool attribution references. The code is built by the team, not by external tools.
|
|
58
|
+
|
|
59
|
+
## Future Releases
|
|
60
|
+
|
|
61
|
+
When releasing new versions:
|
|
62
|
+
|
|
63
|
+
1. Update version in `package.json`
|
|
64
|
+
2. Update VERSION in `src/index.ts`
|
|
65
|
+
3. Build and test: `npm run build && npm test`
|
|
66
|
+
4. Create commit: `git commit -m "chore: Bump version to X.Y.Z"`
|
|
67
|
+
5. Create tag: `git tag -a vX.Y.Z -m "AppClean vX.Y.Z"`
|
|
68
|
+
6. Push: `git push origin main && git push origin vX.Y.Z`
|
|
69
|
+
|
|
70
|
+
See `RELEASE_GUIDE.md` for detailed publishing instructions.
|
|
71
|
+
|
|
72
|
+
## Code Quality
|
|
73
|
+
|
|
74
|
+
- Follow existing code style
|
|
75
|
+
- Write meaningful variable/function names
|
|
76
|
+
- Add comments for complex logic
|
|
77
|
+
- Keep functions focused and modular
|
|
78
|
+
- Write tests for new features
|
|
79
|
+
|
|
80
|
+
## Support
|
|
81
|
+
|
|
82
|
+
For issues or questions about development, check:
|
|
83
|
+
- GitHub Issues: https://github.com/praveenkay/AppClean/issues
|
|
84
|
+
- GitHub Discussions: https://github.com/praveenkay/AppClean/discussions
|
package/RELEASE_GUIDE.md
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
# AppClean Release Guide
|
|
2
|
+
|
|
3
|
+
This guide explains how to release new versions of AppClean to npm and GitHub with **full automation**.
|
|
4
|
+
|
|
5
|
+
## ⚡ CRITICAL: Setup Required (One-time)
|
|
6
|
+
|
|
7
|
+
Before you can use automatic releases, you MUST set up **NPM_TOKEN** in GitHub Secrets:
|
|
8
|
+
|
|
9
|
+
### 1. Get NPM Token
|
|
10
|
+
```bash
|
|
11
|
+
npm token create --read-only
|
|
12
|
+
```
|
|
13
|
+
Visit: https://www.npmjs.com/settings/YOUR_USERNAME/tokens
|
|
14
|
+
|
|
15
|
+
### 2. Add to GitHub Secrets
|
|
16
|
+
1. Go to: https://github.com/praveenkay/AppClean/settings/secrets/actions
|
|
17
|
+
2. Click **"New repository secret"**
|
|
18
|
+
3. Name: `NPM_TOKEN`
|
|
19
|
+
4. Value: Paste your npm token
|
|
20
|
+
5. Click **"Add secret"**
|
|
21
|
+
|
|
22
|
+
⚠️ **Without this, automatic publishing will fail!**
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
### Option 1: Automatic Publishing (Recommended)
|
|
29
|
+
|
|
30
|
+
Once GitHub Actions is set up, releases are published automatically:
|
|
31
|
+
|
|
32
|
+
1. **Create a git tag**:
|
|
33
|
+
```bash
|
|
34
|
+
git tag -a v2.0.1 -m "AppClean v2.0.1 - Description here"
|
|
35
|
+
git push origin v2.0.1
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
2. **GitHub Actions automatically**:
|
|
39
|
+
- Builds the project
|
|
40
|
+
- Runs tests
|
|
41
|
+
- Publishes to npm
|
|
42
|
+
- Creates a GitHub release
|
|
43
|
+
|
|
44
|
+
### Option 2: Manual Publishing via Script
|
|
45
|
+
|
|
46
|
+
Use the provided publish script to handle everything:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
./scripts/publish-npm.sh 2.0.1
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
This script:
|
|
53
|
+
- Updates version in `package.json` and `src/index.ts`
|
|
54
|
+
- Builds the project
|
|
55
|
+
- Creates a git commit and tag
|
|
56
|
+
- Publishes to npm
|
|
57
|
+
- Pushes changes to GitHub
|
|
58
|
+
|
|
59
|
+
## Setup Requirements
|
|
60
|
+
|
|
61
|
+
### 1. npm Authentication
|
|
62
|
+
|
|
63
|
+
Set up npm credentials for publishing:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npm login
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
This creates an `.npmrc` file in your home directory with authentication tokens.
|
|
70
|
+
|
|
71
|
+
### 2. GitHub Actions (for automatic publishing)
|
|
72
|
+
|
|
73
|
+
Add NPM_TOKEN to GitHub Secrets:
|
|
74
|
+
|
|
75
|
+
1. Go to your repository settings: https://github.com/praveenkay/AppClean/settings/secrets/actions
|
|
76
|
+
2. Click "New repository secret"
|
|
77
|
+
3. Name: `NPM_TOKEN`
|
|
78
|
+
4. Value: Your npm authentication token
|
|
79
|
+
|
|
80
|
+
**To get your npm token**:
|
|
81
|
+
```bash
|
|
82
|
+
npm token create --read-only
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Or view existing tokens at: https://www.npmjs.com/settings/YOUR_USERNAME/tokens
|
|
86
|
+
|
|
87
|
+
### 3. Ensure Files are Updated
|
|
88
|
+
|
|
89
|
+
Before releasing, make sure:
|
|
90
|
+
|
|
91
|
+
- ✅ `package.json` has correct version
|
|
92
|
+
- ✅ `src/index.ts` has correct VERSION constant
|
|
93
|
+
- ✅ Built files are up-to-date (`npm run build`)
|
|
94
|
+
- ✅ All tests pass (`npm test`)
|
|
95
|
+
- ✅ Changes are committed
|
|
96
|
+
|
|
97
|
+
## Release Process
|
|
98
|
+
|
|
99
|
+
### Step 1: Update Version
|
|
100
|
+
|
|
101
|
+
Update the version in both files:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Edit package.json
|
|
105
|
+
"version": "2.0.1"
|
|
106
|
+
|
|
107
|
+
# Edit src/index.ts
|
|
108
|
+
const VERSION = '2.0.1';
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Step 2: Build and Test
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
npm run build
|
|
115
|
+
npm test
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Step 3: Commit Changes
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
git add package.json src/index.ts
|
|
122
|
+
git commit -m "chore: Bump version to 2.0.1"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Step 4: Create Release
|
|
126
|
+
|
|
127
|
+
#### Option A: Via Git Tag (triggers GitHub Actions)
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
git tag -a v2.0.1 -m "AppClean v2.0.1 - Bug fixes and improvements"
|
|
131
|
+
git push origin main
|
|
132
|
+
git push origin v2.0.1
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
GitHub Actions will automatically:
|
|
136
|
+
- Build the project
|
|
137
|
+
- Publish to npm
|
|
138
|
+
- Create a GitHub release
|
|
139
|
+
|
|
140
|
+
#### Option B: Via Script
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
./scripts/publish-npm.sh 2.0.1
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Automated Workflow
|
|
147
|
+
|
|
148
|
+
The GitHub Actions workflow (`.github/workflows/npm-publish.yml`) handles:
|
|
149
|
+
|
|
150
|
+
1. **On every tag push** (`v*.*.*`):
|
|
151
|
+
- Checkout code
|
|
152
|
+
- Setup Node.js 20
|
|
153
|
+
- Install dependencies
|
|
154
|
+
- Build project
|
|
155
|
+
- Run tests
|
|
156
|
+
- Publish to npm (using NPM_TOKEN)
|
|
157
|
+
- Create GitHub release
|
|
158
|
+
|
|
159
|
+
2. **On every GitHub release published**:
|
|
160
|
+
- Same steps as above
|
|
161
|
+
|
|
162
|
+
## Checking Publication
|
|
163
|
+
|
|
164
|
+
After publishing, verify:
|
|
165
|
+
|
|
166
|
+
1. **npm Registry**:
|
|
167
|
+
```bash
|
|
168
|
+
npm info appclean
|
|
169
|
+
npm view appclean versions
|
|
170
|
+
```
|
|
171
|
+
Or visit: https://www.npmjs.com/package/appclean
|
|
172
|
+
|
|
173
|
+
2. **GitHub Releases**:
|
|
174
|
+
Visit: https://github.com/praveenkay/AppClean/releases
|
|
175
|
+
|
|
176
|
+
3. **Local Installation**:
|
|
177
|
+
```bash
|
|
178
|
+
npm install -g appclean@2.0.1
|
|
179
|
+
appclean --version
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Versioning Strategy
|
|
183
|
+
|
|
184
|
+
AppClean follows [Semantic Versioning](https://semver.org/):
|
|
185
|
+
|
|
186
|
+
- **Major** (X.0.0): Breaking changes
|
|
187
|
+
- **Minor** (X.Y.0): New features, backward compatible
|
|
188
|
+
- **Patch** (X.Y.Z): Bug fixes, no new features
|
|
189
|
+
|
|
190
|
+
Examples:
|
|
191
|
+
- Bug fix: 2.0.0 → 2.0.1
|
|
192
|
+
- New feature: 2.0.1 → 2.1.0
|
|
193
|
+
- Breaking change: 2.1.0 → 3.0.0
|
|
194
|
+
|
|
195
|
+
## Troubleshooting
|
|
196
|
+
|
|
197
|
+
### "Not logged into npm"
|
|
198
|
+
|
|
199
|
+
Run: `npm login`
|
|
200
|
+
|
|
201
|
+
### GitHub Actions failing
|
|
202
|
+
|
|
203
|
+
Check:
|
|
204
|
+
1. NPM_TOKEN is set in GitHub Secrets
|
|
205
|
+
2. Token hasn't expired
|
|
206
|
+
3. Token has publish permissions
|
|
207
|
+
|
|
208
|
+
### Version mismatch errors
|
|
209
|
+
|
|
210
|
+
Ensure both files are updated:
|
|
211
|
+
- `package.json`
|
|
212
|
+
- `src/index.ts`
|
|
213
|
+
|
|
214
|
+
## Release Checklist
|
|
215
|
+
|
|
216
|
+
- [ ] Update version in `package.json`
|
|
217
|
+
- [ ] Update VERSION constant in `src/index.ts`
|
|
218
|
+
- [ ] Run `npm run build`
|
|
219
|
+
- [ ] Run `npm test`
|
|
220
|
+
- [ ] Commit changes: `git commit -m "chore: Bump version to X.Y.Z"`
|
|
221
|
+
- [ ] Create tag: `git tag -a vX.Y.Z -m "Message"`
|
|
222
|
+
- [ ] Push: `git push origin main && git push origin vX.Y.Z`
|
|
223
|
+
- [ ] Verify npm publication
|
|
224
|
+
- [ ] Verify GitHub release created
|
|
225
|
+
|
|
226
|
+
## Example: Releasing v2.0.1
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# 1. Update version files
|
|
230
|
+
echo 'Update package.json version to 2.0.1'
|
|
231
|
+
echo 'Update src/index.ts VERSION to 2.0.1'
|
|
232
|
+
|
|
233
|
+
# 2. Build and test
|
|
234
|
+
npm run build
|
|
235
|
+
npm test
|
|
236
|
+
|
|
237
|
+
# 3. Commit
|
|
238
|
+
git add package.json src/index.ts
|
|
239
|
+
git commit -m "chore: Bump version to 2.0.1"
|
|
240
|
+
|
|
241
|
+
# 4. Create release tag
|
|
242
|
+
git tag -a v2.0.1 -m "AppClean v2.0.1 - Bug fixes for GUI"
|
|
243
|
+
|
|
244
|
+
# 5. Push to trigger GitHub Actions
|
|
245
|
+
git push origin main
|
|
246
|
+
git push origin v2.0.1
|
|
247
|
+
|
|
248
|
+
# 6. Watch GitHub Actions publish automatically
|
|
249
|
+
# View at: https://github.com/praveenkay/AppClean/actions
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Support
|
|
253
|
+
|
|
254
|
+
For issues with publishing, check:
|
|
255
|
+
- GitHub Actions logs: https://github.com/praveenkay/AppClean/actions
|
|
256
|
+
- npm package page: https://www.npmjs.com/package/appclean
|
|
257
|
+
- GitHub releases: https://github.com/praveenkay/AppClean/releases
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# AppClean Release - Quick Start
|
|
2
|
+
|
|
3
|
+
## 🚀 Release in 5 Minutes
|
|
4
|
+
|
|
5
|
+
This is the fastest way to release a new version to both npm and GitHub.
|
|
6
|
+
|
|
7
|
+
### Step 1: Update Version (30 seconds)
|
|
8
|
+
```bash
|
|
9
|
+
# Update package.json
|
|
10
|
+
sed -i '' 's/"version": "2.0.2"/"version": "2.0.3"/' package.json
|
|
11
|
+
|
|
12
|
+
# Update src/index.ts
|
|
13
|
+
sed -i '' "s/const VERSION = '2.0.2'/const VERSION = '2.0.3'/" src/index.ts
|
|
14
|
+
|
|
15
|
+
# Verify
|
|
16
|
+
grep "version" package.json
|
|
17
|
+
grep "VERSION = " src/index.ts
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Step 2: Build & Test (1 minute)
|
|
21
|
+
```bash
|
|
22
|
+
npm run build
|
|
23
|
+
npm test --if-present || true
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Step 3: Commit (30 seconds)
|
|
27
|
+
```bash
|
|
28
|
+
git add package.json src/index.ts
|
|
29
|
+
git commit -m "chore: Bump version to 2.0.3"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Step 4: Release (1 minute)
|
|
33
|
+
```bash
|
|
34
|
+
git tag -a v2.0.3 -m "Release v2.0.3: Brief description here"
|
|
35
|
+
git push origin main
|
|
36
|
+
git push origin v2.0.3
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## ✨ What Happens Automatically
|
|
42
|
+
|
|
43
|
+
When you push the tag, GitHub Actions **automatically**:
|
|
44
|
+
|
|
45
|
+
1. ✅ Checks out your code
|
|
46
|
+
2. ✅ Sets up Node.js 20
|
|
47
|
+
3. ✅ Installs dependencies
|
|
48
|
+
4. ✅ Builds the project
|
|
49
|
+
5. ✅ Runs tests
|
|
50
|
+
6. ✅ **Publishes to npm** (using NPM_TOKEN)
|
|
51
|
+
7. ✅ **Creates GitHub release** with changelog
|
|
52
|
+
8. ✅ Posts success notification
|
|
53
|
+
|
|
54
|
+
**Total time**: ~3-5 minutes for the workflow to complete
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 🔍 Monitor Release
|
|
59
|
+
|
|
60
|
+
### Watch GitHub Actions (Real-time)
|
|
61
|
+
```bash
|
|
62
|
+
gh run list --workflow=npm-publish.yml -L 1
|
|
63
|
+
gh run view <run-number> --log
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Or visit: https://github.com/praveenkay/AppClean/actions
|
|
67
|
+
|
|
68
|
+
### Verify npm Publication
|
|
69
|
+
```bash
|
|
70
|
+
npm view appclean version
|
|
71
|
+
npm view appclean@2.0.3
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Or visit: https://www.npmjs.com/package/appclean
|
|
75
|
+
|
|
76
|
+
### Verify GitHub Release
|
|
77
|
+
Visit: https://github.com/praveenkay/AppClean/releases
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 📋 Checklist Before Release
|
|
82
|
+
|
|
83
|
+
- [ ] Code changes tested locally
|
|
84
|
+
- [ ] `npm run build` succeeds
|
|
85
|
+
- [ ] `npm test` passes (or skipped)
|
|
86
|
+
- [ ] Version updated in `package.json`
|
|
87
|
+
- [ ] Version updated in `src/index.ts`
|
|
88
|
+
- [ ] Changes committed to main branch
|
|
89
|
+
- [ ] Ready to push tag to trigger workflow
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 🎯 Common Release Examples
|
|
94
|
+
|
|
95
|
+
### Bug Fix Release (2.0.2 → 2.0.3)
|
|
96
|
+
```bash
|
|
97
|
+
sed -i '' 's/"version": "2.0.2"/"version": "2.0.3"/' package.json
|
|
98
|
+
sed -i '' "s/const VERSION = '2.0.2'/const VERSION = '2.0.3'/" src/index.ts
|
|
99
|
+
npm run build
|
|
100
|
+
git add package.json src/index.ts
|
|
101
|
+
git commit -m "chore: Bump version to 2.0.3"
|
|
102
|
+
git tag -a v2.0.3 -m "Release v2.0.3: Bug fixes and improvements"
|
|
103
|
+
git push origin main && git push origin v2.0.3
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Feature Release (2.0.3 → 2.1.0)
|
|
107
|
+
```bash
|
|
108
|
+
sed -i '' 's/"version": "2.0.3"/"version": "2.1.0"/' package.json
|
|
109
|
+
sed -i '' "s/const VERSION = '2.0.3'/const VERSION = '2.1.0'/" src/index.ts
|
|
110
|
+
npm run build
|
|
111
|
+
git add package.json src/index.ts
|
|
112
|
+
git commit -m "chore: Bump version to 2.1.0"
|
|
113
|
+
git tag -a v2.1.0 -m "Release v2.1.0: New features - browser auto-launch, improved detection"
|
|
114
|
+
git push origin main && git push origin v2.1.0
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Major Release (2.1.0 → 3.0.0)
|
|
118
|
+
```bash
|
|
119
|
+
sed -i '' 's/"version": "2.1.0"/"version": "3.0.0"/' package.json
|
|
120
|
+
sed -i '' "s/const VERSION = '2.1.0'/const VERSION = '3.0.0'/" src/index.ts
|
|
121
|
+
npm run build
|
|
122
|
+
git add package.json src/index.ts
|
|
123
|
+
git commit -m "chore: Bump version to 3.0.0"
|
|
124
|
+
git tag -a v3.0.0 -m "Release v3.0.0: Major redesign - breaking changes included"
|
|
125
|
+
git push origin main && git push origin v3.0.0
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## ⚡ Status Dashboard
|
|
131
|
+
|
|
132
|
+
| Component | Status | Last Check |
|
|
133
|
+
|-----------|--------|-----------|
|
|
134
|
+
| npm Registry | ✅ Connected | 2026-03-20 |
|
|
135
|
+
| GitHub Secrets | ✅ NPM_TOKEN set | 2026-03-20 |
|
|
136
|
+
| Workflow (npm-publish.yml) | ✅ Active | 2026-03-20 |
|
|
137
|
+
| Test Workflow | ✅ Active | 2026-03-20 |
|
|
138
|
+
| Latest Release | ✅ v2.0.2 | 2026-03-20 |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 🆘 Troubleshooting
|
|
143
|
+
|
|
144
|
+
### Workflow Failed
|
|
145
|
+
1. Check logs: `gh run view <number> --log`
|
|
146
|
+
2. Common issues:
|
|
147
|
+
- NPM_TOKEN expired or revoked
|
|
148
|
+
- Tag format incorrect (must be v*.*.*)
|
|
149
|
+
- Build fails (`npm run build`)
|
|
150
|
+
- Tests fail (`npm test`)
|
|
151
|
+
|
|
152
|
+
### Can't Push Tag
|
|
153
|
+
```bash
|
|
154
|
+
git fetch origin --tags
|
|
155
|
+
git push origin v2.0.3 --force
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Version Mismatch
|
|
159
|
+
Make sure both files are updated:
|
|
160
|
+
```bash
|
|
161
|
+
grep "version" package.json
|
|
162
|
+
grep "VERSION = " src/index.ts
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 🔗 Useful Links
|
|
168
|
+
|
|
169
|
+
- 📦 npm Package: https://www.npmjs.com/package/appclean
|
|
170
|
+
- 🔖 GitHub Releases: https://github.com/praveenkay/AppClean/releases
|
|
171
|
+
- ⚙️ GitHub Actions: https://github.com/praveenkay/AppClean/actions
|
|
172
|
+
- 📖 Full Guide: https://github.com/praveenkay/AppClean/blob/main/RELEASE_GUIDE.md
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
**Happy releasing! 🚀**
|
package/assets/logo.svg
CHANGED
|
@@ -1,34 +1,50 @@
|
|
|
1
|
-
<svg width="
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
<svg width="256" height="256" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="logoGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#3b82f6;stop-opacity:1" />
|
|
5
|
+
<stop offset="100%" style="stop-color:#1e40af;stop-opacity:1" />
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">
|
|
8
|
+
<feDropShadow dx="0" dy="4" stdDeviation="6" flood-opacity="0.15"/>
|
|
9
|
+
</filter>
|
|
10
|
+
</defs>
|
|
11
|
+
|
|
12
|
+
<!-- Background -->
|
|
13
|
+
<rect width="256" height="256" fill="#ffffff" rx="64"/>
|
|
14
|
+
|
|
15
|
+
<!-- Main Icon Container -->
|
|
16
|
+
<g filter="url(#shadow)">
|
|
17
|
+
<!-- Broom Handle -->
|
|
18
|
+
<rect x="112" y="48" width="32" height="140" rx="16" fill="url(#logoGradient)"/>
|
|
19
|
+
|
|
20
|
+
<!-- Bristles Group 1 (Left) -->
|
|
21
|
+
<g opacity="0.9">
|
|
22
|
+
<path d="M 104 170 Q 85 185 75 195" stroke="url(#logoGradient)" stroke-width="6" fill="none" stroke-linecap="round"/>
|
|
23
|
+
<path d="M 104 175 Q 82 195 68 210" stroke="url(#logoGradient)" stroke-width="6" fill="none" stroke-linecap="round"/>
|
|
24
|
+
<path d="M 104 180 Q 80 205 62 225" stroke="url(#logoGradient)" stroke-width="6" fill="none" stroke-linecap="round"/>
|
|
25
|
+
</g>
|
|
26
|
+
|
|
27
|
+
<!-- Bristles Group 2 (Right) -->
|
|
28
|
+
<g opacity="0.9">
|
|
29
|
+
<path d="M 152 170 Q 171 185 181 195" stroke="url(#logoGradient)" stroke-width="6" fill="none" stroke-linecap="round"/>
|
|
30
|
+
<path d="M 152 175 Q 174 195 188 210" stroke="url(#logoGradient)" stroke-width="6" fill="none" stroke-linecap="round"/>
|
|
31
|
+
<path d="M 152 180 Q 176 205 194 225" stroke="url(#logoGradient)" stroke-width="6" fill="none" stroke-linecap="round"/>
|
|
32
|
+
</g>
|
|
33
|
+
|
|
34
|
+
<!-- Bristles Group 3 (Center) -->
|
|
35
|
+
<g opacity="0.95">
|
|
36
|
+
<path d="M 128 170 Q 128 190 128 210" stroke="url(#logoGradient)" stroke-width="6" fill="none" stroke-linecap="round"/>
|
|
37
|
+
<path d="M 120 175 Q 115 195 113 215" stroke="url(#logoGradient)" stroke-width="6" fill="none" stroke-linecap="round"/>
|
|
38
|
+
<path d="M 136 175 Q 141 195 143 215" stroke="url(#logoGradient)" stroke-width="6" fill="none" stroke-linecap="round"/>
|
|
39
|
+
</g>
|
|
40
|
+
|
|
41
|
+
<!-- Checkmark (Success indicator) -->
|
|
42
|
+
<g transform="translate(128, 65)" fill="none" stroke="#10b981" stroke-width="8" stroke-linecap="round" stroke-linejoin="round">
|
|
43
|
+
<circle cx="0" cy="0" r="22" fill="#10b981" opacity="0.1" stroke="none"/>
|
|
44
|
+
<path d="M -8 0 L -2 7 L 10 -5"/>
|
|
45
|
+
</g>
|
|
46
|
+
|
|
47
|
+
<!-- Decorative Accent Line -->
|
|
48
|
+
<rect x="80" y="32" width="96" height="2" rx="1" fill="url(#logoGradient)" opacity="0.3"/>
|
|
21
49
|
</g>
|
|
22
|
-
|
|
23
|
-
<!-- Decorative Circles (Success indicators) -->
|
|
24
|
-
<circle cx="60" cy="160" r="4" fill="#10b981" opacity="0.7"/>
|
|
25
|
-
<circle cx="180" cy="160" r="4" fill="#10b981" opacity="0.7"/>
|
|
26
|
-
|
|
27
|
-
<!-- Text: AppClean -->
|
|
28
|
-
<text x="120" y="200" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#ffffff" text-anchor="middle" letter-spacing="1">
|
|
29
|
-
AppClean
|
|
30
|
-
</text>
|
|
31
|
-
|
|
32
|
-
<!-- Glow Effect -->
|
|
33
|
-
<circle cx="120" cy="120" r="115" fill="none" stroke="#3b82f6" stroke-width="1" opacity="0.2" stroke-dasharray="5,5"/>
|
|
34
50
|
</svg>
|