From e0eb38289e0726338f38e033a554adf7b8c74310 Mon Sep 17 00:00:00 2001 From: clawbot Date: Tue, 10 Mar 2026 07:27:29 -0700 Subject: [PATCH] fix: use 'client output queue' terminology consistently Replace ambiguous 'queue' with 'client output queue' throughout documentation, code comments, log messages, and error strings added in the queue pruning PR. --- README.md | 12 ++++++------ internal/db/queries.go | 6 +++--- internal/handlers/handlers.go | 9 +++++---- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 42bac72..c9cb666 100644 --- a/README.md +++ b/README.md @@ -249,8 +249,8 @@ Key properties: - **Ordered**: Queue entries have monotonically increasing IDs. Messages are always delivered in order within a client's queue. - **No delivery/read receipts** for channel messages. DM receipts are planned. -- **Queue depth**: Server-configurable via `QUEUE_MAX_AGE`. Default is 30 - days. Entries older than this are pruned. +- **Client output queue depth**: Server-configurable via `QUEUE_MAX_AGE`. + Default is 30 days. Entries older than this are pruned. ### Long-Polling @@ -1790,8 +1790,8 @@ skew issues) and simpler than UUIDs (integer comparison vs. string comparison). - **Messages**: Pruned automatically when older than `MESSAGE_MAX_AGE` (default 30 days). -- **Queue entries**: Pruned automatically when older than `QUEUE_MAX_AGE` - (default 30 days). +- **Client output queue entries**: Pruned automatically when older than + `QUEUE_MAX_AGE` (default 30 days). - **Channels**: Deleted when the last member leaves (ephemeral). - **Users/sessions**: Deleted on `QUIT` or `POST /api/v1/logout`. Idle sessions are automatically expired after `SESSION_IDLE_TIMEOUT` (default @@ -1814,7 +1814,7 @@ directory is also loaded automatically via | `DEBUG` | bool | `false` | Enable debug logging (verbose request/response logging) | | `MESSAGE_MAX_AGE` | string | `720h` | Maximum age of messages as a Go duration string (e.g. `720h`, `24h`). Messages older than this are pruned. Default is 30 days. | | `SESSION_IDLE_TIMEOUT` | string | `720h` | Session idle timeout as a Go duration string (e.g. `720h`, `24h`). Sessions with no activity for this long are expired and the nick is released. Default is 30 days. | -| `QUEUE_MAX_AGE` | string | `720h` | Maximum age of client queue entries as a Go duration string (e.g. `720h`, `24h`). Entries older than this are pruned. Default is 30 days. | +| `QUEUE_MAX_AGE` | string | `720h` | Maximum age of client output queue entries as a Go duration string (e.g. `720h`, `24h`). Entries older than this are pruned. Default is 30 days. | | `MAX_MESSAGE_SIZE` | int | `4096` | Maximum message body size in bytes (planned enforcement) | | `LONG_POLL_TIMEOUT`| int | `15` | Default long-poll timeout in seconds (client can override via query param, server caps at 30) | | `MOTD` | string | `""` | Message of the day, shown to clients via `GET /api/v1/server` | @@ -2228,7 +2228,7 @@ GET /api/v1/challenge ### Post-MVP (Planned) - [ ] **Hashcash proof-of-work** for session creation (abuse prevention) -- [x] **Queue pruning** — delete old queue entries per `QUEUE_MAX_AGE` +- [x] **Client output queue pruning** — delete old client output queue entries per `QUEUE_MAX_AGE` - [x] **Message rotation** — prune messages older than `MESSAGE_MAX_AGE` - [ ] **Channel modes** — enforce `+i`, `+m`, `+s`, `+t`, `+n` - [ ] **User channel modes** — `+o` (operator), `+v` (voice) diff --git a/internal/db/queries.go b/internal/db/queries.go index 74e88dd..50686d3 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1110,8 +1110,8 @@ func (database *Database) GetSessionCreatedAt( return createdAt, nil } -// PruneOldQueueEntries deletes client_queues rows older -// than cutoff and returns the number of rows removed. +// PruneOldQueueEntries deletes client output queue entries +// older than cutoff and returns the number of rows removed. func (database *Database) PruneOldQueueEntries( ctx context.Context, cutoff time.Time, @@ -1122,7 +1122,7 @@ func (database *Database) PruneOldQueueEntries( ) if err != nil { return 0, fmt.Errorf( - "prune old queue entries: %w", err, + "prune old client output queue entries: %w", err, ) } diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go index 66d6824..6d9b7cd 100644 --- a/internal/handlers/handlers.go +++ b/internal/handlers/handlers.go @@ -226,8 +226,9 @@ func (hdlr *Handlers) parseDurationConfig( return dur } -// pruneQueuesAndMessages removes old client_queues entries -// per QUEUE_MAX_AGE and prunes messages per MESSAGE_MAX_AGE. +// pruneQueuesAndMessages removes old client output queue +// entries per QUEUE_MAX_AGE and old messages per +// MESSAGE_MAX_AGE. func (hdlr *Handlers) pruneQueuesAndMessages( ctx context.Context, ) { @@ -242,11 +243,11 @@ func (hdlr *Handlers) pruneQueuesAndMessages( PruneOldQueueEntries(ctx, queueCutoff) if err != nil { hdlr.log.Error( - "queue pruning failed", "error", err, + "client output queue pruning failed", "error", err, ) } else if pruned > 0 { hdlr.log.Info( - "pruned old queue entries", + "pruned old client output queue entries", "deleted", pruned, ) }