WHY2 (Chat) Changelog
=====================
v1.6.0:
- 9b4b4ea6: remove PQ keys migration
- 63b19a8b: fix p521 breaking changes
- 79888373: upgrade chat dependencies
- b04e4f48: add config test to configure_device fn
- b2dc12e1: move options Mutex import to client_voice feature
- 125e78e3: fix client_base compilation error in fileshare
- f70814d7: move audio device setup to client binary
- c0d2eafd: remove redundant LazyLock & Arc usage
- 42c8dc85: replace OnceLock usage with RwLock
- 2aeed734: move INPUT_READ to client binary
- 7b2baa1b: use crossterm for message coloring
- 205ba4ad: use default RexStream dims on chat
- 8812c190: encrypt downloaded files on server disk
- 8eaa4acd: serialize key grid properly in disk_stream init
- 257fae5d: store nonce in AvailableFile
- 99db50a8: implement chat i64 to/from u8 conversion helper fns
- 678f3384: implement Zeroizing radically
- b18365bd: do not push password to INPUT_HISTORY
- 7854f21c: add from_flat & to_flat methods to Grid
- da28785e: remove redundant server conditional compilation from ActiveFileshare client_id field
- 5c4bfe36: fix possible screen reattach rexstream mismatch issues
- 535505d9: use auxiliary tokens for rexstream init
- de596f6e: use correct MB definition
- ee533649: remove CONNECTIONS iteration from server deattach fn
- ad0d0298: implement streaming encryption for screenshares
- 81ffb5ef: implement key_exchange nonce usage in fileshares
- c8d48371: store nonce in client global var
- aee58cde: generate unique nonce on every rekey
- 5180f984: implement streaming encryption for fileshares
- a7c8a898: implement EncryptionMode in send_tcp & read_tcp fns
- f7eae386: send nonce during file upload init
- fa53c619: add possible ToFU skip
- b7f8c549: remove screen & voice commands from base feature
- 06272ce5: separate client on client_base, client_voice, client_screen features
- 9b7318f3: update dependencies
- 9a9909d5: add 5s write timeout to all connected streams
- 35891c90: parallelize send_to_all server fn
- 30a63658: fix auxiliary SEQ poisoning
- 2b191aa1: upgrade chat dependencies
- da2bb83f: store false in running on screenshare-related thread shutdown
- 2513678b: send Deattach MessageCode on deattach fn on server
- 20496938: properly shutdown attach threads on client
- e5fe7c3f: fix screen audio double-threading
- 038d17f5: properly shutdown screenshare threads on client
- ea982450: move voice::options to client only
- b657f4bb: simplify packet default implementations
- 434b50f2: fix voice Alsa backend Windows & macOS compilation problems
- ca529294: fix voice chat latency
- 0d0ae40a: fix screen connection IO bottleneck
- bb8cade1: use ScreenPacket in screenshare auxiliary connections
- e3740794: fix client uresolved import
- f2f78869: harden server auxiliary connection handling
- 1753fda2: use FilePacket in file auxiliary connection
- 11a493cb: implement SequencedPacket trait for send_tcp fn
- d1557c15: split receive on read_tcp helper & receive fn
- 7ba4f11b: do not send frames on static screen
- 26c6f982: replace CompressedFrame with direct frame vector
- cd84866c: revert "increase target FPS to 60"
- 5e0f86b7: replace custom screen compression with OopenH264
- 7fc7cf9f: increase target FPS to 60
- ca3cd3f5: remove duplicite capture code
- b8209fd1: parallelize capture via pipelining
- 43bb6a23: allow big packets on auxiliary streams
- ca6bb63a: removed redundant audio import
- ebccbe77: cleanup screen code
- c38be396: fix another winit recycle race condition
- 271fd7b5: move screen constants to global consts
- b2dfb331: add screen attach feedback protection
- 5a612364: implement audio share to screenshare
- f91dcea7: add pulseaudio feature for cpal dependency
- 38cc0d90: fix winit recycle race condition
- 6e8353db: deattach screenshare on winit close
- 1294d296: implement Deattach command
- 381be245: recycle window on attach swap
- 04bb1cb8: deattach clients on sharer disconnect
- 5fbcb230: deattach all clients on screenshare disable
- 1a334a6c: harden screen stream cleaning
- 9e164eb6: add screen attach message
- 47e549cd: make screen-related identifiers make sense
- 27e91729: implement rendering HW acceleration
- 7055c901: replace softbuffer chat dependency with pixels
- d5a434d8: remove conditional xcap usage
- df6f75c8: optimize screen resouce usage
- a0680681: add turbojpeg dependency
- b4983def: fix enormous client screen RAM usage
- dcbfd4a3: move screen EventLoop to main thread
- a62f887a: optimize screensharing CPU usage
- aecf5195: display received screenshare frames in dedicated window
- 297432ed: add screenshare client display
- df63a5ca: add softbuffer chat dependency
- 7727af84: forward screen frame packets
- 98b3f2d1: start new connection branch on Attach command
- 1e870fb2: change Connection screen_download to structure
- 5a5000cb: open new branch on Attach command on server
- 2fcb1925: add attach command
- ccbc45be: allow attaching only one screenshare at a time
- 374c320d: add screen_download_streams into Connection
- 7a85feee: add screens command
- a5af17bc: send screenshare frames to server
- 77e22502: fix screen UI formatting
- dc4da1dd: start screen share branch on screen command
- 99fd9fde: add server stream upload handler
- bcccffd2: init screenupload connection on server
- 27850b72: prepare server screen init
- 17dd9da5: add screen sharing command & code
- 6e75cb2e: reorganize chat network structure
- 0673adfe: use conditional compilation for wayland backend
- 3cf6b94a: add missing libegl-dev dependency to chat pipelines
- 9e0e28cf: disable default features for libwayshot chat dependency
- cd46ec45: move chat libwayshot dependency to linux only
- c35f6ecb: add screenshare client sender part
- b67ad3a7: add screen capture chat dependencies
- d0ecf934: upgrade dependencies
- 72791858: remove Prompt ClientEvent message parameter
- c4d395fd: fix input bar vanishing on client shortcut
v1.5.3:
- d8090c46: update chat dependencies
- 267bbba0: remove end-to-end inaccuracy from chat readme
- 4e71fc34: remove unnecessary unwrap allocations
- 9c1255b6: use old symkey for rekeying instead of obfuscation
- 695bc88d: move ACTIVE_FILESHARES to server-side file transfer backend
- 92d403a6: remove ACTIVE_FILESHARES usage from client-side file downloads
- 4efaf670: add 5s read timeout to server-side file uploads
- cd62c8fc: remove old pending tokens
- ea167997: fix client prompt bar formatting on file transfers
- 01e4ca12: move client channel to global context
- b41a5a57: log main peer_addr in file transfers
- a79bf1c8: simplify server file upload error handling
- d950d753: remove junk files on failed upload
- 082c14e7: fix dangling file streams bug
- ebdc1f27: close all file streams on disconnect_all
- 4786bcd2: shutdown file stream on remove_file_stream
- b3761912: add FileTransferGuard to remove file streams
- d5984f19: add file streams to hashmap on init
- f7c3d9c8: add file stream handler functions
- f1581008: add file_streams map to Authenticated Connection
- 1394e7e7: add uid to FileUpload
- 0e3f2e44: prevent from replay attacks on file upload
- 6ae24a2d: move file downloads to separate connection
- 5656a686: add server token generator helper
- 920dbee8: rename PENDING_HEADERS to PENDING_TOKENS
- 5419859f: move ConnectionType to server internals
- 14556683: rename File ConnectionType to FileUpload
- 9945287d: remove redundant client upload thread
- 6ad70c04: fix server uploader lookup
- 3bd92711: move server file upload logic to file connection
- 3df29338: rename file::listen_server to upload
- cf2b33c8: move client-side file upload to file connection
- 4411f5bf: add server connection helper fn
- f75cd664: add token field to FilePayload
- 03fa26a5: fix mute voice connection bug
- 9050742b: remove pending headers in server accept loop
- b02321b0: pass peer_addr to listen_server from accept loop
- 9d9bc003: remove unwrap from send obfuscation
- 3ca6034b: use header as key-exchange obfuscation key
- 24afeaa0: replace opcodes with token header
- 49adaf6c: move rand dependency to shared chat feature
- 87c39abc: send ConnectionType on listen_server init
- 452914f8: check ConnectionType on new server connections
- aa20dad0: add ConnectionType enum
- 7afed479: add file sharing backend files
- 2adac2c0: move client & server to separate network subdirectories
- 56b54623: implement VersionMismatch frontend
- 595364ad: implement hash version checking on client backend
- 2cf14427: add VersionMismatch ClientEvent
- ba491d62: send git_hash in welcome packet
- 077d5c18: compile git commit hash into env
- bb2cd50c: fix client UploadLimit formatting
- 914e4458: add UploadLimit frontend on client
- 4e057644: check for concurrent uploads on server
- 99c3814a: add max_client_parallel_uploads server config entry
v1.5.2:
- f7cf9d6f: add PQ key auto migration code
- 2a3e09ab: fix breaking changes
- d7cfdd64: update core & chat dependencies
- 070e0511: drop screen sharing support indefinitely
- cdeebeb6: start screen capture on screen approval
- bcafdbc7: update dependencies
- 5b019f50: prevent from enabling screen without voice
- 761b4fe7: pair screen command to code
- dae06e18: add screen command
- acae9b7f: fix non-linux build dependency problems
- 8d21020a: move wayland backend to wayland feature
- c4f63d25: remove chat feature usage check from build script
- aa9b7bcc: rename chat feature to _chat
- 9f53a7ac: add screen backend code
- 74f9d625: add memmap2 & wayland client dependencies (linux only)
- 8e50a4e5: add scrap client dependency
- b5fb8f89: add zstd client dependency
- ac46b220: add client screen files
v1.5.1:
- 821d08af: update chat dependencies
- dd6d0085: exclude keyexchange from spam (length) filter
- fd5a5ca7: reset spam violations on rekey
- ef493f84: fix spam warning on voice packets
- 835c3dc4: shutdown stream on connection limit
- b73524f7: block connections from same ip
- 094a55fc: add max_ip_clients server config entry
- 007839fb: remove commands from server
- d269fbb9: separate auth slots from non-auth
- 61e802f1: add max_unauth_clients server config entry
- 152e6fca: exclude keyexchange from spam filter
- aeb1dba3: log disconnect cause
- 6a3d0b05: implement max authentication time
- 8c540fe4: add max_auth_time server config entry
- 9c46d3be: add connect field to NonAuthenticated Connection
- 1224be8d: prevent from rekeying on file upload
- b8154dbc: send keepalives only to authenticated clients
- c12a4c00: set connection to alive on channel update
- 1f63599c: fix passworld length check
- d62ad0eb: prevent from spam warning on file upload
- a516636f: prevent from spam warning on KeepAlive
- 5f3eabde: fix upload list formatting
- a196782c: echo client keepalive before formatting checks
- d44d02ab: set connection to alive on auth
- 4496d897: ignore keepalives on auth
- f7959d55: update dependencies
- a15208c5: add why2 image to docker-compose example
- 798b76fe: revert "send empty packet to server on connection"
- f485b217: remove keepalive debug print
- 10ca3df0: prevent client from responding to keepalive during auth
- b11c4589: optimize send_keepalive fn
- 2bfefd5c: disconnect dead connections
- 5e09420a: set connection to alive on received keepalive
- 53e4dcf6: add alive field to Connection
- 1283138c: echo keepalives on client
- d9bce8fe: implement custom keepalive on server
- 48ce23e3: add KeepAlive code
- c974db45: remove socket2 dependency
- 12ed89fe: remove keepalive packets
- b5b7eec1: handle invalid packets on client
- 448e269b: decrease keepalive probe time to 25s
- 4e33f5d6: exclude AltGr from client shortcuts
- 3cb14211: implement keepalive on server
- c6bcf724: move socket2 dependency to chat feature
- e946ae75: prevent zombie connections on invalid read_exact
- cccb3fe8: implement NAT port shift handling
- 414e69db: run server container as unprivileged user
- ae01f26e: use /data dir in docker compose
- a8976e76: merge USER_CONFIG_DIR & CONFIG_DIR
- f1a1a47d: merge get_config_dir & get_why2_dir
- a3fec3fc: use custom WHY2_USER_CONFIG_DIR in docker build
- bc0e75de: remove opus dependency from docker build
- 1f140b51: make build script initialize USER_CONFIG_DIR
- 77789938: send empty packet to server on connection
- 2771d195: revert "add tty to docker-compose"
- f82e0e52: add chat gitignore
- 51775bec: check for command errors on server
- 0ef7afd3: add tty to docker-compose
- 0c732ab6: create chat server docker compose
- a4f1ebc0: create chat server dockerfile
- 164bb005: prevent from sending blank messages to server
- c9a56ba2: move colors to client binary
- d55f9b4e: move colors to client feature
- a2ab341a: replace SerColor with u8 color codes
- e88f9265: remove redundant Info & Warn ClientEvents
- 329c0ae3: implement DisabledFeature ClientEvent
- 49293883: implement Socks5Voice ClientEvent
- 86ae807b: implement SpamWarning ClientEvent
- 9c54bcb5: implement auth ClientEvents
- 53567d02: implement IncompatibleVersion ClientEvent
- d0ebb16d: implement file share ClientEvents
- d5315e3a: implement List ClientEvent
- b4a292b1: implement voice toggle ClientEvents
- d2b2d773: implement Username ClientEvent
- 2ec64fe7: implement UnsafeVersion ClientEvent
- 1fb5e047: implement VersionFailed ClientEvent
- 1c2111d3: implement InvalidUsage ClientEvent
- a0b050be: implement PM ClientEvents
- 8f290e13: implement login ClientEvents
- f2a6beb9: implement Join & Leave ClientEvent
- b39e1494: set server_uname globally on client
v1.5.0:
- 889b83de: use why2-chat crate for version checking
- 5737ed94: split changelog on chat & core
- 04a5c9f8: prepare workspace for version split
- 86d50983: add server upload client_id check
- ed9fd998: prevent from storing malicious chunks on server
- 7e83a566: prevent from path traversal on client
- 9f50ce42: use binary MB definition for max_upload_size
- 5ec7f592: update dependencies
- ecda04bc: use read_stream & write_stream instead of single shared TcpStream
- bf15accb: prevent client from crashing on duplicate download
- 8d2fd5d0: remove ActiveFileshare on client download finish
- 9af47855: log downloads on server
- ee87c4f3: harden client download stream handling
- f2e3585c: move dashmap dependency to chat feature
- 5782489f: move server::ACTIVE_UPLOADS to network::ACTIVE_FILESHARES
- d5f26528: move server::ActiveUpload to network::ActiveFileshare
- 79a94549: send metadata first on server download
- 41b63283: replace network::send_file payload parameter with uid
- b14d97d9: add size field to AvailableFile
- d303d3e4: make server file structs private
- 5834b099: log download finish
- 77600a9d: add FilePayload parameter to network::send_file
- de9a317a: handle download file stream on client
- 90abd6d4: add download_directory to client config
- 21df65f4: add filename parameter to network::send_file fn
- 5bd57d25: implement download code on server
- f3db1437: add code parameter to send_file
- cc549a0f: add download command
- 488c4393: reject same login as server_username
- 0eb91733: send uploads as Vec instead of BTreeMap
- e44ccf1b: send user id along with their uploads
- ca94959b: cache server_username config on server startup
- 8314ebfb: move file chunking & upload to network module
- 1802ed6e: display upload id in file command output
- 9fba440c: prevent from duplicate available files
- 4e0a267a: implement Files command output on client
- 0b13450f: serialize uploads on user level
- 537a4c02: serialize uploaded files into json on server file command
- 41ddc09a: change AVAILABLE_FILES key type to String
- 3ead8c2b: add Files command
- b4dfeb26: add Files code
- 0287b695: add filename field to AvailableFile
- 8b88264a: add uploaded file to AVAILABLE_FILES map
- 70f27957: removed redundant server_username sharing
- e507f1f9: display uploaded file announcements on client
- 1f477efa: add server username to welcome packet
- 8a968c1f: announce file uploads to clients
- e069c472: add Uploaded code
- a9fb9187: compare file hashes on upload complete
- 65520335: use array for upload file hash instead of string
- 6d6c37b3: feed each upload data chunk to hasher on server
- bd18a6b9: remove active upload on disconnect
- 674fb8c4: remove client upload files on disconnect
- b7f74ac9: implement message size check for authenticated users
- 6e0cf215: separate message length and packet size in server config
- 3bc6e355: remove junk upload file on failed rename
- f2f60ad4: fix max_packet_size check indentation
- 6d174159: log file uploads on server
- fcef0e0c: implement uploaded file renaming
- 5d5550a8: remove username field from ActiveUpload
- 7477e74d: create get_upload_dir helper fn
- 5838c2ba: print uploading file log to chat window
- 356236c6: avoid spam warnings on file uploads
- d1ce6d0c: remove last_activity field from FilePayload
- df01e7f0: implement upload chunk storing on server
- 4064e42b: remove chunk_index field from FilePayload
- 74c55447: implement file chunking & upload on client-side
- 0c193865: implement UPLOAD_CHUNK_SIZE on upload request init hash
- 28794013: add UPLOAD_CHUNK_SIZE const
- a8d8ed0c: send upload hash on upload accept
- 77c9d3fb: store requested uploads on client-side ACTIVE_UPLOADS
- 1ac257a0: add ACTIVE_UPLOADS list on client-side
- 875a7751: use uid for temp filenames
- 7f7a2a1d: create upload file in tmpdir on server
- 0a0be7e4: add UPLOADS_DIR const
- c9c55b40: add rand dependency for server
- 1452c4f4: debug log upload approval on client
- f481c2d5: approve new file uploads on server
- e140f3e9: create server list for active file upload
- a00b40fc: add max_upload_size entry to server config
- 8d451fe5: send upload request to server
- 8cbba5ba: implement Default trait for FilePayload
- 5c6250ed: add FilePayload struct to MessagePacket
- 569076fa: use Path for file upload check instead of File
- dda48740: calculate file sha256 hash on upload command
- 91c44475: simplify client invalid messages
- 15852e3c: add upload command & code
- c2a4d147: revert "optimize send_to_all channel member lookup"
- 5dc8a74d: implement Info command
- 5996f974: add Info command
- f2e0d52f: implement automatical command shortcut handling
- 56d5bf94: add shortcut field to CommandInfo
- d08a3b2b: clear voice buffers on mute
- de98cfe0: remove redundant obfuscate_data allocation
- f9b83bd0: optimize send_to_all channel member lookup
- 5991634a: add gentoo GURU link to chat readme
- a1df85a1: bind local mute to C-s
- 32486615: accept unmute as mute alias
- 17b7580d: implement chat client muting
- 70400ea4: implement local voice client muting
- 47183876: accept None in is_muted for local client
- 2d72b69c: implement peer voice client muting
- 1e4ae5cd: add is_muted check fn
- d76f2349: implement mute command on frontend
- d8f4f379: fix toggle_mute bool logic
- d33c241d: separate voice chat constants to const module
- af22d2ea: smartify voice::swap_use_voice
- beb50f44: add options::toggle_mute function
- 86c15537: separate chat constants to const module
- c5aec513: add mute command
v1.4.11:
- 4ad32c82: fix dependency update breaking changes
- 1a4deadd: update dependencies
- 58377187: implement configured audio device usage
- 8953f379: add default device note
- 775acefb: implement audio device selection
- 1bf6e09f: add audio devices into client config
- 1ce3f21b: add audio setup command
- fc4ff478: add help command for client binary
- 9b1b37d5: add voice::device module
- 15ca6ac4: use default audio device natively
- 18dec7be: implement ClientEvent::Warn
- cd9d5409: prevent find_device enumeration failure
- e6e5fb1b: prevent crash on voice-incompatible client
- e5b021f1: update dependencies
- e2e95808: upgrade dependencies & fix breaking changes
- dc8eabdf: include default configuration in binary file
- 9befe94a: merge configs init fns
- 571c478c: merge config::client_config & config::server_config
- cfd7bfb8: implement TCP Keep-Alive on client
- 6db609c8: add socket2 dependency
v1.4.10:
- 0d9a0eb7: fix chat readme license link
- 11672bd2: link chat readme in Cargo
- 104a6724: add chat readme
v1.4.9:
- abdf4d59: update dependencies
v1.4.8:
- db4fc59b: use valid 4x4 keys on voice
- f89cfecc: use 4x4 Grid for voice packets
v1.4.7:
- 5284c89e: fix invalid CONFIG_URL const
v1.4.6:
- e46d4e93: move Grid to grid module
- d32d650b: rename options module to types
- 1029ab43: move core constants to consts module
- df4abc67: trim messages on client
- a4cdbdfd: trim messages on server
- cb45eace: add untrusted_read helper for server
v1.4.5:
- dbb9e065: implement default Grid size on server
- 8900a9bc: fix options formatting
- 2d1f66fe: obfuscate unencrypted chat data
- 60f04635: add homepage to package metadata
v1.4.3:
- 23ac8b74: disable documentation generation for chat workspace
- a56a9fdb: use readme in workspaces
v1.4.3:
- 94195048: use why-chat instead of why2_chat
- cf78e481: use client feature defaultly on chat
- 6fe799d3: move build script to chat workspace
- 13e3d076: split repository on workspaces
v1.4.2:
- b4183144: disable default features for nnnoiseless dependency
- 458a518e: update dependencies
- 891d5903: fix 'invalid' message flushing
- 9a3cd262: remove base91 dependency
- 51f02309: send tcp packets with length prefix
- f30d0af4: move Argon2 helper functions to crypto::password module
- 93c50015: move key exchange functions to crypto::kex module
- 165f4c73: move crypto to chat::crypto module
- 88bd4092: implement serialization for AuthenticatedData
- fb5b3e9a: create auth feature
- 31b3b89b: force constant-time feature for chat
- fc3d75c8: change encryption key to slice instead of owned vector
- 22085dd1: implement counter mode in shared symkey derivation
- f57fb882: display address on server binding fail
- b9f10007: spawn client printer thread before configuration
- 7635f792: prevent crash on version fetch timeout
- 5a69766b: print error message on binding fail
- 9f4151f0: send ping packet every second
- 54f3fc30: forward ping codes
- 50d00537: send ping packets on client
- 8881ac04: add code field to VoicePacket
- 93c10d48: fix error typo
- 4170898a: remove unwrap from PQ decapsulation fn
- d9bfbc65: harden server on key exchange
- 6dc9c16b: raise max_packet_size to 4096
- 097e1580: implement hybrid (ecc + ml-kem) key derivation on chat
- bb776f9a: implement hybrid key derivation
- 40a30bb5: generate MK-KEM keys on server startup
- 963c8aed: add mk-kem dependency
- 28c48959: move send_command_code fn to chat::command
- c0bbc55d: implement COMMAND_LIST on tui client
- b7b800ca: create COMMAND_LIST constant in chat::Command
- 0cfcff95: move connect message to ClientEvent::Connected
- b4fa36ed: remove raw mode disabling from network::client to client::ui
- 712827f3: flush stdout after each draw_event call
- 4e850662: clear vad window fully on voice leave
- 8bb6a67a: fix server send crashes
- 8020f365: update dependencies
- 3b503abd: remove misc::clear_lines
- 4b48fcdc: fix voice peer users is_local while sending
- f128c9ae: move voice vad window to voice::ui
- 1a4e5492: fix server check_version error
- b26ff645: move sqc to client::ui
- 494d1f75: move check_version client print to mpsc::Sender
- 4a61ae53: move clears & info prints to client::ui
- 340b414a: move extra_space to client::ui
- d76c27a2: move TOFU errors to client::ui
- e8ce4614: separate client-side message printing from library
- 70cbbdcb: move client binary to separate module
- e6c782a2: fix vad window ping formatting
- 4721fd62: display avg latency in vad window
- 5765f709: calculate average latency on client
- 7f5c21b0: add timestamp to VoicePacket
- 637d0116: decrease SOUND_EFFECT_VOLUME to 10%
- 1029d38b: play join sound effect on channel change
- cda28c18: fix remove_consumer implicit leave sound
- e825229d: wait for sound effects to stop playing before dropping audio streams
- df31a478: implement voice generation guards
- c6d91b46: play sound effects on voice state change
- ddf66aaf: add lewton dependency
- 148a64b0: add connection sound effects
- 167d7a02: move voice::client to separate submodule
- ff601f95: support SOCKS5 on client
- e2752a58: use port 9150 for SOCKS5
- e6b60403: add socks5 dependency
- 8368b119: rename auto_connect_ip to auto_connect_addr in client config
- 36c7900b: add SOCKS5 config entries to client config
v1.4.1:
- b4170373: sort clients in vad window by id
- 31930c09: change DISPLAY_HOLD to 200ms
- 5302ff06: move voice::client constants to voice::options
- 35ddc5ab: prioritize release profile speed over binary size
- 3fdb5931: remove network::send redundant mutability
- 77cdd54c: fix ChannelLeave sending bug
- 94d00bdf: merge CONSUMERS and peers
- 5fc62dd0: add clients automatically on voice join
- a8234a59: fix ChannelJoin ghost client bug
- 369267f8: implement opus packet verification on server
- 7014fe9a: implement ChannelJoin code
- 6a099141: send hello packet on voice connect
- 6f60f58d: fix active speakers sorting
- 5fe7f1cc: display all users in active users window
- 04fb9952: implement ChannelLeave on Voice and Leave code
- d9f3fe64: revert sound effects
- 3a4aff6a: add voice channel sound effects
- 293810cc: move voice_client to separate module
- 65195efa: call voice_client::remove_consumer on ChannelLeave code
- e1f62fe9: display local client in active speakers window
- c3c01d79: implement display_hold for vad window
- 1190d040: use usernames for active speakers window
- 0276fc90: kill active speakers thread on voice disconnect
- 46f03def: display active speakers with left text align
- 2518d02a: display active speakers on client
- cfe46787: map client ids with usernames on client
- 2a4ddfc2: make consumers private
- 2fc58949: remove consumer from map on Leave code
- 5d241199: move consumers HashMap to global context
- 1cf6b0d2: reset server activity timer on voice
v1.4.0:
- 4e7c740f: use Relaxed Ordering instead of SeqCst
- 47eb0cf8: use server config to enable chat
- b5e97bcb: add enable_voice_chat server config entry
- 173ad3de: make voice chat default on client
- c0012c49: add helper function for removing voice connection
- 2e4b73a7: simplify server enabled info log
- 6c6d48f4: ignore ureq & rustls info logs
- edcf54de: implement logger on chat servers
- fd9e1307: add logging dependencies
- 6f02fb41: specify registration on max_auth_tries config entry
- 9d10140c: implement channels to voice chat
- ecadba62: lower gate tresholds
- a901fc4e: fix noise reduction
- 7185e1a4: fix active speaker bug
- 326baaa9: use global sample rate for voice processing
- 2c852bc3: implement noise reduction
- 38536da7: add nnnoiseless dependency
- 480a6446: update dependencies
- a5a54467: fix fluctuating normalization
- 3249c7f6: implement audio normalization & soft clipping
- 7b94b9d2: implement voice activity detection
- a7259c6c: remove cpal config duplicity
- 6313d039: implement client output audio mixing
- ad2539ef: print server voice log
- a69e26d3: use proper recipient_id for server-seq in send fn
- 614fa439: fix client input resampling
- c4f781ad: update license year
- b7d802ff: use voice SAMPLE_RATE const for constructing SampleRate
- 8d24fa1c: resample input stream
- 2beb10ed: resample output stream
- fadf5de6: allow multi-channel output device
- 952865a4: fix client voice reconnection seq problems
- c152f18d: implement voice disconnection
- ab794c9c: fix client rekey hmac failure
- ff63ca0b: verify hmac on voice receive
- 2ed2ced1: use updated client keys on voice
- 9e3fb184: implement voice packet encryption
- a2dab2fc: collect keys for voice encryption
- 95aa8bf1: move chat packet encryption to chat::crypto
- e091eb38: implement seq
- f6e47f11: verify server seq on client
- 3bc0a424: implement server_seq
- d15a7cef: implement Default trait for VoicePacket
- c2c0d1da: implement VoicePacket & Connection structs on voice chat
- 5c5e56f6: use voice::send on server & client
- 8bbf91f5: fix client underrun code formatting
- ec27ac49: correct client help output formatting
- 5460a338: verify voice packet id on server properly
- 2b2e012e: increase jitter buffer to ~400ms
- 5c577f51: include id len in client voice packets
- 5d5441ce: fix voice client crash on non-voice server auth
- a4bc15de: fix non-voice server build error
- 906b90c2: prepend id to voice packet
- 312e18ab: implement receive section on client
- f68976e5: use gag for supressing alsa errors
- a934048b: add voice options warning
- 0e4741f4: send client voice to server
- 5916bbf7: segment client voice input & encode to opus
- 50ada252: send test UDP message from client to server
- f076ae3c: create simple udp server handler
- e88732f5: allow voice on server
- e93ba7b3: add voice command
- 1a93bc0c: add voice chat dependencies
v1.3.5:
- f44732de: implement new Grid::from_bytes on chat
- d23e58ff: add rayon dependency
v1.3.4:
- f165f8bc: move serde_json dependency to chat only
- 3dd39858: implement Display & FromStr traits for SerColor
- a64b5013: replace bincode with wincode
- e2522dbc: use legacy feature in docs
- a919e296: disable legacy modules by default
- a7ea3d77: use new structure on chat
- aaedd93f: implement CTR on server
- ca613591: use LaTeX syntax in rustdoc
v1.3.3:
- ec2aae25: create SharedKeys type
- 1d427867: implement Zeroize for chat shared keys
- 29a64d03: implement zeroize on whole REX
- c325f7ab: add constant-time eq default feature
- 2f89495c: add zeroize dependency
- 1dd81b2c: use read timeout on ask_version
v1.3.2:
- 112f1909: update dependencies
- abc980e0: use TCP_NODELAY
- da22dfd1: replace reqwest with ureq
- fa3d2b1f: fix invalid CONFIG_URL
- 4240bbc2: optimize release builds
- a20f7869: remove default client feature
- f20664e1: remove chat module lib
v1.3.1:
- 191903a3: fix PM server deadlock
- 43bbc05b: prevent peer_addr unwrapping
- 556b31ee: add stream shutdown to remove_connection fn
v0.3.0-rex:
- cd4b9168: fix crates.io problems caused by rust workspaces
v0.3.0-rex:
- 2dd1a626: update dependencies
- ca244318: implement rekeying
- 7ee70f91: use looser seq verification
- 07a50ca0: decrease max_packet_size to 2048
- b3c88c4e: implement persistent buffer on receive fn
- 9098c6cf: use output parameter for key_exchange fns
- 4acf5c0f: modify keys variable directly from key_exchange fns
- 66b347e1: use unified identifier across chat
- 36614d83: replace key derivation seeding with HKDF
- 8063a3e4: implement sequence numbers on server packets
- eb57e767: add channels alias for list command
- c88d1974: implement sequence numbers on client packets
- f97480d2: use big endian instead of native endian
- 2b81e599: verify hmac on receive fn
- b7e7c0ad: prepend hmac to ciphertext on send
- 20fc606d: add hmac dependency for chat
- 7ef594f1: simplify send fn
- 537ff3e8: optimize user search
- 18ff11b4: fix last_activity iterations
- b6354d27: prevent stream poisoning on thread crash
- da7f0622: remove unused Arc from CONNECTIONS list
- 1c9228de: use DashMap instead of RwLock<Vec> on CONNECTIONS list
- fd96ddd4: update dependencies
- ecd31fbc: add raw mode guard for client
- f5a64b9c: remove unwrap from receive fn
- 3467fa89: optimize packet encoding
- 8857910b: implement random initialization vector for cipher block chaining mode
- f0c4f29e: raise max_packet_size to 4096
- 5bfa4326: fix channel name condition logic
- 173fc4c0: add build.rs bypass env variable
- 8eb67a73: update dependencies
- 5f98acc1: return trimmed parameters
- 9de1e327: move core/tests to separate workspace
- cbd748a2: fix url for chat configuration templates
- fa379e62: add why2_core alias
- f5faa9ce: split on core & chat workspaces
- f1984be3: update dependencies
v0.2.9-rex:
- 8bfeb2f8: add changelog to cargo build
- f682e7c0: add binary optimization for release profile
- 2a7a7981: add argon2 dependency for chat::server
- 3ed5561a: add colored dependency for chat
v0.2.8-rex:
- 6d42f8ac: prevent from incorrect feature usage
v0.2.7-rex:
- 082b68e0: use reqwest only in chat module
- af4b239d: remove chat feature from docs
v0.2.6-rex:
- 7b0b3ec4: use markdown readme instead of plaintext
v0.2.5-rex:
- fb4acc3e: enable docs for all features
v0.2.3-rex:
- 4404541d: rename chat binaries to have why2 prefix
v0.2.2-rex:
- 75e4295a: add semver dependency
- fcc8b455: use valid license expression
- 3b724f95: make chat dependencies optional
- 5aea26b3: replace openssl crate with r521 crate
- faaee7a8: add compile condition to chat module
- fd9c55e5: replace once_cell crate with std
v0.2.1-rex:
- d205a469: update repository url to private mirror
- 8d1ebdde: auto-update configuration files
- 08f6818e: use crossterm dependency only on client
- 904b1694: feature typo fix
- 97218c36: create client feature
- 29fbd866: replace is_server with feature conditional compilation
- e7560cbb: version typo fix
v0.2.0-rex:
- ef5e07d1: replace StdRng with ChaCha20Rng in rex
- 49ac88d8: replace termios with own crossterm implementation
- 745c018e: add crossterm dependency
- 80ec17d7: add ctrl+c handler to server
- a375b33b: replace hex with base91
- c948d94b: replace rpassword with termios
- 61620142: add rpassword dependency
- 2bdb90fe: replace lazy_static with once_cell
- dd838d53: add serde & bincode dependency
- 0fc425d8: add hex dependency
- a454e430: add openssl dependency
- 391283ca: add cargo dependency
- 5c2c5823: add more info to Cargo.toml
- 1c487104: create chat modules
- 6e039920: use sha2 crate
- 8f998ee5: replace curl with reqwest
- b6c3c5ae: use dirs crate as replacement for env
- 5845a996: add rust crate
- 8e6c624e: swap json crate for serde_json
- 05bda93c: add json crate
- 4948726d: add curl dependency
- aa2b9987: use lazy_static dependency
- 51ad286a: create very basic rust project