appclean 2.0.0 → 2.0.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.
Files changed (43) hide show
  1. package/.github/workflows/npm-publish.yml +61 -0
  2. package/DEVELOPMENT.md +84 -0
  3. package/RELEASE_GUIDE.md +236 -0
  4. package/dist/index.js +1 -1
  5. package/dist/ui/client/api/client.d.ts.map +1 -1
  6. package/dist/ui/client/api/client.js +5 -1
  7. package/dist/ui/client/api/client.js.map +1 -1
  8. package/dist/ui/client/app.d.ts +1 -1
  9. package/dist/ui/client/app.d.ts.map +1 -1
  10. package/dist/ui/client/app.js +10 -6
  11. package/dist/ui/client/app.js.map +1 -1
  12. package/dist/ui/client/pages/appSearch.js +12 -1
  13. package/dist/ui/client/pages/appSearch.js.map +1 -1
  14. package/dist/ui/client/pages/dashboard.d.ts.map +1 -1
  15. package/dist/ui/client/pages/dashboard.js +26 -5
  16. package/dist/ui/client/pages/dashboard.js.map +1 -1
  17. package/dist/ui/client/state/appStore.d.ts.map +1 -1
  18. package/dist/ui/client/state/appStore.js +21 -12
  19. package/dist/ui/client/state/appStore.js.map +1 -1
  20. package/dist/ui/client/state/dashboardStore.d.ts.map +1 -1
  21. package/dist/ui/client/state/dashboardStore.js +9 -3
  22. package/dist/ui/client/state/dashboardStore.js.map +1 -1
  23. package/dist/ui/client/styles/animations.css +22 -0
  24. package/dist/ui/guiServer.d.ts +3 -0
  25. package/dist/ui/guiServer.d.ts.map +1 -1
  26. package/dist/ui/guiServer.js +48 -1
  27. package/dist/ui/guiServer.js.map +1 -1
  28. package/dist/utils/upgrade.d.ts +2 -1
  29. package/dist/utils/upgrade.d.ts.map +1 -1
  30. package/dist/utils/upgrade.js +14 -1
  31. package/dist/utils/upgrade.js.map +1 -1
  32. package/package.json +1 -1
  33. package/scripts/publish-npm.sh +64 -0
  34. package/src/index.ts +1 -1
  35. package/src/ui/client/api/client.ts +6 -1
  36. package/src/ui/client/app.ts +15 -11
  37. package/src/ui/client/pages/appSearch.ts +14 -1
  38. package/src/ui/client/pages/dashboard.ts +27 -5
  39. package/src/ui/client/state/appStore.ts +24 -12
  40. package/src/ui/client/state/dashboardStore.ts +13 -3
  41. package/src/ui/client/styles/animations.css +22 -0
  42. package/src/ui/guiServer.ts +67 -1
  43. package/src/utils/upgrade.ts +18 -1
@@ -0,0 +1,61 @@
1
+ name: Publish to npm
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+ release:
8
+ types: [published]
9
+
10
+ jobs:
11
+ publish:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - name: Checkout code
15
+ uses: actions/checkout@v4
16
+ with:
17
+ fetch-depth: 0
18
+
19
+ - name: Setup Node.js
20
+ uses: actions/setup-node@v4
21
+ with:
22
+ node-version: '20'
23
+ registry-url: 'https://registry.npmjs.org'
24
+
25
+ - name: Install dependencies
26
+ run: npm ci
27
+
28
+ - name: Build
29
+ run: npm run build
30
+
31
+ - name: Run tests (if available)
32
+ run: npm test --if-present || true
33
+
34
+ - name: Publish to npm
35
+ run: npm publish
36
+ env:
37
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
38
+
39
+ - name: Create GitHub Release
40
+ if: startsWith(github.ref, 'refs/tags/v')
41
+ uses: actions/create-release@v1
42
+ env:
43
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44
+ with:
45
+ tag_name: ${{ github.ref }}
46
+ release_name: AppClean ${{ github.ref }}
47
+ body: |
48
+ ## Release Notes
49
+
50
+ AppClean ${{ github.ref }} has been published to npm!
51
+
52
+ 📦 **npm**: https://www.npmjs.com/package/appclean
53
+ 🚀 **Install**: `npm install -g appclean@${{ github.ref }}`
54
+
55
+ This version includes all bug fixes and improvements from recent commits.
56
+ draft: false
57
+ prerelease: false
58
+
59
+ - name: Notify on failure
60
+ if: failure()
61
+ run: echo "❌ Failed to publish AppClean to npm"
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
@@ -0,0 +1,236 @@
1
+ # AppClean Release Guide
2
+
3
+ This guide explains how to release new versions of AppClean to npm and GitHub.
4
+
5
+ ## Quick Start
6
+
7
+ ### Option 1: Automatic Publishing (Recommended)
8
+
9
+ Once GitHub Actions is set up, releases are published automatically:
10
+
11
+ 1. **Create a git tag**:
12
+ ```bash
13
+ git tag -a v2.0.1 -m "AppClean v2.0.1 - Description here"
14
+ git push origin v2.0.1
15
+ ```
16
+
17
+ 2. **GitHub Actions automatically**:
18
+ - Builds the project
19
+ - Runs tests
20
+ - Publishes to npm
21
+ - Creates a GitHub release
22
+
23
+ ### Option 2: Manual Publishing via Script
24
+
25
+ Use the provided publish script to handle everything:
26
+
27
+ ```bash
28
+ ./scripts/publish-npm.sh 2.0.1
29
+ ```
30
+
31
+ This script:
32
+ - Updates version in `package.json` and `src/index.ts`
33
+ - Builds the project
34
+ - Creates a git commit and tag
35
+ - Publishes to npm
36
+ - Pushes changes to GitHub
37
+
38
+ ## Setup Requirements
39
+
40
+ ### 1. npm Authentication
41
+
42
+ Set up npm credentials for publishing:
43
+
44
+ ```bash
45
+ npm login
46
+ ```
47
+
48
+ This creates an `.npmrc` file in your home directory with authentication tokens.
49
+
50
+ ### 2. GitHub Actions (for automatic publishing)
51
+
52
+ Add NPM_TOKEN to GitHub Secrets:
53
+
54
+ 1. Go to your repository settings: https://github.com/praveenkay/AppClean/settings/secrets/actions
55
+ 2. Click "New repository secret"
56
+ 3. Name: `NPM_TOKEN`
57
+ 4. Value: Your npm authentication token
58
+
59
+ **To get your npm token**:
60
+ ```bash
61
+ npm token create --read-only
62
+ ```
63
+
64
+ Or view existing tokens at: https://www.npmjs.com/settings/YOUR_USERNAME/tokens
65
+
66
+ ### 3. Ensure Files are Updated
67
+
68
+ Before releasing, make sure:
69
+
70
+ - ✅ `package.json` has correct version
71
+ - ✅ `src/index.ts` has correct VERSION constant
72
+ - ✅ Built files are up-to-date (`npm run build`)
73
+ - ✅ All tests pass (`npm test`)
74
+ - ✅ Changes are committed
75
+
76
+ ## Release Process
77
+
78
+ ### Step 1: Update Version
79
+
80
+ Update the version in both files:
81
+
82
+ ```bash
83
+ # Edit package.json
84
+ "version": "2.0.1"
85
+
86
+ # Edit src/index.ts
87
+ const VERSION = '2.0.1';
88
+ ```
89
+
90
+ ### Step 2: Build and Test
91
+
92
+ ```bash
93
+ npm run build
94
+ npm test
95
+ ```
96
+
97
+ ### Step 3: Commit Changes
98
+
99
+ ```bash
100
+ git add package.json src/index.ts
101
+ git commit -m "chore: Bump version to 2.0.1"
102
+ ```
103
+
104
+ ### Step 4: Create Release
105
+
106
+ #### Option A: Via Git Tag (triggers GitHub Actions)
107
+
108
+ ```bash
109
+ git tag -a v2.0.1 -m "AppClean v2.0.1 - Bug fixes and improvements"
110
+ git push origin main
111
+ git push origin v2.0.1
112
+ ```
113
+
114
+ GitHub Actions will automatically:
115
+ - Build the project
116
+ - Publish to npm
117
+ - Create a GitHub release
118
+
119
+ #### Option B: Via Script
120
+
121
+ ```bash
122
+ ./scripts/publish-npm.sh 2.0.1
123
+ ```
124
+
125
+ ## Automated Workflow
126
+
127
+ The GitHub Actions workflow (`.github/workflows/npm-publish.yml`) handles:
128
+
129
+ 1. **On every tag push** (`v*.*.*`):
130
+ - Checkout code
131
+ - Setup Node.js 20
132
+ - Install dependencies
133
+ - Build project
134
+ - Run tests
135
+ - Publish to npm (using NPM_TOKEN)
136
+ - Create GitHub release
137
+
138
+ 2. **On every GitHub release published**:
139
+ - Same steps as above
140
+
141
+ ## Checking Publication
142
+
143
+ After publishing, verify:
144
+
145
+ 1. **npm Registry**:
146
+ ```bash
147
+ npm info appclean
148
+ npm view appclean versions
149
+ ```
150
+ Or visit: https://www.npmjs.com/package/appclean
151
+
152
+ 2. **GitHub Releases**:
153
+ Visit: https://github.com/praveenkay/AppClean/releases
154
+
155
+ 3. **Local Installation**:
156
+ ```bash
157
+ npm install -g appclean@2.0.1
158
+ appclean --version
159
+ ```
160
+
161
+ ## Versioning Strategy
162
+
163
+ AppClean follows [Semantic Versioning](https://semver.org/):
164
+
165
+ - **Major** (X.0.0): Breaking changes
166
+ - **Minor** (X.Y.0): New features, backward compatible
167
+ - **Patch** (X.Y.Z): Bug fixes, no new features
168
+
169
+ Examples:
170
+ - Bug fix: 2.0.0 → 2.0.1
171
+ - New feature: 2.0.1 → 2.1.0
172
+ - Breaking change: 2.1.0 → 3.0.0
173
+
174
+ ## Troubleshooting
175
+
176
+ ### "Not logged into npm"
177
+
178
+ Run: `npm login`
179
+
180
+ ### GitHub Actions failing
181
+
182
+ Check:
183
+ 1. NPM_TOKEN is set in GitHub Secrets
184
+ 2. Token hasn't expired
185
+ 3. Token has publish permissions
186
+
187
+ ### Version mismatch errors
188
+
189
+ Ensure both files are updated:
190
+ - `package.json`
191
+ - `src/index.ts`
192
+
193
+ ## Release Checklist
194
+
195
+ - [ ] Update version in `package.json`
196
+ - [ ] Update VERSION constant in `src/index.ts`
197
+ - [ ] Run `npm run build`
198
+ - [ ] Run `npm test`
199
+ - [ ] Commit changes: `git commit -m "chore: Bump version to X.Y.Z"`
200
+ - [ ] Create tag: `git tag -a vX.Y.Z -m "Message"`
201
+ - [ ] Push: `git push origin main && git push origin vX.Y.Z`
202
+ - [ ] Verify npm publication
203
+ - [ ] Verify GitHub release created
204
+
205
+ ## Example: Releasing v2.0.1
206
+
207
+ ```bash
208
+ # 1. Update version files
209
+ echo 'Update package.json version to 2.0.1'
210
+ echo 'Update src/index.ts VERSION to 2.0.1'
211
+
212
+ # 2. Build and test
213
+ npm run build
214
+ npm test
215
+
216
+ # 3. Commit
217
+ git add package.json src/index.ts
218
+ git commit -m "chore: Bump version to 2.0.1"
219
+
220
+ # 4. Create release tag
221
+ git tag -a v2.0.1 -m "AppClean v2.0.1 - Bug fixes for GUI"
222
+
223
+ # 5. Push to trigger GitHub Actions
224
+ git push origin main
225
+ git push origin v2.0.1
226
+
227
+ # 6. Watch GitHub Actions publish automatically
228
+ # View at: https://github.com/praveenkay/AppClean/actions
229
+ ```
230
+
231
+ ## Support
232
+
233
+ For issues with publishing, check:
234
+ - GitHub Actions logs: https://github.com/praveenkay/AppClean/actions
235
+ - npm package page: https://www.npmjs.com/package/appclean
236
+ - GitHub releases: https://github.com/praveenkay/AppClean/releases
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import { showMainMenu, showAppMenu, showHeader, showHelp, } from './ui/menu.js';
9
9
  import { promptSearchQuery, promptSelectApp, promptConfirmRemoval, promptRemovalOptions, promptInstallMethodFilter, promptSortBy, displayAppDetails, promptFinalConfirmation, } from './ui/prompts.js';
10
10
  import { Logger, formatBytes } from './utils/logger.js';
11
11
  import { UpgradeManager } from './utils/upgrade.js';
12
- const VERSION = '2.0.0';
12
+ const VERSION = '2.0.2';
13
13
  async function interactiveMode() {
14
14
  showHeader();
15
15
  const detector = new Detector();
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/ui/client/api/client.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,OAAO,CAAS;IAKlB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAOjE,IAAI,CAAC,CAAC,GAAG,GAAG,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,CAAC,CAAC;IAeP,GAAG,CAAC,CAAC,GAAG,GAAG,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,CAAC,CAAC;IAeP,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;YAO5D,OAAO;YA+CP,aAAa;YAiBb,kBAAkB;CAWjC;AAKD,qBAAa,QAAS,SAAQ,KAAK;IAGxB,MAAM,EAAE,MAAM;IACd,IAAI,CAAC,EAAE,GAAG;gBAFjB,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,GAAG,YAAA;CAKpB;AAGD,eAAO,MAAM,SAAS,WAAkB,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/ui/client/api/client.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,OAAO,CAAS;IAKlB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAOjE,IAAI,CAAC,CAAC,GAAG,GAAG,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,CAAC,CAAC;IAeP,GAAG,CAAC,CAAC,GAAG,GAAG,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,CAAC,CAAC;IAeP,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;YAO5D,OAAO;YA+CP,aAAa;YAsBb,kBAAkB;CAWjC;AAKD,qBAAa,QAAS,SAAQ,KAAK;IAGxB,MAAM,EAAE,MAAM;IACd,IAAI,CAAC,EAAE,GAAG;gBAFjB,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,GAAG,YAAA;CAKpB;AAGD,eAAO,MAAM,SAAS,WAAkB,CAAC"}
@@ -64,7 +64,11 @@ export class ApiClient {
64
64
  async parseResponse(response) {
65
65
  const contentType = response.headers.get('content-type');
66
66
  if (contentType?.includes('application/json')) {
67
- return response.json();
67
+ const json = await response.json();
68
+ if (json && typeof json === 'object' && 'data' in json && 'success' in json) {
69
+ return json.data;
70
+ }
71
+ return json;
68
72
  }
69
73
  if (contentType?.includes('text/')) {
70
74
  return (await response.text());
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/ui/client/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/ui/client/api/client.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,6 @@ import { router } from './utils/router.js';
2
2
  import { appStore } from './state/appStore.js';
3
3
  import { dashboardStore } from './state/dashboardStore.js';
4
4
  import { uiStore } from './state/uiStore.js';
5
- export declare function initApp(): void;
5
+ export declare function initApp(): Promise<void>;
6
6
  export { appStore, dashboardStore, uiStore, router };
7
7
  //# sourceMappingURL=app.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/ui/client/app.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAW7C,wBAAgB,OAAO,IAAI,IAAI,CAgB9B;AA8ED,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/ui/client/app.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAW7C,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB7C;AAkFD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -6,11 +6,11 @@ import { renderDashboard } from './pages/dashboard.js';
6
6
  import { renderAppSearch } from './pages/appSearch.js';
7
7
  import { renderAppDetails } from './pages/appDetails.js';
8
8
  import { renderSettings } from './pages/settings.js';
9
- export function initApp() {
9
+ export async function initApp() {
10
10
  console.log('🧹 AppClean GUI v1.0.0 initializing...');
11
11
  registerRoutes();
12
- initializeStores();
13
12
  setupUIListeners();
13
+ await initializeStores();
14
14
  router.navigate('');
15
15
  console.log('✓ AppClean GUI ready');
16
16
  }
@@ -35,7 +35,9 @@ function registerRoutes() {
35
35
  async function initializeStores() {
36
36
  try {
37
37
  await dashboardStore.loadStats();
38
- await appStore.loadApps();
38
+ appStore.loadApps().catch((error) => {
39
+ console.error('Failed to load apps:', error);
40
+ });
39
41
  }
40
42
  catch (error) {
41
43
  console.error('Failed to initialize stores:', error);
@@ -47,7 +49,9 @@ function setupUIListeners() {
47
49
  console.log('UI State changed:', state.currentView);
48
50
  });
49
51
  appStore.subscribe((state) => {
50
- console.log(`Apps loaded: ${state.apps.length}`);
52
+ if (state && state.apps) {
53
+ console.log(`Apps loaded: ${state.apps.length}`);
54
+ }
51
55
  });
52
56
  dashboardStore.subscribe((state) => {
53
57
  if (state.stats) {
@@ -63,9 +67,9 @@ function setupUIListeners() {
63
67
  }
64
68
  export { appStore, dashboardStore, uiStore, router };
65
69
  if (document.readyState === 'loading') {
66
- document.addEventListener('DOMContentLoaded', initApp);
70
+ document.addEventListener('DOMContentLoaded', () => initApp().catch(e => console.error('Init error:', e)));
67
71
  }
68
72
  else {
69
- initApp();
73
+ initApp().catch(e => console.error('Init error:', e));
70
74
  }
71
75
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/ui/client/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/ui/client/app.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,17 @@ export function renderAppSearch() {
21
21
  }
22
22
  function renderAppSearchContent(container) {
23
23
  const state = appStore.getState();
24
+ if (!state || !state.apps) {
25
+ console.error('AppStore state is invalid:', state);
26
+ container.innerHTML = `
27
+ <div class="alert alert-danger">
28
+ <h3>Error Loading Apps</h3>
29
+ <p>Failed to load application state. Please refresh the page.</p>
30
+ <button class="btn btn-primary btn-sm mt-4" onclick="window.location.reload()">Reload</button>
31
+ </div>
32
+ `;
33
+ return;
34
+ }
24
35
  container.innerHTML = `
25
36
  <div class="app-search-page">
26
37
  <!-- Header -->
@@ -62,7 +73,7 @@ function renderAppSearchContent(container) {
62
73
 
63
74
  <!-- Apps Grid -->
64
75
  <div class="apps-grid">
65
- ${state.apps.length > 0
76
+ ${(state.apps && state.apps.length > 0)
66
77
  ? `
67
78
  <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
68
79
  ${state.apps.map((app) => renderAppCard(app)).join('')}
@@ -1 +1 @@
1
- {"version":3,"file":"appSearch.js","sourceRoot":"","sources":["../../../../src/ui/client/pages/appSearch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appSearch.js","sourceRoot":"","sources":["../../../../src/ui/client/pages/appSearch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAA+B,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAKzG,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC5D,IAAI,CAAC,SAAS;QAAE,OAAO;IAGvB,SAAS,CAAC,SAAS,GAAG;;;;;GAKrB,CAAC;IAGF,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAC5B,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAGlC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACrB,sBAAsB,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAKD,SAAS,sBAAsB,CAAC,SAAsB;IACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAGlC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,SAAS,CAAC,SAAS,GAAG;;;;;;KAMrB,CAAC;QACF,OAAO;IACT,CAAC;IAED,SAAS,CAAC,SAAS,GAAG;;;;;;;;;;;;;;;;;;uBAkBD,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;;;;;;;;cAQ9C,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,IAAI,EAAE,CAAC;;;cAG3D,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,IAAI,MAAM,CAAC;;;;;cAKtD,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ;;;;;;;UAQ9F,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC;;cAEA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;SAEzD;QACG,CAAC,CAAC;;;;;;kBAMI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,0BAA0B;;;;SAKjG;;;;QAKA,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK;QAC7B,CAAC,CAAC;;;yBAGa,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK;;;OAGrD;QACG,CAAC,CAAC,EACN;;GAEH,CAAC;IAGF,oBAAoB,EAAE,CAAC;IACvB,qBAAqB,EAAE,CAAC;IAGxB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC;AAKD,SAAS,aAAa,CAAC,GAAiB;IACtC,OAAO;mGAC0F,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;;;0CAGrF,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;+BAC/B,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC;cACvD,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC;;;;;YAKxC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;;;;;cAK7D,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc;;;;;;+CAMhB,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;;;;;;;;GAQxE,CAAC;AACJ,CAAC;AAKD,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnF,MAAM,MAAM,GAA2B;QACrC,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,QAAQ;KACnB,CAAC;IAEF,OAAO,OAAO;SACX,GAAG,CACF,CAAC,MAAM,EAAE,EAAE,CAAC;;0BAEQ,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW;qBACtD,MAAM;;QAEnB,MAAM,CAAC,MAAM,CAAC;;GAEnB,CACE;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAKD,SAAS,gBAAgB,CAAC,QAAgB;IACxC,OAAO;;6BAEoB,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;6BACrC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;6BACrC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;GAE/D,CAAC;AACJ,CAAC;AAKD,SAAS,oBAAoB;IAC3B,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAqB,CAAC;IAChF,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAsB,CAAC;IAG/E,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,KAAa,EAAE,EAAE;QACjD,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,EAAE,GAAG,CAAC,CAAC;IAER,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC;YACnD,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5B,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACjC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAC/C,QAAQ,CAAC,sBAAsB,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAGH,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAI,CAAC,CAAC,MAA4B,CAAC,KAAY,CAAC;YAC1D,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAKD,SAAS,qBAAqB;IAC5B,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC7D,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACzC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAKD,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,GAAG,GAA2B;QAClC,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,QAAQ;KACd,CAAC;IACF,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../../src/ui/client/pages/dashboard.ts"],"names":[],"mappings":"AAWA,wBAAgB,eAAe,IAAI,IAAI,CAmCtC"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../../src/ui/client/pages/dashboard.ts"],"names":[],"mappings":"AAWA,wBAAgB,eAAe,IAAI,IAAI,CAyDtC"}
@@ -13,10 +13,22 @@ export function renderDashboard() {
13
13
  dashboardStore.refreshStats(true).then(() => {
14
14
  const state = dashboardStore.getState();
15
15
  const stats = state.stats;
16
+ const error = state.error;
17
+ if (error) {
18
+ container.innerHTML = `
19
+ <div class="alert alert-danger" style="margin: 20px;">
20
+ <h3 style="margin-top: 0;">⚠️ Error Loading Dashboard</h3>
21
+ <p>${escapeHtml(error)}</p>
22
+ <button class="btn btn-primary btn-sm" onclick="window.location.reload()">Retry</button>
23
+ </div>
24
+ `;
25
+ return;
26
+ }
16
27
  if (!stats) {
17
28
  container.innerHTML = `
18
- <div class="alert alert-danger">
19
- <span>Failed to load dashboard stats</span>
29
+ <div class="alert alert-warning" style="margin: 20px;">
30
+ <h3 style="margin-top: 0;">⏳ Initializing</h3>
31
+ <p>Dashboard is loading. Please wait...</p>
20
32
  </div>
21
33
  `;
22
34
  return;
@@ -27,11 +39,20 @@ export function renderDashboard() {
27
39
  renderDashboardContent(container, newState.stats);
28
40
  }
29
41
  });
42
+ }).catch((error) => {
43
+ console.error('Dashboard error:', error);
44
+ container.innerHTML = `
45
+ <div class="alert alert-danger" style="margin: 20px;">
46
+ <h3 style="margin-top: 0;">❌ Failed to Load Dashboard</h3>
47
+ <p>An unexpected error occurred. Please check the console for details.</p>
48
+ <button class="btn btn-primary btn-sm" onclick="window.location.reload()">Reload Page</button>
49
+ </div>
50
+ `;
30
51
  });
31
52
  }
32
53
  function renderDashboardContent(container, stats) {
33
54
  container.innerHTML = `
34
- <div class="dashboard-page">
55
+ <div class="dashboard-page fade-in">
35
56
  <!-- Header -->
36
57
  <div class="page-header mb-8">
37
58
  <h1 class="text-3xl font-bold">📊 Dashboard</h1>
@@ -68,10 +89,10 @@ function renderDashboardContent(container, stats) {
68
89
  </div>
69
90
  <p class="text-sm text-muted">
70
91
  ${stats.diskUsagePercent < 80
71
- ? ' Disk usage is healthy'
92
+ ? ' Disk usage is healthy'
72
93
  : stats.diskUsagePercent < 90
73
94
  ? '⚠️ Disk usage is getting high'
74
- : ' Disk usage is critical'}
95
+ : '🔴 Disk usage is critical'}
75
96
  </p>
76
97
  </div>
77
98
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/ui/client/pages/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/ui/client/pages/dashboard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"appStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/client/state/appStore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiBD,qBAAa,QAAS,SAAQ,KAAK,CAAC,aAAa,CAAC;;IAM1C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBzB,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BhE,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKnC,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAK7C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAKjD,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAKlC,cAAc,IAAI,IAAI;IAKhB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCnC,UAAU,IAAI,IAAI;CAGnB;AAGD,eAAO,MAAM,QAAQ,UAAiB,CAAC"}
1
+ {"version":3,"file":"appStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/client/state/appStore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiBD,qBAAa,QAAS,SAAQ,KAAK,CAAC,aAAa,CAAC;;IAM1C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BzB,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkChE,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKnC,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAK7C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAKjD,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAKlC,cAAc,IAAI,IAAI;IAKhB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCnC,UAAU,IAAI,IAAI;CAGnB;AAGD,eAAO,MAAM,QAAQ,UAAiB,CAAC"}