147 lines
11 KiB
Markdown
147 lines
11 KiB
Markdown
# Changelog
|
|
|
|
## 2026-02-26 - 4.2.0 - feat(core)
|
|
expose edge peer address in hub events and migrate writers to channel-based, non-blocking framing with stream limits and timeouts
|
|
|
|
- Add peerAddr to ConnectedEdgeStatus and HubEvent::EdgeConnected and surface it to the TS frontend event (management:edgeConnected).
|
|
- Replace Arc<Mutex<WriteHalf>> writers with dedicated mpsc channel writer tasks in both hub and edge crates to serialize writes off the main tasks.
|
|
- Use non-blocking try_send for data frames to avoid head-of-line blocking and drop frames with warnings when channels are full.
|
|
- Introduce MAX_STREAMS_PER_EDGE semaphore to limit concurrent streams per edge and reject excess opens with a CLOSE_BACK frame.
|
|
- Add a 10s timeout when connecting to SmartProxy to avoid hanging connections.
|
|
- Ensure writer tasks are aborted on shutdown/cleanup and propagate cancellation tokens appropriately.
|
|
|
|
## 2026-02-26 - 4.1.0 - feat(remoteingress-bin)
|
|
use mimalloc as the global allocator to reduce memory overhead and improve allocation performance
|
|
|
|
- added mimalloc = "0.1" dependency to rust/crates/remoteingress-bin/Cargo.toml
|
|
- registered mimalloc as the #[global_allocator] in rust/crates/remoteingress-bin/src/main.rs
|
|
- updated Cargo.lock with libmimalloc-sys and mimalloc package entries
|
|
|
|
## 2026-02-26 - 4.0.1 - fix(hub)
|
|
cancel per-stream tokens on stream close and avoid duplicate StreamClosed events; bump @types/node devDependency to ^25.3.0
|
|
|
|
- Add CancellationToken to per-stream entries so each stream can be cancelled independently.
|
|
- Ensure StreamClosed event is only emitted when a stream was actually present (guards against duplicate events).
|
|
- Cancel the stream-specific token on FRAME_CLOSE to stop associated tasks and free resources.
|
|
- DevDependency bump: @types/node updated from ^25.2.3 to ^25.3.0.
|
|
|
|
## 2026-02-19 - 4.0.0 - BREAKING CHANGE(remoteingress-core)
|
|
add cancellation tokens and cooperative shutdown; switch event channels to bounded mpsc and improve cleanup
|
|
|
|
- Introduce tokio-util::sync::CancellationToken for hub/edge and per-connection/stream cancellation, enabling cooperative shutdown of spawned tasks.
|
|
- Replace unbounded mpsc channels with bounded mpsc::channel(1024) and switch from UnboundedSender/Receiver to Sender/Receiver; use try_send where non-blocking sends are appropriate.
|
|
- Wire cancellation tokens through edge and hub codepaths: child tokens per connection, per-port, per-stream; cancel tokens in stop() and Drop impls to ensure deterministic task termination and cleanup.
|
|
- Reset stream id counters and clear listener state on reconnect; improved error handling around accept/read loops using tokio::select! and cancellation checks.
|
|
- Update Cargo.toml and Cargo.lock to add tokio-util (and related futures entries) as dependencies.
|
|
- BREAKING: public API/types changed — take_event_rx return types and event_tx/event_rx fields now use bounded mpsc::Sender/mpsc::Receiver instead of the unbounded variants; callers must adapt to the new types and bounded behavior.
|
|
|
|
## 2026-02-18 - 3.3.0 - feat(readme)
|
|
document dynamic port assignment and runtime port updates; clarify TLS multiplexing, frame format, and handshake sequence
|
|
|
|
- Adds documentation for dynamic port configuration: hub-assigned listen ports, hot-reloadable via FRAME_CONFIG frames
|
|
- Introduces new FRAME type CONFIG (0x06) and describes payload as JSON; notes immediate push of port changes to connected edges
|
|
- Clarifies that the tunnel is a single encrypted TLS multiplexed connection to the hub (preserves PROXY v1 behavior)
|
|
- Specifies frame integer fields are big-endian and that stream IDs are 32-bit unsigned integers
|
|
- Adds new events: portsAssigned and portsUpdated, and updates examples showing updateAllowedEdges usage and live port changes
|
|
|
|
## 2026-02-18 - 3.2.1 - fix(tests)
|
|
add comprehensive unit and async tests across Rust crates and TypeScript runtime
|
|
|
|
- Added IPC serialization tests in remoteingress-bin (IPC request/response/event)
|
|
- Added serde and async tests for Edge and Handshake configs and EdgeEvent/EdgeStatus in remoteingress-core (edge.rs)
|
|
- Added extensive Hub tests: constant_time_eq, PROXY header port parsing, serde/camelCase checks, Hub events and async TunnelHub behavior (hub.rs)
|
|
- Added STUN parser unit tests including XOR_MAPPED_ADDRESS, MAPPED_ADDRESS fallback, truncated attribute handling and other edge cases (stun.rs)
|
|
- Added protocol frame encoding and FrameReader tests covering all frame types, payload limits and EOF conditions (remoteingress-protocol)
|
|
- Added TypeScript Node tests for token encode/decode edge cases and RemoteIngressHub/RemoteIngressEdge class basics (test/*.node.ts)
|
|
|
|
## 2026-02-18 - 3.2.0 - feat(remoteingress (edge/hub/protocol))
|
|
add dynamic port configuration: handshake, FRAME_CONFIG frames, and hot-reloadable listeners
|
|
|
|
- Introduce a JSON handshake from hub -> edge with initial listen ports and stun interval so edges can configure listeners at connect time.
|
|
- Add FRAME_CONFIG (0x06) to the protocol and implement runtime config updates pushed from hub to connected edges.
|
|
- Edge now applies initial ports and supports hot-reloading: spawn/abort listeners when ports change, and emit PortsAssigned / PortsUpdated events.
|
|
- Hub now stores allowed edge metadata (listen_ports, stun_interval_secs), sends handshake responses on auth, and forwards config updates to connected edges.
|
|
- TypeScript bridge/client updated to emit new port events and periodically log status; updateAllowedEdges API accepts listenPorts and stunIntervalSecs.
|
|
- Stun interval handling moved to use handshake-provided/stored value instead of config.listen_ports being static.
|
|
|
|
## 2026-02-18 - 3.1.1 - fix(readme)
|
|
update README: add issue reporting/security section, document connection tokens and token utilities, clarify architecture/API and improve examples/formatting
|
|
|
|
- Added an 'Issue Reporting and Security' section linking to community.foss.global for bug/security reports and contributor onboarding.
|
|
- Documented connection tokens: encodeConnectionToken/decodeConnectionToken utilities, token format (base64url), and examples for hub and edge provisioning.
|
|
- Clarified Hub/Edge usage and examples: condensed event handlers, added token-based start() example, and provided explicit config alternative.
|
|
- Improved README formatting: added emojis, rephrased architecture descriptions, fixed wording and license path capitalization, and expanded example scenarios and interfaces.
|
|
|
|
## 2026-02-17 - 3.1.0 - feat(edge)
|
|
support connection tokens when starting an edge and add token encode/decode utilities
|
|
|
|
- Add classes.token.ts with encodeConnectionToken/decodeConnectionToken using a base64url compact JSON format
|
|
- Export token utilities from ts/index.ts
|
|
- RemoteIngressEdge.start now accepts a { token } option and decodes it to an IEdgeConfig before starting
|
|
- Add tests covering export availability, encode→decode roundtrip, malformed token, and missing fields
|
|
- Non-breaking change — recommend a minor version bump
|
|
|
|
## 2026-02-17 - 3.0.4 - fix(build)
|
|
bump dev dependencies, update build script, and refresh README docs
|
|
|
|
- Bumped devDependencies: @git.zone/tsbuild ^2.1.25 → ^4.1.2, @git.zone/tsbundle ^2.0.5 → ^2.8.3, @git.zone/tsrun ^1.2.46 → ^2.0.1, @git.zone/tstest ^1.0.44 → ^3.1.8, @push.rocks/tapbundle ^5.0.15 → ^6.0.3, @types/node ^20.8.7 → ^25.2.3
|
|
- Bumped runtime dependency: @push.rocks/qenv ^6.0.5 → ^6.1.3
|
|
- Changed build script: replaced "tsbuild --web --allowimplicitany" with "tsbuild tsfolders --allowimplicitany" (kept tsrust invocation)
|
|
- README updates: added RustBridge notes (localPaths must be full file paths), production binary naming conventions, rust core uses ring as rustls provider; removed emoji from example console output; clarified stunIntervalSecs is optional; renamed example status variable to edgeStatus; minor wire-protocol formatting and wording/legal text tweaks
|
|
|
|
## 2026-02-17 - 3.0.3 - fix(rust,ts)
|
|
initialize rustls ring CryptoProvider at startup; add rustls dependency and features; make native binary lookup platform-aware
|
|
|
|
- Install rustls::crypto::ring default_provider at startup to ensure ring-based crypto is available before any TLS usage.
|
|
- Add rustls dependency to remoteingress-bin and update remoteingress-core rustls configuration (disable default-features; enable ring, logging, std, tls12).
|
|
- Adjust TS classes to prefer platform-suffixed production binaries, add exact fallback names, and include explicit cargo output paths for release/debug.
|
|
- Cargo.lock updated to include rustls entry.
|
|
|
|
## 2026-02-16 - 3.0.2 - fix(readme)
|
|
Document Hub/Edge architecture and new RemoteIngressHub/RemoteIngressEdge API; add Rust core binary, protocol and usage details; note removal of ConnectorPublic/ConnectorPrivate (breaking change)
|
|
|
|
- Adds comprehensive README describing v3 Hub↔Edge topology and usage examples
|
|
- Introduces Rust core binary (remoteingress-bin) and RustBridge IPC via @push.rocks/smartrust
|
|
- Documents custom multiplexed binary frame protocol over TLS and PROXY protocol v1 for client IP preservation
|
|
- Notes STUN-based public IP discovery and cross-compiled linux/amd64 and linux/arm64 binaries
|
|
- Calls out removal/rename of ConnectorPublic/ConnectorPrivate to RemoteIngressHub/RemoteIngressEdge (breaking API change)
|
|
- Updates install instruction to use pnpm and expands API reference, events, and examples
|
|
|
|
## 2026-02-16 - 3.0.1 - fix(remoteingress)
|
|
no changes detected in diff; no code modifications to release
|
|
|
|
- No files changed in the provided diff.
|
|
- No release or version bump required based on current changes.
|
|
|
|
## 2026-02-16 - 3.0.0 - BREAKING CHANGE(remoteingress)
|
|
migrate core to Rust, add RemoteIngressHub/RemoteIngressEdge JS bridge, and bump package to v2.0.0
|
|
|
|
- Added Rust workspace and crates: remoteingress-protocol, remoteingress-core, remoteingress-bin (IPC management mode via JSON over stdin/stdout).
|
|
- Implemented protocol framing, PROXY v1 header builder, and async FrameReader in remoteingress-protocol.
|
|
- Implemented hub and edge tunnel logic in Rust including TLS handling, PROXY parsing, and STUN public IP discovery.
|
|
- Added TypeScript runtime bridge classes RemoteIngressHub and RemoteIngressEdge that use @push.rocks/smartrust to spawn/manage the Rust binary.
|
|
- Removed legacy connector public/private TS files and simplified ts/index exports to expose hub/edge classes.
|
|
- Updated package.json: bumped version to 2.0.0, adjusted description, added tsrust build step, new dependency @push.rocks/smartrust and keywords, and included dist_rust in files/glob.
|
|
- Added rust build config for cross-target linkers and new Cargo.toml manifests for the workspace.
|
|
|
|
## 2024-04-14 - 1.0.2 - 1.0.4 - releases
|
|
Version-only tag commits (no code changes) for recent releases.
|
|
|
|
- 1.0.2 (2024-03-24) — release tag / version bump only
|
|
- 1.0.3 (2024-04-14) — release tag / version bump only
|
|
- 1.0.4 (2024-04-14) — release tag / version bump only
|
|
|
|
## 2024-04-14 - 1.0.3 - core
|
|
Core updates and fixes.
|
|
|
|
- fix(core): update
|
|
|
|
## 2024-04-14 - 1.0.2 - core
|
|
Core updates and fixes.
|
|
|
|
- fix(core): update
|
|
|
|
## 2024-03-24 - 1.0.1 - core
|
|
Core updates and fixes.
|
|
|
|
- fix(core): update |