feat(M4): file permissions/ownership + monitor charts

- SftpEntry carries uid/gid/mode (drwxr-xr-x style) from readdir attrs
- chmod/chown via SSH exec (JD sftp subsystem silently ignores SETSTAT)
- FilePanel: permission + owner columns, chmod/chown dialog (rwx grid +
  octal input + uid/gid)
- MonitorPanel: canvas sparkline charts — CPU history (60 samples, 3min)
  and network rx/tx rates, dpr-aware, no deps
- tests: sftp-chmod real-server verification (chmod 700/755 round trip)
This commit is contained in:
954801926@qq.com committed 2026-09-06 17:07:11 +08:00
1 parent 06fa4ca023
commit 2849fc30dc
60 files changed
+1975 -17

No files matched your search

+4
View File
@@ -53,6 +53,10 @@ const api: AppApi = {
ipcRenderer.invoke(Ipc.SFTP_RENAME, sessionId, from, to),
deleteRemote: (sessionId: string, paths: string[]) =>
ipcRenderer.invoke(Ipc.SFTP_DELETE, sessionId, paths),
chmodRemote: (sessionId: string, path: string, mode: string) =>
ipcRenderer.invoke(Ipc.SFTP_CHMOD, sessionId, path, mode),
chownRemote: (sessionId: string, path: string, uid: number, gid: number) =>
ipcRenderer.invoke(Ipc.SFTP_CHOWN, sessionId, path, uid, gid),
uploadRemote: (sessionId: string, localPaths: string[], remoteDir: string) =>
ipcRenderer.invoke(Ipc.SFTP_UPLOAD, sessionId, localPaths, remoteDir),
downloadRemote: (sessionId: string, remotePaths: string[], localDir: string) =>