Rebuild Portal as a native Windows (WPF) file manager for SSH servers #17
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/native-server-manager"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Rebuilds Portal as a native Windows app, replacing the Rust/egui app. It's WPF on .NET 10 with the built-in Fluent theme, and the layout puts the server first. It still manages the server over SSH. The design and the research behind it are in
DESIGN.md,README.mdanddocs/design/portal-prototype.html.Why these choices
DataGrid, and OLE drag-and-drop works with Explorer. WinUI 3 has no grid, its hot reload needs Visual Studio, and its PRI naming broke when the exe was renamed (WindowsAppSDK #6248), which would break the exe → exe.old updater swap.What changed
app/Portal.Core: file systems, connecting, transfers, settings and updates.sh -sscripts run on the server forrm -rf,chmod/chown -R,cp -a,mv,du,dfandfind.known_hosts, asks before trusting a new server, and refuses a changed key or an unrecorded key type..portal-partfiles that are renamed when complete;%APPDATA%\portaland are imported from the old app's files.app/Portal(the WPF app):app/Portal.Shots: an offscreen screenshot harness over an in-memory server, with 14 scenes in each theme..claude/skills:release.shpublishes a single-fileportal.exe, with the version inDirectory.Build.props.verify/suites.42482c6).Verification
dotnet build Portal.slnxdotnet test Portal.slnxPORTAL_SSH_TESTS=1integration tests against two throwaway OpenSSH containers (one SFTP-only)PORTAL_LIVE_TESTS=1updater tests against git.ossalali.comdotnet publishsingle fileportal.exe78.6 MB, file version 0.5.0.0reviewandtaste-reviewskills, Opus, five rounds387547981894eb,0c6ef3b,6a0dfbd,0de352c,be8b7de); round 6 PASS atbe8b7de, and its one minor is fixed in10c3edeThe integration tests cover:
Known limit
On accounts limited to SFTP, a symbolic link that another process creates in the instant between Portal's last check and its SFTP rename would still be followed. SSH.NET resolves paths before renaming and keeps its raw SFTP session internal, so this window can be narrowed but not closed. Accounts that can run commands replace files with
mv -f, which has no such window. The README's "Symbolic links" section describes this.Not verified
portal-ui) is ready, but its route in Forgejo-VM-MCP is PR #14. After that is merged, runprovisioning\guest\install-dotnet-sdk.ps1in the guests and restart the MCP server. Until then, nothing has driven a real window. The screenshots are offscreen renders.chownto other users, or fail2ban.🤖 Generated with Claude Code