Commit Graph

15 Commits

Author SHA1 Message Date
clawbot
0b84872178 Update Dockerfile for Go 1.24, no Node build step needed
SPA is vanilla JS shipped as static files in web/dist/,
no npm build step required.
2026-02-10 18:09:24 -08:00
clawbot
1f54b281fd MVP: IRC envelope format, long-polling, per-client queues, SPA rewrite
Major changes:
- Consolidated schema into single migration with IRC envelope format
- Messages table stores command/from/to/body(JSON)/meta(JSON) per spec
- Per-client delivery queues (client_queues table) with fan-out
- In-memory broker for long-poll notifications (no busy polling)
- GET /messages supports ?after=<queue_id>&timeout=15 long-polling
- All commands (JOIN/PART/NICK/TOPIC/QUIT/PING) broadcast events
- Channels are ephemeral (deleted when last member leaves)
- PRIVMSG to nicks (DMs) fan out to both sender and recipient
- SPA rewritten in vanilla JS (no build step needed):
  - Long-poll via recursive fetch (not setInterval)
  - IRC envelope parsing with system message display
  - /nick, /join, /part, /msg, /quit commands
  - Unread indicators on inactive tabs
  - DM tabs from user list clicks
- Removed unused models package (was for UUID-based schema)
- Removed conflicting UUID-based db methods
- Increased HTTP write timeout to 60s for long-poll support
2026-02-10 18:09:10 -08:00
df2217a38b Add embedded web chat client (closes #7) (#8) 2026-02-11 03:02:41 +01:00
95ccc1b2cd Add complete database schema and ORM models (#4) 2026-02-11 03:02:33 +01:00
clawbot
03cbc3cd1a Add Dockerfile and .dockerignore
Multi-stage build: golang:1.24-alpine builder, alpine:3.21 runtime.
Verified locally: all fx modules instantiate, migrations run,
healthcheck responds at /.well-known/healthcheck.json.
2026-02-09 12:36:55 -08:00
clawbot
18e7218d9e Fix .gitignore: /chatd not chatd (was ignoring cmd/chatd/ dir)
The bare 'chatd' pattern matched the cmd/chatd/ directory,
preventing main.go from being tracked. Use /chatd to only
match the binary at the repo root.
2026-02-09 12:35:24 -08:00
e6621ef7c6 Merge pull request 'Fix all lint issues, add AGENTS.md with workflow rules' (#3) from fix/agents-md-workflow into main 2026-02-09 21:33:34 +01:00
clawbot
6a108749a1 Fix all lint issues and update AGENTS.md workflow rules
- Fix stuttering type names (e.g. config.ConfigParams → config.Params)
- Add doc comments to all exported types/functions/methods
- Add package doc comments to all packages
- Fix JSON tags to camelCase
- Extract magic numbers to constants
- Add blank lines per nlreturn/wsl_v5 rules
- Use errors.Is() for error comparison
- Unexport NewLoggingResponseWriter (not used externally)
- Replace for-range on ctx.Done() with channel receive
- Rename unused parameters to _
- AGENTS.md: all changes via feature branches, no direct main commits
2026-02-09 12:33:08 -08:00
clawbot
7b0ff178d4 AGENTS.md: no direct commits to main, all changes via feature branches 2026-02-09 12:31:14 -08:00
clawbot
e9b6eb862e Add AGENTS.md with coding and commit rules 2026-02-09 12:30:18 -08:00
clawbot
c8f546ecab Add .golangci.yml linting config and comprehensive Makefile 2026-02-09 12:27:39 -08:00
clawbot
5e9be8ccaf Add models package with embedded DB interface pattern
- internal/models/model.go: DB interface + Base struct for all models
- internal/models/channel.go: Channel model with DB access for relation queries
- Database.NewChannel() factory injects db reference into model instances
- Uses interface to avoid circular imports (models -> db)
2026-02-09 12:24:23 -08:00
clawbot
8bb083a7f8 Add project scaffolding with fx DI, SQLite migrations, and healthcheck
- go.mod with git.eeqj.de/sneak/chat module
- internal packages: globals, logger, config, db, healthcheck, middleware, handlers, server
- SQLite database with embedded migration system (schema_migrations tracking)
- Migration 001: schema_migrations table
- Migration 002: channels table
- Config with chat-specific vars (MAX_HISTORY, SESSION_TIMEOUT, MAX_MESSAGE_SIZE, MOTD, SERVER_NAME, FEDERATION_KEY)
- Healthcheck endpoint at /.well-known/healthcheck.json
- Makefile, .gitignore
- cmd/chatd/main.go entry point
2026-02-09 12:22:28 -08:00
clawbot
c1a7a14b46 Add CONVENTIONS.md from gohttpserver 2026-02-09 12:20:18 -08:00
clawbot
f8a43dbb79 Initial spec: HTTP-based IRC replacement 2026-02-09 12:05:48 -08:00