Merge branch 'canary'
This commit is contained in:
commit
b96a38828d
25 changed files with 307 additions and 341 deletions
|
|
@ -163,6 +163,9 @@ module.exports = {
|
|||
// set to true to enable screen reading apps (like NVDA) to read the contents of the terminal
|
||||
screenReaderMode: false,
|
||||
|
||||
// set to true to preserve working directory when creating splits or tabs
|
||||
preserveCWD: true,
|
||||
|
||||
// for advanced config flags please refer to https://hyper.is/#cfg
|
||||
},
|
||||
|
||||
|
|
|
|||
42
app/extend-electron.d.ts
vendored
42
app/extend-electron.d.ts
vendored
|
|
@ -1,25 +1,27 @@
|
|||
import type {Server} from './rpc';
|
||||
|
||||
declare module 'electron' {
|
||||
interface App {
|
||||
config: typeof import('./config');
|
||||
plugins: typeof import('./plugins');
|
||||
getWindows: () => Set<BrowserWindow>;
|
||||
getLastFocusedWindow: () => BrowserWindow | null;
|
||||
windowCallback?: (win: BrowserWindow) => void;
|
||||
createWindow: (
|
||||
fn?: (win: BrowserWindow) => void,
|
||||
options?: {size?: [number, number]; position?: [number, number]}
|
||||
) => BrowserWindow;
|
||||
setVersion: (version: string) => void;
|
||||
}
|
||||
declare global {
|
||||
namespace Electron {
|
||||
interface App {
|
||||
config: typeof import('./config');
|
||||
plugins: typeof import('./plugins');
|
||||
getWindows: () => Set<BrowserWindow>;
|
||||
getLastFocusedWindow: () => BrowserWindow | null;
|
||||
windowCallback?: (win: BrowserWindow) => void;
|
||||
createWindow: (
|
||||
fn?: (win: BrowserWindow) => void,
|
||||
options?: {size?: [number, number]; position?: [number, number]}
|
||||
) => BrowserWindow;
|
||||
setVersion: (version: string) => void;
|
||||
}
|
||||
|
||||
// type Server = import('./rpc').Server;
|
||||
interface BrowserWindow {
|
||||
uid: string;
|
||||
sessions: Map<any, any>;
|
||||
focusTime: number;
|
||||
clean: () => void;
|
||||
rpc: Server;
|
||||
// type Server = import('./rpc').Server;
|
||||
interface BrowserWindow {
|
||||
uid: string;
|
||||
sessions: Map<any, any>;
|
||||
focusTime: number;
|
||||
clean: () => void;
|
||||
rpc: Server;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ export const createMenu = (
|
|||
void dialog.showMessageBox({
|
||||
title: `About ${appName}`,
|
||||
message: `${appName} ${appVersion} (${updateChannel})`,
|
||||
detail: `Renderers: ${renderers}\nPlugins: ${pluginList}\n\nCreated by Guillermo Rauch\nCopyright © 2021 Vercel, Inc.`,
|
||||
detail: `Renderers: ${renderers}\nPlugins: ${pluginList}\n\nCreated by Guillermo Rauch\nCopyright © 2022 Vercel, Inc.`,
|
||||
buttons: [],
|
||||
icon: icon as any
|
||||
});
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ export default (
|
|||
execCommand: (command: string, focusedWindow?: BrowserWindow) => void
|
||||
): MenuItemConstructorOptions => {
|
||||
// Generating tab:jump array
|
||||
const tabJump = [];
|
||||
const tabJump: MenuItemConstructorOptions[] = [];
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
// 9 is a special number because it means 'last'
|
||||
const label = i === 9 ? 'Last' : `${i}`;
|
||||
|
|
|
|||
|
|
@ -10,10 +10,10 @@
|
|||
},
|
||||
"repository": "zeit/hyper",
|
||||
"dependencies": {
|
||||
"@electron/remote": "2.0.1",
|
||||
"@electron/remote": "2.0.4",
|
||||
"async-retry": "1.3.3",
|
||||
"chokidar": "^3.5.2",
|
||||
"color": "4.1.0",
|
||||
"chokidar": "^3.5.3",
|
||||
"color": "4.2.0",
|
||||
"default-shell": "1.0.1",
|
||||
"electron-fetch": "1.7.4",
|
||||
"electron-is-dev": "2.0.0",
|
||||
|
|
@ -23,6 +23,7 @@
|
|||
"lodash": "4.17.21",
|
||||
"mkdirp": "1.0.4",
|
||||
"ms": "2.1.3",
|
||||
"native-process-working-directory": "^1.0.2",
|
||||
"node-pty": "0.10.1",
|
||||
"os-locale": "5.0.0",
|
||||
"parse-url": "5.0.7",
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ function toDependencies(plugins_: {plugins: string[]}) {
|
|||
|
||||
if (match) {
|
||||
const index = match.index + 1;
|
||||
const pieces = [];
|
||||
const pieces: string[] = [];
|
||||
|
||||
pieces[0] = plugin.substring(0, index);
|
||||
pieces[1] = plugin.substring(index + 1, plugin.length);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
"extends": "../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"declarationDir": "../dist/tmp/appdts/",
|
||||
"outDir": "../target/"
|
||||
"outDir": "../target/",
|
||||
"noImplicitAny": false
|
||||
},
|
||||
"include": [
|
||||
"./**/*",
|
||||
|
|
|
|||
|
|
@ -15,10 +15,12 @@ import {execCommand} from '../commands';
|
|||
import {setRendererType, unsetRendererType} from '../utils/renderer-utils';
|
||||
import {decorateSessionOptions, decorateSessionClass} from '../plugins';
|
||||
import {enable as remoteEnable} from '@electron/remote/main';
|
||||
import {configOptions} from '../../lib/config';
|
||||
import {getWorkingDirectoryFromPID} from 'native-process-working-directory';
|
||||
|
||||
export function newWindow(
|
||||
options_: BrowserWindowConstructorOptions,
|
||||
cfg: any,
|
||||
cfg: configOptions,
|
||||
fn?: (win: BrowserWindow) => void
|
||||
): BrowserWindow {
|
||||
const classOpts = Object.assign({uid: uuidv4()});
|
||||
|
|
@ -128,10 +130,21 @@ export function newWindow(
|
|||
if (extraOptions[key] !== undefined) extraOptionsFiltered[key] = extraOptions[key];
|
||||
});
|
||||
|
||||
let cwd = '';
|
||||
if (cfg.preserveCWD === undefined || cfg.preserveCWD) {
|
||||
const activePID = extraOptionsFiltered.activeUid && sessions.get(extraOptionsFiltered.activeUid)?.pty?.pid;
|
||||
try {
|
||||
cwd = activePID && getWorkingDirectoryFromPID(activePID);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
cwd = cwd && isAbsolute(cwd) ? cwd : '';
|
||||
}
|
||||
|
||||
// remove the rows and cols, the wrong value of them will break layout when init create
|
||||
const defaultOptions = Object.assign(
|
||||
{
|
||||
cwd: workingDirectory,
|
||||
cwd: cwd || workingDirectory,
|
||||
splitDirection: undefined,
|
||||
shell: cfg.shell,
|
||||
shellArgs: cfg.shellArgs && Array.from(cfg.shellArgs)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import retry from 'async-retry';
|
|||
import {version} from './package.json';
|
||||
import {getDecoratedConfig} from './plugins';
|
||||
import autoUpdaterLinux from './auto-updater-linux';
|
||||
import {execSync} from 'child_process';
|
||||
|
||||
const {platform} = process;
|
||||
const isLinux = platform === 'linux';
|
||||
|
|
@ -35,24 +34,9 @@ let isInit = false;
|
|||
// Default to the "stable" update channel
|
||||
let canaryUpdates = false;
|
||||
|
||||
// Detect if we are running inside Rosetta emulation
|
||||
const isRosetta = () => {
|
||||
if (platform !== 'darwin') {
|
||||
return false;
|
||||
}
|
||||
const sysctlRosettaInfoKey = 'sysctl.proc_translated';
|
||||
let results = '';
|
||||
try {
|
||||
results = execSync(`sysctl ${sysctlRosettaInfoKey}`).toString();
|
||||
} catch (error) {
|
||||
console.log('Failed to detect Rosetta');
|
||||
}
|
||||
return results.includes(`${sysctlRosettaInfoKey}: 1`);
|
||||
};
|
||||
|
||||
const buildFeedUrl = (canary: boolean, currentVersion: string) => {
|
||||
const updatePrefix = canary ? 'releases-canary' : 'releases';
|
||||
const archSuffix = process.arch === 'arm64' || isRosetta() ? '_arm64' : '';
|
||||
const archSuffix = process.arch === 'arm64' || app.runningUnderARM64Translation ? '_arm64' : '';
|
||||
return `https://${updatePrefix}.hyper.is/update/${isLinux ? 'deb' : platform}${archSuffix}/${currentVersion}`;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@electron/remote@2.0.1":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmjs.org/@electron/remote/-/remote-2.0.1.tgz#810cbc595a21f0f94641eb2d7e8264063a3f84de"
|
||||
integrity sha512-bGX4/yB2bPZwXm1DsxgoABgH0Cz7oFtXJgkerB8VrStYdTyvhGAULzNLRn9rVmeAuC3VUDXaXpZIlZAZHpsLIA==
|
||||
"@electron/remote@2.0.4":
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npmjs.org/@electron/remote/-/remote-2.0.4.tgz#c3dae436aed79d1b8adcefc5a4963c06750ad5d8"
|
||||
integrity sha512-8m2P/d2RH986PmMW5lKygbPEjEYJ7RgCe37Y8DQ1wujKMH6VjmLIB+Y+DP2SA611svCZc58TRSd8FraGvcfGZw==
|
||||
|
||||
"@types/semver@^7.3.8":
|
||||
version "7.3.8"
|
||||
|
|
@ -61,10 +61,10 @@ braces@~3.0.2:
|
|||
dependencies:
|
||||
fill-range "^7.0.1"
|
||||
|
||||
chokidar@^3.5.2:
|
||||
version "3.5.2"
|
||||
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
|
||||
integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
|
||||
chokidar@^3.5.3:
|
||||
version "3.5.3"
|
||||
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
|
||||
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
|
||||
dependencies:
|
||||
anymatch "~3.1.2"
|
||||
braces "~3.0.2"
|
||||
|
|
@ -96,10 +96,10 @@ color-string@^1.9.0:
|
|||
color-name "^1.0.0"
|
||||
simple-swizzle "^0.2.2"
|
||||
|
||||
color@4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npmjs.org/color/-/color-4.1.0.tgz#9502e6a2dcacb26adf4c60910a27628d010b3de3"
|
||||
integrity sha512-o2rkkxyLGgYoeUy1OodXpbPAQNmlNBrirQ8ODO8QutzDiDMNdezSOZLNnusQ6pUpCQJUsaJIo9DZJKqa2HgH7A==
|
||||
color@4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.npmjs.org/color/-/color-4.2.0.tgz#0c782459a3e98838ea01e4bc0fb43310ca35af78"
|
||||
integrity sha512-hHTcrbvEnGjC7WBMk6ibQWFVDgEFTVmjrz2Q5HlU6ltwxv0JJN2Z8I7uRbWeQLF04dikxs8zgyZkazRJvSMtyQ==
|
||||
dependencies:
|
||||
color-convert "^2.0.1"
|
||||
color-string "^1.9.0"
|
||||
|
|
@ -441,6 +441,13 @@ nan@^2.14.0:
|
|||
resolved "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
|
||||
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
|
||||
|
||||
native-process-working-directory@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/native-process-working-directory/-/native-process-working-directory-1.0.2.tgz#7843e2fa1490f53cf8d2c7d1913de8b275e8b89a"
|
||||
integrity sha512-3a67QQV8r3YMUTSOgvtMOCjPDgCpb/8xjv93L8Cqb8bv3hOKsWis4/+8HCu3bgj8ADQV75SCYFSsAGM5G0cXmQ==
|
||||
dependencies:
|
||||
node-addon-api "^3.1.0"
|
||||
|
||||
native-reg@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/native-reg/-/native-reg-1.0.0.tgz#77f9acbf59eda02680c00b0b1b9d1e0078b7820d"
|
||||
|
|
@ -448,6 +455,11 @@ native-reg@1.0.0:
|
|||
dependencies:
|
||||
node-gyp-build "4"
|
||||
|
||||
node-addon-api@^3.1.0:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
|
||||
integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
|
||||
|
||||
node-gyp-build@4:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue