Commit Graph
22 Commits
Author SHA1 Message Date
thuanleandClaude Opus 4.7 15e697ddf3 fix(mail): remove redundant TrimSpace in parseReferences
strings.Fields already strips whitespace from each token.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 05:04:45 +07:00
thuanleandClaude Opus 4.7 c63895f4da feat(mail): implement resolveThreadID with References fallback
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 05:02:11 +07:00
thuanleandClaude Opus 4.7 aebae1cea5 test(mail): add resolveThreadID tests (RED)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 05:01:17 +07:00
thuanleandClaude Opus 4.7 270b13834a docs: add References threading implementation plan
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 04:57:00 +07:00
thuanleandClaude Opus 4.7 4090a44524 docs: add References header threading design spec
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 04:51:38 +07:00
claudecode 540dbdc0e0 Merge pull request 'Fix graceful HTTP server shutdown on SIGINT/SIGTERM' (#12) from fix/graceful-http-shutdown into main 2026-04-28 00:30:29 +07:00
thuanleandClaude Opus 4.7 31b31c7635 fix: graceful HTTP server shutdown on SIGINT/SIGTERM
CI / fmt (pull_request) Successful in 4m53s
CI / test (pull_request) Successful in 11m40s
Replace router.Run() with explicit http.Server + Shutdown() so the
process exits cleanly when context is cancelled.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 00:25:47 +07:00
thuanleandClaude Opus 4.7 1290e3b222 docs: require Fixes #<issue> in PR body for auto-close
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 00:22:43 +07:00
thuanleandClaude Opus 4.7 248a5bdbcd docs: add AGENT.md workflow and local skills
- AGENT.md: role-based issue-driven workflow (PO → Dev → Reviewer)
- CLAUDE.md: points to AGENT.md
- .codex/skills/: validate-issue, do-task, review-pr with phase gates

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 00:00:41 +07:00
thuanleandClaude Opus 4.7 8be84cc396 docs: consolidate project instructions into AGENT.md
Move behavioral guidelines, role-based workflow, and Gitea tooling
instructions into AGENT.md. CLAUDE.md now references AGENT.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 23:26:39 +07:00
thuanle 8011b4ed2d Merge pull request 'ci: add Gitea Actions workflow with gofmt and test jobs' (#10) from feat/ci-workflow into main
Reviewed-on: #10
Reviewed-by: codex <39+codex@noreply.localhost>
2026-04-27 22:47:50 +07:00
claudecode a6734c126d ci: use 'linux' runner label instead of 'ubuntu-latest'
CI / fmt (pull_request) Successful in 5m17s
CI / test (pull_request) Successful in 14m51s
Gitea runners use 'linux' label, not GitHub's 'ubuntu-latest'.
2026-04-27 22:41:46 +07:00
thuanleandClaude Opus 4.7 dbe5cab56e ci: add Gitea Actions workflow with gofmt and test jobs
CI / fmt (pull_request) Has been cancelled
CI / test (pull_request) Has been cancelled
Add CI workflow at .gitea/workflows/ci.yml triggered on pull_request
with two jobs: fmt (gofmt check) and test (go test ./...).

Fix gofmt issues (import ordering) in 7 files so CI passes from
the start.

Fixes #7

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 22:34:56 +07:00
thuanle bae7ad5821 Merge pull request 'Add IMAP SOCKS5 proxy dialing support' (#8) from feat/imap-proxy-support into main
Reviewed-on: #8
Reviewed-by: codex <39+codex@noreply.localhost>
2026-04-27 22:17:50 +07:00
thuanleandClaude Opus 4.7 d1c35e0b57 fix(mail): enforce end-to-end timeout for SOCKS5 IMAP dial
Use context-based SOCKS dialing and bounded TLS handshake so proxy negotiation and handshake cannot hang indefinitely, with regression tests for both paths.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 22:10:20 +07:00
thuanleandClaude Opus 4.7 d0c22a0554 fix(mail): restore IMAP SOCKS5 dial timeout behavior
Preserve the 30s dial timeout semantics for proxy connections by using a timeout-backed forward dialer, and add a regression test to lock this behavior.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 21:59:25 +07:00
thuanleandClaude Opus 4.7 14f2bd7eab feat(mail): support IMAP SOCKS5 proxy dialing
Use IMAP_PROXY_URL to route IMAP TLS connections through SOCKS5 when configured, while preserving direct dialing when unset.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 21:37:40 +07:00
thuanleandClaude Opus 4.7 2333ec3f00 chore: ignore local worktrees directory
Add .worktrees/ to .gitignore to prevent accidental tracking of isolated worktree files.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 21:34:00 +07:00
thuanle 0aa95915a2 Merge pull request 'Fix callback URL to use configurable public base' (#6) from fix/callback-base-url into main
Reviewed-on: #6
Reviewed-by: codex <39+codex@noreply.localhost>
2026-04-27 21:05:23 +07:00
thuanleandClaude Opus 4.7 2168042edb fix default callback base URL port mismatch
Derive CALLBACK_BASE_URL fallback from LISTEN_ADDR so default local setup resolves to localhost:8080 and stays aligned with server bind port.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 20:56:47 +07:00
thuanleandClaude Opus 4.7 cc9d54afdc fix callback URL to use configurable public base
Separate callback URL generation from LISTEN_ADDR by introducing CALLBACK_BASE_URL with a localhost default for local development.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 19:02:31 +07:00
thuanleandClaude Opus 4.7 8815c20c13 Initial commit: email-openclaw bridge v1
Full pipeline: IMAP ingress -> OpenClaw dispatch -> callback -> SMTP reply.
SQLite stateful storage with idempotency, threading, and retry logic.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 18:16:57 +07:00