PqP gets a shared networking core
The networking implementation is now a TypeScript package, with common cryptography and messaging behind Chrome and Electron adapters.
Move the protocol into one place
We have extracted PqP’s networking logic into a standalone TypeScript package. The initial core brings together cryptography, messaging, identity integration, and shared service interfaces. Chrome and Electron adapters connect that core to their respective environments.
Keeping the networking implementation inside a single client makes every new client a potential fork. A shared core gives protocol work one home: a change to message handling or signing can be made in the package and exercised through the client adapters.
Separate the environment from the protocol
The adapters handle operations whose meaning depends on where the application runs. Browser storage, background lifecycle, UI messaging, and desktop process communication have different APIs and failure modes. The core reaches those operations through defined interfaces.
That separation makes it possible to discuss protocol behavior without assuming every client is a browser extension. It also makes the environment boundary explicit when a feature needs a capability that one runtime does not provide in the same way.
The next task is integration
This extraction creates the package boundary and the first adapters. Each client still needs to exercise the shared implementation through its real lifecycle. A function that behaves correctly in a long-lived desktop process may encounter different conditions in an extension background context.
The immediate goal is a single networking API that clients can integrate and test. Transport work, identity behavior, and runtime failures can then be evaluated against the same core rather than separate copies of the protocol.