Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
ead6ef8
docs: add geolite2 config examples
Noxiven May 22, 2026
b784106
chore(build): add image for dev branch
Noxiven May 22, 2026
c6000e4
Merge pull request #13 from DEEIX-AI/codex/config-example
chenyme May 22, 2026
1cd3baa
Merge pull request #14 from DEEIX-AI/dev_image
chenyme May 22, 2026
e9a5a72
chore(config): remove default Redis password
Noxiven May 22, 2026
e791dc5
chore(workflows): trigger Docker image workflow on dev branch
Noxiven May 22, 2026
7433722
Merge pull request #18 from DEEIX-AI/refactor_config
chenyme May 22, 2026
67d5294
feat: replace static admin credentials with dynamically generated cre…
Noxiven May 22, 2026
53601f3
docs: add commit message guidelines and CI validation
Noxiven May 22, 2026
6a8794b
chore: skip validation for merge commit messages in workflows
Noxiven May 22, 2026
491aebc
Merge pull request #17 from DEEIX-AI/chore_init_startup
chenyme May 22, 2026
5e7ce1a
feat: implement conversation project management API
chenyme May 22, 2026
4221fba
Merge pull request #19 from DEEIX-AI/support_project
chenyme May 22, 2026
f08be30
fix: add identity provider logo retrieval functionality and related e…
chenyme May 23, 2026
23a7575
Merge pull request #20 from DEEIX-AI/fix_logo
chenyme May 23, 2026
acab020
feat: support admin role with superadmin safeguards
chenyme May 23, 2026
22e6e5d
Merge pull request #21 from DEEIX-AI/support_admin
chenyme May 23, 2026
d10d634
refactor: enhance platform model name normalization
chenyme May 23, 2026
330a42a
refactor: streamline model retrieval and update logic in service and …
chenyme May 23, 2026
a7ab176
feat: optimistic updates for model sources and status
chenyme May 23, 2026
cea743d
feat: support upstream source deletion in models table
chenyme May 23, 2026
650d903
Merge pull request #22 from DEEIX-AI/enhance_model_manage
chenyme May 23, 2026
0e07398
fix: add request invalid body handling and labels
chenyme May 23, 2026
daf9692
refactor: update route status handling and improve model binding logic
chenyme May 23, 2026
85e2477
Merge pull request #23 from DEEIX-AI/upstream
chenyme May 23, 2026
73a0939
feat: add emailVerifiedField to identity provider model and update re…
chenyme May 23, 2026
f78d44b
Merge pull request #24 from DEEIX-AI/email_relate
chenyme May 23, 2026
53b7b75
feat: use browser locale and optional cookie persistence
chenyme May 23, 2026
fb4d9e5
Merge pull request #25 from DEEIX-AI/locale_lang
chenyme May 23, 2026
cae655c
feat: add full-text injection limits configuration and validation
chenyme May 23, 2026
cdacfd7
Merge pull request #26 from DEEIX-AI/injection_setting
chenyme May 23, 2026
911a923
feat: introduce system prompt feature with validation
chenyme May 23, 2026
e1c74bb
Merge pull request #27 from DEEIX-AI/support_system_prompt
chenyme May 23, 2026
8abdcac
chore: bump version to 0.1.1 in VERSION and package.json
chenyme May 23, 2026
b93051f
Merge branch 'dev' of https://github.com/DEEIX-AI/DEEIX-Chat into dev
chenyme May 23, 2026
6d12028
feat: support Image Edits protocol
chenyme May 23, 2026
01e7392
feat: support for Google image generation and editing protocols
chenyme May 23, 2026
abfb62c
feat: add support for xAI image generation and editing protocols
chenyme May 23, 2026
b73a2e0
docs: update README to include support for image edit protocols
chenyme May 23, 2026
9cdfe93
Merge pull request #28 from DEEIX-AI/image_edit
chenyme May 23, 2026
6129f10
feat: implement update check feature
chenyme May 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/workflows/commit-message.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Commit Message

on:
pull_request:
branches:
- main
- dev

permissions:
contents: read

jobs:
validate:
name: Validate commit messages
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Check commit message subjects
shell: bash
run: |
set -euo pipefail

pattern='^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test): [A-Za-z0-9 _-]+$'

range="${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}"

invalid=0
while IFS= read -r line; do
sha="${line%% *}"
subject="${line#* }"

if [[ "$subject" == Merge\ * ]]; then
continue
fi

if [[ ! "$subject" =~ $pattern ]]; then
echo "::error title=Invalid commit message::${sha} ${subject}"
invalid=1
fi
done < <(git log --format='%H %s' "$range")

if [[ "$invalid" -ne 0 ]]; then
echo "Commit message subjects must use: type: subject"
echo "Allowed types: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test"
echo "Allowed subject characters: English letters, numbers, spaces, hyphens, and underscores"
exit 1
fi
2 changes: 2 additions & 0 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ on:
push:
branches:
- main
- dev
tags:
- "v*.*.*"
pull_request:
branches:
- main
- dev
workflow_dispatch:

permissions:
Expand Down
27 changes: 27 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,33 @@ Use the example configuration files for local development. Do not commit local s
- Keep generated artifacts out of commits unless the project explicitly requires them.
- Do not commit caches, build output, `.pyc` files, `.env` files, or local storage data.

## Commit Messages

Use the `type: subject` format for every commit message subject.
Use only English letters, numbers, spaces, hyphens, and underscores in the subject.

Allowed types:

- `build`
- `chore`
- `ci`
- `docs`
- `feat`
- `fix`
- `perf`
- `refactor`
- `revert`
- `style`
- `test`

Examples:

- `feat: add model routing priority`
- `fix: handle expired refresh tokens`
- `refactor: simplify channel lookup`

Commit message subjects that do not match this format will fail CI.

## Architecture Boundaries

- `frontend/` owns the user interface, client-side state, message rendering, and admin/user workflows.
Expand Down
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ The architecture is designed for simple deployment, efficient static delivery, a
| Area | Capabilities |
| --- | --- |
| Conversations | Multi-branch chat, streaming, retries, edits, feedback, sharing, cloned shared conversations, rich markdown rendering, file cards, model metadata, usage details, and execution traces. |
| Media generation | Dedicated image generation and image edit flow with task-aware routing, OpenAI Images-compatible protocols, generated file storage, preview, download, and run history separated from text chat. |
| Media generation | Dedicated image generation and image edit flow with task-aware routing, provider-native OpenAI, Google, and xAI image protocols, generated file storage, preview, download, and run history separated from text chat. |
| Model control plane | Platform model catalog, upstream channels, real upstream models, route bindings, priority and weight routing, model capability JSON, display ordering, vendor mapping, automatic icons, and circuit breaker state. |
| Provider protocols | OpenAI Responses and Chat Completions, OpenAI Images, Anthropic Messages, Google/Gemini Generate Content, xAI Responses, OpenRouter defaults, and custom OpenAI-compatible routes. |
| Provider protocols | OpenAI Responses, Chat Completions, Images Generations, and Images Edits; Anthropic Messages; Google/Gemini Generate Content and Image Generation; xAI Responses, Images Generations, and Images Edits; OpenRouter defaults; and custom OpenAI-compatible routes. |
| Request governance | Protocol-aware request assembly, user option allowlists and denylists, system-protected fields, previous-response continuation where supported, and context snapshots for review. |
| Files and RAG | File upload, preview, download, deletion, quota control, MIME detection, text extraction, OCR, full-context injection, image context, chunking, embeddings, and semantic retrieval. |
| Memory and context | Message-window truncation, token-budget truncation, context compression, conversation memory, long-term user memory, RAG evidence records, and prompt trace inspection. |
Expand Down Expand Up @@ -246,7 +246,9 @@ Common backend environment variables:

Production mode rejects unsafe default secrets, weak encryption keys, wildcard CORS, and non-HTTPS public URLs.

The initial superadmin bootstrap credentials are built in as `deeix-chat` / `deeix-chat-2026` / `System Admin`. They are used only when the database has no superadmin account. The first login forces changing the username and password; later changes are managed from the account flow, not from `config.yaml`.
The initial superadmin username is `admin`. When the database has no superadmin account, the backend generates a random password and prints it once in the startup logs while creating the account. The first login forces changing the username and password; later changes are managed from the account flow, not from `config.yaml`.

To retrieve the initial admin password, inspect the backend logs from the first startup and search for `bootstrap superadmin created`; the `username` and `password` fields are the initial login credentials. If a superadmin already exists in the database, the service does not regenerate or print this password again.

## Security Notes

Expand Down
8 changes: 5 additions & 3 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ DEEIX Chat 为团队提供统一的 AI 工作台,用一个清晰的使用入
| 模块 | 能力 |
| --- | --- |
| 对话体验 | 多分支会话、流式响应、重试、编辑、反馈、公开分享、克隆分享会话、富文本 Markdown、文件卡片、模型元信息、用量明细和执行链路。 |
| 媒体生成 | 独立的图片生成和图片编辑链路,按任务类型路由到 OpenAI Images 兼容协议,生成结果统一入库为文件,支持预览、下载和独立运行记录。 |
| 媒体生成 | 独立的图片生成和图片编辑链路,按任务类型路由到 OpenAI、Google 和 xAI 的原生图片协议,生成结果统一入库为文件,支持预览、下载和独立运行记录。 |
| 模型控制面 | 平台模型目录、上游渠道、真实上游模型、路由绑定、优先级/权重路由、能力 JSON、展示顺序、厂商映射、自动图标和熔断状态。 |
| 协议适配 | OpenAI ResponsesChat Completions、OpenAI ImagesAnthropic MessagesGoogle/Gemini Generate ContentxAI Responses、OpenRouter 默认协议和自定义 OpenAI 兼容路由。 |
| 协议适配 | OpenAI ResponsesChat Completions、Images Generations 和 Images Edits,Anthropic MessagesGoogle/Gemini Generate Content 和 Image Generation,xAI Responses、Images Generations 和 Images Edits,OpenRouter 默认协议和自定义 OpenAI 兼容路由。 |
| 请求治理 | 按协议组装上游请求,支持用户参数白名单/黑名单、系统保护字段、协议支持时的 previous response 续接,以及可回看的上下文快照。 |
| 文件与 RAG | 文件上传、预览、下载、删除、配额控制、MIME 探测、文本提取、OCR、全文上下文注入、图片上下文、分片、向量嵌入和语义检索。 |
| 记忆与上下文 | 消息数截断、Token 预算截断、上下文压缩、会话记忆、用户长期记忆、RAG 证据记录和提示词链路查看。 |
Expand Down Expand Up @@ -246,7 +246,9 @@ pnpm build

生产模式会拒绝不安全的默认密钥、过短的加密密钥、通配 CORS 和非 HTTPS 公开地址。

初始化超级管理员凭据内置为 `deeix-chat` / `deeix-chat-2026` / `System Admin`。它只在数据库中不存在超级管理员时用于首次创建账号。首次登录会强制修改用户名和密码;后续账号变更通过账户流程完成,不再通过 `config.yaml` 修改。
初始化超级管理员用户名固定为 `admin`,密码会在数据库中不存在超级管理员时随机生成,并只在首次创建账号的后端启动日志中输出一次。首次登录会强制修改用户名和密码;后续账号变更通过账户流程完成,不再通过 `config.yaml` 修改。

获取初始化管理员密码时,请查看首次启动后端服务的日志,搜索 `bootstrap superadmin created`;其中的 `username` 和 `password` 分别是初始登录用户名和密码。如果数据库中已经存在超级管理员,服务不会重新生成或再次输出该密码。

## 安全说明

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.0
0.1.1
2 changes: 1 addition & 1 deletion backend/cmd/server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
)

// @title DEEIX Chat API
// @version 0.1.0
// @version 0.1.1
// @description DEEIX Chat 后端 API 文档
// @BasePath /api/v1
// @securityDefinitions.apikey BearerAuth
Expand Down
Loading
Loading