You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+20-1Lines changed: 20 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ PostNot is a local-first desktop API client built with:
12
12
- TypeScript
13
13
- SQLite
14
14
15
-
The app already supports request execution, resolved request preview before send, full response body reads, history, collections with nested folders and drag-and-drop request/folder moves, sidebar collection search, playbooks for sequential saved-request execution, environments, secret environment storage, import/export flows including OpenAPI 3 import, broader cURL flag coverage, redacted-by-default single-request cURL/JSON export with optional non-secret environment variable inclusion, OAuth2 bearer auth helpers with client-credentials token fetch, notifications, settings, signed in-app update checks with download progress, inherited collection/folder/saved-request pre-request and test scripts (worker-backed frontend JavaScript execution around the native send), async script helper requests through `pn.http.send(...)`, script-driven active-environment variable writes, and a local authoring-only MCP server with Agent Activity.
15
+
The app already supports request execution, resolved request preview before send, full response body reads, history, collections with nested folders and drag-and-drop request/folder moves, sidebar collection search, raw WebSocket and Socket.IO connection workspaces with session-only transcripts, playbooks for sequential saved-request execution, environments, secret environment storage, mixed PostNot collection portability, import/export flows including OpenAPI 3 import, broader cURL flag coverage, redacted-by-default single-request cURL/JSON export with optional non-secret environment variable inclusion, OAuth2 bearer auth helpers with client-credentials token fetch, notifications, settings, signed in-app update checks with download progress, inherited collection/folder/saved-request pre-request and test scripts (worker-backed frontend JavaScript execution around the native send), async script helper requests through `pn.http.send(...)`, script-driven active-environment variable writes, and a local authoring-only MCP server with Agent Activity.
16
16
17
17
## Canonical Working Directory
18
18
@@ -33,9 +33,12 @@ When onboarding into a fresh task, read these first:
33
33
-[docs/tech-design.md](docs/tech-design.md): architecture, runtime behavior, persistence, command boundaries, and design trade-offs
- native raw WebSocket and Socket.IO 3.x/4.x execution with application-wide session ownership
57
+
- persistent disconnected WebSockets tab workspace, bounded session-only transcripts, file-backed large payloads, and opt-in reconnect
58
+
- saved HTTP, WebSocket, and Socket.IO definitions in shared collection trees with protocol-aware routing
59
+
- lossless mixed PostNot collection import/export and explicit realtime omissions from Postman export
53
60
- persisted settings
54
61
- persisted history with detail inspection
55
62
- restoring stored requests from history into new request tabs
@@ -86,6 +93,12 @@ Frontend:
86
93
npm run check
87
94
```
88
95
96
+
Browser-mode application UX:
97
+
98
+
```bash
99
+
npm run test:app-e2e
100
+
```
101
+
89
102
Marketing site:
90
103
91
104
```bash
@@ -99,8 +112,11 @@ Rust:
99
112
```bash
100
113
source"$HOME/.cargo/env"
101
114
cargo check --manifest-path src-tauri/Cargo.toml
115
+
cargo test --manifest-path src-tauri/Cargo.toml
102
116
```
103
117
118
+
The Socket.IO integration test starts the pinned Node fixture in `src-tauri/tests/fixtures/socketio-server.mjs`, so install the repository's npm dependencies before running the full Rust suite.
119
+
104
120
Backend quality gate (required before publishing a release):
105
121
106
122
```bash
@@ -142,6 +158,9 @@ This approach is mainly for native Windows verification such as drag-and-drop, w
142
158
- Secret environment values are stored in the OS credential store, not SQLite.
143
159
- History persists requests that use secret environment variables, but stores unresolved `{{variable}}` text instead of resolved secret values.
144
160
- Single-request exports redact credential-looking values by default, including bearer tokens, OAuth2 access tokens, client secrets, API keys, cookies, and basic-auth passwords; the export dialog can include active non-secret environment variables while keeping secrets redacted.
161
+
- Realtime connection definitions and open tabs are managed on `/websockets`; navigation preserves live native sessions, while app restart restores drafts disconnected and clears transcripts.
162
+
- Realtime transcripts are bounded, process-scoped, and never written to SQLite history. Payloads over 256 KiB use temporary opaque handles that are cleared on release or startup.
163
+
- Realtime v1 does not run collection/folder/request scripts or Playbook steps and does not support durable history, legacy Socket.IO 2.x, custom CA/mTLS/proxy settings, `permessage-deflate`, server-requested ACK replies, or mixed binary placeholder arrays.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+25Lines changed: 25 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,31 @@ The project currently uses pre-1.0 semantic versioning. Minor versions mark mean
6
6
7
7
## [Unreleased]
8
8
9
+
## [0.23.0] - 2026-07-30
10
+
11
+
### Added
12
+
13
+
- Added native raw WebSocket and Socket.IO 3.x/4.x connections with reusable workspaces, multiple connection tabs, opt-in reconnection, text/JSON/binary payloads, acknowledgements, and bounded session transcripts.
14
+
- Added saved WebSocket and Socket.IO definitions to collection trees, including protocol-aware routing, mixed PostNot collection import/export, and safe MCP authoring support.
15
+
- Added realtime runtime settings for connection timeouts, concurrent sessions, payload limits, and transcript retention.
16
+
17
+
### Changed
18
+
19
+
- Kept live realtime sessions active across app navigation while restoring persisted drafts disconnected after an app restart.
20
+
- Reused the Requests workspace's authentication, JSON, query/header, collection-save, and tab-strip patterns throughout the WebSockets workspace.
21
+
- Expanded the design system and browser coverage for consistent panel spacing, responsive layouts, keyboard navigation, styled controls, and accessible realtime interactions.
22
+
23
+
### Fixed
24
+
25
+
- Corrected Socket.IO transport defaults, native transcript-limit handling, connection-state messaging, and realtime settings copy.
26
+
- Aligned realtime connection controls, headers, query parameters, authentication, reconnect controls, and message editors with the existing application layout and component standards.
- Realtime transcripts remain process-scoped and are never persisted to request history; large payloads use temporary opaque handles that are released on cleanup or startup.
32
+
- Environment variables resolve only when connecting or sending, preserving stored templates and the existing secret-storage boundary.
Copy file name to clipboardExpand all lines: SECURITY.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,8 +7,8 @@ PostNot is pre-1.0. Security fixes are applied on a best-effort basis to the cur
7
7
| Version | Supported |
8
8
| --- | --- |
9
9
|`master`| Yes |
10
-
|`0.21.x`| Yes |
11
-
|`< 0.21`| No |
10
+
|Latest release| Yes |
11
+
|Older releases| No |
12
12
13
13
## Reporting a Vulnerability
14
14
@@ -48,7 +48,7 @@ Reports in these areas are especially important for PostNot:
48
48
49
49
PostNot request scripts are local automation code. They are intended for scripts you wrote or scripts from API workspaces you trust.
50
50
51
-
As of `0.19.0`, pre-request and test scripts run in a short-lived worker-backed JavaScript sandbox with explicit bridges for `pn.http.send(...)` helper requests, OAuth2 token-refresh patterns, and active-environment variable writes. Please report any way for scripts to escape that boundary, access app/page globals unexpectedly, bypass helper-request history behavior, or read/write secrets outside the documented `pn.variables` APIs.
51
+
Pre-request and test scripts run in a short-lived worker-backed JavaScript sandbox with explicit bridges for `pn.http.send(...)` helper requests, OAuth2 token-refresh patterns, and active-environment variable writes. Please report any way for scripts to escape that boundary, access app/page globals unexpectedly, bypass helper-request history behavior, or read/write secrets outside the documented `pn.variables` APIs.
52
52
53
53
Imported Postman collection scripts are preserved for portability, but complex or untrusted imported scripts should be reviewed before running.
0 commit comments