mirror of
https://github.com/lobehub/lobehub
synced 2026-04-21 17:47:27 +00:00
* 🔧 chore(vscode): add typescript.tsdk and disable mdx server Fix MDX extension crash caused by Cursor's bundled TypeScript version * 🔧 chore(claude): add skills symlink to .claude directory * 📝 docs: update development guides with current tech stack and architecture - Update tech stack: Next.js 16 + React 19, hybrid routing (App Router + React Router DOM), tRPC, Drizzle ORM + PostgreSQL, react-i18next - Update directory structure to reflect monorepo layout (apps/, packages/, e2e/, locales/) - Expand src/server/ with detailed subdirectory descriptions - Add complete SPA routing architecture with desktop and mobile route tables - Add tRPC router grouping details (lambda, async, tools, mobile) - Add data flow diagram - Simplify dev setup section to link to setup-development guide - Fix i18n default language description (English, not Chinese) - Sync all changes between zh-CN and English versions * 📝 docs: expand data flow diagram in folder structure guide Replace the single-line data flow with a detailed layer-by-layer flow diagram showing each layer's location and responsibility. * 📝 docs: modernize feature development guide - Remove outdated clientDB/pglite/indexDB references - Update schema path to packages/database/src/schemas/ - Update types path to packages/types/src/ - Replace inline migration steps with link to db-migrations guide - Add complete layered architecture table (Client Service, WebAPI, tRPC Router, Server Service, Server Module, Repository, DB Model) - Clarify Client Service as frontend code - Add i18n handling section with workflow and key naming convention - Remove verbose CSS style code, keep core business logic only - Expand testing section with commands, skill refs, and CI tip * 🔥 docs: remove outdated frontend feature development guide Content is superseded by the comprehensive feature-development guide which covers the full chain from schema to testing. * 📝 docs: add LobeHub ecosystem and community resources Add official ecosystem packages (LobeUI, LobeIcons, LobeCharts, LobeEditor, LobeTTS, LobeLint, Lobe i18n, MCP Mark) and community platforms (Agent Market, MCP Market, YouTube, X, Discord). * 📝 docs: improve contributing guidelines and resources - Clarify semantic release triggers (feat/fix vs style/chore) - Add testing section with Vitest/E2E/CI requirements - Update contribution steps to include CI check - Add LobeHub ecosystem packages and community platforms to resources * 📝 docs: rewrite architecture guide to reflect current platform design * 📝 docs: add code quality tools to architecture guide * 📝 docs: rewrite chat-api guide to reflect current architecture - Update sequence diagram with Agent Runtime loop as core execution engine - Replace PluginGateway with ToolExecution layer (Builtin/MCP/Plugin) - Update all path references (model-runtime, agent-runtime, fetch-sse packages) - Split old AgentRuntime section into Model Runtime + Agent Runtime - Add tool calling taxonomy: Builtin, MCP, and Plugin (deprecated) - Add client-side vs server-side execution section - Remove outdated adapter pseudo-code examples * 📝 docs: update file paths in add-new-image-model guide - src/libs/standard-parameters/ → packages/model-bank/src/standard-parameters/ - src/config/aiModels/ → packages/model-bank/src/aiModels/ - src/libs/model-runtime/ → packages/model-runtime/src/providers/ * 📝 docs: restore S3_PUBLIC_DOMAIN in deployment guides The S3_PUBLIC_DOMAIN env var was incorrectly removed from all documentation in commit4a87b31. This variable is still required by the code (src/server/services/file/impls/s3.ts) to generate public URLs for uploaded files. Without it, image URLs sent to vision models are just S3 keys instead of full URLs. Closes #12161 * 📦 chore: pin @lobehub/ui to 4.33.4 to fix SortableList type errors @lobehub/ui 4.34.0 introduced breaking type changes in SortableList where SortableListItem became strict, causing type incompatibility in onChange and renderItem callbacks across 6 files. Pin to 4.33.4 via pnpm overrides to enforce consistent version across monorepo. * 🐛 fix: correct ReadableStream type annotations and add dom.asynciterable - Add dom.asynciterable to tsconfig lib for ReadableStream async iteration - Fix createCallbacksTransformer return type: TransformStream<string, Uint8Array> - Update stream function return types from ReadableStream<string> to ReadableStream<Uint8Array> (llama.ts, ollama.ts, claude.ts) - Remove @ts-ignore from for-await loops in test files - Add explicit string[] type for chunks arrays * Revert "📝 docs: restore S3_PUBLIC_DOMAIN in deployment guides" This reverts commit24073f83d3.
102 lines
4.5 KiB
Text
102 lines
4.5 KiB
Text
---
|
|
title: Code Style and Contribution Guidelines
|
|
description: >-
|
|
Learn about LobeHub's code style and contribution process for consistent
|
|
coding.
|
|
tags:
|
|
- Code Style
|
|
- Contribution Guidelines
|
|
- LobeHub
|
|
- ESLint
|
|
- Prettier
|
|
---
|
|
|
|
# Code Style and Contribution Guidelines
|
|
|
|
Welcome to the Code Style and Contribution Guidelines for LobeHub. This guide will help you understand our code standards and contribution process, ensuring code consistency and smooth project progression.
|
|
|
|
## Code Style
|
|
|
|
In LobeHub, we use the [@lobehub/lint](https://github.com/lobehub/lobe-lint) package to maintain a unified code style. This package incorporates configurations for `ESLint`, `Prettier`, `remarklint`, and `stylelint` to ensure that our JavaScript, Markdown, and CSS files adhere to the same coding standards.
|
|
|
|
### ESLint
|
|
|
|
We use ESLint to check for issues in our JavaScript code. You can find the `.eslintrc.js` file in the project's root directory, which contains our extensions and custom rules for the ESLint configuration of `@lobehub/lint`.
|
|
|
|
To ensure your code aligns with the project's standards, run ESLint before committing your code.
|
|
|
|
### Prettier
|
|
|
|
Prettier is responsible for code formatting to maintain consistency. Our Prettier configuration can be found in `.prettierrc.js`, imported from `@lobehub/lint`.
|
|
|
|
It's recommended to configure your editor to run Prettier automatically when saving files.
|
|
|
|
### remarklint
|
|
|
|
For Markdown files, we use remarklint to ensure consistent document formatting. You can find the corresponding configuration file in the project.
|
|
|
|
### stylelint
|
|
|
|
We utilize stylelint to standardize the style of our CSS code. In the configuration file for stylelint, we have made some custom rule adjustments based on `@lobehub/lint` configuration.
|
|
|
|
### Style Checking
|
|
|
|
You don't need to manually run these checks. The project is configured with husky to automatically run lint-staged when you commit code, which will check if your committed files comply with the above standards.
|
|
|
|
## Contribution Process
|
|
|
|
LobeHub follows the gitmoji and semantic release as our code submission and release process.
|
|
|
|
### Gitmoji
|
|
|
|
When committing code, please use gitmoji to label your commit messages. This helps other contributors quickly understand the content and purpose of your submission.
|
|
|
|
Gitmoji commit messages use specific emojis to represent the type or intent of the commit. Here's an example:
|
|
|
|
```markdown
|
|
📝 Update README with contribution guidelines
|
|
|
|
- Added section about code style preferences
|
|
- Included instructions for running tests
|
|
- Corrected typos and improved formatting
|
|
```
|
|
|
|
In this example, the 📝 emoji represents a documentation update. The commit message clearly describes the changes and provides specific details.
|
|
|
|
### Semantic Release
|
|
|
|
We use semantic release to automate version control and release processes. When a PR is merged into the main branch, the system automatically determines whether to publish a new version based on the gitmoji prefix in commit messages:
|
|
|
|
- Commits with `✨ feat` or `🐛 fix` prefixes will **trigger a new release**
|
|
- For minor changes that don't need a release, use prefixes like `💄 style` or `🔨 chore`
|
|
|
|
### Commitlint
|
|
|
|
To ensure consistency in commit messages, we use `commitlint` to check the format of commit messages. You can find the relevant rules in the `.commitlintrc.js` configuration file.
|
|
|
|
Before committing your code, ensure that your commit messages adhere to our standards.
|
|
|
|
### Testing
|
|
|
|
LobeHub has comprehensive unit tests (Vitest) and E2E tests (Cucumber + Playwright), which run automatically via GitHub Actions CI on every PR. Before submitting a PR or requesting a merge, make sure all tests pass.
|
|
|
|
You can run specific test files locally to verify:
|
|
|
|
```bash
|
|
# Run specific test (never run bun run test — full suite is very slow)
|
|
bunx vitest run --silent='passed-only' '[file-path]'
|
|
```
|
|
|
|
For more testing details, see the [Testing Guide](/docs/development/basic/test).
|
|
|
|
### How to Contribute
|
|
|
|
1. Fork the project to your account.
|
|
2. Create a new branch for development.
|
|
3. After completing development, ensure your code passes code style checks and tests.
|
|
4. Commit your changes and use appropriate gitmoji to label your commit message.
|
|
5. Create a Pull Request to the main branch of the original project.
|
|
6. Ensure all GitHub Actions CI checks pass.
|
|
7. Await code review and make necessary modifications based on feedback.
|
|
|
|
Thank you for following these guidelines, as they help us maintain the quality and consistency of the project. We look forward to your contributions!
|