## PurpleI2P/i2pd — 2.60.0…2.61.0

_197+ commits._

### Features
- **feat: lanuch web interface haiku gui** (7ee788c)
- **add: haiku daemon prepare message for show tunnel** (0d0be70)
- **create new pkey for public key only** (40cf684)

### Fixes
- **Merge pull request #2430 from freeacetone/fix-ssu2-followon-overflow** (944307b)
- **fix buffer overflow on large SSU2 first fragment and I2NP blocks** (2582103)
- **Merge pull request #2428 from freeacetone/fix-cleanup-loops** (553698c)
- **fix wrong end condition in cleanup loops** (0cd915e)
- **fix: имя переменной** (1f1fa12)
- **fix: fix daemon.cpp** (dd3cc6f)
- **fix rule. соня сказала хватит прав таких** (3d3c822)
- **fix unveil option** (91e2762)
- **fix typing openbsd unveil** (a49e80f)
- **fix typing** (a3e8777)
- **fix typing** (766fab7)
- **fix typing** (92ed3c4)
- **fix typing** (d6b6390)
- **fix typing** (c11a3af)
- **fix: fix compilation** (a5f7c64)
- **openbsd unevil/pledge fix compilation** (1d1067a)
- **fix: fix MLKEM_public_from_private logic** (512d313)
- **fix typing** (6142097)
- **Fix formatting issues in Signature.cpp** (96e484d)
- **pq/libressl fix: fix compilation** (810dd65)

### Backend
- **[i18n] update translations** (635b013)
- **ban if published address only** (e3726b0)
- **Merge pull request #2431 from freeacetone/ban-invalid-ssu2-sessionconfirmed** (a88eb38)
- **ban router on invalid block in SSU2 SessionConfirmed** (b850a33)
- **initialize incomplete message fragment in constructor** (5f6ee84)
- **Fixed typo** (62bf51c)
- **2.61.0** (ecd5ff1)
- **schedule tracker request** (bb78946)
- **use boost::dynamic_bitset for bitfield. Handle HaveAll and HaveNone messages** (1415e91)
- **use boost::dynamic_bitset for block's bits in pieces** (f8ed94b)
- **list of connections per piece. send bitfield** (8971c22)
- **don't replace Host header if it's .b32.i2p already** (361bee9)
- **replace Host to .b32.i2p address** (58bdff1)
- **create and save bitfield from pieces** (0c88969)
- **parse compact tracker response** (d97d272)
- **handle request message** (af1106e)
- **handle Piece message** (d4448ee)
- **CreateAndReserveFile added** (64f4987)
- **handle Bitfield message** (b44128f)
- **connect to peer. send handshake** (e8420b4)
- **const GetOwner** (d30ff0e)
- **incoming peer connections** (ef5eea9)
- **include FROM to FIN packet if offline signature** (76212eb)
- **common BEncoded parser** (593b4b5)
- **correct options size for FIN packet with offline signature** (7a2d904)
- **parse peers from tracker** (9aa24e5)
- **update lazygravy_at_mail.i2p.crt** (4de4e0f)
- **keepaliveinterval for UDP client tunnel** (ab78fae)
- **fixed build error** (d381628)
- **request tracker** (39efa3e)
- **made to_string const** (06510d5)
- **TorrentsTunnel, PeerID, read .torrent files** (c2b5762)
- **Initial commit for torrents. Bencode** (91c3b00)
- **pass std::list to SendPackets. Splice to m_SentPackets instead copy** (51d3b7b)
- **use shared_ptr for HTTP and SOCKS proxy** (64d6d86)
- **ML-KEM-768 for SSU2 by default if applicable** (782a72c)
- **use std::list for sent packets** (fd543f9)
- **data sent with SYN packet should fit single packet** (8f94b47)
- **don't create nonce again for encryption** (0278741)
- **selectable text in main window** (45ad7d4)
- **show B33 address if applicable** (a215fbc)
- **std::list for NACKed packets** (8ace25a)
- **Update README.md** (6a52309)
- **No LLM/AI policy added** (ae27f6d)
- **don't print error if ElGamal decryption failed** (74f6c41)
- **spiral.likogan.dev reseed added** (8497a42)
- **use string_view for address in SOCKS commands. Allow resolving clearnet addresses** (868cc91)
- **correct RESOLVE response** (18d4c82)
- **implement SOCKS command RESOLVE** (42d036a)
- **always pass ECIES tag as uin64_t** (62e10d0)
- **GetGarlicKey return [key,tag] pair. Remove replyIV** (a3074ae)
- **don't send more packets without initial ack due to incorrect RTT calculation** (c73e8db)
- **Merge pull request #2421 from freeacetone/openssl** (f87d4c0)
- **refresh offline transient on destination service** (6d79da0)
- **send more packets without ack to incoming stream if ack was received in another stream before** (4941e13)
- **send more packets without SYNACK** (05e270e)
- **send data with SYN packet if available** (9d60d29)
- **fixed typo** (1a82a7d)
- **send more packets without SYNACK for outgoing streams** (81d9921)
- **Merge pull request #2420 from freeacetone/sam-datagram-b33** (ebdc9bd)
- **Merge pull request #2414 from wipedlifepotato/openssl** (ed73ebe)
- **Haiku gui, close button** (7f3df43)
- **SAM: resolve datagram destinations like streams, supporting b32 and b33 hosts** (345e85e)
- **Merge branch 'openssl' of github.com:wipedlifepotato/i2pd into openssl** (93f4d78)
- **pre-init: Tab view for tunnels** (5b8bf01)
- **Merge pull request #2419 from freeacetone/openssl** (f609196)
- **refresh offline-signed transient on destination re-create** (acc0f94)
- **Merge pull request #2416 from freeacetone/openssl** (ec5131d)
- **fixed SAM crash on shared destination teardown** (e58701d)
- **fixed typo** (1ae6f29)
- **reply with available bandwidth if it exceeds requested** (39b9405)
- **random tunnel selection. submit key/tag to proper pool when recreate outbound tunnel** (f947237)
- **Merge branch 'PurpleI2P:openssl' into openssl** (31c5ca3)
- **Merge branch 'openssl' of github.com:wipedlifepotato/i2pd into openssl** (ee51ae7)
- **haiku gui os pre init tunnel show** (d3a2974)
- **fixed api/tests build error** (a80b5ec)
- **handle 'm' and 'r' tunnel build request options** (be0866f)
- **Merge pull request #2413 from wipedlifepotato/openssl** (0ae04b8)
- **Merge branch 'openssl' into openssl** (128f1ba)
- **из виртуалки файл** (f3f4c11)
- **Merge pull request #2412 from PurpleI2P/revert-2411-openssl** (c4a3aa9)
- **Revert "Haiku OS gui"** (7febe58)
- **Merge pull request #2411 from wipedlifepotato/openssl** (c5acfed)
- **haiku: update logic** (acc21bf)
- **don't try to reseed again if no reseeds speficied** (0b12f1c)
- **keep preferred encryption type after update** (459d4d6)
- **detect and check imcompatible crypto between local destination and LeaseSet** (a776441)
- **fixed wrong Connection field for websocket** (149def0)
- **fixed typo** (e80aecc)
- **inbound.randomKey and outbound.randomKey I2CP params** (5b3d7b5)
- **fixed possible overflow** (e51fef8)
- **calculate offset as signed integer** (5d216e2)
- **don't pick a peer scheduled for deletion** (28d0ea1)
- **fixed typo** (1d8f58c)
- **eparate peer ordering for inbound and outbound tunnels** (03fa91e)
- **consistent locale in profiles** (9446e1a)
- **don't consider empty tunnel message as error** (7fc2136)
- **drop and cleanup peer's sessions before delete** (4a292d3)
- **create short tunnel build message only** (623d36e)
- **always send short tunnel build message** (f50cf4d)
- **always submit ECIES  key/tag** (6cfef96)
- **request ECIES encrypted reply for LeaseSet lookup  with post-quantum crypto** (0a51aa4)
- **send ECIES encrypted tunnel test for destinations with post-quantum crypto** (3668a8a)
- **send short tunnel build message** (15f1b40)
- **doen't increase reference counter for default  HTTP and SOCKS proxy** (fa80f88)
- **use correct public key for libressl's encaps** (af6d144)
- **Merge pull request #2403 from wipedlifepotato/openbsd** (b4e3059)
- **option for disable unveil/pledge** (dbe0aab)
- **only ld.so from libexec** (1333c92)
- **always set MLKEM type ML-KEM-768 for libressl** (69f13a1)
- **remove pledge rule: exec** (8c20c22)
- **pledge openbsd** (e888070)
- **removed warnings** (0044b8e)
- **Merge pull request #2402 from wipedlifepotato/MLKEM_libressl** (a9750f3)
- **openbsd: unveil pidfile** (2aef71f)
- **логика препроцессора, для pq** (3b5bd67)
- **Merge branch 'MLKEM_libressl' of github.com:wipedlifepotato/i2pd into MLKEM_libressl** (b37001a)
- **НЕТРОГАТЬ ФАЙЛИК** (8a5f9e2)
- **unevil logic** (acb144f)
- **pledge** (858815b)
- **libressl cache pubkey** (736b569)
- **use cached pub key** (ddc0f05)
- **get public key libressl** (8562404)
- **Merge branch 'MLKEM_libressl' of github.com:wipedlifepotato/i2pd into MLKEM_libressl** (e594a7d)
- **mlkem libressl generate private key** (bf1d6cc)
- **Merge branch 'openssl' into MLKEM_libressl** (d8b5be1)
- **PQ/LibreSSL: encap/decap** (321483f)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/PurpleI2P/i2pd?utm_source=github-action)._