GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — v0.0.15-beta.2 by Obed0101 · Pull Request #147 · MendCode/MendCode Conversation
|
|
MendCode: @Obed0101's MendCode worked on this pull request on one of its devices; released 2026-11-11 08:34 UTC. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
No findings · nothing in this change was confirmed as a problem
head 8346c308c7e1
Merge risk: 🟡 Medium · The scope is limited to the opt-in Telegram bridge, but it changes timing-sensitive subscription and turn-state behavior. A regression could omit mirrored output or incorrectly block phone prompts; the added tests cover the guard and cursor arithmetic, not the actual socket-level interleavings.
Change: Bug fix · Review effort: 1/5, about 5 minutes
This stacked patch rejects Telegram prompts while a mirrored computer turn is running and adjusts subscription setup to capture turns that start during attachment. No introduced defects were verified; risk is medium because the changes affect asynchronous turn tracking and event replay. Review was read-only, so tests were inspected but not executed.
Readers: 6 code files no reader could read went to the review pass whole (the diff is small: one reader call costs more than the readers' share of this review's cap, so the review pass reads it).
Stacked on #146: only this pull request's own commits since #146's head b3a2066.
The bridge now checks for an active mirrored turn both before and after ensuring the chat's session, returning a wait-or-stop notice instead of submitting another prompt. Subscription setup reads the event-log boundary before checking running-turn history, then chooses the earlier replay cursor. The patch also adds focused regression tests and updates release notes, channel documentation, and the generated card revision; daemon submission, history, and replay contracts remain unchanged.
Changes
| Layer / files | Summary |
|---|---|
Telegram turn coordination packages/daemon/src/channels-bridge.ts, packages/daemon/src/channels.ts |
Guard phone submissions against mirrored turns and reorder watch initialization to preserve events emitted while the chat attaches. |
Regression coverage packages/daemon/test/channels-bridge.test.ts |
Add tests for refusing a prompt during a mirrored turn, accepting a later retry, and selecting replay cursors. |
Release and user documentation CHANGELOG.md, docs/channels.md, packages/daemon/cards/cards.generated.json |
Document the beta.2 remote-control fixes and refresh the generated card revision without changing card content. |
Sequence diagram
sequenceDiagram
participant Chat as Telegram chat
participant Bridge as Channel bridge
participant Client as Daemon client
participant Daemon
Bridge->>Client: loadWindow(sessionId, 1)
Client->>Daemon: session.events
Daemon-->>Client: Event-log boundary
Bridge->>Client: session.history(limit: 1)
Client->>Daemon: Read latest turn
Daemon-->>Client: Turn history
Bridge->>Client: subscribe(min(boundary, running start - 1))
Client->>Daemon: client.subscribe
Daemon-->>Bridge: Replay followed by live events
Chat->>Bridge: Prompt during mirrored turn
Bridge-->>Chat: Wait for the answer or /stop
| Check | Status | Explanation |
|---|---|---|
| Title | The version-only title identifies the release but does not describe the Telegram coordination fixes. | |
| Description | The description explains what changes and why, but does not state how the fixes were tested. The channel documentation also says a phone message waits, whereas the implementation refuses it and requires resubmission. | |
| Out of scope | ✅ Passed | The runtime changes, regression tests, release notes, documentation, and generated revision are consistent with the stated follow-up fixes. No unrelated implementation changes appear in this stacked diff. |
Performance (perf-attrib, base 1aed947 against head 8346c30)
perf-attrib: igual: nothing above the measured noise
base 1aed947efa71e3694ca6a5175cd0cb796b421fc6 (1aed947e) vs cand 8346c308c7e1e22a7da32d1986b40b86aaf71e16 (8346c308), median of 2 faux-engine session(s) per side; flagged = beyond the noise measured on 18 base-vs-base runs (x1.5).
| metric | base | cand | diff |
|---|---|---|---|
| tui.after.fp_mb | 56.9 | 56.7 | -0.2 |
| tui.after.peak_mb | 73 | 73.1 | +0.1 |
| tui.ready.fp_mb | 54.7 | 54.9 | +0.2 |
| tui.ready.peak_mb | 73 | 73.1 | +0.1 |
| tui.rest.fp_mb | 56.7 | 56.2 | -0.5 |
| tui.rest.peak_mb | 73 | 73.1 | +0.1 |
| tui.after.rss_mb | 135.9 | 135.8 | -0.1 |
| tui.ready.rss_mb | 114.2 | 114.1 | -0.1 |
| tui.rest.rss_mb | 136.2 | 136.1 | -0.1 |
| tui.after.heap.extra_b | 7371759 | 6665479 | -706280 |
| tui.after.heap.objects | 243021 | 241363 | -1658 |
| tui.after.heap.protected | 20 | 20 | 0 |
| tui.after.heap.size_b | 25238840 | 24337943 | -900897 |
| tui.ready.heap.extra_b | 2895377 | 2894900 | -477 |
| tui.ready.heap.objects | 217209 | 217222 | +13 |
| tui.ready.heap.protected | 18 | 18 | 0 |
| tui.ready.heap.size_b | 19330234 | 19330820 | +586 |
| tui.rest.heap.extra_b | 4624911 | 4669930 | +45019 |
| tui.rest.heap.objects | 238452 | 238414 | -38 |
| tui.rest.heap.protected | 18 | 18 | 0 |
| tui.rest.heap.size_b | 22074655 | 22118956 | +44301 |
| tui.rest.js_code_b | 5839156 | 5884794 | +45638 |
| tui.rest.js_live_b | 19292699 | 19290413 | -2286 |
| tui.cpu_ms.after | 5494 | 5482 | -12 |
| tui.cpu_ms.ready | 341 | 338 | -3 |
| tui.cpu_ms.rest | 480 | 493 | +13 |
| binary.bytes | 72306944 | 72306944 | 0 |
| disk.bytes | 4074 | 4076 | +2 |
| disk.bytes_per_session | 2037 | 2038 | +1 |
JS object types that rose (count):
JS heap bytes by constructor that rose:
Modules loaded at start: 230 -> 230, 4633288 -> 4633324 bytes of chunks; chunk sizes only in cand: [1009178], only in base: [1009142] (chunk names are hashes: the list says which changed in size, not by what name)
Reference (skill, 2026-11-03, real model): footprint 64 ready / 66 after / peak 80 MB, 2.6 KB per session. This run (faux engine, whole process tree): 54.9 / 56.7 / peak 73.1 MB, 2038 B per session.
CHANGELOG.mddocs/channels.mdpackages/daemon/cards/cards.generated.jsonpackages/daemon/src/channels-bridge.tspackages/daemon/src/channels.tspackages/daemon/test/channels-bridge.test.tsComment @mendcode review to review again · @mendcode pause / resume · reply to a finding with explain, fix or learn · settings in .mendcode/review.yaml
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.