Skip to content

Commit f8660d2

Browse files
authored
Merge pull request #18 from kernelcoffee/dev/package-upgrade
Package update
2 parents 8ba7506 + 5729dbb commit f8660d2

26 files changed

Lines changed: 1919 additions & 2715 deletions

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
- name: Set up Node.js
4242
uses: actions/setup-node@v4
4343
with:
44-
node-version: '20'
44+
node-version: '24'
4545
cache: 'npm'
4646
cache-dependency-path: frontend/package-lock.json
4747

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# -----------------------------------------------------------------------------
77
# Stage 1: Build Frontend
88
# -----------------------------------------------------------------------------
9-
FROM node:20-alpine AS frontend-build
9+
FROM node:24-alpine AS frontend-build
1010

1111
WORKDIR /frontend
1212

docs/TOFIX.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Technical Debt & Known Issues
2+
3+
This document tracks disabled warnings, skipped tests, and other technical debt that should be addressed in the future.
4+
5+
## ESLint Rules Disabled
6+
7+
### Frontend (`frontend/eslint.config.js`)
8+
9+
| Rule | Reason | Files Affected |
10+
|------|--------|----------------|
11+
| `react-hooks/set-state-in-effect` | False positives for valid patterns (initializing form state from fetched data, countdown timers) | `Settings.tsx`, `Dashboard.tsx` |
12+
13+
**Details:**
14+
- `Settings.tsx`: Initializes form state when settings data is fetched - standard pattern for forms with async data
15+
- `Dashboard.tsx`: Updates countdown timer state every second - valid use of setInterval in useEffect
16+
17+
## Skipped Tests
18+
19+
### Backend
20+
21+
| Test File | Tests Skipped | Reason |
22+
|-----------|---------------|--------|
23+
| `test_api_main.py` | 2 | Requires database setup - covered by e2e tests |
24+
| `test_scheduler_api.py` | 12 (entire file) | APScheduler causes event loop conflicts in test suite - covered by unit tests |
25+
| `integration/*` | All | Requires `--run-integration` flag and valid PHPSESSID |
26+
27+
**Test counts (as of last run):**
28+
- Backend: 718 passed, 31 skipped
29+
- Frontend: 170 passed, 0 skipped
30+
31+
## Future Improvements
32+
33+
### Code Quality
34+
35+
- [ ] Re-enable `react-hooks/set-state-in-effect` after refactoring affected components
36+
- [ ] Fix APScheduler event loop conflicts to enable scheduler e2e tests in CI
37+
- [ ] Add more integration test coverage with mocked external services

frontend/.eslintrc.cjs

Lines changed: 0 additions & 18 deletions
This file was deleted.

frontend/.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20
1+
24

frontend/eslint.config.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import js from '@eslint/js';
2+
import globals from 'globals';
3+
import tseslint from 'typescript-eslint';
4+
import reactHooks from 'eslint-plugin-react-hooks';
5+
import reactRefresh from 'eslint-plugin-react-refresh';
6+
7+
export default tseslint.config(
8+
{ ignores: ['dist', 'coverage'] },
9+
{
10+
extends: [js.configs.recommended, ...tseslint.configs.recommended],
11+
files: ['**/*.{ts,tsx}'],
12+
languageOptions: {
13+
ecmaVersion: 2020,
14+
globals: globals.browser,
15+
},
16+
plugins: {
17+
'react-hooks': reactHooks,
18+
'react-refresh': reactRefresh,
19+
},
20+
rules: {
21+
...reactHooks.configs.recommended.rules,
22+
'react-refresh/only-export-components': [
23+
'warn',
24+
{ allowConstantExport: true },
25+
],
26+
// Disable overly strict rules for valid patterns
27+
'react-hooks/set-state-in-effect': 'off',
28+
},
29+
}
30+
);

0 commit comments

Comments
 (0)