Commit Graph

11 Commits

Author SHA1 Message Date
Woodpecker CI
7e2f2548ee [CI SKIP] deploy 17eb61b259 2026-02-19 21:57:46 +00:00
Mikhail Kilin
17eb61b259 Add /speak command for multi-voice TTS in group chats
All checks were successful
ci/woodpecker/push/deploy Pipeline was successful
- /speak <voice> enables TTS with selected voice (irina, denis, dmitri)
- /speak stop disables TTS in the chat
- Private chats keep always-on TTS behavior
- Add PIPER_VOICES env var for voice-to-URL mapping
- Add chat type field to distinguish private/group chats

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 00:56:30 +03:00
Woodpecker CI
88c328b5d0 [CI SKIP] deploy 86acdfab28 2026-02-19 10:25:55 +00:00
Mikhail Kilin
86acdfab28 Add text-to-speech via Piper TTS
All checks were successful
ci/woodpecker/push/deploy Pipeline was successful
Send text message → Piper TTS → WAV → OGG Opus → voice reply.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 13:24:41 +03:00
Woodpecker CI
213eabb026 [CI SKIP] deploy e6c10a9ca9 2026-02-19 09:21:38 +00:00
Mikhail Kilin
e6c10a9ca9 Fix CI: use kassany/alpine-ziglang Docker image for build
All checks were successful
ci/woodpecker/push/deploy Pipeline was successful
ziglang.org unreachable from cluster, use pre-built Docker image instead.
Lower minimum_zig_version to 0.15.1 for compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 12:20:30 +03:00
Mikhail Kilin
b072a60536 Add Woodpecker CI pipeline, make Dockerfile multi-stage
Some checks failed
ci/woodpecker/push/deploy Pipeline failed
- Multi-stage Dockerfile: download Zig 0.15.2, build inside Docker
- .woodpecker/deploy.yml: Kaniko build + push + manifest update

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 12:00:55 +03:00
Mikhail Kilin
420841ee30 Fix use-after-free: delete temp file before freeing path memory
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 17:26:07 +03:00
Mikhail Kilin
01bf41c61c Fix segfault: keep JSON body alive for parsed string refs
- Root cause: parseFromSlice returns slices pointing into the raw JSON
  body, but body was freed immediately after parsing in getUpdates
- Fix: return OwnedParsed wrapper that keeps both parsed result and
  raw body alive together
- Switch HTTP layer to curl subprocess (more reliable than std.http
  with static linking)
- Fix downloadToFile: use spawnAndWait instead of collectOutput
  (collectOutput requires both pipes)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 16:39:52 +03:00
Mikhail Kilin
89f98f02be Fix Dockerfile and k8s manifest for deployment
- Simplify Dockerfile: use pre-built cross-compiled binary instead of
  building in Alpine (Alpine only has Zig 0.13, we need 0.15)
- Fix image URL in k8s manifest: git.mikhailkilin.ru (not gitea.)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 16:11:33 +03:00
Mikhail Kilin
819b28a672 Initial commit: Telegram voice/video transcription bot in Zig
Long-polling bot that accepts voice messages and video notes,
sends them to Whisper STT API, and replies with transcription text.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 15:32:04 +03:00