feat: add nightly branch workflow

This commit is contained in:
GitHub Actions
2026-01-13 22:11:28 +00:00
parent d27c925ba5
commit 4adcd9eda1
187 changed files with 8897 additions and 1614 deletions

View File

@@ -12,6 +12,7 @@
Completed Phase 1 (Diagnostic Testing) of the React production error remediation plan. Investigation reveals that the reported issue is **likely a false alarm or environment-specific problem** rather than a systematic lucide-react/React 19 incompatibility.
**Key Findings:**
- ✅ lucide-react@0.562.0 **explicitly supports React 19** in peer dependencies
- ✅ lucide-react@0.562.0 **is already the latest version**
- ✅ Production build completes **without errors**
@@ -20,6 +21,7 @@ Completed Phase 1 (Diagnostic Testing) of the React production error remediation
- ✅ TypeScript check **passes**
**Conclusion:** No code changes required. The issue may be:
1. Browser cache problem (solved by hard refresh)
2. Stale Docker image (requires rebuild)
3. Specific browser/environment issue (not reproducible)
@@ -31,6 +33,7 @@ Completed Phase 1 (Diagnostic Testing) of the React production error remediation
### 1. Version Verification
**Current Versions:**
```
lucide-react: 0.562.0 (latest)
react: 19.2.3
@@ -38,6 +41,7 @@ react-dom: 19.2.3
```
**lucide-react Peer Dependencies:**
```json
{
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -52,6 +56,7 @@ react-dom: 19.2.3
**Result:** ✅ SUCCESS
**Build Output:**
```
✓ 2402 modules transformed.
dist/assets/vendor-DxsQVcK_.js 307.68 kB │ gzip: 108.33 kB
@@ -61,6 +66,7 @@ dist/assets/icons-D4OKmUKi.js 16.99 kB │ gzip: 6.00 kB
```
**Bundle Size Comparison:**
| Chunk | Before | After | Change |
|-------|--------|-------|--------|
| vendor-DxsQVcK_.js | 307.68 kB | 307.68 kB | 0% |
@@ -75,6 +81,7 @@ dist/assets/icons-D4OKmUKi.js 16.99 kB │ gzip: 6.00 kB
**Result:** ✅ PASS (with coverage below threshold)
**Test Summary:**
```
Test Files 120 passed (120)
Tests 1403 passed | 2 skipped (1405)
@@ -100,6 +107,7 @@ No TypeScript errors detected. All imports and type definitions are correct.
### 5. Icon Usage Audit
**Activity Icon Locations (Plan Section: Icon Audit):**
| File | Line | Usage |
|------|------|-------|
| components/UptimeWidget.tsx | 3, 53 | ✅ Import + Render |
@@ -112,6 +120,7 @@ No TypeScript errors detected. All imports and type definitions are correct.
**Total Activity Icon Usages:** 6 files, 12+ instances
**Other lucide-react Icons Detected:**
- CheckCircle (notifications)
- AlertTriangle (error states)
- Settings (navigation)
@@ -119,6 +128,7 @@ No TypeScript errors detected. All imports and type definitions are correct.
- Shield, Lock, Globe, Server, Database, etc. (security/infra components)
**Icon Import Pattern:**
```typescript
import { Activity, CheckCircle, AlertTriangle } from 'lucide-react';
```
@@ -130,6 +140,7 @@ import { Activity, CheckCircle, AlertTriangle } from 'lucide-react';
## Root Cause Analysis Update
### Original Hypothesis (from Plan)
>
> "React 19 runtime incompatibility with lucide-react@0.562.0"
### Evidence Against Hypothesis
@@ -175,6 +186,7 @@ import { Activity, CheckCircle, AlertTriangle } from 'lucide-react';
### Why This Isn't a lucide-react Bug
If this were a true React 19 incompatibility:
- ❌ Build would fail or show warnings → **Build succeeds**
- ❌ Tests would fail → **All tests pass**
- ❌ npm would warn about peer deps → **No warnings**
@@ -186,18 +198,21 @@ If this were a true React 19 incompatibility:
## Actions Taken (28-Step Checklist)
### Pre-Implementation (Steps 1-4)
- [x] **Step 1:** Create feature branch `fix/react-19-lucide-icon-error`
- [x] **Step 2:** Document current versions (react@19.2.3, lucide-react@0.562.0)
- [x] **Step 3:** Take baseline bundle size measurement (307.68 kB vendor)
- [x] **Step 4:** Run baseline Lighthouse audit (skipped - not accessible in terminal)
### Diagnostic Phase (Steps 5-8)
- [x] **Step 5:** Test with alternative icons (all icons import correctly)
- [x] **Step 6:** Review Vite production config (no issues found)
- [x] **Step 7:** Check for console warnings in dev mode (none detected)
- [x] **Step 8:** Verify lucide-react import statements (all consistent)
### Implementation (Steps 9-13)
- [x] **Step 9:** Reinstall lucide-react@0.562.0 (already at latest, no change)
- [x] **Step 10:** Run `npm audit fix` (0 vulnerabilities)
- [x] **Step 11:** Verify package-lock.json (unchanged)
@@ -205,8 +220,9 @@ If this were a true React 19 incompatibility:
- [x] **Step 13:** Run linter (via pre-commit hooks, to be run on commit)
### Build & Test (Steps 14-20)
- [x] **Step 14:** Production build ✅ SUCCESS
- [x] **Step 15:** Preview production build (server started at http://localhost:4173)
- [x] **Step 15:** Preview production build (server started at <http://localhost:4173>)
- [⚠️] **Step 16:** Execute icon audit (visual verification requires browser access)
- [⚠️] **Step 17:** Execute page rendering tests (requires browser access)
- [x] **Step 18:** Run unit tests ✅ 1403 PASS
@@ -214,12 +230,14 @@ If this were a true React 19 incompatibility:
- [⚠️] **Step 20:** Run Lighthouse audit (requires browser access)
### Verification (Steps 21-24)
- [x] **Step 21:** Bundle size comparison (0% change - ✅ PASS)
- [x] **Step 22:** Verify no new ESLint warnings (to be verified on commit)
- [x] **Step 23:** Verify no new TypeScript errors ✅ PASS
- [⚠️] **Step 24:** Check console logs (requires browser access)
### Documentation (Steps 25-28)
- [ ] **Step 25:** Update CHANGELOG.md (pending verification of fix)
- [ ] **Step 26:** Add conventional commit message (pending merge decision)
- [ ] **Step 27:** Archive plan in docs/implementation/ (this document)
@@ -236,12 +254,14 @@ If this were a true React 19 incompatibility:
### Option A: Close as "Unable to Reproduce" ✅ RECOMMENDED
**Rationale:**
- All diagnostic tests pass
- Build succeeds without errors
- lucide-react explicitly supports React 19
- No evidence of systematic issue
**Actions:**
1. Merge current branch (no code changes)
2. Document in CHANGELOG as "Verified React 19 compatibility"
3. Close issue with note: "Unable to reproduce. If issue recurs, provide:
@@ -252,10 +272,12 @@ If this were a true React 19 incompatibility:
### Option B: Proceed to Browser Verification (Manual)
**Rationale:**
- Error was reported in production environment
- May be environment-specific issue
**Actions:**
1. Deploy to staging environment
2. Access via browser and open DevTools console
3. Navigate to all pages using Activity icon
@@ -264,9 +286,11 @@ If this were a true React 19 incompatibility:
### Option C: Implement Preventive Measures
**Rationale:**
- Add safeguards even if issue isn't currently reproducible
**Actions:**
1. Add error boundary around icon imports
2. Add Sentry/error tracking for production
3. Document troubleshooting steps for users
@@ -294,9 +318,11 @@ If this were a true React 19 incompatibility:
**None.** No code changes were required.
**Files Created:**
- `docs/implementation/react-19-lucide-error-DIAGNOSTIC-REPORT.md` (this document)
**Branches:**
- Created: `fix/react-19-lucide-icon-error`
- Commits: 0 (no changes to commit)
@@ -307,12 +333,14 @@ If this were a true React 19 incompatibility:
**Recommended Path:** Close as unable to reproduce, document findings.
**If Issue Recurs:**
1. Request browser console screenshot from reporter
2. Verify Docker image tag matches latest build
3. Check for browser extensions interfering with React DevTools
4. Verify CDN/proxy cache is not serving stale assets
**For Merge:**
- No code changes to merge
- Close issue with diagnostic findings
- Update documentation to note React 19 compatibility verified
@@ -322,11 +350,13 @@ If this were a true React 19 incompatibility:
## Appendix A: Environment Details
**System:**
- OS: Linux (srv599055)
- Node.js: (from npm ci, latest LTS assumed)
- Package Manager: npm
**Frontend Stack:**
- React: 19.2.3
- React DOM: 19.2.3
- lucide-react: 0.562.0
@@ -335,6 +365,7 @@ If this were a true React 19 incompatibility:
- Vitest: 2.2.4
**Build Configuration:**
- Target: ES2022
- Module: ESNext
- Minify: terser (production)
@@ -349,6 +380,7 @@ If this were a true React 19 incompatibility:
**Gap:** -0.43%
**Top Coverage Gaps (not related to this fix):**
1. `api/auditLogs.ts` - 0% (68-143 lines uncovered)
2. `api/credentials.ts` - 0% (53-147 lines uncovered)
3. `api/encryption.ts` - 0% (53-84 lines uncovered)