t0ng7u
|
38e72e1af7
|
🎨 chore: integrate ESLint header automation with AGPL-3.0 notice
• Added `.eslintrc.cjs`
- Enables `header` + `react-hooks` plugins
- Inserts standardized AGPL-3.0 license banner for © 2025 QuantumNous
- JS/JSX parsing & JSX support configured
• Installed dev-deps: `eslint`, `eslint-plugin-header`, `eslint-plugin-react-hooks`
• Updated `web/package.json` scripts
- `eslint` → lint with cache
- `eslint:fix` → auto-insert/repair license headers
• Executed `eslint --fix` to prepend license banner to all JS/JSX files
• Ignored runtime cache
- Added `.eslintcache` to `.gitignore` & `.dockerignore`
Result: consistent AGPL-3.0 license headers, reproducible linting across local dev & CI.
|
2025-07-19 03:30:44 +08:00 |
|
t0ng7u
|
6799daacd1
|
🚀 feat(web/channels): Deep modular refactor of Channels table
1. Split monolithic `ChannelsTable` (2200+ LOC) into focused components
• `channels/index.jsx` – composition entry
• `ChannelsTable.jsx` – pure `<Table>` rendering
• `ChannelsActions.jsx` – bulk & settings toolbar
• `ChannelsFilters.jsx` – search / create / column-settings form
• `ChannelsTabs.jsx` – type tabs
• `ChannelsColumnDefs.js` – column definitions & render helpers
• `modals/` – BatchTag, ColumnSelector, ModelTest modals
2. Extract domain hook
• Moved `useChannelsData.js` → `src/hooks/channels/useChannelsData.js`
– centralises state, API calls, pagination, filters, batch ops
– now exports `setActivePage`, fixing tab / status switch errors
3. Update wiring
• All sub-components consume data via `useChannelsData` props
• Adjusted import paths after hook relocation
4. Clean legacy file
• Legacy `components/table/ChannelsTable.js` now re-exports new module
5. Bug fixes
• Tab switching, status filter & tag aggregation restored
• Column selector & batch actions operate via unified hook
This commit completes the first phase of modularising the Channels feature, laying groundwork for consistent, maintainable table architecture across the app.
|
2025-07-18 21:05:36 +08:00 |
|