Some checks failed
Server CI / Postgres (shard 0) (push) Has been skipped
Server CI / Postgres (shard 3) (push) Has been skipped
BuildEnv Docker Image / build-image (push) Failing after 4s
BuildEnv Docker Image / build-image-fips (push) Failing after 4s
Migration Review & Release Notes / Generate migration review & release notes (push) Failing after 3s
Server CI / Build Environment (push) Failing after 3s
Server CI / Postgres (shard 1) (push) Has been skipped
Tools CI / check-style (mattermost-govet) (push) Failing after 4s
Server CI / Postgres (shard 2) (push) Has been skipped
Tools CI / check-style (mmgotool) (push) Failing after 3s
Server CI / Elasticsearch v8 Compatibility (push) Has been skipped
Server CI / OpenSearch v2 Compatibility (push) Has been skipped
Server CI / Postgres FIPS (shard 0) (push) Has been skipped
Tools CI / Test (mattermost-govet) (push) Failing after 3s
Server CI / Postgres FIPS (shard 1) (push) Has been skipped
Server CI / Postgres FIPS (shard 2) (push) Has been skipped
Tools CI / Test (mmgotool) (push) Failing after 3s
Server CI / Postgres FIPS (shard 3) (push) Has been skipped
Server CI / Run mmctl tests (push) Has been skipped
Server CI / Run mmctl tests (FIPS) (push) Has been skipped
Server CI / Merge Postgres Test Results (push) Has been skipped
Server CI / Merge Postgres FIPS Test Results (push) Has been skipped
Server CI / Check backport migrations (push) Has been skipped
Server CI / Check generated files (push) Has been skipped
Server CI / check-style (push) Has been skipped
Server CI / Vet API (push) Has been skipped
Server CI / Build mattermost server app (push) Has been skipped
Server CI / Server CI Complete (push) Failing after 2s
Server CI / Server CI Artifacts (push) Has been skipped
Server CI / Sentry Upload (push) Has been skipped
Server CI / Server CI Report (push) Failing after 5m1s
Server CI Nightly Race / Race Detector (push) Has been skipped
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Webapp CI Cache Warm / Warm Webapp node_modules Cache (push) Has been cancelled
E2E CI Cache Warm / Warm E2E npm Registry Cache (push) Has been cancelled
API / build (push) Has been cancelled
Web App CI / check-types (push) Has been cancelled
Web App CI / check-lint (push) Has been cancelled
Web App CI / check-i18n (push) Has been cancelled
Web App CI / check-external-links (push) Has been cancelled
Web App CI / test (platform) (push) Has been cancelled
Web App CI / test (mattermost-redux) (push) Has been cancelled
Web App CI / test (channels shard 1/4) (push) Has been cancelled
Web App CI / test (channels shard 2/4) (push) Has been cancelled
Web App CI / test (channels shard 3/4) (push) Has been cancelled
Web App CI / test (channels shard 4/4) (push) Has been cancelled
Web App CI / upload-coverage (push) Has been cancelled
Web App CI / build (push) Has been cancelled
YAML Lint / yamllint (push) Has been cancelled
Push mirrored docker images / cd/Push mirrored docker images (push) Has been cancelled
docs-cd / Build and deploy docs (push) Has been cancelled
Docs CI / build (push) Has been cancelled
E2E Cache Warm: Cypress deps / Warm Cypress deps cache (push) Has been cancelled
Scorecards supply-chain security / Scorecard analysis (push) Has been cancelled
Server CI Weekly / Postgres FIPS (push) Has been skipped
Server CI Weekly / Run mmctl tests (FIPS) (push) Has been skipped
Server CI Weekly / Postgres with binary parameters (push) Has been skipped
Server CI Weekly / Build Environment (push) Failing after 1s
Server CI Cache Warm / Warm Go Module and Build Cache (push) Failing after 2s
Server CI Nightly Race / Build Environment (push) Failing after 1s
74 lines
4.1 KiB
Markdown
74 lines
4.1 KiB
Markdown
# CLAUDE: `webapp/channels/`
|
||
|
||
## Purpose
|
||
- Main Mattermost web client workspace; almost every UI or Redux change flows through this package.
|
||
- Runs as an npm workspace – use `--workspace=channels` when installing deps or running scripts.
|
||
- Builds a federated bundle consumed by the server and plugins.
|
||
|
||
## Local Commands
|
||
- `npm run dev-server --workspace=channels` – hot-reload development server.
|
||
- `npm run build --workspace=channels` – production bundle (invokes webpack config in this folder).
|
||
- `npm run test --workspace=channels` / `npm run test:watch --workspace=channels`.
|
||
- `npm run check --workspace=channels` and `npm run fix --workspace=channels` for lint/style fixes.
|
||
|
||
## Directory Structure (src/)
|
||
|
||
```
|
||
src/
|
||
├── components/ # React components organized by feature (300+ subdirectories)
|
||
├── actions/ # Redux action creators (sync and async thunks)
|
||
├── selectors/ # Redux selectors for deriving state
|
||
├── reducers/ # Redux reducers for state management
|
||
├── utils/ # Utility functions and helpers
|
||
├── tests/ # Test utilities and helpers
|
||
├── i18n/ # Internationalization files
|
||
├── sass/ # Global SCSS styles and theme variables
|
||
├── types/ # TypeScript type definitions specific to the web app
|
||
├── store/ # Redux store configuration with redux-persist
|
||
├── plugins/ # Plugin integration points
|
||
├── packages/
|
||
│ └── mattermost-redux/ # Core Redux layer (actions, reducers, selectors)
|
||
├── entry.tsx # Application entry point
|
||
└── root.tsx # Root React component
|
||
```
|
||
|
||
## State Management
|
||
- **Redux + Redux Thunk**: Central state management using Redux with thunk middleware for async actions.
|
||
- **Redux Persist**: State persistence using localForage with cross-tab synchronization.
|
||
- **Mattermost Redux**: Core Redux logic (`state.entities.*` for server data).
|
||
- **State Views**: `state.views.*` for UI state (modals, sidebars, preferences).
|
||
- **Client4**: Singleton HTTP client for API requests. Should only be used in Redux actions.
|
||
|
||
## Key Files
|
||
- `package.json` – workspace-specific scripts, env vars, and browserlist targets.
|
||
- `webpack.config.js` – module federation + alias map; update remotes or exposes here only when necessary.
|
||
- `jest.config.js` – test roots, transformers, moduleNameMapper for workspace aliases.
|
||
- `tsconfig.json` – project references for `src`, `tests`, and embedded packages.
|
||
|
||
## TypeScript Configuration
|
||
- **Strict Mode**: TypeScript strict mode enabled with `strictNullChecks`
|
||
- **Path Aliases**: Configured for `@mattermost/*` packages and `mattermost-redux/*`
|
||
- **Composite Projects**: Uses TypeScript project references for workspace packages
|
||
- **No Any**: Avoid `any` types; legacy code may have them but new code should be typed
|
||
|
||
## Module Federation Notes
|
||
- Use `channels/src/module_registry.ts` to register async chunks; never import plugin remotes synchronously.
|
||
- Exposed modules must stay backward compatible; document any break in `webapp/README.md`.
|
||
- When adding a new remote, coordinate with server config (see `webpack.config.js` → `remotes`).
|
||
- Prefer wrapping plugin surfaces in adapter components so that federated boundaries remain stable.
|
||
|
||
## Dependencies & UI Stack
|
||
- React 18, Redux 5, React Router 5, React Intl, Floating UI, Compass Icons, Monaco.
|
||
- Follow `webapp/STYLE_GUIDE.md → Dependencies & Packages` before introducing new libs.
|
||
- `@mattermost/types`, `@mattermost/client`, and `platform/components` are first-party packages; import via full package names, not deep relative paths.
|
||
|
||
## Common Gotchas
|
||
- Postinstall builds platform packages—if TypeScript types feel stale, re-run `npm install` at repo root.
|
||
- Use `npm add <pkg> --workspace=channels` to avoid polluting other workspaces.
|
||
- Environment-specific overrides live in `config/` on the server side; do not hard-code URLs or feature flags here.
|
||
- Webpack aliases mirror tsconfig paths; keep both in sync when adding a new alias.
|
||
|
||
## References
|
||
- `webapp/STYLE_GUIDE.md → Automated Style Checking`, `Dependencies & Packages`.
|
||
- `webapp/README.md` for high-level architecture and release info.
|