Skip to content

Releases: highesttt/matrix-line-messenger

1.1.0

15 Apr 23:21
1.1.0
2680b57

Choose a tag to compare

🔄️ 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 determineMediaMessageFlow before 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 MsgFile with 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 matchingIsNoUsableE2EEGroupKey no longer false-matches token logout errors
  • Video thumbnails — fixed double-close on temp file in extractVideoThumbnail
  • Plain media routing — correct OBS type (m endpoint) 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.yaml from 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 cancellationListenSSE accepts context.Context for proper cancellation instead of select/default polling
  • Login key extraction — deeply-nested E2EE key chain logic extracted into fetchLoginKeys with early returns
  • SSE client reuse — dedicated http.Client reused across SSE reconnects
  • Thumbnail encryption — extracted encryptThumbnail helper to remove duplication

🤖 Chores

  • Bump Chrome Extension version from 3.7.1 to 3.7.2
  • Docker build caching improvements