44558fb514Large changes to the flow for using tickets. More formalized updating of JSON with explicit tools, instead of generic JSON functions. Orchestration returns Return objects, which are then formatted to dict for the GUI.SimplifiedPrivacy2026-08-24 15:57:42 -0400
fcf469bd03Manual Explicit Wireguard enable via nmcli for Improved Cross-Linux distro support.SimplifiedPrivacy2026-08-24 11:50:34 -0400
0983d1a68dChanged bash generic commands to no longer use blocking methods to search through the terminal output to help with broken pipe errors, and instead select. But kept it non-blocking for the entire terminal itself. Also refactored Use Ticket Controller to reduce nesting if statements.SimplifiedPrivacy2026-08-24 11:24:23 -0400
39efcaa174Cython for Miller's Loop Cryptography first introduced, which dramatically reduces verification times. Includes a setup.py option for manual builds if desired. README for manual compile if desired. And a fallback import using the legacy python-only system.SimplifiedPrivacy2026-08-22 20:48:22 -0400
a69b87817cImproved Connection Observer Feedback for all systemwide protocolsSimplifiedPrivacy2026-08-21 15:31:52 -0400
e18fec84f2Fixed Repeat 'already have ticket, do you want to wipe?' errors, by actually wiping it before starting over. Not just starting over directly, like beforeSimplifiedPrivacy2026-08-20 17:20:37 -0400
fe19044928Singbox enable now reads the output file to confirm it's upSimplifiedPrivacy2026-08-20 14:00:17 -0400
bdfb933548Sudo config management. Properly delete the config for protocol changes, and install it using the generic commands moduleSimplifiedPrivacy2026-08-20 12:23:37 -0400
5923cc8a7fVless is now working. Config Parsing and setup is stable, and increased the wait time for connection testing. But this is a temporary solution. The real answer is not a static time check, but a dynamic result reading for when to test. Which then has it's own timeout timeSimplifiedPrivacy2026-08-20 10:18:16 -0400
bdb4a285deDelete commented out legacy functions from before the move months ago to an isolated wireguard key moduleSimplifiedPrivacy2026-08-18 14:58:30 -0400
24c4648054Bug-Typo Fix: interface_name changed to interface to match the other singbox moduleSimplifiedPrivacy2026-08-18 13:27:05 -0400
6dac98835fAssassin mode Introduced! The assassin_tools allows for creation/use of a session profile with random attributes, ephemeral wireguard config, and coordinates using a ticket for it. This tools module also allows for wiping the assassin's ticket & wireguard config on disable. Additionally, this git commit sees ProfileController using these assassin_tools functions for a working implementation if the profile is marked assassin=True. Also the associated eco-system of ApplicationController starting apps, the existing non-ticket legacy subscription handlers, and even GUI needed to be adjusted to allow for this new assassin flow. Finally, the generic JSON utilities have been improved to make this feature more robust and reliable.SimplifiedPrivacy2026-08-18 12:54:54 -0400
a78747e8e5Bug fix in subscriptions missing re import after the prior isolation transition to the new moduleSimplifiedPrivacy2026-08-15 17:45:06 -0400
5ab57ab287When a profile is deleted, it now automatically respawns the ticket if it's a ticket profile. Also fixed some bugs with fetching the server's public key with the APIResponse object being used, when it expected a regular dictionary. This is a left-over from the prior transition to API objects.SimplifiedPrivacy2026-08-15 17:34:08 -0400
829feb5939The profile object now has a ticket field. It's now none by default. Also the profile object is passed in, for the use of tickets, both for GUI and core.SimplifiedPrivacy2026-08-15 14:09:34 -0400
31488f790eIntroduced Ticket/Billing-Code Respawn, with dual paths on the ticket prep orchestration, it's helper functions, and the main prep controller. This introduced the functions, which were tested with a demo CLI client and local server, and appears to be stable. Server-side endpoints will be pushed as well. Note: This update couples profile slot ids more closely with which ticket slot id is being used for it, but they are not yet officially tied. In the future, they should be.SimplifiedPrivacy2026-08-14 19:36:22 -0400
73c74d339fImproved use of connection observers & fixed a bug in compare versions if it was the same versionSimplifiedPrivacy2026-08-13 08:09:38 -0400
1d8c508c52Isolate connect's bootstrap, so non-connect users can bootstrap when making clients outside connectSimplifiedPrivacy2026-08-13 07:59:27 -0400
d9bee758a8Isolated download file modules to their own module, then had both the install application versions (browsers), and install dependencies both use that same module.SimplifiedPrivacy2026-08-13 07:33:16 -0400
b5e72ae7f6More clear variable names and docs on Make HTTPx Client. But it always returned booleanSimplifiedPrivacy2026-08-13 06:11:14 -0400
01bd5f8d3fApplicationController transitioned to the HTTPx Client system, instead of using requests library proxy for Tor. Also the GUI's observers now do strings to be more neutral to what object type is being downloaded (application_version objects vs dependency).SimplifiedPrivacy2026-08-12 14:19:55 -0400
b84bb2eefaSingbox setup modules, which includes installation, download, move to sudo folder, and sudo setup scripts. Added a model, endpoint, and the ability to sync that model. (Related note: Server-side prepared the endpoint, and stocked with real data.) And also the sync service modules were adjusted to handle new data types more smoothly, before they had errors. As part of that sync flow change, the CachedSync metadata model was transitioned to ints instead of strings, with default 0 values. This should in theory migrate all clients without further changes needed.SimplifiedPrivacy2026-08-12 13:11:12 -0400
c291517b7fSingbox Protocols can be enabled via the main ProfileControllerSimplifiedPrivacy2026-08-10 18:55:23 -0400
c3b50460cdIP address checking for singbox enforced in singbox runnerSimplifiedPrivacy2026-08-10 17:58:31 -0400
9d0d140467Singbox Orchestration! Significant progress made on singbox flow, we now have a working: 1) Configure via singbox_configure. 2) Enable/disable directly via singbox module. 3) Enable/disable with full orchestration via singbox_runner. 4) process id utils isolated. 5) Singbox takedown uses JSON & process id, but not yet coordinating a mismatch. Also in this update: Transition traditional wireguard subscription post/get requests to the new HTTPx system.SimplifiedPrivacy2026-08-10 15:49:47 -0400
061df01a0dWireguard renegotiation now flows through the new HTTPx modulesSimplifiedPrivacy2026-08-07 15:05:17 -0400
320037a2b1EncryptedProxy configuration path setup, but not yet functional. Pydantic models for each protocol are being setup.SimplifiedPrivacy2026-08-06 20:58:36 -0400
94c4155d60Get configs from controller's state, instead of reading the diskSimplifiedPrivacy2026-08-06 15:57:37 -0400
8f184272b4Integrated connect.singleendpoint() with the start of bulk sync getting metadata sync. Also improved observer feedbackSimplifiedPrivacy2026-08-05 13:16:02 -0400
8da4978498Linter bug fixes. Mostly undeclared, unused, or missing imports. One or two outright typos. There's still issues with undeclared types that need to be fixed after api connection refactor is fully implemented.SimplifiedPrivacy2026-08-05 12:03:11 -0400
a5f57f4f5eLet async bulk skip verification if they just came from verification via single apiSimplifiedPrivacy2026-08-05 03:03:52 -0400
b70818f774Added a forced sync at startup if there's no DB pre-existing, to handle a bug in GUI with no application versions. Isolated application_version database calls to their own module. And fixed a bug in SyncController to catch if application_version updates and split them into the different tables.SimplifiedPrivacy2026-08-05 02:45:52 -0400
46c8721a1aSync from the main app streamlines into the Connect module, to do async bulk sync. Additionally ApplicationVersion was transitioned from manual SQL to the ORM, for easier compatibility with the newer sync system. The side effect functions of this have been tested to be stable.SimplifiedPrivacy2026-08-04 20:17:45 -0400
0e64351b5aImproved systemwide speed, by Turning Wireguard subprocess commands into to recycled generic_run_commands that re-use the terminalSimplifiedPrivacy2026-08-03 19:33:22 -0400
ed055f338dIntroduced Connect Module, which manages HTTPx Clients, solves network/DNS issues, and coordinates Tor Bootstraps. Introduced async & single endpoint full workflows. This version is stable and tested for DNS & Tor problems. Also modified Configuration to be Pydantic, instead of @dataclass_json, and changed the connection type to enums. Further, there's a new enum function to get the new enum types, but the legacy function exists for backwards compatability.SimplifiedPrivacy2026-08-03 16:59:39 -0400
fb43228f2f[200~Elaborate HTTPx feature-rich strategy with HTTPx Client Reuse, Tor Management, Tor bootstrap monitor & retry. HTTPx clients can be managed across modules and reused. There's an elaborate HTTPx retry strategy based on status codes. Tor management tries to use the existing Tor default ports, then checks the Tor config, before finally bootstrapping. There is now a ThreadPool futures executor, which even works with Tor, to batch API requests.SimplifiedPrivacy2026-08-02 05:44:10 -0400
3db70541abRefactor run_generic_command to reuse and persist the same linux subprocess terminalSimplifiedPrivacy2026-07-31 12:58:42 -0400
d68ae02335Bug fix on ProfileController's disable missing the imported result type to pass on to GUISimplifiedPrivacy2026-07-29 19:05:06 -0400
bf22f764d0Singbox takedown modules, with a graceful shutdown, then kill, then searching for processes with the phrase. And doing tunnel checks inbetweenSimplifiedPrivacy2026-07-29 18:58:59 -0400
26b2562415Changelog and version bump for Singbox features coming outSimplifiedPrivacy2026-07-29 15:07:52 -0400
5377b7348bIntroduced Singbox Proxy Feature Start Utility & Script. But it's not yet integrated to be usedSimplifiedPrivacy2026-07-29 15:04:33 -0400
46a84661a0Improved Firewall Checks on Disable to double check and properly source the configSimplifiedPrivacy2026-07-28 17:45:40 -0400
7bde05d797Switched setup from copying via AppImage folders, to instead writing to files, for cross package reliabilitySimplifiedPrivacy2026-07-28 11:50:43 -0400
19b3925bd1Refactored flow for main wireguard orchestration functions. Streamlined for better error handling and removal of NoneType objectsSimplifiedPrivacy2026-07-27 18:17:49 -0400
1baaa4042cSeparation of performing subprocess commands, parsing them for error strings, and handling those errors as enum types. Systemwide error handling was introduced via a wrapper to all systemwide functions requiring the sudo scripts.SimplifiedPrivacy2026-07-23 18:41:52 -0400
4d6f810100Setup Script & Actual Firewall DNS Scripts. As well as optional functions to do automated setupsSimplifiedPrivacy2026-07-22 20:37:20 -0400
ff493455b3Introduced Managed DNS settings to Wireguard, which is redundant for nmcli. However, this same framework can be used for other protocols or implementations.SimplifiedPrivacy2026-07-22 14:04:50 -0400
9ba6d7e783Version bump to 2.4.3. Stable for killswitch enable with test scriptSimplifiedPrivacy2026-07-20 13:08:59 -0400
bd34f456b5Introduced IP-interface-based killswitch support for systemwide wireguard, on enable only. This version is stable and working for enable only, with a test script in the fileslot. And fixed GUI's object save creation. Additionally rolled back Connection data models to previous non-enum version.SimplifiedPrivacy2026-07-20 13:07:04 -0400
d8273171b5Reduced redundant function for subscriptions in connection activationSimplifiedPrivacy2026-07-19 15:37:27 -0400
2ccbdba06bSurgery on ConnectionController! Huge separation of ConnectionController & ProfileController into naked function modules for enabling a connection, registering wireguard keys, coordinating proxy configs, subscriptions, endpoint verification, and the logistical flow. Additionally enums were used for type checking, instead of polymorphic functions. This version is stable and confirmed working for systemwide and session wireguard, but not yet proxies.SimplifiedPrivacy2026-07-18 23:35:48 -0400
fd7949cea4Stable working version of ConnectionController being operated on, split up into systemwide and testing_evaluating. Then ProfileController had a split off of endpoint verification to avoid circular importsSimplifiedPrivacy2026-07-18 17:47:25 -0400
703fe57c12Introduce Base profile types on load, which gradually will switch over on save/edits. Transition Connections to using Enum instead of raw strings.SimplifiedPrivacy2026-07-18 16:44:54 -0400
00d6fc7738Pushed Edit Profile GUI logic into core. Cut ProfileController's role in this, and setup an isolated update_profile function to pass saves to the modelSimplifiedPrivacy2026-07-17 22:33:00 -0400
532a82f685Added support for functions to Clear any model. It's use-case here is to clear the CachedSync model, but the function would be good for anything going forward.SimplifiedPrivacy2026-07-17 12:35:44 -0400
4fb84b47d0LocationController was missing some definitions. Also migrations was changed to do imports inside the function using session management tools. And finally Tor networking requests fixed DNS problem labels, increasd timeouts, and streamined ip address reuse.SimplifiedPrivacy2026-07-17 09:29:49 -0400
3977a5b695Migrations Transition Stable for old versions of the app to update the schemaSimplifiedPrivacy2026-07-16 15:35:03 -0400
a9b6b9ffe3Robust Database Error Handling & Migrations System. For New Client upgrades (Operational Errors) & Old Clients with New JSON keys from an API (TypeErrors). We also added an SQL generic handling wrapper for use across any project or function.SimplifiedPrivacy2026-07-15 19:00:16 -0400