๐ฆ Changelog¶
(same as CHANGELOG.md from repo)
See the full project changelog in the repository:
https://github.com/venukotamraju/Oldie-Goldie/blob/main/CHANGELOG.md
All notable changes to this project will be documented in this file.
The format follows Keep a Changelog and this project adheres to Semantic Versioning.
[v0.6.0] - 2025-11-28¶
This release delivers major functional improvements to tunneling, authentication, usability, documentation, and platform compatibility. It introduces automatic Cloudflared handling, invite-token reuse, enhanced PSK validation workflow, expanded docs, and broader Python version support.
๐ Added¶
Automatic Cloudflared Integration¶
- Integrated
pycloudflaredfor automatic download, management, and invocation of the Cloudflared binary. - Replaced manual system-level binary discovery with environment-scoped resolution.
- Removes the previous requirement for users to download Cloudflared manually.
- Simplifies setup for Windows, Linux, and virtual environments.
Token Reuse Flag (--reuse)¶
- Added
--reuseflag to enable reuse of bound invite tokens. - Tokens may be reused until expiration (default: 10 minutes).
- Added new
metadata["reuse"]attribute toinvite_tokensdictionary. - Implemented server-side validation + client handling adjustments.
PSK Validation Workflow Tightening¶
- During tunnel handshake, the clientโs input mode remains locked after entering the PSK.
- Input unlocks only after server acceptance or timeout.
- Prevents premature input switching and improves validation integrity.
Documentation System¶
- Added full MkDocs site with:
index.mdusage.mddeveloper-guide.mdpython-compatibility.mdchangelog.md- Introduced GitHub Pages pipeline for auto-building docs on push to
main. - Added
RELEASE.mdwith release workflow checklist. - Added
CONTRIBUTING.mdwith contributor guidelines.
๐งฉ Compatibility Improvements¶
- Updated dependency constraints: replaced strict pinned versions with ranges for better future Python compatibility.
- Improved compatibility for Python 3.12โ3.13.
- Declared Python 3.14 as not supported due to upstream C-extension wheel availability.
- Updated Trove classifiers and
requires-pythonmetadata. - Added new compatibility documentation (
Compatibility.md+ MkDocs page).
๐ Improvements¶
- Improved log formatting and prompt clarity across server and client.
- Cleaned linting issues on server code path.
- Updated README with clearer installation guidance, compatibility badges, and Cloudflared notes.
- Extended GitHub Actions CI/CD:
- Conditional PyPI / TestPyPI publishing based on tag types (
a,b,rc, or stable). - Documentation auto-deploy to GitHub Pages.
- Improved tunnel and token code structure for future maintainability.
- Added pretty printer/log refinements for easier debugging.
๐ Fixes¶
- Corrected license naming mismatch in README and
pyproject.toml. - Fixed inconsistent development-status classifier tags affecting PyPI metadata.
- Patched minor PSK handshake edge cases during tunnel validation.
- Fixed subtle client mode switching behavior around tunnel validation and timeouts.
๐ฎ Future / Planned¶
- Termux / Android support for Cloudflared + client operation.
- Architecture documentation rewrite (developer-guide expansion).
- Expanded color support and prompt styling for
safe_input. - More robust runtime token generation from server-side CLI.
[v0.4.1] - 2025-11-13¶
Features and fixes added since v0.4.1 milestone.
๐ Added¶
- Encryption and Decryption Helpers
- Introduced
shared/crypto/encryption_handlers.pyproviding:encrypt_message(session_key: bytes, message: str) -> bytesdecrypt_message(session_key: bytes, encrypted_message: bytes) -> str
-
Includes validation and complete secure workflow tests (PSK โ hashing โ shared secret โ encryption โ decryption).
-
Protocol-Level Encryption Flow
- Updated
protocol.pyto automatically encrypt/decrypt messages when asession_keyis passed. -
Introduced wrapper structure for encrypted payloads.
-
Peer-to-Peer Encrypted Messaging
- Enabled encrypted tunnel communication between users.
- Added new input mode
encryptedand integrated withsend_messagesandhandle_chat_input. -
Server now relays encrypted messages without decoding.
-
Token-Based Access System
- Added invite-token authentication to secure public servers.
- Supports single-use, multi-use, bound, and non-expiring tokens.
- Implemented validation during
process_requestbefore handler invocation. -
Added periodic cleanup of expired tokens.
-
Command-Line Enhancements
- Added flexible CLI for both server and client:
--host local|public,--client single|multiple,--invite-token,--bind <user1> <user2>,--token-count <n>,--no-expiry
-
Added conditional logic and validation (e.g.,
--bindtakes precedence over--token-count). -
Port Tunneling Integration
- Integrated Cloudflared tunnel support directly in Python.
- Server auto-launches tunnels when
--host publicis passed. -
Added helper functions and installation instructions for Windows/Linux users.
-
New Commands
/list_usersโ Lists currently connected users./helpโ Now supports colored text using updatedaprint().
๐งฉ UX Improvements¶
- PSK input now hidden (password mode with asterisks).
- Added color/styling for
safe_inputprompt text. - Tunnel users no longer see global chat messages while active.
- Upgraded
aprint()with color tag support for CLI formatting.
๐ Improvements¶
- Added port argument parsing for both client and server.
- Improved command-line validation and contextual help.
- Revised internal logger to reduce prompt interference.
- Cleaned up project structure for packaging and deployment.
๐งช Experimental / ๐ Future¶
- Planned / In Progress
- Add extended foreground and background color support for
safe_input. - Add runtime server-side input to generate tokens on demand (no restart required).
- Add
--reuseflag for token reuse functionality. - Tidy server/client logs and improve consistency.
- Review, clean, and refactor core modules.
- Explore Android support for mobile client deployment.
- Future tunneling provider support (Serveo, LocalTunnel).
๐งฐ Internal Notes¶
- All token and encryption flows manually verified.
- MVP validated as of 2025-11-11.
- Candidate for v0.5.0 Beta release (first major public build).
[v0.4.1] - 2025-09-19¶
๐ Added support for /exit_tunnel¶
๐ Description¶
- Users can now use
/exit_tunnelwhile in atunnel_activestate to exit the tunnel. When the command is used by a user, their state gets reset to default and along with them, the server relays thetunnel_exitto the peer, which when recieved triggers areset_stateon their side, making them exit the tunnel too successfully.
[v0.4] - 2025-08-06¶
๐ Tunnel-based /connect @user System¶
Implemented an interactive and secure peer-to-peer connection system using pre-shared key (PSK) authentication.
๐ New Features¶
Server-side¶
- Connection Request Flow
- Users initiate connection via
/connect @user -
Server relays request to target user
-
Connection Response
- Target can accept or deny
-
On accept, triggers tunnel key validation with 10s timeout
-
Tunnel Key Validation
- Both users prompted to enter pre-shared key
- If matched: tunnel is established
-
On mismatch or timeout: users disconnected and temporarily blocked
-
Blocked Usernames
- In-memory blocklist used to prevent re-registration after failed tunnel attempts
Client-side¶
- New Commands
-
/connect,/accept,/deny,/exit_tunnel -
Connection State Handling
-
Implemented states:
idle,request_sent,request_received,tunnel_validating,tunnel_active -
PSK Input Prompt
- Triggered on tunnel validation request from server
-
10s timeout for both users
-
Input System Upgrade
- Switched to
prompt_toolkitfor real-time input prompt refresh - Added
set_input_mode()for state-based input control
Command Handler¶
- Added sync-to-async command execution wrapper
- Improved dynamic command registration
๐ Fixes & Improvements¶
- Fixed PSK input delay due to flushing issue
- Logger patch: used
aprint()to prevent prompt interference - Fixed
dict changed during iterationbug in tunnel validation logic - Removed
async_io.py, fully migrated toprompt_toolkit
๐ Internal Notes¶
- โ
connect_request,accept, and tunnel flows manually verified - [TODO] Write documentation and a blog post summarizing
/connectfeature
[v0.3] - (No changelog recorded)¶
First structured changelog starts from v0.4.