@lobehub/chat 1.114.2 → 1.114.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/scripts/docker-pr-comment.js +89 -0
- package/.github/workflows/desktop-pr-build.yml +8 -0
- package/.github/workflows/docker-database.yml +21 -0
- package/.github/workflows/release-desktop-beta.yml +8 -0
- package/.github/workflows/release.yml +7 -5
- package/.github/workflows/test.yml +9 -7
- package/CHANGELOG.md +42 -0
- package/Dockerfile.database +1 -1
- package/apps/desktop/electron-builder.js +1 -1
- package/changelog/v1.json +14 -0
- package/codecov.yml +30 -2
- package/docs/development/basic/image-generation-setup.mdx +190 -0
- package/docs/development/basic/image-generation-setup.zh-CN.mdx +190 -0
- package/docs/development/database-schema.dbml +14 -0
- package/drizzle.config.ts +2 -2
- package/package.json +5 -5
- package/packages/const/src/index.ts +2 -0
- package/{src/utils → packages/const/src/settings}/genUserLLMConfig.test.ts +1 -1
- package/{src/utils → packages/const/src/settings}/genUserLLMConfig.ts +1 -1
- package/packages/const/src/settings/index.ts +0 -2
- package/packages/const/src/settings/llm.ts +1 -1
- package/{src → packages}/database/migrations/0028_oauth_handoffs.sql +1 -1
- package/{src → packages}/database/migrations/0029_add_apikey_manage.sql +1 -1
- package/packages/database/package.json +24 -0
- package/{src/database → packages/database/src}/client/db.ts +2 -2
- package/{src/database → packages/database/src}/core/db-adaptor.ts +3 -3
- package/{src/database → packages/database/src}/core/dbForTest.ts +1 -1
- package/{src/database → packages/database/src}/core/electron.ts +3 -3
- package/{src/database/client → packages/database/src/core}/migrations.json +12 -2
- package/{src/database → packages/database/src}/core/web-server.ts +2 -3
- package/{src/database → packages/database/src}/models/__tests__/_test_template.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/_util.ts +3 -3
- package/{src/database → packages/database/src}/models/__tests__/agent.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/aiModel.test.ts +1 -1
- package/{src/database → packages/database/src}/models/__tests__/aiProvider.test.ts +1 -1
- package/{src/database → packages/database/src}/models/__tests__/asyncTask.test.ts +1 -1
- package/{src/database → packages/database/src}/models/__tests__/chunk.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/file.test.ts +1 -1
- package/{src/database → packages/database/src}/models/__tests__/generation.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/generationBatch.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/generationTopic.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/knowledgeBase.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/message.test.ts +2 -2
- package/{src/database → packages/database/src}/models/__tests__/plugin.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/session.test.ts +2 -2
- package/{src/database → packages/database/src}/models/__tests__/sessionGroup.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/topic.test.ts +1 -2
- package/{src/database → packages/database/src}/models/_template.ts +1 -2
- package/{src/database → packages/database/src}/models/agent.ts +2 -2
- package/{src/database → packages/database/src}/models/aiModel.ts +1 -1
- package/{src/database → packages/database/src}/models/aiProvider.ts +1 -1
- package/{src/database → packages/database/src}/models/apiKey.ts +1 -1
- package/{src/database → packages/database/src}/models/asyncTask.ts +1 -1
- package/{src/database → packages/database/src}/models/chunk.ts +1 -1
- package/{src/database → packages/database/src}/models/document.ts +1 -1
- package/{src/database → packages/database/src}/models/drizzleMigration.ts +1 -1
- package/{src/database → packages/database/src}/models/embedding.ts +1 -1
- package/{src/database → packages/database/src}/models/file.ts +1 -1
- package/{src/database → packages/database/src}/models/generation.ts +1 -1
- package/{src/database → packages/database/src}/models/generationBatch.ts +1 -1
- package/{src/database → packages/database/src}/models/generationTopic.ts +1 -1
- package/{src/database → packages/database/src}/models/knowledgeBase.ts +1 -1
- package/{src/database → packages/database/src}/models/message.ts +3 -3
- package/{src/database → packages/database/src}/models/oauthHandoff.ts +1 -1
- package/{src/database → packages/database/src}/models/plugin.ts +1 -1
- package/{src/database → packages/database/src}/models/session.ts +3 -3
- package/{src/database → packages/database/src}/models/sessionGroup.ts +2 -2
- package/{src/database → packages/database/src}/models/thread.ts +1 -1
- package/{src/database → packages/database/src}/models/topic.ts +3 -3
- package/{src/database → packages/database/src}/models/user.ts +1 -1
- package/{src/database → packages/database/src}/repositories/aiInfra/index.ts +4 -3
- package/{src/database → packages/database/src}/repositories/dataExporter/index.ts +2 -2
- package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/index.test.ts +2 -2
- package/{src/database → packages/database/src}/repositories/dataImporter/deprecated/index.ts +6 -5
- package/{src/database → packages/database/src}/repositories/dataImporter/index.ts +2 -2
- package/{src/database → packages/database/src}/repositories/tableViewer/index.test.ts +1 -1
- package/{src/database → packages/database/src}/repositories/tableViewer/index.ts +2 -1
- package/{src/database → packages/database/src}/schemas/agent.ts +1 -1
- package/{src/database → packages/database/src}/schemas/aiInfra.ts +3 -2
- package/{src/database → packages/database/src}/schemas/document.ts +2 -2
- package/{src/database → packages/database/src}/schemas/file.ts +1 -1
- package/{src/database → packages/database/src}/schemas/generation.ts +1 -1
- package/{src/database → packages/database/src}/schemas/message.ts +1 -1
- package/{src/database → packages/database/src}/schemas/ragEvals.ts +1 -1
- package/{src/database → packages/database/src}/schemas/relations.ts +1 -2
- package/{src/database → packages/database/src}/schemas/session.ts +1 -2
- package/{src/database → packages/database/src}/schemas/topic.ts +2 -2
- package/{src/database → packages/database/src}/server/models/__tests__/adapter.test.ts +5 -4
- package/{src/database → packages/database/src}/server/models/__tests__/nextauth.test.ts +4 -4
- package/{src/database → packages/database/src}/server/models/__tests__/user.test.ts +1 -2
- package/{src/database → packages/database/src}/server/models/ragEval/dataset.ts +3 -3
- package/{src/database → packages/database/src}/server/models/ragEval/datasetRecord.ts +3 -3
- package/{src/database → packages/database/src}/server/models/ragEval/evaluation.ts +3 -3
- package/{src/database → packages/database/src}/server/models/ragEval/evaluationRecord.ts +2 -2
- package/{src/database → packages/database/src}/utils/idGenerator.ts +4 -1
- package/{vitest.config.server.ts → packages/database/vitest.config.ts} +8 -7
- package/packages/model-runtime/package.json +1 -0
- package/packages/model-runtime/src/bfl/createImage.test.ts +4 -4
- package/packages/model-runtime/src/bfl/createImage.ts +1 -1
- package/packages/model-runtime/src/google/index.test.ts +1 -1
- package/packages/model-runtime/src/google/index.ts +1 -3
- package/packages/model-runtime/src/ollama/index.ts +3 -2
- package/packages/model-runtime/src/utils/anthropicHelpers.test.ts +2 -3
- package/packages/model-runtime/src/utils/anthropicHelpers.ts +1 -2
- package/packages/model-runtime/src/utils/openaiCompatibleFactory/index.ts +1 -1
- package/packages/model-runtime/src/utils/openaiHelpers.test.ts +2 -3
- package/packages/model-runtime/src/utils/openaiHelpers.ts +2 -2
- package/packages/model-runtime/src/utils/streams/bedrock/claude.ts +1 -2
- package/packages/model-runtime/src/utils/streams/bedrock/llama.test.ts +1 -2
- package/packages/model-runtime/src/utils/streams/bedrock/llama.ts +1 -2
- package/packages/model-runtime/src/utils/streams/google-ai.test.ts +1 -2
- package/packages/model-runtime/src/utils/streams/google-ai.ts +1 -1
- package/packages/model-runtime/src/utils/streams/ollama.test.ts +1 -2
- package/packages/model-runtime/src/utils/streams/ollama.ts +1 -1
- package/packages/model-runtime/src/utils/streams/protocol.ts +2 -2
- package/packages/model-runtime/src/utils/streams/vertex-ai.test.ts +1 -2
- package/packages/model-runtime/src/utils/streams/vertex-ai.ts +1 -1
- package/packages/model-runtime/vitest.config.ts +2 -0
- package/packages/types/src/index.ts +5 -0
- package/packages/utils/package.json +17 -0
- package/{src/utils → packages/utils/src}/client/cookie.test.ts +1 -3
- package/{src/utils → packages/utils/src}/client/cookie.ts +1 -1
- package/{src/utils → packages/utils/src}/client/parserPlaceholder.test.ts +2 -2
- package/{src/utils → packages/utils/src}/client/parserPlaceholder.ts +77 -73
- package/{src/utils → packages/utils/src}/client/topic.test.ts +1 -1
- package/{src/utils → packages/utils/src}/compressImage.test.ts +2 -0
- package/{src/utils → packages/utils/src}/fetch/__tests__/fetchSSE.test.ts +3 -4
- package/{src/utils → packages/utils/src}/fetch/fetchSSE.ts +1 -1
- package/{src/utils → packages/utils/src}/getFallbackModelProperty.test.ts +1 -1
- package/packages/utils/src/index.ts +5 -0
- package/{src/utils → packages/utils/src}/locale.ts +2 -1
- package/{src/utils → packages/utils/src}/merge.test.ts +1 -3
- package/{src/utils → packages/utils/src}/parseModels.ts +3 -2
- package/{src/utils → packages/utils/src}/platform.test.ts +1 -1
- package/{src/utils → packages/utils/src}/platform.ts +1 -1
- package/{src/utils → packages/utils/src}/sanitizeUTF8.test.ts +2 -0
- package/{src/utils → packages/utils/src}/server/__tests__/geo.test.ts +1 -1
- package/{src/utils → packages/utils/src}/server/xor.test.ts +1 -2
- package/{src/utils → packages/utils/src}/url.test.ts +1 -1
- package/packages/utils/tests/setup.ts +10 -0
- package/packages/utils/vitest.config.ts +16 -0
- package/scripts/dbmlWorkflow/index.ts +1 -1
- package/scripts/migrateClientDB/compile-migrations.ts +2 -2
- package/scripts/migrateServerDB/index.ts +2 -2
- package/scripts/setup-image-generation-dev.sh +81 -0
- package/src/app/[variants]/(main)/repos/[id]/evals/dataset/CreateDataset/CreateForm.tsx +1 -1
- package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetDetail/index.tsx +1 -1
- package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetList/Item.tsx +1 -2
- package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetList/index.tsx +1 -2
- package/src/app/[variants]/(main)/repos/[id]/evals/evaluation/CreateEvaluation/CreateForm.tsx +1 -1
- package/src/app/[variants]/(main)/repos/[id]/evals/evaluation/EvaluationList/index.tsx +1 -1
- package/src/features/AgentSetting/store/index.ts +1 -2
- package/src/server/routers/async/ragEval.ts +1 -1
- package/src/server/routers/lambda/ragEval.ts +9 -9
- package/src/services/config.ts +1 -1
- package/src/services/ragEval.ts +4 -3
- package/src/store/knowledgeBase/slices/ragEval/actions/dataset.ts +6 -6
- package/src/store/knowledgeBase/slices/ragEval/actions/evaluation.ts +1 -1
- package/src/store/serverConfig/store.ts +1 -1
- package/src/utils/client/switchLang.test.ts +2 -2
- package/src/utils/client/switchLang.ts +2 -3
- package/tests/setup.ts +0 -11
- package/tsconfig.json +2 -0
- package/vitest.config.ts +6 -2
- /package/{src → packages}/database/migrations/0000_init.sql +0 -0
- /package/{src → packages}/database/migrations/0001_add_client_id.sql +0 -0
- /package/{src → packages}/database/migrations/0002_amusing_puma.sql +0 -0
- /package/{src → packages}/database/migrations/0003_naive_echo.sql +0 -0
- /package/{src → packages}/database/migrations/0004_add_next_auth.sql +0 -0
- /package/{src → packages}/database/migrations/0005_pgvector.sql +0 -0
- /package/{src → packages}/database/migrations/0006_add_knowledge_base.sql +0 -0
- /package/{src → packages}/database/migrations/0007_fix_embedding_table.sql +0 -0
- /package/{src → packages}/database/migrations/0008_add_rag_evals.sql +0 -0
- /package/{src → packages}/database/migrations/0009_remove_unused_user_tables.sql +0 -0
- /package/{src → packages}/database/migrations/0010_add_accessed_at_and_clean_tables.sql +0 -0
- /package/{src → packages}/database/migrations/0011_add_topic_history_summary.sql +0 -0
- /package/{src → packages}/database/migrations/0012_add_thread.sql +0 -0
- /package/{src → packages}/database/migrations/0013_add_ai_infra.sql +0 -0
- /package/{src → packages}/database/migrations/0014_add_message_reasoning.sql +0 -0
- /package/{src → packages}/database/migrations/0015_add_message_search_metadata.sql +0 -0
- /package/{src → packages}/database/migrations/0016_add_message_index.sql +0 -0
- /package/{src → packages}/database/migrations/0017_add_user_id_to_tables.sql +0 -0
- /package/{src → packages}/database/migrations/0018_add_client_id_for_entities.sql +0 -0
- /package/{src → packages}/database/migrations/0019_add_hotkey_user_settings.sql +0 -0
- /package/{src → packages}/database/migrations/0020_add_oidc.sql +0 -0
- /package/{src → packages}/database/migrations/0021_add_agent_opening_settings.sql +0 -0
- /package/{src → packages}/database/migrations/0022_add_documents.sql +0 -0
- /package/{src → packages}/database/migrations/0023_remove_param_and_doubao.sql +0 -0
- /package/{src → packages}/database/migrations/0024_add_rbac_tables.sql +0 -0
- /package/{src → packages}/database/migrations/0025_add_provider_config.sql +0 -0
- /package/{src → packages}/database/migrations/0026_add_autovacuum_tuning.sql +0 -0
- /package/{src → packages}/database/migrations/0027_ai_image.sql +0 -0
- /package/{src → packages}/database/migrations/meta/0000_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0001_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0002_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0003_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0004_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0005_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0006_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0007_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0008_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0009_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0010_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0011_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0012_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0013_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0014_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0015_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0016_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0017_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0018_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0019_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0020_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0021_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0022_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0023_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0024_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0025_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0026_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0027_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0028_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0029_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/_journal.json +0 -0
- /package/{src/database → packages/database/src}/client/db.test.ts +0 -0
- /package/{src/database → packages/database/src}/client/pglite.ts +0 -0
- /package/{src/database → packages/database/src}/client/pglite.worker.ts +0 -0
- /package/{src/database → packages/database/src}/client/type.ts +0 -0
- /package/{src/database → packages/database/src}/models/__tests__/fixtures/embedding.ts +0 -0
- /package/{src/database → packages/database/src}/repositories/aiInfra/index.test.ts +0 -0
- /package/{src/database → packages/database/src}/repositories/dataExporter/index.test.ts +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/agents.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/agentsToSessions.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/topic.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/userSettings.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/with-client-id.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/deprecated/__tests__/fixtures/messages.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/deprecated/__tests__/index.test.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/_helpers.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/apiKey.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/asyncTask.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/index.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/nextauth.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/oidc.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/rag.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/rbac.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/user.ts +0 -0
- /package/{src/database → packages/database/src}/server/index.ts +0 -0
- /package/{src/database → packages/database/src}/server/models/ragEval/index.ts +0 -0
- /package/{src/database → packages/database/src}/type.ts +0 -0
- /package/{src/database → packages/database/src}/utils/genWhere.ts +0 -0
- /package/{src/database → packages/database/src}/utils/idGenerator.test.ts +0 -0
- /package/{tests → packages/database/tests}/setup-db.ts +0 -0
- /package/{src/utils → packages/types/src}/zustand.ts +0 -0
- /package/{src/utils → packages/utils/src}/__snapshots__/parseModels.test.ts.snap +0 -0
- /package/{src/utils → packages/utils/src}/_deprecated/__snapshots__/parseModels.test.ts.snap +0 -0
- /package/{src/utils → packages/utils/src}/_deprecated/parseModels.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/_deprecated/parseModels.ts +0 -0
- /package/{src/utils → packages/utils/src}/apiKey.ts +0 -0
- /package/{src/utils → packages/utils/src}/basePath.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/GlobalAgentContextManager.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/downloadFile.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/exportFile.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/topic.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/xor-obfuscation.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/xor-obfuscation.ts +0 -0
- /package/{src/utils → packages/utils/src}/clientIP.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/clientIP.ts +0 -0
- /package/{src/utils → packages/utils/src}/clipboard.ts +0 -0
- /package/{src/utils → packages/utils/src}/colorUtils.ts +0 -0
- /package/{src/utils → packages/utils/src}/compass.ts +0 -0
- /package/{src/utils → packages/utils/src}/compressImage.ts +0 -0
- /package/{src/utils → packages/utils/src}/difference.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/difference.ts +0 -0
- /package/{src/utils → packages/utils/src}/electron/desktopRemoteRPCFetch.ts +0 -0
- /package/{src/utils → packages/utils/src}/env.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/__tests__/parseError.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/fetchEventSource/index.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/fetchEventSource/parse.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/headers.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/index.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/parseError.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/request.ts +0 -0
- /package/{src/utils → packages/utils/src}/format.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/format.ts +0 -0
- /package/{src/utils → packages/utils/src}/genOG.ts +0 -0
- /package/{src/utils → packages/utils/src}/getFallbackModelProperty.ts +0 -0
- /package/{src/utils → packages/utils/src}/imageToBase64.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/imageToBase64.ts +0 -0
- /package/{src/utils → packages/utils/src}/isChunkingUnsupported.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/isChunkingUnsupported.ts +0 -0
- /package/{src/utils → packages/utils/src}/keyboard.ts +0 -0
- /package/{src/utils → packages/utils/src}/localStorage.ts +0 -0
- /package/{src/utils → packages/utils/src}/locale.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/merge.ts +0 -0
- /package/{src/utils → packages/utils/src}/number.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/number.ts +0 -0
- /package/{src/utils → packages/utils/src}/object.ts +0 -0
- /package/{src/utils → packages/utils/src}/parseMarkdown.ts +0 -0
- /package/{src/utils → packages/utils/src}/parseModels.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/pricing.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/pricing.ts +0 -0
- /package/{src/utils → packages/utils/src}/promptTemplate.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/promptTemplate.ts +0 -0
- /package/{src/utils → packages/utils/src}/safeParseJSON.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/safeParseJSON.ts +0 -0
- /package/{src/utils → packages/utils/src}/sanitizeUTF8.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/__tests__/auth.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/auth.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/correctOIDCUrl.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/geo.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/pageProps.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/responsive.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/routeVariants.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/xor.ts +0 -0
- /package/{src/utils → packages/utils/src}/sleep.ts +0 -0
- /package/{src/utils → packages/utils/src}/storeDebug.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/storeDebug.ts +0 -0
- /package/{src/utils → packages/utils/src}/time.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/time.ts +0 -0
- /package/{src/utils → packages/utils/src}/tokenizer/client.ts +0 -0
- /package/{src/utils → packages/utils/src}/tokenizer/estimated.ts +0 -0
- /package/{src/utils → packages/utils/src}/tokenizer/index.ts +0 -0
- /package/{src/utils → packages/utils/src}/tokenizer/server.ts +0 -0
- /package/{src/utils → packages/utils/src}/tokenizer/tokenizer.worker.ts +0 -0
- /package/{src/utils → packages/utils/src}/toolCall.ts +0 -0
- /package/{src/utils → packages/utils/src}/toolManifest.ts +0 -0
- /package/{src/utils → packages/utils/src}/trace.ts +0 -0
- /package/{src/utils → packages/utils/src}/units.ts +0 -0
- /package/{src/utils → packages/utils/src}/uploadFIle.ts +0 -0
- /package/{src/utils → packages/utils/src}/url.ts +0 -0
- /package/{src/utils → packages/utils/src}/uuid.ts +0 -0
@@ -0,0 +1,89 @@
|
|
1
|
+
/**
|
2
|
+
* Generate or update PR comment with Docker build info
|
3
|
+
*/
|
4
|
+
module.exports = async ({
|
5
|
+
github,
|
6
|
+
context,
|
7
|
+
dockerMetaJson,
|
8
|
+
image,
|
9
|
+
version,
|
10
|
+
dockerhubUrl,
|
11
|
+
platforms,
|
12
|
+
}) => {
|
13
|
+
const COMMENT_IDENTIFIER = '<!-- DOCKER-BUILD-COMMENT -->';
|
14
|
+
|
15
|
+
const parseTags = () => {
|
16
|
+
try {
|
17
|
+
if (dockerMetaJson) {
|
18
|
+
const parsed = JSON.parse(dockerMetaJson);
|
19
|
+
if (Array.isArray(parsed.tags) && parsed.tags.length > 0) {
|
20
|
+
return parsed.tags;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
} catch (e) {
|
24
|
+
// ignore parsing error, fallback below
|
25
|
+
}
|
26
|
+
if (image && version) {
|
27
|
+
return [`${image}:${version}`];
|
28
|
+
}
|
29
|
+
return [];
|
30
|
+
};
|
31
|
+
|
32
|
+
const generateCommentBody = () => {
|
33
|
+
const tags = parseTags();
|
34
|
+
const buildTime = new Date().toISOString();
|
35
|
+
|
36
|
+
// Use the first tag as the main version
|
37
|
+
const mainTag = tags.length > 0 ? tags[0] : `${image}:${version}`;
|
38
|
+
const tagVersion = mainTag.includes(':') ? mainTag.split(':')[1] : version;
|
39
|
+
|
40
|
+
return [
|
41
|
+
COMMENT_IDENTIFIER,
|
42
|
+
'',
|
43
|
+
'### 🐳 Database Docker Build Completed!',
|
44
|
+
`**Version**: \`${tagVersion || 'N/A'}\``,
|
45
|
+
`**Build Time**: \`${buildTime}\``,
|
46
|
+
'',
|
47
|
+
dockerhubUrl ? `🔗 View all tags on Docker Hub: ${dockerhubUrl}` : '',
|
48
|
+
'',
|
49
|
+
'### Pull Image',
|
50
|
+
'Download the Docker image to your local machine:',
|
51
|
+
'',
|
52
|
+
'```bash',
|
53
|
+
`docker pull ${mainTag}`,
|
54
|
+
'```',
|
55
|
+
'> [!IMPORTANT]',
|
56
|
+
'> This build is for testing and validation purposes.',
|
57
|
+
]
|
58
|
+
.filter(Boolean)
|
59
|
+
.join('\n');
|
60
|
+
};
|
61
|
+
|
62
|
+
const body = generateCommentBody();
|
63
|
+
|
64
|
+
// List comments on the PR
|
65
|
+
const { data: comments } = await github.rest.issues.listComments({
|
66
|
+
issue_number: context.issue.number,
|
67
|
+
owner: context.repo.owner,
|
68
|
+
repo: context.repo.repo,
|
69
|
+
});
|
70
|
+
|
71
|
+
const existing = comments.find((c) => c.body && c.body.includes(COMMENT_IDENTIFIER));
|
72
|
+
if (existing) {
|
73
|
+
await github.rest.issues.updateComment({
|
74
|
+
comment_id: existing.id,
|
75
|
+
owner: context.repo.owner,
|
76
|
+
repo: context.repo.repo,
|
77
|
+
body,
|
78
|
+
});
|
79
|
+
return { updated: true, id: existing.id };
|
80
|
+
}
|
81
|
+
|
82
|
+
const result = await github.rest.issues.createComment({
|
83
|
+
issue_number: context.issue.number,
|
84
|
+
owner: context.repo.owner,
|
85
|
+
repo: context.repo.repo,
|
86
|
+
body,
|
87
|
+
});
|
88
|
+
return { updated: false, id: result.data.id };
|
89
|
+
};
|
@@ -183,6 +183,10 @@ jobs:
|
|
183
183
|
apps/desktop/release/*.zip*
|
184
184
|
apps/desktop/release/*.exe*
|
185
185
|
apps/desktop/release/*.AppImage
|
186
|
+
apps/desktop/release/*.deb*
|
187
|
+
apps/desktop/release/*.snap*
|
188
|
+
apps/desktop/release/*.rpm*
|
189
|
+
apps/desktop/release/*.tar.gz*
|
186
190
|
retention-days: 5
|
187
191
|
|
188
192
|
publish-pr:
|
@@ -245,6 +249,10 @@ jobs:
|
|
245
249
|
release/*.zip*
|
246
250
|
release/*.exe*
|
247
251
|
release/*.AppImage
|
252
|
+
release/*.deb*
|
253
|
+
release/*.snap*
|
254
|
+
release/*.rpm*
|
255
|
+
release/*.tar.gz*
|
248
256
|
env:
|
249
257
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
250
258
|
|
@@ -159,3 +159,24 @@ jobs:
|
|
159
159
|
- name: Inspect image
|
160
160
|
run: |
|
161
161
|
docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
|
162
|
+
|
163
|
+
|
164
|
+
- name: Comment on PR with Docker build info
|
165
|
+
if: github.event_name == 'pull_request'
|
166
|
+
uses: actions/github-script@v7
|
167
|
+
with:
|
168
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
169
|
+
script: |
|
170
|
+
const prComment = require('${{ github.workspace }}/.github/scripts/docker-pr-comment.js');
|
171
|
+
const result = await prComment({
|
172
|
+
github,
|
173
|
+
context,
|
174
|
+
dockerMetaJson: ${{ toJSON(steps.meta.outputs.json) }},
|
175
|
+
image: "${{ env.REGISTRY_IMAGE }}",
|
176
|
+
version: "${{ steps.meta.outputs.version }}",
|
177
|
+
dockerhubUrl: "https://hub.docker.com/r/${{ env.REGISTRY_IMAGE }}/tags",
|
178
|
+
platforms: "linux/amd64, linux/arm64",
|
179
|
+
});
|
180
|
+
core.info(`Status: ${result.updated ? 'Updated' : 'Created'}, ID: ${result.id}`);
|
181
|
+
|
182
|
+
|
@@ -165,6 +165,10 @@ jobs:
|
|
165
165
|
apps/desktop/release/*.zip*
|
166
166
|
apps/desktop/release/*.exe*
|
167
167
|
apps/desktop/release/*.AppImage
|
168
|
+
apps/desktop/release/*.deb*
|
169
|
+
apps/desktop/release/*.snap*
|
170
|
+
apps/desktop/release/*.rpm*
|
171
|
+
apps/desktop/release/*.tar.gz*
|
168
172
|
retention-days: 5
|
169
173
|
|
170
174
|
# 正式版发布 job
|
@@ -201,5 +205,9 @@ jobs:
|
|
201
205
|
release/*.zip*
|
202
206
|
release/*.exe*
|
203
207
|
release/*.AppImage
|
208
|
+
release/*.deb*
|
209
|
+
release/*.snap*
|
210
|
+
release/*.rpm*
|
211
|
+
release/*.tar.gz*
|
204
212
|
env:
|
205
213
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
@@ -11,7 +11,7 @@ jobs:
|
|
11
11
|
|
12
12
|
services:
|
13
13
|
postgres:
|
14
|
-
image:
|
14
|
+
image: paradedb/paradedb:latest
|
15
15
|
env:
|
16
16
|
POSTGRES_PASSWORD: postgres
|
17
17
|
options: >-
|
@@ -38,8 +38,10 @@ jobs:
|
|
38
38
|
- name: Lint
|
39
39
|
run: bun run lint
|
40
40
|
|
41
|
-
-
|
42
|
-
|
41
|
+
- uses: pnpm/action-setup@v4
|
42
|
+
|
43
|
+
- name: Test Database Coverage
|
44
|
+
run: pnpm --filter @lobechat/database test
|
43
45
|
env:
|
44
46
|
DATABASE_TEST_URL: postgresql://postgres:postgres@localhost:5432/postgres
|
45
47
|
DATABASE_DRIVER: node
|
@@ -48,8 +50,8 @@ jobs:
|
|
48
50
|
S3_PUBLIC_DOMAIN: https://example.com
|
49
51
|
APP_URL: https://home.com
|
50
52
|
|
51
|
-
- name: Test App
|
52
|
-
run: bun run test-app
|
53
|
+
- name: Test App
|
54
|
+
run: bun run test-app
|
53
55
|
|
54
56
|
- name: Release
|
55
57
|
run: bun run release
|
@@ -11,7 +11,7 @@ jobs:
|
|
11
11
|
runs-on: ubuntu-latest
|
12
12
|
strategy:
|
13
13
|
matrix:
|
14
|
-
package: [file-loaders, prompts, model-runtime, web-crawler, electron-server-ipc]
|
14
|
+
package: [file-loaders, prompts, model-runtime, web-crawler, electron-server-ipc, utils]
|
15
15
|
|
16
16
|
name: Test package ${{ matrix.package }}
|
17
17
|
|
@@ -75,7 +75,7 @@ jobs:
|
|
75
75
|
files: ./coverage/app/lcov.info
|
76
76
|
flags: app
|
77
77
|
|
78
|
-
test-
|
78
|
+
test-databsae:
|
79
79
|
name: Test Database
|
80
80
|
|
81
81
|
runs-on: ubuntu-latest
|
@@ -109,8 +109,10 @@ jobs:
|
|
109
109
|
- name: Lint
|
110
110
|
run: bun run lint
|
111
111
|
|
112
|
-
-
|
113
|
-
|
112
|
+
- uses: pnpm/action-setup@v4
|
113
|
+
|
114
|
+
- name: Test Coverage
|
115
|
+
run: pnpm --filter @lobechat/database test:coverage
|
114
116
|
env:
|
115
117
|
DATABASE_TEST_URL: postgresql://postgres:postgres@localhost:5432/postgres
|
116
118
|
DATABASE_DRIVER: node
|
@@ -119,9 +121,9 @@ jobs:
|
|
119
121
|
S3_PUBLIC_DOMAIN: https://example.com
|
120
122
|
APP_URL: https://home.com
|
121
123
|
|
122
|
-
- name: Upload
|
124
|
+
- name: Upload Database coverage to Codecov
|
123
125
|
uses: codecov/codecov-action@v4
|
124
126
|
with:
|
125
127
|
token: ${{ secrets.CODECOV_TOKEN }}
|
126
|
-
files: ./coverage/
|
127
|
-
flags:
|
128
|
+
files: ./packages/database/coverage/lcov.info
|
129
|
+
flags: database
|
package/CHANGELOG.md
CHANGED
@@ -2,6 +2,48 @@
|
|
2
2
|
|
3
3
|
# Changelog
|
4
4
|
|
5
|
+
### [Version 1.114.4](https://github.com/lobehub/lobe-chat/compare/v1.114.3...v1.114.4)
|
6
|
+
|
7
|
+
<sup>Released on **2025-08-22**</sup>
|
8
|
+
|
9
|
+
#### ♻ Code Refactoring
|
10
|
+
|
11
|
+
- **misc**: Move database to packages.
|
12
|
+
|
13
|
+
<br/>
|
14
|
+
|
15
|
+
<details>
|
16
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
17
|
+
|
18
|
+
#### Code refactoring
|
19
|
+
|
20
|
+
- **misc**: Move database to packages, closes [#8874](https://github.com/lobehub/lobe-chat/issues/8874) ([af1f715](https://github.com/lobehub/lobe-chat/commit/af1f715))
|
21
|
+
|
22
|
+
</details>
|
23
|
+
|
24
|
+
<div align="right">
|
25
|
+
|
26
|
+
[](#readme-top)
|
27
|
+
|
28
|
+
</div>
|
29
|
+
|
30
|
+
### [Version 1.114.3](https://github.com/lobehub/lobe-chat/compare/v1.114.2...v1.114.3)
|
31
|
+
|
32
|
+
<sup>Released on **2025-08-21**</sup>
|
33
|
+
|
34
|
+
<br/>
|
35
|
+
|
36
|
+
<details>
|
37
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
38
|
+
|
39
|
+
</details>
|
40
|
+
|
41
|
+
<div align="right">
|
42
|
+
|
43
|
+
[](#readme-top)
|
44
|
+
|
45
|
+
</div>
|
46
|
+
|
5
47
|
### [Version 1.114.2](https://github.com/lobehub/lobe-chat/compare/v1.114.1...v1.114.2)
|
6
48
|
|
7
49
|
<sup>Released on **2025-08-21**</sup>
|
package/Dockerfile.database
CHANGED
@@ -120,7 +120,7 @@ COPY --from=base /distroless/ /
|
|
120
120
|
COPY --from=builder /app/.next/standalone /app/
|
121
121
|
|
122
122
|
# Copy database migrations
|
123
|
-
COPY --from=builder /app/
|
123
|
+
COPY --from=builder /app/packages/database/migrations /app/migrations
|
124
124
|
COPY --from=builder /app/scripts/migrateServerDB/docker.cjs /app/docker.cjs
|
125
125
|
COPY --from=builder /app/scripts/migrateServerDB/errorHint.js /app/errorHint.js
|
126
126
|
|
package/changelog/v1.json
CHANGED
@@ -1,4 +1,18 @@
|
|
1
1
|
[
|
2
|
+
{
|
3
|
+
"children": {
|
4
|
+
"improvements": [
|
5
|
+
"Move database to packages."
|
6
|
+
]
|
7
|
+
},
|
8
|
+
"date": "2025-08-22",
|
9
|
+
"version": "1.114.4"
|
10
|
+
},
|
11
|
+
{
|
12
|
+
"children": {},
|
13
|
+
"date": "2025-08-21",
|
14
|
+
"version": "1.114.3"
|
15
|
+
},
|
2
16
|
{
|
3
17
|
"children": {
|
4
18
|
"fixes": [
|
package/codecov.yml
CHANGED
@@ -1,11 +1,39 @@
|
|
1
|
+
component_management:
|
2
|
+
individual_components:
|
3
|
+
# App architecture layers
|
4
|
+
- component_id: app_store
|
5
|
+
name: "Store"
|
6
|
+
paths:
|
7
|
+
- src/store/**
|
8
|
+
- component_id: app_services
|
9
|
+
name: "Services"
|
10
|
+
paths:
|
11
|
+
- src/services/**
|
12
|
+
- component_id: app_server
|
13
|
+
name: "Server"
|
14
|
+
paths:
|
15
|
+
- src/server/**
|
16
|
+
- component_id: app_libs
|
17
|
+
name: "Libs"
|
18
|
+
paths:
|
19
|
+
- src/libs/**
|
20
|
+
- component_id: app_utils
|
21
|
+
name: "Utils"
|
22
|
+
paths:
|
23
|
+
- src/utils/**
|
24
|
+
|
1
25
|
coverage:
|
2
26
|
status:
|
3
27
|
project:
|
4
28
|
default: off
|
5
|
-
|
29
|
+
database:
|
6
30
|
flags:
|
7
|
-
-
|
31
|
+
- database
|
8
32
|
app:
|
9
33
|
flags:
|
10
34
|
- app
|
11
35
|
patch: off
|
36
|
+
|
37
|
+
|
38
|
+
comment:
|
39
|
+
layout: "header, diff, flags, components" # show component info in the PR comment
|
@@ -0,0 +1,190 @@
|
|
1
|
+
---
|
2
|
+
title: Image Generation Development Setup
|
3
|
+
description: Configure local environment for developing text-to-image and image-to-image features
|
4
|
+
---
|
5
|
+
|
6
|
+
# Image Generation Development Setup
|
7
|
+
|
8
|
+
This guide helps developers set up the local environment for developing image generation features (text-to-image, image-to-image) with file storage capabilities.
|
9
|
+
|
10
|
+
## Prerequisites
|
11
|
+
|
12
|
+
- Docker installed and running
|
13
|
+
- Node.js and pnpm installed
|
14
|
+
- PostgreSQL client tools (optional, for debugging)
|
15
|
+
|
16
|
+
<Callout type="warning">
|
17
|
+
**Security Notice**: This setup is designed for local development only. It uses default credentials and open permissions that are NOT suitable for production environments.
|
18
|
+
</Callout>
|
19
|
+
|
20
|
+
## Quick Setup
|
21
|
+
|
22
|
+
Run the provided script to automatically set up all required services:
|
23
|
+
|
24
|
+
```bash
|
25
|
+
# Set up PostgreSQL and MinIO for image storage
|
26
|
+
./scripts/setup-image-generation-dev.sh
|
27
|
+
|
28
|
+
# Start the development server
|
29
|
+
pnpm dev:desktop
|
30
|
+
```
|
31
|
+
|
32
|
+
This script will:
|
33
|
+
|
34
|
+
1. Start PostgreSQL (no authentication for local development)
|
35
|
+
2. Run database migrations to initialize schema
|
36
|
+
3. Start MinIO (S3-compatible storage)
|
37
|
+
4. Create and configure the storage bucket
|
38
|
+
5. Add necessary S3 environment variables to `.env.desktop`
|
39
|
+
|
40
|
+
## Architecture Overview
|
41
|
+
|
42
|
+
The image generation feature requires:
|
43
|
+
|
44
|
+
- **PostgreSQL**: Stores metadata about generated images
|
45
|
+
- **MinIO/S3**: Stores the actual image files
|
46
|
+
- **Server Mode**: Required for file handling (`NEXT_PUBLIC_SERVICE_MODE=server`)
|
47
|
+
|
48
|
+
## Environment Configuration
|
49
|
+
|
50
|
+
The following environment variables are automatically configured by the setup script:
|
51
|
+
|
52
|
+
```bash
|
53
|
+
# S3 Storage Configuration (MinIO for local development)
|
54
|
+
S3_ACCESS_KEY_ID=minioadmin
|
55
|
+
S3_SECRET_ACCESS_KEY=minioadmin
|
56
|
+
S3_ENDPOINT=http://localhost:9000
|
57
|
+
S3_BUCKET=lobe-chat
|
58
|
+
S3_REGION=us-east-1
|
59
|
+
S3_PUBLIC_DOMAIN=http://localhost:9000/lobe-chat
|
60
|
+
S3_ENABLE_PATH_STYLE=1 # Required for MinIO
|
61
|
+
```
|
62
|
+
|
63
|
+
## Development Workflow
|
64
|
+
|
65
|
+
### 1. Image Generation API
|
66
|
+
|
67
|
+
When developing image generation features, generated images will be:
|
68
|
+
|
69
|
+
1. Created by the AI model
|
70
|
+
2. Uploaded to S3/MinIO via presigned URLs
|
71
|
+
3. Metadata stored in PostgreSQL
|
72
|
+
4. Served via the public S3 URL
|
73
|
+
|
74
|
+
### 2. File Storage Structure
|
75
|
+
|
76
|
+
```
|
77
|
+
lobe-chat/ # S3 Bucket
|
78
|
+
├── generated/ # Generated images
|
79
|
+
│ └── {userId}/
|
80
|
+
│ └── {sessionId}/
|
81
|
+
│ └── {imageId}.png
|
82
|
+
└── uploads/ # User uploads for image-to-image
|
83
|
+
└── {userId}/
|
84
|
+
└── {fileId}.{ext}
|
85
|
+
```
|
86
|
+
|
87
|
+
### 3. Testing Your Implementation
|
88
|
+
|
89
|
+
After setting up the environment, you can test:
|
90
|
+
|
91
|
+
```typescript
|
92
|
+
// Example: Upload generated image
|
93
|
+
const uploadUrl = await trpc.upload.createPresignedUrl.mutate({
|
94
|
+
filename: 'generated-image.png',
|
95
|
+
contentType: 'image/png',
|
96
|
+
});
|
97
|
+
|
98
|
+
// Upload to S3
|
99
|
+
await fetch(uploadUrl, {
|
100
|
+
method: 'PUT',
|
101
|
+
body: imageBlob,
|
102
|
+
headers: { 'Content-Type': 'image/png' },
|
103
|
+
});
|
104
|
+
```
|
105
|
+
|
106
|
+
## Manual Setup
|
107
|
+
|
108
|
+
If you prefer to set up services manually:
|
109
|
+
|
110
|
+
### PostgreSQL
|
111
|
+
|
112
|
+
```bash
|
113
|
+
docker run -d --name lobe-postgres \
|
114
|
+
-p 5432:5432 \
|
115
|
+
-e POSTGRES_HOST_AUTH_METHOD=trust \
|
116
|
+
-e POSTGRES_DB=postgres \
|
117
|
+
postgres:15
|
118
|
+
```
|
119
|
+
|
120
|
+
### MinIO
|
121
|
+
|
122
|
+
```bash
|
123
|
+
# Start MinIO
|
124
|
+
docker run -d --name lobe-minio \
|
125
|
+
-p 9000:9000 -p 9001:9001 \
|
126
|
+
-e MINIO_ROOT_USER=minioadmin \
|
127
|
+
-e MINIO_ROOT_PASSWORD=minioadmin \
|
128
|
+
quay.io/minio/minio:RELEASE.2025-04-22T22-12-26Z \
|
129
|
+
server /data --console-address ":9001"
|
130
|
+
|
131
|
+
# Create bucket
|
132
|
+
docker run --rm \
|
133
|
+
--link lobe-minio:minio \
|
134
|
+
--entrypoint bash \
|
135
|
+
quay.io/minio/mc:RELEASE.2025-04-18T16-45-00Z \
|
136
|
+
-c "
|
137
|
+
mc config host add minio http://minio:9000 minioadmin minioadmin &&
|
138
|
+
mc mb minio/lobe-chat &&
|
139
|
+
mc anonymous set public minio/lobe-chat
|
140
|
+
"
|
141
|
+
```
|
142
|
+
|
143
|
+
## Service URLs
|
144
|
+
|
145
|
+
- **PostgreSQL**: `postgres://postgres@localhost:5432/postgres`
|
146
|
+
- **MinIO API**: `http://localhost:9000`
|
147
|
+
- **MinIO Console**: `http://localhost:9001` (minioadmin/minioadmin)
|
148
|
+
- **Application**: `http://localhost:3015`
|
149
|
+
|
150
|
+
## Troubleshooting
|
151
|
+
|
152
|
+
### Port Conflicts
|
153
|
+
|
154
|
+
If ports are already in use:
|
155
|
+
|
156
|
+
```bash
|
157
|
+
# Check what's using the ports
|
158
|
+
lsof -i :5432 # PostgreSQL
|
159
|
+
lsof -i :9000 # MinIO API
|
160
|
+
lsof -i :9001 # MinIO Console
|
161
|
+
```
|
162
|
+
|
163
|
+
### Reset Environment
|
164
|
+
|
165
|
+
To completely reset your development environment:
|
166
|
+
|
167
|
+
```bash
|
168
|
+
# Stop and remove containers
|
169
|
+
docker stop lobe-postgres lobe-minio
|
170
|
+
docker rm lobe-postgres lobe-minio
|
171
|
+
|
172
|
+
# Re-run setup
|
173
|
+
./scripts/setup-image-generation-dev.sh
|
174
|
+
```
|
175
|
+
|
176
|
+
### Database Migrations
|
177
|
+
|
178
|
+
The setup script runs migrations automatically. If you need to run them manually:
|
179
|
+
|
180
|
+
```bash
|
181
|
+
pnpm db:migrate
|
182
|
+
```
|
183
|
+
|
184
|
+
Note: In development mode with `pnpm dev:desktop`, migrations also run automatically on startup.
|
185
|
+
|
186
|
+
## Related Documentation
|
187
|
+
|
188
|
+
- [Server Database Setup](/docs/self-hosting/server-database)
|
189
|
+
- [S3 Storage Configuration](/docs/self-hosting/advanced/s3)
|
190
|
+
- [Environment Variables](/docs/self-hosting/environment-variables)
|