Skip to content

Releases: koval01/lovensepy

v1.1.4

30 Mar 20:38

Choose a tag to compare

Docker
The MQTT library integration is now available in a more user-friendly format, including via Docker

Links: CHANGELOG · compare v1.1.2…v1.1.3 · PyPI

Nightly (main) - 850462152801fe5e1865dd6d27b65f911c108aee

25 Mar 18:31

Choose a tag to compare

nightly-main

Experimental build of binary releases

v1.1.3

24 Mar 18:22

Choose a tag to compare

HTTP (aiohttp)
Sync and async transports, Socket API token/socket URL helpers, and get_qr_code use aiohttp; JSON bodies are parsed with read_response_json so LAN/cloud responses still decode when Content-Type is not application/json.

WebSocket
WsTransport is backed by aiohttp ws_connect instead of the websockets package; receive keeps a stable socket reference across close(), and all outgoing frames go through an asyncio.Lock so concurrent Engine.IO sends cannot interleave send_str.

Dependencies
Runtime stack is aiohttp + pydantic only (websockets and hyperframe removed as direct deps). Dev/docs/service extras refreshed (see lockfile); pip-audit is capped at <2.10 where it conflicts with semgrep on tomli.

Links: CHANGELOG · compare v1.1.2…v1.1.3 · PyPI

v1.1.2

23 Mar 21:30

Choose a tag to compare

Concurrency
Thread-safe BLE per-loop connect lock on macOS, ControlScheduler state locking for parallel FastAPI handlers, and guarded lazy httpx.AsyncClient creation in async HTTP transport.

Shared command helpers
New lovensepy._command_utils: timeSec clamp, nested JSON parsing, pattern-rule letters, and function action clamping — reused by LAN, Server, and BLE paths.

FastAPI LAN service
Centralized HTTP error mapping (LovenseError → 502, shutdown/scheduler cases); async-safe task listing and preset/pattern session matching.

API hygiene
Legacy Pydantic request payload classes stay in lovensepy._models but are no longer in __all__ (dict payloads remain the runtime API).

Docs
Appendix lists examples/ble_direct_send_uart_once.py.

Tests
Scheduler concurrency tests, BLE connect-serializer lock test, and tests/run_all.py extended with FastAPI + BLE metadata phases.

Links: CHANGELOG · compare v1.1.1…v1.1.2 · PyPI

v1.1.1

23 Mar 20:48

Choose a tag to compare

BLE branding
marketing/firmware metadata and resolve_ble_branding_nickname for stable display names (ToyConfig map, firmware rules, UART fallback).

Docs
Russian mirror of the docs site (.ru.md next to .en.md), MkDocs and CI updated.

Home Assistant MQTT
discovery / topics / bridge behaviour refinements.

FastAPI LAN service
config, models, and endpoints aligned with current BLE hub behaviour.

Tests
more coverage for BLE branding, marketing firmware, and hub paths.

Links: CHANGELOG · compare v1.1.0…v1.1.1 · PyPI

v1.1.0

22 Mar 20:45

Choose a tag to compare

BLE (direct connection)
Bluetooth Low Energy support: direct client and hub, UART-based presets (Pat / Preset), and environment-driven tuning (including LOVENSEPY_BLE_PRESET_UART and LOVENSEPY_BLE_SYNC_TIMEOUT). Install extras with pip install lovensepy[ble].

One async API across transports
LovenseAsyncControlClient is the shared abstract base: the same control surface for LAN, server, and BLE—you only swap the concrete client class. AsyncServerClient now matches LAN/BLE (wait_for_completion, open_ended on presets, get_toys(..., query_battery=...), Position / PatternV2 helpers, unified pattern_request shape).

FastAPI as a first-class service
The FastAPI layer is part of the package (lovensepy.services.fastapi), not a loose sample: backend and exports align with the shared async API. For BLE presets, POST /command/preset no longer accepts uart_index / uart_keyword; choose the UART prefix via environment and reconnect.

Documentation
Docs cover installation, connection methods, tutorials, direct BLE, and API reference—including type hints and swapping transports through LovenseAsyncControlClient.

Links: CHANGELOG · compare v1.0.6…v1.1.0 · PyPI

v1.0.6

20 Mar 19:41

Choose a tag to compare

This release adds a Home Assistant–oriented MQTT bridge workflow, tightens HTTP client identity, and aligns local/CI checks with Semgrep.

🏠 Home Assistant (MQTT)

  • MQTT bridge (HAMqttBridge) for discovery and command topics, with safer error handling and feature-level state tracking.
  • Lazy export path for HA integration from the package root where applicable.
  • Unit tests for bridge behavior (topic mapping, commands, discovery payloads).

🌐 HTTP & packaging

  • Consistent User-Agent / default headers via package metadata (install or editable install keeps version in sync with pyproject.toml).
  • Version bump to 1.0.6.

✅ Developer experience

  • README: Semgrep invocation, expanded usage/docs (including FastAPI LAN REST tutorial references where documented).

Full Changelog: v1.0.5...v1.0.6

v1.0.5

19 Mar 13:32

Choose a tag to compare

🚀 Major Branding & Meta Update

This release marks the official transition and stabilization of the project's identity.

🔄 Renaming & Branding

  • Repository Renamed: pylovelovensepy. Now the GitHub URL perfectly matches the PyPI package name.
  • Documentation: Cleaned up README.md, removed legacy naming notes, and updated all internal links.

🛠 Metadata & SEO

  • Pyproject Overhaul: Added project.urls including Repository, Issues, and Documentation links.
  • PyPI Integration: Meta-information on PyPI will now correctly point back to this repository.
  • Keywords: Updated project tags for better discoverability in SexTech and IoT categories.

🐍 Technical Changes

  • Python Support: Updated requires-python to >=3.12.
  • Linter Config: Refined ruff rules to better handle Lovense API's camelCase naming conventions.

Full Changelog: v1.0.4...v1.0.5

v1.0.4

18 Mar 21:17

Choose a tag to compare

First release on github