GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — v0.0.15-beta.3 by Obed0101 · Pull Request #148 · MendCode/MendCode

Conversation

@Obed0101

@Obed0101 Obed0101 commented Nov 11, 2026 •
edited by blacksmith-sh Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Fixes found by the review of #146 at a71641f, on top of v0.0.15-beta.2.

Fixed

  • A message from Telegram always runs as a turn of its own, even when a turn from the computer starts as it is sent, and a chat that joins a session another chat follows gets the running turn from its start.

Weight: the opt-in Telegram bridge only (loaded when remote control is on); nothing at start-up, per turn or per frame.


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@Obed0101
remote control: a phone message is always queued as its own turn, and…
22d35bc
… a chat joining a session another chat streams reads the running turn from the log instead of rewinding the shared cursor; release v0.0.15-beta.3
@Obed0101

Obed0101 commented Nov 11, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor Author

MendCode: @Obed0101's MendCode worked on this pull request on one of its devices; released 2026-11-11 09:42 UTC.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Obed0101
Obed0101 commented Nov 11, 2026
View reviewed changes

@Obed0101 Obed0101 left a comment

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MendCode review

1 finding · 🟠 1 major
head 22d35bcd6d29

Merge risk: 🟡 Medium · The opt-in scope limits exposure, but the patch changes shared subscription and replay ordering across chats. Regressions can lose running-turn content or approval controls even while the underlying session continues normally.
Change: Bug fix · Review effort: 2/5, about 15 minutes

This patch forces Telegram submissions to queue rather than join an existing turn, and replays running turns separately when another chat already follows the session. The changes are confined to the opt-in bridge, but the new replay limit can silently omit pending approvals in long turns. Review was read-only; tests were inspected but not run.
Readers: 5 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 a71641f.

Finding Where
🟠 Replay reports success after 50 pages even when the joining chat is still missing events 8/10 packages/daemon/src/channels.ts:83-90
Walkthrough

The patch addresses two Telegram remote-control races on top of the parent pull request. Phone submissions explicitly select queued delivery so a concurrent computer turn cannot consume them as steering input. Additional chats replay the running turn through paginated event reads instead of resetting the shared subscription cursor; the existing bridge buffers and deduplicates that replay. Protocol schemas, kernel queue behavior, and normal client subscription handling remain unchanged.

Changes

Layer / files Summary
Telegram submission and replay
packages/daemon/src/channels-bridge.ts, packages/daemon/src/channels.ts
Explicitly queue phone submissions and track shared session subscriptions so subsequent chats receive a separate paginated replay.
Regression coverage
packages/daemon/test/channels-bridge.test.ts, packages/daemon/test/channels-daemon.test.ts
Assert queued delivery and add a daemon integration scenario covering a second chat joining during an approval without duplicating it for the first chat.
Release notes
CHANGELOG.md
Document beta.3's remote-control fixes and update the stable release's equivalence note.

Sequence diagram

sequenceDiagram
    participant Chat as Joining Telegram chat
    participant Bridge as Channel bridge
    participant Host as Channels host
    participant Client as Shared daemon client
    participant Daemon
    Chat->>Bridge: Pair or select session
    Bridge->>Host: watch(sessionId)
    Host->>Client: loadWindow and session.history
    Client->>Daemon: Read end cursor and running turn
    alt First chat following session
        Host->>Client: subscribe(from)
        Client->>Daemon: Replay and subscribe
        Daemon-->>Bridge: Session events via client
    else Session already followed
        loop Up to 50 pages
            Host->>Client: loadAfter(after, 200)
            Client->>Daemon: session.events
            Daemon-->>Host: Event page via client
            Host-->>Bridge: onEvent for replayed events
        end
    end
    Host-->>Bridge: Watch result
    Bridge->>Bridge: Sort and deduplicate buffered events
    Bridge-->>Chat: Prompt, progress and approvals
Loading
Pre-merge checks: ⚠️ 1 warning · ✅ 2 passed
Check Status Explanation
Title ✅ Passed The version-only title matches the beta.3 release entry added to the changelog.
Description ⚠️ Warning The description explains the two fixes and their origin in the parent review, but does not describe functional testing. The added tests cover queued command construction and a short approval replay, not replay exhaustion.
Out of scope ✅ Passed All changes support the stated Telegram fixes, their regression coverage, or the associated release notes.
Review details
  • Files reviewed: 5 · 56 changed lines · estimated review effort 2/5, about 15 minutes
  • Profile: normal · at most 8 inline comments
  • Verification: every finding was checked again by a separate pass (1 candidate judged)
  • Cost: 417,797 tokens in (309,888 from the provider's cache) · 3,438 out
  • Readers: 5 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 a71641f.

Performance (perf-attrib, base 8346c30 against head 22d35bc)

perf-attrib: igual: nothing above the measured noise

base 8346c308c7e1e22a7da32d1986b40b86aaf71e16 (8346c308) vs cand 22d35bcd6d29d479aea924a923d0fe01b4183328 (22d35bcd), 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 57.1 +0.2
tui.after.peak_mb 73.1 73.4 +0.3
tui.ready.fp_mb 54.8 54.5 -0.3
tui.ready.peak_mb 73.1 73.4 +0.3
tui.rest.fp_mb 56.7 56.9 +0.2
tui.rest.peak_mb 73.1 73.4 +0.3
tui.after.rss_mb 135.8 135.7 -0.1
tui.ready.rss_mb 114.1 113.9 -0.2
tui.rest.rss_mb 136.5 136 -0.5
tui.after.heap.extra_b 7402632 7393734 -8898
tui.after.heap.objects 243015 242995 -20
tui.after.heap.protected 20 20 0
tui.after.heap.size_b 25241352 25231014 -10338
tui.ready.heap.extra_b 2895377 2872237 -23140
tui.ready.heap.objects 217222 217157 -65
tui.ready.heap.protected 18 18 0
tui.ready.heap.size_b 19331303 19299501 -31802
tui.rest.heap.extra_b 4669916 4666092 -3824
tui.rest.heap.objects 238468 238450 -18
tui.rest.heap.protected 18 18 0
tui.rest.heap.size_b 22123244 22115500 -7744
tui.rest.js_code_b 5885929 5880092 -5837
tui.rest.js_live_b 19291989 19293027 +1038
tui.cpu_ms.after 5552 5573 +21
tui.cpu_ms.ready 352 343 -9
tui.cpu_ms.rest 483 488 +5
binary.bytes 72306944 72306944 0
disk.bytes 4057 4059 +2
disk.bytes_per_session 2029 2030 +1

JS heap bytes by constructor that rose:

  • tui.rest.ctor.native:Blob.bytes: 1743695 -> 1744090 (+395)
  • tui.rest.ctor.object:ModuleRecord.bytes: 5504845 -> 5505128 (+283)
  • tui.rest.ctor.code:JSModuleEnvironment.bytes: 104208 -> 104224 (+16)

Modules loaded at start: 230 -> 230, 4633324 -> 4633607 bytes of chunks; chunk sizes only in cand: [1009461], only in base: [1009178] (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.5 / 57.1 / peak 73.4 MB, 2030 B per session.

Files (5)
  • CHANGELOG.md
  • packages/daemon/src/channels-bridge.ts
  • packages/daemon/src/channels.ts
  • packages/daemon/test/channels-bridge.test.ts
  • packages/daemon/test/channels-daemon.test.ts

Comment @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.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread packages/daemon/src/channels.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

@Obed0101
remote control: a replay for a joining chat reads the session log to …
8981456
…its end, however many pages, and fails the watch when a page does not advance
@Obed0101

Obed0101 commented Nov 11, 2026

Copy link
Copy Markdown
Contributor Author

@MendCode review

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@Obed0101
Obed0101 merged commit c300179 into beta Nov 11, 2026
6 checks passed

Uh oh!

There was an error while loading. Please reload this page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@Obed0101
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.