krdc-ssh/PLAN.md

28 lines
1.2 KiB
Markdown

# KRDC SSH Plugin
## Architecture
KRDC plugin that provides SSH terminal sessions. Embeds KonsolePart (KDE's terminal
KPart) inside a RemoteView subclass. KonsolePart runs `ssh user@host -p port` via
startProgram() — handles terminal emulation, rendering, and input natively.
## Key Discovery
KRDC's RemoteViewScrollArea does NOT use setWidgetResizable(true). Instead it emits
`resized(w, h)` connected to `scaleResize()`. The view MUST call `resize(w, h)` on
itself in scaleResize to get a non-zero size. The `m_connected` guard in resizeEvent
prevents the re-entrant crash during tab insertion show sequence.
## Checklist
- [x] Core plugin implementation
- [x] Configuration UI (username, identity, tunneling, options)
- [x] Fix crash: scaleResize during show (m_connected guard in resizeEvent)
- [x] Fix crash: disconnect (deleteLater instead of delete)
- [x] Fix blue screen: startProgram needs full path (QStandardPaths)
- [x] Fix blue screen: scaleResize isVisible() guard was blocking initial resize
- [x] Reverted to startProgram (not showShellInDir) for proper lifecycle
- [ ] Verify: no crash, no blue screen, ssh works on first connection
- [ ] Clean up dead code / unnecessary deferred resize in resizeEvent
- [ ] Squash/tidy commits if desired