fix: various fixes to sentry-reported errors and more

This commit is contained in:
Hampus Kraft
2026-02-18 15:38:51 +00:00
parent 302c0d2a0c
commit 0517a966a3
357 changed files with 25420 additions and 16281 deletions

View File

@@ -7,7 +7,6 @@
"domain",
"database",
"services",
"gateway",
"auth"
],
"if": {
@@ -125,10 +124,6 @@
"description": "Configuration for individual Fluxer services.",
"$ref": "#/$defs/services"
},
"gateway": {
"description": "Configuration for the real-time Gateway service connection.",
"$ref": "#/$defs/gateway_connection"
},
"auth": {
"description": "Authentication and security settings.",
"$ref": "#/$defs/auth"
@@ -406,24 +401,6 @@
}
}
},
"gateway_connection": {
"type": "object",
"description": "Configuration for backend services to call the Gateway via RPC.",
"required": [
"rpc_secret"
],
"properties": {
"rpc_endpoint": {
"type": "string",
"description": "Gateway RPC endpoint URL (e.g. http://gateway:8080).",
"default": "http://127.0.0.1:8088"
},
"rpc_secret": {
"type": "string",
"description": "Shared secret for authenticating RPC calls to the Gateway."
}
}
},
"rate_limit": {
"type": "object",
"description": "Rate limiting parameters.",
@@ -587,7 +564,7 @@
"min_member_count": {
"type": "number",
"description": "Minimum number of members a guild needs before it can apply for discovery listing.",
"default": 50
"default": 1
}
}
},
@@ -1095,7 +1072,7 @@
},
"webhook_secret": {
"type": "string",
"description": "SendGrid signed event webhook public key (PEM or base64-encoded DER)."
"description": "Sweego webhook signing secret (base64-encoded)."
},
"from_email": {
"type": "string",
@@ -1706,7 +1683,6 @@
"type": "object",
"description": "Configuration for the Gateway service (WebSocket).",
"required": [
"api_host",
"admin_reload_secret",
"media_proxy_endpoint"
],
@@ -1716,20 +1692,6 @@
"description": "Port to listen on.",
"default": 8771
},
"rpc_tcp_port": {
"type": "number",
"description": "Port for API-to-Gateway internal RPC over TCP.",
"default": 8772
},
"api_host": {
"type": "string",
"description": "Host/Port of the API service to communicate with."
},
"api_canary_host": {
"type": "string",
"description": "Host/Port of the Canary API service (optional).",
"default": ""
},
"admin_reload_secret": {
"type": "string",
"description": "Secret used to trigger code hot-swapping/reloads."
@@ -1885,6 +1847,27 @@
}
}
},
"nats_services": {
"type": "object",
"description": "Configuration for NATS messaging.",
"properties": {
"core_url": {
"type": "string",
"description": "NATS Core server URL for RPC.",
"default": "nats://127.0.0.1:4222"
},
"jetstream_url": {
"type": "string",
"description": "NATS JetStream server URL for job queues.",
"default": "nats://127.0.0.1:4223"
},
"auth_token": {
"type": "string",
"description": "Authentication token for NATS connections.",
"default": ""
}
}
},
"queue_service": {
"type": "object",
"description": "Configuration for the Job Queue service.",
@@ -1892,12 +1875,12 @@
"port": {
"type": "number",
"description": "Port to listen on.",
"default": 8080
"default": 8088
},
"host": {
"type": "string",
"description": "Network interface to bind to.",
"default": "0.0.0.0"
"concurrency": {
"type": "number",
"description": "Number of concurrent worker threads.",
"default": 1
},
"data_dir": {
"type": "string",
@@ -1922,42 +1905,12 @@
"snapshot_zstd_level": {
"type": "number",
"description": "Zstd compression level for snapshots (1-22).",
"minimum": 1,
"maximum": 22,
"default": 3
},
"visibility_timeout_backoff_ms": {
"type": "number",
"description": "Backoff duration in milliseconds for visibility timeouts.",
"default": 1000
},
"max_receive_batch": {
"type": "number",
"description": "Maximum number of messages to retrieve in a single batch.",
"default": 10
},
"command_buffer": {
"type": "number",
"description": "Size of the internal command buffer.",
"default": 1000
},
"export_timeout": {
"type": "number",
"description": "Timeout in milliseconds for data export operations.",
"default": 30000
},
"concurrency": {
"type": "number",
"description": "Number of concurrent worker threads.",
"default": 2
},
"rate_limit": {
"description": "Rate limiting configuration for the Queue service.",
"$ref": "#/$defs/rate_limit"
},
"secret": {
"type": "string",
"description": "Authentication secret for the Queue service."
"description": "Secret for queue API authentication.",
"default": ""
}
}
},
@@ -2024,6 +1977,10 @@
"$ref": "#/$defs/s3_service",
"default": {}
},
"nats": {
"$ref": "#/$defs/nats_services",
"default": {}
},
"queue": {
"$ref": "#/$defs/queue_service",
"default": {}

View File

@@ -63,14 +63,10 @@ function makeMinimalConfig(overrides: Record<string, unknown> = {}): Record<stri
},
gateway: {
port: 8771,
api_host: 'http://localhost:8772/api',
admin_reload_secret: 'deadbeef0123456789abcdef0123456789abcdef0123456789abcdef01234567',
media_proxy_endpoint: 'http://localhost:8772/media',
},
},
gateway: {
rpc_secret: 'rpc-test-secret',
},
auth: {
sudo_mode_secret: 'sudo-test-secret',
connection_initiation_secret: 'connection-initiation-test-secret',

View File

@@ -180,22 +180,5 @@
"default": false
}
}
},
"gateway_connection": {
"type": "object",
"description": "Configuration for backend services to call the Gateway via RPC.",
"additionalProperties": false,
"required": ["rpc_secret"],
"properties": {
"rpc_endpoint": {
"type": "string",
"description": "Gateway RPC endpoint URL (e.g. http://gateway:8080).",
"default": "http://127.0.0.1:8088"
},
"rpc_secret": {
"type": "string",
"description": "Shared secret for authenticating RPC calls to the Gateway."
}
}
}
}

View File

@@ -12,7 +12,7 @@
"min_member_count": {
"type": "number",
"description": "Minimum number of members a guild needs before it can apply for discovery listing.",
"default": 50
"default": 1
}
}
}

View File

@@ -47,7 +47,7 @@
},
"webhook_secret": {
"type": "string",
"description": "SendGrid signed event webhook public key (PEM or base64-encoded DER)."
"description": "Sweego webhook signing secret (base64-encoded)."
},
"from_email": {
"type": "string",

View File

@@ -3,27 +3,13 @@
"type": "object",
"description": "Configuration for the Gateway service (WebSocket).",
"additionalProperties": false,
"required": ["api_host", "admin_reload_secret", "media_proxy_endpoint"],
"required": ["admin_reload_secret", "media_proxy_endpoint"],
"properties": {
"port": {
"type": "number",
"description": "Port to listen on.",
"default": 8771
},
"rpc_tcp_port": {
"type": "number",
"description": "Port for API-to-Gateway internal RPC over TCP.",
"default": 8772
},
"api_host": {
"type": "string",
"description": "Host/Port of the API service to communicate with."
},
"api_canary_host": {
"type": "string",
"description": "Host/Port of the Canary API service (optional).",
"default": ""
},
"admin_reload_secret": {
"type": "string",
"description": "Secret used to trigger code hot-swapping/reloads."

View File

@@ -0,0 +1,24 @@
{
"nats_services": {
"type": "object",
"description": "Configuration for NATS messaging.",
"additionalProperties": false,
"properties": {
"core_url": {
"type": "string",
"description": "NATS Core server URL for RPC.",
"default": "nats://127.0.0.1:4222"
},
"jetstream_url": {
"type": "string",
"description": "NATS JetStream server URL for job queues.",
"default": "nats://127.0.0.1:4223"
},
"auth_token": {
"type": "string",
"description": "Authentication token for NATS connections.",
"default": ""
}
}
}
}

View File

@@ -7,12 +7,12 @@
"port": {
"type": "number",
"description": "Port to listen on.",
"default": 8080
"default": 8088
},
"host": {
"type": "string",
"description": "Network interface to bind to.",
"default": "0.0.0.0"
"concurrency": {
"type": "number",
"description": "Number of concurrent worker threads.",
"default": 1
},
"data_dir": {
"type": "string",
@@ -37,42 +37,12 @@
"snapshot_zstd_level": {
"type": "number",
"description": "Zstd compression level for snapshots (1-22).",
"minimum": 1,
"maximum": 22,
"default": 3
},
"visibility_timeout_backoff_ms": {
"type": "number",
"description": "Backoff duration in milliseconds for visibility timeouts.",
"default": 1000
},
"max_receive_batch": {
"type": "number",
"description": "Maximum number of messages to retrieve in a single batch.",
"default": 10
},
"command_buffer": {
"type": "number",
"description": "Size of the internal command buffer.",
"default": 1000
},
"export_timeout": {
"type": "number",
"description": "Timeout in milliseconds for data export operations.",
"default": 30000
},
"concurrency": {
"type": "number",
"description": "Number of concurrent worker threads.",
"default": 2
},
"rate_limit": {
"description": "Rate limiting configuration for the Queue service.",
"$ref": "#/$defs/rate_limit"
},
"secret": {
"type": "string",
"description": "Authentication secret for the Queue service."
"description": "Secret for queue API authentication.",
"default": ""
}
}
}

View File

@@ -9,6 +9,10 @@
"$ref": "#/$defs/s3_service",
"default": {}
},
"nats": {
"$ref": "#/$defs/nats_services",
"default": {}
},
"queue": {
"$ref": "#/$defs/queue_service",
"default": {}

View File

@@ -3,7 +3,7 @@
"title": "Fluxer Config",
"type": "object",
"additionalProperties": false,
"required": ["env", "domain", "database", "services", "gateway", "auth"],
"required": ["env", "domain", "database", "services", "auth"],
"if": {
"required": ["instance"],
"properties": {
@@ -89,10 +89,6 @@
"description": "Configuration for individual Fluxer services.",
"$ref": "#/$defs/services"
},
"gateway": {
"description": "Configuration for the real-time Gateway service connection.",
"$ref": "#/$defs/gateway_connection"
},
"auth": {
"description": "Authentication and security settings.",
"$ref": "#/$defs/auth"