Add a focused Linux session workspace - #72
Conversation
…redesign # Conflicts: # README.md
…redesign # Conflicts: # scripts/lock_requirements.ps1
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 45e0be4098
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let totalDelta = 0; | ||
| for (let index = 0; index < length; index += 1) { | ||
| const delta = Number(current[index]) - Number(previous[index]); | ||
| if (!Number.isFinite(delta) || delta < 0) return null; | ||
| totalDelta += delta; |
There was a problem hiding this comment.
Exclude guest counters from the CPU total
On Linux hosts running virtual machines, /proc/stat includes guest and guest_nice after the core counters, but those values are already included in user and nice. Summing every field here double-counts guest execution; for example, equal guest and idle deltas are reported as roughly 67% utilization instead of 50%. Limit the total to non-duplicated fields or subtract the guest counters before calculating the percentage.
Useful? React with 👍 / 👎.
| visible = normalized; | ||
| clearPolling(); | ||
| if (visible) { | ||
| render(currentState(connected ? 'loading' : 'disconnected')); | ||
| startPolling(); |
There was a problem hiding this comment.
Reset the CPU baseline when polling resumes
When the page or notepad is hidden for an extended period, resuming polling reuses the sample stored before polling stopped. The first supposedly live CPU value therefore represents the average over the entire hidden interval rather than the current four-second window, and the same problem occurs when returning to a previously selected session. Invalidate that session's previous CPU sample when polling is interrupted so the first resumed response establishes a new baseline.
Useful? React with 👍 / 👎.
What changed
SFTPFileManageras a single remote pane instead of maintaining a reduced second implementation.Why
The single-session workflow previously required opening the separate dual-pane file manager and offered no compact view of the connected server's current health. This adds a focused operational workspace while preserving the established file-manager behavior and the existing 2-pane and 4-pane terminal layouts.
Scope and impact
The embedded view hides only the second file pane, source selector, and dual-pane transfer controls. The regular dual-pane file-manager modal remains available and uses the same manager instance.
The live server insights are Linux-only and collected through bounded, ownership-checked SSH requests. RDP and VNC are intentionally outside this change.
The broader README and product-site refresh was integrated separately into
mainand is no longer part of this PR.Validation
python -m pytest tests -q- 1359 passed, 33 skippednpm run test:js- 104 passednpx playwright test tests/e2e/session-workspace.spec.js --forbid-only- 2 passednpm run vendor:check- 10 vendored assets verifieddocker compose config --quietgit diff --check