Retry eligible storage failures as temporary files and preserve their storage type for later use. Reject incompatible mixed content before chat publication.
Refs #644
Apply configurable idle and total transfer deadlines, cover supplied upload candidates, and retain recent endpoint outcomes per account and upload type. Preserve failed action responses and resource cleanup.
Refs #637
Settle queued sends once when a connection fails or closes before opening,
and reject further sends while preserving the original failure.
Include connection waits in SDK request deadlines without closing shared
connections or sending expired actions after a late connection.
Refs #665
Refs #666
Keep account confirmation active until a valid login is ready and clear stale bindings when readiness is lost.
Update Windows components and cover login recovery.
Refs #638
Dispose contact caches with account sessions and prevent late loads from restoring timers. Release discarded log content while preserving visible text.
Refs #651
Explain policy violations before closing pull requests, validate linked issues, and cover the guard with isolated tests. Align contributor guidance and keep feature details out of the root README.
- expose DEFAULT_MAX_PAYLOAD_BYTES; an inbound frame over the cap now reports its
declared byte size, message type and the effective limit, recovered by walking
the buffered frame stream so the number is right when a chunk carries several
frames, the oversized header spans chunks, or control frames are interleaved;
when the walk cannot reach a verdict the error names the cap without a size
- truncate close reasons to the RFC 6455 control-frame room on a UTF-8 boundary
(an over-long reason previously produced an invalid control frame)
- add optional maxPayloadBytes (default 100 MiB unchanged) to the three adapters
that read WebSocket frames: wsServers, wsClients and httpServers with
enableWebSocket. httpClients rejects the field because it has no WebSocket
transport, and the value is part of the binding signature so a change rebinds
the transport instead of being saved without taking effect
- keep the existing 1009 log lines and append the actionable hint instead of
replacing the template
- WebUI field (including httpServers once the embedded listener is on) and README
docs for the 100 MiB => ~445 s (7:26) inline PCM consequence
Bound the two hardcoded limits of the shared HTTP media download engine
(`loadBinarySource` / `stageSourceToDisk`) with deployment-wide environment
settings, following the existing `positiveIntEnv` convention:
- SNOWLUMA_HTTP_DOWNLOAD_TIMEOUT_MS (default 60000): one download attempt.
- SNOWLUMA_MAX_BINARY_DOWNLOAD_BYTES (default 1073741824): the implicit cap on
a binary source buffered in memory.
Both defaults are unchanged, so an unconfigured deployment behaves exactly as
before, and unusable values are logged and ignored. Callers that pass their own
ceiling keep it: group/private files and flash transfer still use 4 GiB, inline
`base64://` / `data:` flash sources keep the 1 GiB buffered-load ceiling, and
video upload has its own limit. Documented in HIGHWAY_UPLOADS.md.
Surface connection failures immediately to waiting requests and keep the original error visible until the session reconnects. Ignore late login updates from the failed connection.