Skip to content

Evolve session into a state machine with optional acks - #8

Merged
Andyccr merged 1 commit into
mainfrom
cursor/arch-evolve-7527
Sep 16, 2026
Merged

Andyccr merged 1 commit into
mainfrom
cursor/arch-evolve-7527

Conversation

@Andyccr

@Andyccr Andyccr commented Sep 16, 2026

Copy link
Copy Markdown
Owner

产品层已经能用。这次把会话从一堆布尔值收成可测的生命周期,并加上向后兼容的送达确认。

架构

  • SessionMachine:join → waiting → live / relay_down / failed,纯函数,不碰 DOM
  • Outbound:只对 hello 里声明了 ack 的对等节点等回执;老客户端仍走原来的 chat/hello/typing
  • RoomManager 直接 sendChat / retry,UI 不再伸进 session
  • 壳拆成 lobby / jump / chrome,App 只编排路由

界面几乎不变。新版本互发时自己的气泡上会多一个「送达」;对旧标签页不会误报失败。

44 项测试通过。仍是静态 Pages + 公共 Tracker/STUN。

Open in Web Open in Cursor 

Split the UI shell into lobby, jump, and chrome modules, and drive join/wait/live/error from a pure reducer. Peers that advertise ack in hello get a receipt; v1 peers keep working without it.

Co-authored-by: Andy <mail@andychen.net>
@Andyccr
Andyccr marked this pull request as ready for review September 16, 2026 15:34
@Andyccr
Andyccr merged commit 9b2e77c into main Sep 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants