ZhenYi
dee79f3f7f
feat(room): add attachment upload/download API and attach files to messages
2026-04-20 19:32:11 +08:00
ZhenYi
a0ab16e6ea
feat(agent): pass AppConfig through ToolContext and fix tool call handling
2026-04-20 19:32:03 +08:00
ZhenYi
4e955d9ae3
chore: add mime_guess2, quick-xml serialize feature, and config crate to room lib
2026-04-20 19:31:52 +08:00
ZhenYi
4d5c62e46a
feat: add project tools (repos, issues, boards, arxiv, curl, members) and ThemeSwitcher component
2026-04-20 19:31:44 +08:00
ZhenYi
d4b0a9ae67
feat(room): read model_id in search results, register m20260420_000003 migration
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-20 16:08:35 +08:00
ZhenYi
3c8e9e3674
fix(migrate): use Statement::from_string in down method for SeaORM 2.0
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Rust Lint & Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-20 16:02:18 +08:00
ZhenYi
eba75ee359
fix(admin): ioredis 5.x username/password in redisOptions, add logging
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-20 15:50:51 +08:00
ZhenYi
779aaba575
feat: add service worker for push notifications and update room documentation
2026-04-20 15:45:51 +08:00
ZhenYi
6f6f57f062
feat(frontend): add push notification hooks, image compression, and update room/chat components
2026-04-20 15:45:47 +08:00
ZhenYi
8316fe926f
feat(service): add push and storage service modules, update project/user/workspace services
2026-04-20 15:45:40 +08:00
ZhenYi
0c64122b80
chore(frontend): update frontend build configuration
2026-04-20 15:45:35 +08:00
ZhenYi
26865f8dcf
chore(api): update dist.rs
2026-04-20 15:45:30 +08:00
ZhenYi
0e4631ec75
chore(api/user): update user notification endpoint
2026-04-20 15:45:26 +08:00
ZhenYi
26c86f0796
feat(api/room): add upload handler and update websocket handler
2026-04-20 15:45:22 +08:00
ZhenYi
cec8d486f1
feat(room): update room lib (connection, helpers, member, message, notification, reaction, room, search, service, types)
2026-04-20 15:45:18 +08:00
ZhenYi
1b863a9f65
chore(queue): update queue types
2026-04-20 15:45:13 +08:00
ZhenYi
2186960002
chore(models/users): update user notification model
2026-04-20 15:45:08 +08:00
ZhenYi
a2e8f5bf5b
feat(models/rooms): add room attachment model and update room message/notifications
2026-04-20 15:45:03 +08:00
ZhenYi
98e6f77341
feat(migrate): add room attachment, push subscription, and model_id migrations
2026-04-20 15:44:59 +08:00
ZhenYi
d09af7c326
feat(config): add storage configuration module
2026-04-20 15:44:54 +08:00
ZhenYi
ba15324603
chore: update dependencies (cargo + npm)
2026-04-20 15:44:49 +08:00
ZhenYi
05909dbde7
fix(admin): use named export Cluster from ioredis 5.x
...
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
Previous `import { default as Cluster }` caused runtime to get Redis
instance instead of Cluster, resulting in ECONNREFUSED errors.
2026-04-20 10:03:26 +08:00
ZhenYi
a9c51526b8
fix(admin): fix ioredis 5.x Cluster constructor type resolution
...
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
- Use `Cluster` as default export from ioredis (not RedisCluster named export)
- Import ClusterNode type and use explicit type annotation on nodes array
- Use `any` cast on Cluster constructor to bypass TS overload resolution issue
- Fix closeRedis return type to Promise<unknown>
2026-04-20 09:41:19 +08:00
ZhenYi
67e8c5edc7
fix(admin): use Redis as type annotation, RedisCluster as runtime value
...
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
Fix TypeScript type error with ioredis 5.x default export pattern
2026-04-20 09:32:10 +08:00
ZhenYi
09d5a5877f
fix(admin): upgrade ioredis cluster to 5.x RedisCluster API
...
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
- Replace deprecated Cluster with RedisCluster (ioredis 5.x breaking change)
- Extract username/password from cluster URLs for authentication
- Fix REDIS_CLUSTER_URLS to include all 3 master nodes with default user
2026-04-20 09:28:28 +08:00
ZhenYi
a3fcbab5d8
fix(admin): add /api/health to public paths to allow k8s probe
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-20 07:40:57 +08:00
ZhenYi
58bba357b0
fix(admin): quote image tag to prevent Helm format string parsing
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-20 01:33:34 +08:00
ZhenYi
3995579e56
fix(admin): add /api/health route for k8s readiness probe
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-20 01:02:37 +08:00
ZhenYi
19cad7e14a
config(admin): admin env
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-20 00:22:42 +08:00
ZhenYi
6d16cc8c18
config(admin): admin env
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-20 00:15:04 +08:00
ZhenYi
9ed56668dc
fix(admin): handle admin.env as both list and map in deployment template
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-19 23:21:53 +08:00
ZhenYi
82a928c96a
config(admin): admin env
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-19 22:39:41 +08:00
ZhenYi
8cf6415e15
config(admin): admin env
2026-04-19 22:39:25 +08:00
ZhenYi
3034c7f391
feat(admin): add TLS support to ingress with cert-manager and manual secret options
2026-04-19 22:35:31 +08:00
ZhenYi
e612043e5f
feat(room): auto-add new project members to all rooms
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-19 22:27:57 +08:00
ZhenYi
b8e5cbbb69
feat(admin): add Docker and Kubernetes deployment for admin panel
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-19 21:49:22 +08:00
ZhenYi
208b6ed84e
chore: remove deprecated docs (superseded by CLAUDE.md)
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-19 20:49:21 +08:00
ZhenYi
fb91f5a6c5
feat(admin): add admin panel with billing alerts and model sync
...
- Add libs/api/admin with admin API endpoints:
sync models, workspace credit, billing alert check
- Add workspace_alert_config model and alert service
- Add Session::no_op() for background tasks without user context
- Add admin/ Next.js admin panel (AI models, billing, workspaces, audit)
- Start billing alert background task every 30 minutes
2026-04-19 20:48:59 +08:00
ZhenYi
c4d4b2ecf5
fix(room): fix channel sidebar clickability and polish UI
...
- Fix DraggableRow: remove opacity-0 wrapper that was hiding
RoomButton; drag handles now work without blocking clicks
- Move "+ Add Category" to bottom of channel list
- Reduce channel item padding (6px → 4px) for compact look
- Shrink # hash icon to 12px
- Add explicit text-align: left to channel names
- Reduce Add Category button/input to 10px font
2026-04-19 20:47:07 +08:00
ZhenYi
63c75ad453
feat(room): add category creation and drag-to-assign for channels
...
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
- Rewrite DiscordChannelSidebar with @dnd-kit drag-and-drop:
rooms are sortable within categories; dragging onto a different
category header assigns the room to that category
- Add inline 'Add Category' button: Enter/Esc to confirm/cancel
- Wire category create/move handlers in room.tsx via RoomContext
- Fix onAiStreamChunk to accumulate content properly and avoid
redundant re-renders during AI streaming (dedup guard)
- No backend changes needed: category CRUD and room category update
endpoints were already wired
2026-04-19 16:44:31 +08:00
ZhenYi
b73cc8d421
refactor(room): Discord-style UI redesign for channel sidebar and member list
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
2026-04-19 01:12:38 +08:00
ZhenYi
66006d842e
feat(agent): inject project context and sender info into AI chat messages
2026-04-19 01:04:19 +08:00
ZhenYi
b740e2884d
feat(room): auto-inherit project members as room members on room creation
2026-04-19 01:04:15 +08:00
ZhenYi
39d30678b5
fix(email): resolve SMTP connection failures (port 465 SMTPS, URL double scheme, retry backoff)
2026-04-19 01:04:11 +08:00
ZhenYi
882e86dc33
refactor(email): switch to async channel-based email queue with retry
...
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
Converts AppEmail from blocking sync sends to a background worker via
mpsc channel, adds SMTP pool tuning (min_idle 5, max_size 100), and
3-retry backoff on send failures.
2026-04-19 00:10:38 +08:00
ZhenYi
b693bd6beb
fix(auth): use explicit user_uid in login flow instead of context.user()
...
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
The login function calls auth_2fa_status before set_user(user.uid), so
context.user() returns None and causes Unauthorized error on subsequent
logins after logout. Extracts auth_2fa_status_by_uid as an internal
helper accepting a Uuid, preserving the context-based wrapper for API
endpoints that require an authenticated user.
2026-04-19 00:03:18 +08:00
ZhenYi
2a2600859f
dbg(email): add email error printrack
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
CI / Rust Lint & Check (push) Waiting to run
2026-04-18 23:30:17 +08:00
ZhenYi
7831d08848
feat(auth): add password reset confirmation endpoint and page
...
CI / Rust Lint & Check (push) Waiting to run
CI / Rust Tests (push) Waiting to run
CI / Frontend Lint & Type Check (push) Waiting to run
CI / Frontend Build (push) Blocked by required conditions
Add the second half of the password reset flow: /password/confirm API
endpoint with token validation, transactional password update, and a
frontend confirm-password-reset-page with proper error handling for
expired/used tokens. Updates generated SDK/client bindings.
2026-04-18 23:02:39 +08:00
ZhenYi
1af796ac75
feat(service): add file_tools module and git_blob_get tool
...
Add AI-accessible tools for reading structured files (CSV, JSON/JSONC,
Markdown, SQL) and searching repository content (git_grep). Also adds
git_blob_get to retrieve raw blob text content with binary detection.
Deferred: Excel, Word, PDF, PPT modules are stubbed out due to library
API incompatibilities (calamine 0.26, lopdf 0.34, quick-xml 0.37).
2026-04-18 23:02:10 +08:00
ZhenYi
767bb10249
feat(agent): wire git_tools into AI tool registry with full schemas
...
- ChatService: add tools() method to expose registered tool definitions
- RoomService: populate AiRequest.tools from chat_service.tools(), enable tools
with max_tool_depth=3 (was always None)
- ToolHandler: add pub new() constructor so git_tools modules can register
handlers with full schema metadata
- Add description + JSON schema params to all 16 git tools:
git_log, git_show, git_search_commits, git_commit_info, git_graph,
git_reflog, git_branch_list, git_branch_info, git_branches_merged,
git_branch_diff, git_diff, git_diff_stats, git_blame, git_file_content,
git_tree_ls, git_file_history, git_tag_list, git_tag_info
2026-04-18 21:42:33 +08:00