1324 Commits
Author SHA1 Message Date
DrSmoothl 744f25fd9b fix(protocol): integrate styled group card normalization
Keep the full control-character range limited to decoded styled-card text. Preserve member-level error isolation and cover whitespace, Unicode text, cached output, and restart behavior.

Refs #680
2026-11-09 14:57:41 +08:00
DrSmoothl 22bde5d949 fix(contacts): keep member lists available with unreadable cards
Preserve known member cards across refreshes and restarts, and report decoding failures without dropping the roster.

Refs #680
2026-11-09 14:57:11 +08:00
Auceptin ca61e6039f fix(protocol): strip control characters from styled group card text (#680) (#681) 2026-11-09 13:59:58 +08:00
DrSmoothl 9df7b7524b fix(onebot): preserve voice transcription metadata
Refs #607
2026-11-08 17:33:46 +08:00
DrSmoothl 0cb5daed5e chore(runtime): add macOS ARM64 native artifact 2026-11-08 02:12:26 +08:00
DrSmoothl f2ea3354f8 chore(release): v2.4.2 v2.4.2 2026-11-07 19:49:06 +08:00
DrSmoothl efcbf988b2 fix(runtime): improve ARM64 compatibility 2026-11-07 19:38:35 +08:00
DrSmoothl a341fa4b15 docs(readme): add Docker pulls badge 2026-11-07 17:22:46 +08:00
DrSmoothl 8bea681aa2 fix(core): handle group file storage limits
Retry eligible storage failures as temporary files and preserve their storage type for later use. Reject incompatible mixed content before chat publication.

Refs #644
2026-11-07 15:14:55 +08:00
DrSmoothl 84f4cde85e chore(release): v2.4.1 v2.4.1 2026-11-07 14:20:00 +08:00
DrSmoothl 6c8866b108 fix(protocol): improve upload recovery and time limits
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
2026-11-07 14:10:56 +08:00
DrSmoothl f2ade5603f fix(onebot): preserve images in message history
Refs #659
2026-11-07 13:31:14 +08:00
DrSmoothl 87f7bd8c54 fix(websocket): settle failed sends and enforce SDK request deadlines
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
2026-11-07 12:57:25 +08:00
DrSmoothl 9edc255a02 fix(onebot): distinguish group invitation identities
Expose joining members, inviters and request operators separately.
Preserve existing notice fields and report unavailable invitation identities explicitly.

Refs #643
2026-11-06 23:37:00 +08:00
DrSmoothl 7425cfae20 fix(bridge): restore Windows account readiness
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
2026-11-06 22:49:52 +08:00
DrSmoothl 1b80487119 test(common): pin logger benchmark file level
Refs #651
2026-11-06 22:49:52 +08:00
DrSmoothl 43b63e9a75 fix(onebot): restore group join request delivery
Refs #658
2026-11-06 22:49:52 +08:00
DrSmoothl b0612d8d12 fix(onebot): identify QQ automatic replies in private messages
Refs #663
2026-11-06 22:49:52 +08:00
晚晴 e031cd4108 perf(common): reduce log snapshot and file-only allocation overhead (#656)
Refs #651
2026-11-06 21:51:46 +08:00
DrSmoothl b6b433af98 fix(common): release retained cache and log memory
Dispose contact caches with account sessions and prevent late loads from restoring timers. Release discarded log content while preserving visible text.

Refs #651
2026-11-04 23:23:44 +08:00
DrSmoothl ae1ec3be0e fix(protocol): decode styled group member cards
Use the display text for group messages and member lookups. Refresh unreadable cached cards on demand.

Refs #646
2026-11-04 23:23:44 +08:00
晚晴 33bebb4446 perf(common): reduce retained memory in logs and TTL caches (#652) 2026-11-04 22:29:39 +08:00
Hao_Ming bab5aafd91 docs(readme): move mascot into heading to fix border overlap (#641) 2026-11-03 13:19:35 +08:00
DrSmoothl e44e4ced17 chore(release): v2.4.0 v2.4.0 2026-11-03 11:07:44 +08:00
DrSmoothl f452c657ed fix(webui): tint default surfaces with the active accent 2026-11-03 11:03:29 +08:00
DrSmoothl 1cd838e7a1 feat(webui): adopt lavender mascot branding 2026-11-03 10:41:11 +08:00
DrSmoothl a8f460499b fix(deps): update vulnerable transitive dependencies 2026-11-03 09:41:20 +08:00
DrSmoothl a977228a09 docs(readme): introduce the SnowLuma mascot 2026-11-03 09:39:21 +08:00
DrSmoothl e9faec0e28 chore(release): v2.3.4 v2.3.4 2026-11-02 09:09:06 +08:00
DrSmoothl 4a10f38743 fix(onebot): resolve private reply targets consistently
Refs #618
2026-11-02 08:47:26 +08:00
DrSmoothl a1688a33b0 fix(bridge): detect initial connection timeouts
Keep connection timeouts recoverable through retry or unload.

Refs #578
2026-11-02 08:25:15 +08:00
DrSmoothl 45c3a6841a feat(onebot): expose public contact profiles
Refs #615
2026-11-02 08:06:27 +08:00
DrSmoothl 2b63f375fc fix(onebot): handle non-friend group invitations
Refs #636
2026-11-02 07:55:40 +08:00
DrSmoothl 0fa912a32e feat(sdk): accept reverse WebSocket connections
Refs #617
2026-11-01 23:26:50 +08:00
DrSmoothl 5f1700fc1b feat(onebot): add HTTP event streaming
Refs #593
2026-11-01 23:15:51 +08:00
DrSmoothl 54038c775a fix(runtime): report private messages sent from the client
Refs #603
2026-11-01 23:01:38 +08:00
DrSmoothl c15ecd0402 feat(qzone): add complete feed lookup by tid
Refs #633
2026-11-01 21:31:52 +08:00
DrSmoothl f79187f36a ci: enforce dev targets and issue references for pull requests
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.
2026-11-01 21:09:48 +08:00
DrSmoothl 24ec8a7eba docs(readme): remove the media size limitations section 2026-11-01 20:47:25 +08:00
DrSmoothl 3773106425 fix(onebot): validate payload limits and correct frame diagnostics
Reject invalid payload limits consistently in configuration files, restores, and API writes. Preserve pending frame bytes when reporting oversized messages.

Refs #627
2026-11-01 20:42:20 +08:00
DrSmoothl f65880b164 fix(protocol): handle null Qzone share errors
Refs #625
2026-11-01 20:42:20 +08:00
KazusaUwU 8d9f44b6b0 feat(onebot): make the websocket frame cap configurable and diagnosable (#631)
- 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
2026-11-01 20:29:16 +08:00
KazusaUwU bd40ac3522 feat(protocol): make highway media download limits configurable (#632)
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.
2026-11-01 20:29:01 +08:00
DrSmoothl 60733aacab chore(release): v2.3.3 v2.3.3 2026-11-01 14:05:51 +08:00
DrSmoothl a2ce3b2c19 fix(runtime): improve Linux startup compatibility 2026-11-01 13:58:15 +08:00
DrSmoothl 7882081bdb chore(release): v2.3.2 v2.3.2 2026-11-01 01:04:27 +08:00
DrSmoothl f1ef07544d fix(runtime): improve Linux client startup and message reception
Refs #623
2026-11-01 01:02:44 +08:00
DrSmoothl c120b0fb97 chore(release): v2.3.1 v2.3.1 2026-10-31 23:41:23 +08:00
DrSmoothl 93290e4d0c fix(protocol): allow clearing group member cards
Refs #620
2026-10-31 23:25:45 +08:00
DrSmoothl fa4870bdca fix(runtime): improve Windows message reception 2026-10-31 23:03:23 +08:00