clawbot
99d3e4fa0a
Consolidate schema into single 001_initial.sql
...
No need for separate migration files before 1.0.0 — there are no
installed versions to migrate. All tables now in one file.
2026-02-09 17:15:49 -08:00
clawbot
b21508cecc
Add complete database schema and ORM models
...
Schema (002_tables.sql):
- users: accounts with nick, password hash, timestamps
- auth_tokens: per-device tokens with expiry, linked to users
- channels: chat rooms with topic and mode flags
- channel_members: membership with per-user modes (+o, +v)
- messages: channel/DM history with structured JSON meta
- message_queue: per-user pending delivery queue
- sessions: server-held session state with idle timeout
- server_links: federation peer configuration
Models (internal/models/):
- All models embed Base for database access
- Relation methods on models: User.Channels(), User.QueuedMessages(),
Channel.Members(), Channel.RecentMessages(), ChannelMember.User(),
ChannelMember.Channel(), AuthToken.User(), Session.User()
- IDs are UUIDs (TEXT), not auto-increment integers
- JSON tags use camelCase per lint rules
All tables verified: migrations apply cleanly, 0 lint issues.
2026-02-09 14:54:35 -08: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