Updating changelog + build for 2.2.0

This commit is contained in:
Jack Kingsman
2026-02-28 13:33:49 -08:00
parent 60c0262490
commit bac4db6b0a
5 changed files with 24 additions and 18 deletions

View File

@@ -1,3 +1,19 @@
## [2.2.0] - 2026-02-28
Feature: Track advert paths and use to disambiguate repeater identity in visualizer
Feature: Contact info pane
Feature: Overhaul repeater interface
Bugfix: Misc. frontend rendering + perf improvements
Bugfix: Better behavior around radio locking and autofetch/polling
Bugifx: Clear channel name field on new-channel modal tab change
Bugfix: Repeater inforbox can scroll
Bugfix: Better handling of historical DM encrypts
Bugfix: Handle errors if returned in prefetch phase
Misc: Radio event response failure is logged/surfaced better
Misc: Improve test coverage and remove dead code
Misc: Documentatin and errata improvements
Misc: Databse storage optimization
## [2.1.0] - 2026-02-23
Feature: Add ability to remember last-used channel on load

View File

@@ -1,7 +1,7 @@
{
"name": "remoteterm-meshcore-frontend",
"private": true,
"version": "2.1.0",
"version": "2.2.0",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,6 +1,6 @@
[project]
name = "remoteterm-meshcore"
version = "2.1.0"
version = "2.2.0"
description = "RemoteTerm - Web interface for MeshCore radio mesh networks"
readme = "README.md"
requires-python = ">=3.10"

View File

@@ -2274,9 +2274,7 @@ class TestHistoricalChannelDecryptIntegration:
return bytes([0x15, 0x00]) + payload
@pytest.mark.asyncio
async def test_store_then_add_room_then_historical_decrypt(
self, test_db, captured_broadcasts
):
async def test_store_then_add_room_then_historical_decrypt(self, test_db, captured_broadcasts):
"""Full flow: packet arrives for unknown channel, channel added later, historical decrypt recovers the message."""
import hashlib as _hashlib
@@ -2310,18 +2308,14 @@ class TestHistoricalChannelDecryptIntegration:
packet_id = undecrypted[0][0]
# --- Step 2: user adds the hashtag room ---
await ChannelRepository.upsert(
key=channel_key_hex, name=channel_name, is_hashtag=True
)
await ChannelRepository.upsert(key=channel_key_hex, name=channel_name, is_hashtag=True)
# --- Step 3: run historical channel decryption (real crypto, no mocks) ---
broadcasts.clear()
with patch("app.websocket.ws_manager") as mock_ws:
mock_ws.broadcast = AsyncMock()
await _run_historical_channel_decryption(
channel_key, channel_key_hex, channel_name
)
await _run_historical_channel_decryption(channel_key, channel_key_hex, channel_name)
# --- Verify: message was created in DB ---
messages = await MessageRepository.get_all(
@@ -2339,9 +2333,7 @@ class TestHistoricalChannelDecryptIntegration:
assert packet_id not in remaining_ids
@pytest.mark.asyncio
async def test_historical_decrypt_skips_wrong_channel(
self, test_db, captured_broadcasts
):
async def test_historical_decrypt_skips_wrong_channel(self, test_db, captured_broadcasts):
"""Historical decrypt with a different channel key does not decrypt the packet."""
import hashlib as _hashlib
@@ -2377,9 +2369,7 @@ class TestHistoricalChannelDecryptIntegration:
assert len(await RawPacketRepository.get_all_undecrypted()) == 1
@pytest.mark.asyncio
async def test_historical_decrypt_multiple_packets(
self, test_db, captured_broadcasts
):
async def test_historical_decrypt_multiple_packets(self, test_db, captured_broadcasts):
"""Historical decrypt recovers multiple messages from different senders."""
import hashlib as _hashlib

2
uv.lock generated
View File

@@ -854,7 +854,7 @@ wheels = [
[[package]]
name = "remoteterm-meshcore"
version = "2.1.0"
version = "2.2.0"
source = { virtual = "." }
dependencies = [
{ name = "aiosqlite" },