Releases: highesttt/matrix-line-messenger
Releases · highesttt/matrix-line-messenger
1.1.0
🔄️ Changelog (1.0.2 → 1.1.0)
✨New Features
- Letter Sealing OFF (LSOFF) support — login and messaging for accounts without E2EE enabled, with automatic plain text fallback
- Audio messages — send and receive voice notes / audio files (E2EE and plain)
- Video & file receive — plain media receive with correct OBS routing
- Location messages — receive and display LINE location shares with Google Maps links
- Contact sharing — LINE contacts shown as notices; device contacts bridged as vCard files
- Call notifications — voice/video call events displayed with duration or missed status
- Message unsending — unsend messages from Matrix (with LINE's 24h limit and proper error)
- Link previews — text messages include URL previews via LINE's GetPageInfo
- Custom display names — 1:1 chats use the contact's custom display name
- Media flow detection — check
determineMediaMessageFlowbefore choosing E2EE vs plain upload path - File upload ZIP fallback — files rejected by LINE are automatically retried wrapped in a ZIP archive (matching Chrome Extension behavior)
- Additional audio/video MIME types — files sent as
MsgFilewith audio/video/image MIME are remapped to the correct LINE content type
🐛 Bug Fixes
- First-login E2EE key extraction — fixed crash when fetching E2EE keys on initial login
- Session recovery — bridge auto-reconnects when a user logs into the real LINE Chrome Extension
- SSE long-polling — use timeout-free HTTP client to prevent premature disconnects; context-based cancellation for clean shutdown
- OBS download reliability — retry on 404 and 202 (media still processing); graceful placeholders on failure
- Contact name updates — live contact renames propagate via SSE events with a TTL cache
- E2EE error matching —
IsNoUsableE2EEGroupKeyno longer false-matches token logout errors - Video thumbnails — fixed double-close on temp file in
extractVideoThumbnail - Plain media routing — correct OBS type (
mendpoint) for video/file plain receive - Media captions — reject unsupported captions; use correct filename from Matrix
- Avatar sync — sync avatars for LINE business/official accounts; mark DM rooms correctly
- Registration YAML — fixed badly generated
registration.yamlfrom docker-run script
💡 Refactoring
- Handler separation — message conversion split into
pkg/connector/handlers/with individual files per content type (call, image, video, audio, file, sticker, location, contact, text) - WaitGroups — all goroutines (sync, poll, reactions, chat updates) tracked with
sync.WaitGroup;Disconnect()waits for clean shutdown - SSE context cancellation —
ListenSSEacceptscontext.Contextfor proper cancellation instead ofselect/defaultpolling - Login key extraction — deeply-nested E2EE key chain logic extracted into
fetchLoginKeyswith early returns - SSE client reuse — dedicated
http.Clientreused across SSE reconnects - Thumbnail encryption — extracted
encryptThumbnailhelper to remove duplication
🤖 Chores
- Bump Chrome Extension version from 3.7.1 to 3.7.2
- Docker build caching improvements