ZhenYi
81e6ee3d48
feat(observability): Phase 1-5 slog structured logging across platform
...
Phase 1: add libs/observability crate (build_logger, instance_id);
remove duplicate logger init from 4 crates
Phase 2: Actix-web RequestLogger with trace_id; MetricsMiddleware + HttpMetrics
Phase 3: Git SSH handle.rs slog struct; HTTP handler Logger kv
Phase 4: AI client eprintln -> slog warn; billing ai_usage_recorded log
Phase 5: SessionManager slog; workspace alert slog 2.x syntax
2026-04-21 13:44:12 +08:00
ZhenYi
33a4a5c6c9
feat(service): register project_tools in chat service, add AppStorage::read method
2026-04-20 19:32:29 +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
39d30678b5
fix(email): resolve SMTP connection failures (port 465 SMTPS, URL double scheme, retry backoff)
2026-04-19 01:04:11 +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
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
9336250f1c
fix(agent): skip reasoning_effort when think=false to avoid API errors
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-18 19:41:59 +08:00
ZhenYi
9b9c12ffc8
feat(backend): add workspace invitation list and slug-based accept APIs
...
- Add workspace_my_pending_invitations() for listing pending invites
- Add workspace_accept_invitation_by_slug() to accept by slug without token
- Register new routes: GET /workspaces/me/invitations, POST /workspaces/invitations/accept-by-slug
2026-04-18 19:05:07 +08:00
ZhenYi
93cfff9738
init
2026-04-15 09:08:09 +08:00