Skip to content

Releases: evex-dev/linejs

v3.2.1 fix(relation): serialize add friend requests correctly by @TsungPao

Choose a tag to compare

@EdamAme-x EdamAme-x released this 13 Jul 06:26
3535675

What's Changed

  • fix(relation): serialize add friend requests correctly by @TsungPao in #210

New Contributors

Full Changelog: v3.2.0...v3.2.1

v3.2.0 - add some utils for square / media

Choose a tag to compare

@EdamAme-x EdamAme-x released this 12 Jul 11:05
d4728d7

What's Changed

  • feat(timeline): Note media upload (uploadNoteMedia / uploadNoteCommentImage) by @mimimiku778 in #208
  • feat(square): send image / video / audio to a SquareChat (OpenChat) by @mimimiku778 in #206

New Contributors

Full Changelog: v3.1.7...v3.2.0

v3.1.7 - Fix 1:1 audio call T103 timeout

Choose a tag to compare

@EdamAme-x EdamAme-x released this 07 Jul 16:17
58deecb

Fix: 1:1 audio call T103 timeout (#198)

1:1 audio calls were dropping with a T103 timeout ~10s after the callee answered. Three root causes fixed:

  • conn_rsp mChanId: was hardcoded to 1 instead of echoing the value from the caller's conn_req
  • BEPI/MC handshake: added post-answer media-control channel negotiation that LINE's PLANET transport requires
  • DATA SRTP: added SRTP key derivation for the DATA channel alongside AUDIO

Tested with a real 1:1 call — MEDIA READY achieved, no T103 timeout.

Co-authored-by: @botnick

v3.1.6 - Fix numeric message offset

Choose a tag to compare

@EdamAme-x EdamAme-x released this 06 Jul 23:05
09090f5

What's Changed

Bug Fixes

  • fix(thrift): use standard XOR zigzag decode in TMoreCompactProtocol (#201)
    • Fixed decodeZigZag() using a non-standard multiplication formula that was off by +1 for negative values
    • Fixed type-16 string-ID delta decoder using the same broken formula
    • This caused numeric-only messages (e.g. "100") to be received with +1 to +3 offset, growing with sending speed
    • Closes #200

Contributors

Full Changelog: v3.1.5...v3.1.6

v3.1.5 - E2EE QR Login Key Verification Fix

Choose a tag to compare

@EdamAme-x EdamAme-x released this 05 Jul 11:28
166da0d

What's Changed

Bug Fixes

  • fix(e2ee): verify transferred key pair after QR login and fallback to fresh registration (#197, fixes #195)
    • After QR login, accounts with pre-existing E2EE identity keys could end up with a stored private key that doesn't match the server-registered public key, causing deterministic "Unsupported state or unable to authenticate data" GCM errors on text message decryption
    • decodeE2EEKeyV1 now validates decoded keys before storing (privKey→pubKey derivation + server-registered pubKey check)
    • Falls back to registering a fresh Curve25519 key pair when verification fails
    • Emits e2ee:keyMismatch event for observability

New Features

  • feat(relation): add findContactBySearchIdOrTicketV3 and addFriendByUserId (#196)
    • RelationService.findContactBySearchIdOrTicketV3({ searchId }) — resolves a Contact from a LINE ID via RE4
    • RelationService.addFriendByUserId({ userId }) — searches by id then adds as friend
    • RelationService.findContactByPhoneV3({ phoneNumber }) and addFriendByPhone({ phoneNumber })

Full Changelog: v3.1.4...v3.1.5

v3.1.4 - Thrift I64 bigint serialization fix

Choose a tag to compare

@EdamAme-x EdamAme-x released this 18 Jun 13:27
5e9491b

Bug fix

  • thrift: bigint I64 fields (e.g. a message ID passed to talk.react()) were serialized incorrectly. The value was handed to node-int64 as a decimal string, which the library parses as hex, corrupting the value on the wire and causing the LINE server to return MESSAGE_NOT_FOUND / NO_MESSAGE. The writer now encodes the full 64-bit two's-complement value as a padded hex string. (#194, fixes #193)

Thanks to @asremix for the detailed report and root-cause analysis.

Full Changelog: v3.1.3...v3.1.4

v3.1.3 - Android Login and Docs Fixes

Choose a tag to compare

@EdamAme-x EdamAme-x released this 31 May 00:45
32e8435

What's Changed

Full Changelog: v3.1.2...v3.1.3

v3.1.2 - Primary Token LEGY Fix

Choose a tag to compare

@EdamAme-x EdamAme-x released this 29 May 04:39

🎉 Call Implemented!

Highlights

  • Added automatic encrypted LEGY /enc transport for Android primary/V3 tokens.
  • loginWithAuthToken now accepts V3 credential JSON and stores refresh token metadata.
  • Fixed call example/token docs so primary-token users can run example/call/call_on_command.ts directly.
  • Improved PLANET call media handling, Opus packetization, and sample playback behavior.
  • Refined Agent I clients and tests against the current native request shape.

Verification

  • deno test -A passed: 203 tests.
  • deno publish --dry-run --allow-dirty passed for @evex/linejs, @evex/linejs-types, and @evex/linejs-agent.
  • VitePress docs build passed.
  • Live primary/V3 token smoke reached getProfile successfully.

Thanks q0jt for the call/token investigation.

v3.1.1 - Call route env info fix

Choose a tag to compare

@EdamAme-x EdamAme-x released this 28 May 14:45

Patch release for LINE Calls.\n\n- Send native-shaped call route env info by default via fromEnvInfo.devname.\n- Allow example/call/call_on_command.ts users to override LINE_CALL_DEVNAME or LINE_CALL_FROM_ENV_INFO for primary-token sessions.\n- Add INVALID_STATE guidance for acquireCallRoute(/V4) in the example and call docs.\n\nVerification:\n- deno test -A\n- deno publish --dry-run for @evex/linejs\n- deno publish --dry-run for @evex/linejs-types

v3.1.0 - Call Implemented!

Choose a tag to compare

@EdamAme-x EdamAme-x released this 28 May 05:28

?? Call Implemented!

This is the complete stable LINE Calls release. v3.1.0 is the stable public release line for the full PLANET/Cassini call stack.

Diff From The Current v2 Stable

Compared with v2.18.0:

  • 25 commits
  • 37 files changed
  • 9,383 insertions / 173 deletions
  • Full diff: v2.18.0...v3.1.0

Highlights

  • Added the public call export: @evex/linejs/call.
  • Implemented the reverse-engineered PLANET/Cassini call transport.
  • Added 1:1 outgoing audio call support through PlanetTransport.
  • Added call route acquisition wrappers and call client convenience APIs.
  • Added PLANET setup, setup response, answer, info request/response, keepalive, release, and media state handling.
  • Added SRTP media encryption/decryption, RTP/RTCP helpers, Opus encoding/decoding, WAV decoding, resampling, and audio streaming utilities.
  • Added group-call route/join support and native-shaped group PLANET participate payloads.
  • Added example/call/call_on_command.ts: a reusable !call example that calls the sender and streams unity.wav.
  • Added a bundled sample WAV with credits in example/call/CREDITS.md.
  • Added compact message support: compact plain messages, compact E2EE messages, response decoding, and fallback handling.
  • Updated device/application defaults to avoid stale x-line-application login failures.
  • Fixed login helpers so version and endpoint are passed through to BaseClient.
  • Expanded the call documentation with a full outgoing-call writeup, protocol flow, troubleshooting, and Discord support note.

Notable Files

  • packages/linejs/client/features/call/planet/transport.ts
  • packages/linejs/client/features/call/planet/schema.ts
  • packages/linejs/client/features/call/planet/crypto.ts
  • packages/linejs/client/features/call/planet/cassini.ts
  • packages/linejs/client/features/call/opus.ts
  • packages/linejs/client/features/call/audio.ts
  • packages/linejs/base/service/talk/compact.ts
  • example/call/call_on_command.ts
  • docs/docs/call.md

Verification

  • deno test -A: 189 passed, 0 failed
  • deno publish --dry-run --allow-dirty for packages/linejs: success
  • deno publish --dry-run --allow-dirty for packages/types: success in rc4 validation
  • Live device/profile smoke testing confirmed the updated login app profiles and QR-safe example defaults

Contributors

Huge congratulations and thanks to every contributor who got linejs to this milestone:

@EdamAme-x, @piloking, @nakasyou, @MocA-Love, @Madoa5561, @usuraiyukito, @techfish-11, @hafusun, @komkeao, @0xr27, @akku1139, @vonernue, @xxtomm, @nezumi0627, and @taisan11.

Special thanks to q0jt for the compact message protocol details.

Upgrade Notes

Use the stable package version:

import { PlanetTransport, decodeWavSync, opusCodecFactory } from "jsr:@evex/linejs@3.1.0/call";

The repository example can be run with:

deno run -A example/call/call_on_command.ts

If anything goes wrong, please reach out on Discord.