Skip to content

Releases: beeper/line

1.2.0

17 May 07:41
b41f519

Choose a tag to compare

🔄️ Changelog (1.1.0 → 1.2.0)

✨ New Features

  • Group creation — create LINE rooms from Beeper groups; supports custom group names, contact aliases, user search (thanks @clins1994 for the help)
  • Group management — system messages for invites, leaves, joins; handle leaving groups properly
  • Mentions — support for @mentions in messages
  • Custom emojis — support for LINE's custom emoji in messages
  • Predefined emojis — support for the 6 predefined LINE emojis
  • Block users — block/unblock users from Matrix
  • Group join requests — group join requests now visible in Beeper (thanks @clins1994 for the help)

🐛 Bug Fixes

  • E2EE decryption on first message — first message of a chat no longer fails to decrypt
  • Crash on new contact message — handle nil contact gracefully
  • Audio messages decryption — handle OID extraction from decrypted audio messages
  • Video reliability — media downloads use context for better error handling
  • Reactions disabled — outgoing reactions disabled (LINE doesn't support them)
  • Group member decryption — new group members can decrypt messages without restart
  • E2EE key on group creation — ensure keys are generated when creating new groups
  • Reactions fix — broken reactions from previous PR resolved
  • Docker — remove VOLUME /data directive causing permission issues (credits: @daniel-rudaev)

💡 Refactoring

  • Swapped ifs for switch case in handleOperation
  • Upgraded mautrix to 0.28.0

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