Compare commits

...

2 Commits

Author SHA1 Message Date
sawka c06d846efe working on a clean server restart, fix some typescript errors in emain 2024-02-11 15:16:26 -03:00
Red J Adaya 2a4d85430a Fix term width in view connection detail modal (#274)
* fix term width

* add horizontal scroll to terminal when it overflows

* revert width of modal
2024-02-10 19:18:50 -03:00
6 changed files with 42 additions and 29 deletions
@@ -54,6 +54,8 @@
}
.remote-detail {
width: 100%;
.settings-field {
display: flex;
flex-direction: row;
@@ -91,8 +93,9 @@
}
.terminal-wrapper {
width: 100%;
margin-top: 5px;
overflow-x: auto;
overflow-y: hidden;
.terminal-connectelem {
height: 163px !important; // Needed to override plugin height
@@ -111,7 +114,6 @@
.xterm-screen {
padding: 10px;
width: 541px !important; // Needed to override plugin width
}
}
}
@@ -12,12 +12,10 @@ import * as T from "../../../types/types";
import { Modal, Tooltip, Button, Status } from "../elements";
import * as util from "../../../util/util";
import * as textmeasure from "../../../util/textmeasure";
import * as appconst from "../../appconst";
import "./viewremoteconndetail.less";
const RemotePtyRows = 9;
const RemotePtyCols = 80;
@mobxReact.observer
class ViewRemoteConnDetailModal extends React.Component<{}, {}> {
termRef: React.RefObject<any> = React.createRef();
@@ -293,7 +291,7 @@ class ViewRemoteConnDetailModal extends React.Component<{}, {}> {
let model = this.model;
let isTermFocused = this.model.remoteTermWrapFocus.get();
let termFontSize = GlobalModel.termFontSize.get();
let termWidth = textmeasure.termWidthFromCols(RemotePtyCols, termFontSize);
let termWidth = textmeasure.termWidthFromCols(appconst.RemotePtyCols, termFontSize);
let remoteAliasText = util.isBlank(remote.remotealias) ? "(none)" : remote.remotealias;
let selectedRemoteStatus = this.getSelectedRemote().status;
@@ -371,7 +369,7 @@ class ViewRemoteConnDetailModal extends React.Component<{}, {}> {
ref={this.termRef}
data-remoteid={remote.remoteid}
style={{
height: textmeasure.termHeightFromRows(RemotePtyRows, termFontSize),
height: textmeasure.termHeightFromRows(appconst.RemotePtyRows, termFontSize),
width: termWidth,
}}
></div>
+21 -14
View File
@@ -14,6 +14,7 @@ import { sprintf } from "sprintf-js";
import { v4 as uuidv4 } from "uuid";
import { checkKeyPressed, adaptFromElectronKeyEvent, setKeyUtilPlatform } from "../util/keyutil";
import { platform } from "os";
import * as T from "../types/types";
const WaveAppPathVarName = "WAVETERM_APP_PATH";
const WaveDevVarName = "WAVETERM_DEV";
@@ -37,21 +38,25 @@ ensureDir(waveHome);
// normalize darwin/x64 to darwin/amd64 for GOARCH compatibility
let unamePlatform = process.platform;
let unameArch: string = process.arch;
``;
if (unameArch == "x64") {
unameArch = "amd64";
}
let logger;
let loggerConfig = {
let logger: winston.Logger;
let transports: winston.transport[] = [
new winston.transports.File({ filename: path.join(waveHome, "waveterm-app.log"), level: "info" }),
];
if (isDev) {
transports.push(new winston.transports.Console());
}
let loggerConfig: winston.LoggerOptions = {
level: "info",
format: winston.format.combine(
winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
winston.format.printf((info) => `${info.timestamp} ${info.message}`)
),
transports: [new winston.transports.File({ filename: path.join(waveHome, "waveterm-app.log"), level: "info" })],
transports: transports,
};
if (isDev) {
loggerConfig.transports.push(new winston.transports.Console());
}
logger = winston.createLogger(loggerConfig);
function log(...msg) {
try {
@@ -75,7 +80,7 @@ if (isDev) {
}
let app = electron.app;
app.setName(isDev ? "Wave (Dev)" : "Wave");
let waveSrvProc = null;
let waveSrvProc: child_process.ChildProcessWithoutNullStreams | null = null;
let waveSrvShouldRestart = false;
electron.dialog.showErrorBox = (title, content) => {
@@ -101,8 +106,8 @@ function checkPromptMigrate() {
// don't migrate if we're running dev version or if wave home directory already exists
return;
}
let homeDir = process.env.HOME;
let promptHome = path.join(homeDir, "prompt");
let homeDir: string = process.env.HOME as string;
let promptHome: string = path.join(homeDir, "prompt");
if (!fs.existsSync(promptHome) || !fs.existsSync(path.join(promptHome, "prompt.db"))) {
// make sure we have a valid prompt home directory (prompt.db must exist inside)
return;
@@ -170,7 +175,7 @@ function readAuthKey() {
return authKeyStr.trim();
}
let menuTemplate = [
let menuTemplate: (Electron.MenuItem | Electron.MenuItemConstructorOptions)[] = [
{
role: "appMenu",
submenu: [
@@ -250,7 +255,7 @@ function shFrameNavHandler(event: any, url: any) {
return;
}
function createMainWindow(clientData) {
function createMainWindow(clientData: T.ClientDataType | null) {
let bounds = calcBounds(clientData);
setKeyUtilPlatform(platform());
let win = new electron.BrowserWindow({
@@ -609,7 +614,9 @@ function runWaveSrv() {
pReject(new Error(sprintf("failed to start local server (%s)", waveSrvCmd)));
if (waveSrvShouldRestart) {
waveSrvShouldRestart = false;
this.runWaveSrv();
// small timeout here so we can reuse the listen socket
// this is normally only used in dev mode for debugging
setTimeout(runWaveSrv, 500);
}
});
proc.on("spawn", (e) => {
@@ -644,7 +651,7 @@ electron.ipcMain.on("context-editmenu", (event, { x, y }, opts) => {
}
console.log("context-editmenu");
let menu = new electron.Menu();
let menuItem = null;
let menuItem: Electron.MenuItem;
if (opts.showCut) {
menuItem = new electron.MenuItem({ label: "Cut", role: "cut" });
menu.append(menuItem);
@@ -657,7 +664,7 @@ electron.ipcMain.on("context-editmenu", (event, { x, y }, opts) => {
});
async function createMainWindowWrap() {
let clientData = null;
let clientData: T.ClientDataType | null = null;
try {
clientData = await getClientDataPoll(1);
} catch (e) {
+3 -6
View File
@@ -12,9 +12,6 @@ import { GlobalCommandRunner } from "./global";
import { Model } from "./model";
import { getTermPtyData } from "../util/modelutil";
const RemotePtyRows = 8; // also in main.tsx
const RemotePtyCols = 80;
class RemotesModel {
globalModel: Model;
selectedRemoteId: OV<string> = mobx.observable.box(null, {
@@ -180,14 +177,14 @@ class RemotesModel {
return;
}
let termOpts = {
rows: RemotePtyRows,
cols: RemotePtyCols,
rows: appconst.RemotePtyRows,
cols: appconst.RemotePtyCols,
flexrows: false,
maxptysize: 64 * 1024,
};
let termWrap = new TermWrap(elem, {
termContext: { remoteId: remoteId },
usedRows: RemotePtyRows,
usedRows: appconst.RemotePtyRows,
termOpts: termOpts,
winSize: null,
keyHandler: (e, termWrap) => {
+2 -2
View File
@@ -3,10 +3,10 @@
.terminal-wrapper {
.xterm-viewport {
overflow-y: hidden;
overflow: hidden;
}
&:hover .xterm-viewport,
&:focus-within .xterm-viewport {
overflow-y: auto;
overflow: auto;
}
}
+9
View File
@@ -560,6 +560,14 @@ type ReleaseInfoType = {
latestversion: string;
};
type ClientWinSizeType = {
width: number;
height: number;
top: number;
left: number;
fullscreen: boolean;
};
type ClientDataType = {
clientid: string;
userid: string;
@@ -569,6 +577,7 @@ type ClientDataType = {
dbversion: number;
openaiopts?: OpenAIOptsType;
releaseinfo?: ReleaseInfoType;
winsize: ClientWinSizeType;
};
type OpenAIOptsType = {