feat(ui): record web terminal sessions#6602
Conversation
|
Claude finished @gustavosbarreto's task in 10m 22s —— View job Code Review CompleteReviewed 22 files across code quality, security, testing, language patterns, and architecture — no new issues found. The code looks good as-is. A few things the review specifically verified as sound:
To request another review round, comment |
d6f2796 to
0daa47f
Compare
|
/review |
|
This is almost ready. The only thing left is a few copy tweaks on the Connect Drawer. Plan is to hold it and merge right after the next minor release ships. |
|
/review |
|
Claude finished @otavio's task in 2m 10s —— View job Code Review CompleteReviewed 23 files across code quality, security, testing, language patterns, and architecture. 1 inline issue posted (1 medium). Summary
Everything else checks out. Notably verified as sound:
To request another review round, comment |
0daa47f to
216887f
Compare
Answer a session-uid@shellhub.io global request from the web bridge with the connection's session uid (ctx.SessionID()) and relay it to the browser over a new messageKindSession ws message, so a client-side recording can be tied to its server session.
216887f to
12d8dbc
Compare
Distinguish sessions started from the web terminal from native SSH so the UI can label them and pick the right recording. Adds a `web` field to the session model, request, service, and PG entity, exposes it in the OpenAPI schema, and backs it with migration 008. The SSH layer sets the flag when the session originates locally (web terminal).
12d8dbc to
0550975
Compare
|
/review |
|
Claude finished @gustavosbarreto's task in 12m 54s —— View job Code Review CompleteReviewed 23 files across code quality, security, testing, language patterns, and architecture. 2 inline issues posted (2 high). Summary
Additional notesOne candidate finding was investigated and dropped as a false positive: setting Everything else checks out and was verified as sound:
To request another review round, comment |
0550975 to
e56a979
Compare
|
/review |
|
Claude finished @gustavosbarreto's task in 10m 49s —— View job Code Review CompleteReviewed 24 files across code quality, security, testing, language patterns, and architecture. 1 inline issue posted (1 medium). Summary
Additional notesTwo candidate findings were investigated and dropped:
Everything else checks out and was re-verified as sound:
To request another review round, comment |
e56a979 to
91c3d06
Compare
|
/review |
|
Claude finished @gustavosbarreto's task in 9m 56s —— View job Code Review CompleteReviewed 24 files across code quality, security, testing, language patterns, and architecture. 1 inline issue posted (1 high). Summary
Additional notesThe prior four fixes were re-verified as sound and are not re-flagged:
To request another review round, comment |
Capture web terminal sessions client-side to OPFS and replay them from the Sessions page. Recording is opt-in from the Connect drawer (on by default); when the namespace already records server-side, the drawer shows a live indicator instead. Playback prefers a local recording and falls back to the server copy; Community without a recording gets an upsell.
91c3d06 to
e6a79bb
Compare
|
/review |
|
Claude finished @gustavosbarreto's task in 9m 34s —— View job Code Review CompleteReviewed 24 files across code quality, security, testing, language patterns, and architecture — no new issues found. The code looks good as-is. All findings from the prior review rounds were re-verified as soundly addressed:
Also re-verified as sound:
To request another review round, comment |
What
Adds session recording to the web terminal: sessions opened from the console can be captured and replayed later.
Recording
session_recordsetting.The web terminal also learns the server session uid over an SSH global request (
session-uid@shellhub.io) so a local recording can be paired to its session.Where recordings play
A recording is an attribute of a session, not a place of its own, so playback moved into the Sessions list and the standalone Recordings page is removed. Per shell session:
session:playpermission (it is the user's own browser data, scoped to them); server playback still requires it.Supporting changes
sessions.webflag (migration008) and a Web/SSH origin column, so a web-originated session is identifiable. The SSH server sets the flag for web-terminal connections.Notes
008against master; renumber if another migration lands there first.