Skip to content

Commit 782ff6b

Browse files
committed
Merge branch 'release/1.1.0'
2 parents 867908d + 9f046dd commit 782ff6b

20 files changed

Lines changed: 383 additions & 254 deletions

package-lock.json

Lines changed: 168 additions & 168 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,30 +33,30 @@
3333
"@eslint/js": "^10.0.1",
3434
"@stylistic/eslint-plugin": "^5.10.0",
3535
"@types/auto-launch": "^5.0.5",
36-
"@types/node": "^25.5.0",
36+
"@types/node": "^25.5.2",
3737
"clean-css": "^5.3.3",
3838
"concurrently": "^9.2.1",
3939
"copy-webpack-plugin": "^14.0.0",
40-
"electron": "^40.8.5",
40+
"electron": "^41.2.0",
4141
"electron-builder": "^26.8.1",
42-
"eslint": "^10.1.0",
42+
"eslint": "^10.2.0",
4343
"html-minifier-terser": "^7.2.0",
4444
"rimraf": "^6.1.3",
4545
"terser-webpack-plugin": "^5.4.0",
46-
"ts-loader": "^9.5.4",
46+
"ts-loader": "^9.5.7",
4747
"typescript": "^5.9.3",
48-
"typescript-eslint": "^8.58.0",
48+
"typescript-eslint": "^8.58.1",
4949
"webpack": "^5.105.4",
5050
"webpack-cli": "^7.0.2"
5151
},
5252
"dependencies": {
5353
"@ecromaneli/search-engine": "^3.0.0",
5454
"auto-launch": "^5.0.6",
5555
"electron-context-menu": "^4.1.2",
56-
"electron-draggable": "^1.5.2",
57-
"electron-findbar": "^3.6.0",
56+
"electron-draggable": "^1.5.3",
57+
"electron-findbar": "^3.7.0",
5858
"electron-store": "^11.0.2",
5959
"electron-updater": "^6.8.3",
60-
"vue": "^3.5.31"
60+
"vue": "^3.5.32"
6161
}
6262
}

src/AppState.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,19 @@ export type SystemTheme = 'light' | 'dark';
1414
export type ResetBoundType = 'bounds' | 'position' | '';
1515

1616
class AppState {
17-
private _autoLauncher = new AutoLaunch({ name: 'Handbook' });
18-
private _strings: Strings = getLanguageStrings(Storage.getSettings(Settings.APP_LANGUAGE) || app.getLocale());
17+
private readonly _autoLauncher = new AutoLaunch({ name: 'Handbook' });
18+
private _language = Storage.getSettings<string>(Settings.APP_LANGUAGE) || app.getLocale();
19+
private _strings: Strings = getLanguageStrings(this._language);
1920
private _defaultAppMenu?: MenuItem[];
2021
private _globalShortcut = '';
2122
private _resetBoundsType: ResetBoundType = Storage.getSettings(Settings.RESET_BOUNDS);
2223
private _systemTheme = this.getSystemTheme();
2324
private _tray?: Tray;
2425
private _preferences?: BrowserWindow;
25-
private _fromClipboardPage: Page = new Page(void 0, this.strings.menu.fromClipboard);
2626
private _pages: Page[] = [];
27-
private _appMenuTemplate: MenuItemConstructorOptions[] = [];
27+
private readonly _fromClipboardPage: Page = new Page(void 0, this.strings.menu.fromClipboard);
2828
private readonly currentStack: { frame?: BaseWindow, navbar?: WebContentsView, page?: Page } = {};
29+
private readonly onViewChangeHandler = function (this: Page) { ViewPropagator.propagate(this.view); };
2930
private readonly contextMenu: {
3031
tray?: MenuItemConstructorOptions[],
3132
view?: MenuItemConstructorOptions[],
@@ -35,6 +36,7 @@ class AppState {
3536
constructor() { this.debugLifecycleStatus(); }
3637

3738
get autoLauncher(): AutoLaunch { return this._autoLauncher; }
39+
get language(): string { return this._language; }
3840
get strings(): Strings { return this._strings; }
3941
set defaultAppMenu(template: MenuItem[]) { this._defaultAppMenu = template; }
4042
get defaultAppMenu(): MenuItem[] { return this._defaultAppMenu!; }
@@ -63,20 +65,21 @@ class AppState {
6365
this.currentStack.page = page;
6466
if (page) {
6567
ViewPropagator.propagate(page.view);
66-
page.setViewChangeHandler(() => ViewPropagator.propagate(page.view));
68+
if (!page.hasViewChangeHandler()) {
69+
page.setViewChangeHandler(this.onViewChangeHandler);
70+
}
6771
}
6872
}
6973
get currentPage(): Page | undefined { return this.currentStack.page; }
7074
set pages(pages: Page[]) { this._pages = pages; }
7175
get pages(): Page[] { return this._pages; }
72-
get appMenuTemplate(): MenuItemConstructorOptions[] { return this._appMenuTemplate; }
73-
set appMenuTemplate(template: MenuItemConstructorOptions[]) { this._appMenuTemplate = template; }
7476

7577
set googleApiKey(key: string) { process.env.GOOGLE_API_KEY = key; }
7678
set themeSource(theme: 'light' | 'dark' | 'system') { nativeTheme.themeSource = theme; }
7779

7880
public refreshStrings() {
79-
this._strings = getLanguageStrings(Storage.getSettings(Settings.APP_LANGUAGE) || app.getLocale());
81+
this._language = Storage.getSettings<string>(Settings.APP_LANGUAGE) || app.getLocale();
82+
this._strings = getLanguageStrings(this._language);
8083
this._fromClipboardPage.label = this.strings.menu.fromClipboard;
8184
}
8285

@@ -98,9 +101,10 @@ class AppState {
98101
if (process.env.NODE_ENV !== 'development') { return []; }
99102
const allPages = () => [this._fromClipboardPage, ...this._pages];
100103
const pageType = (current?: Page) => {
101-
return !current ? '' :
102-
!current.view ? 'no view' :
103-
current.view.webContents.isDestroyed() ? 'view: destroyed' : 'view: alive';
104+
if (!current) { return ''; }
105+
if (!current.view) { return 'no view'; }
106+
return current.label + (current.hasView ?
107+
current.view.webContents && !current.view.webContents.isDestroyed() ? ': alive' : ': destroyed' : '');
104108
};
105109

106110
return [

src/data/Constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ const DefaultSettings: Record<string, any> = {};
5353
DefaultSettings[Settings.SHOW_FRAME] = true;
5454
DefaultSettings[Settings.BACKGROUND_COLOR] = '#171717';
5555
DefaultSettings[Settings.FOCUS_OPACITY] = 100;
56-
DefaultSettings[Settings.BLUR_OPACITY] = 70;
56+
DefaultSettings[Settings.BLUR_OPACITY] = 90;
5757
DefaultSettings[Settings.KEEP_OPACITY_WHEN_MAXIMIZED] = false;
5858
DefaultSettings[Settings.ALLOW_FULLSCREEN] = false;
5959
DefaultSettings[Settings.RESET_BOUNDS] = 'position';

src/locale/de.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ export const de: Strings = {
4444
home: 'Startseite',
4545
resetWindow: 'Fenster Zurücksetzen',
4646
resetBounds: 'Position Zurücksetzen',
47+
searchOnWeb: 'Im Web suchen',
48+
searchOnGoogle: 'Google durchsuchen',
49+
searchWithGemini: 'Mit Gemini suchen',
50+
translate: 'Übersetzen',
4751
copyUrl: 'URL Kopieren',
4852
copyLink: 'Link Kopieren',
4953
openInBrowser: 'Im Browser Öffnen',
@@ -323,6 +327,7 @@ export const de: Strings = {
323327
gistId: 'Gist-ID',
324328
gistIdHint: '(optional, automatisch aus Ihren Gists erkannt)',
325329
gistIdPlaceholder: 'Leer lassen, um ein neues Gist zu erstellen',
330+
loadSettings: 'Einstellungen laden',
326331
hide: 'Ausblenden',
327332
show: 'Anzeigen',
328333
},

src/locale/en.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ export const en = {
4444
home: 'Home',
4545
resetWindow: 'Reset Window',
4646
resetBounds: 'Reset Bounds',
47+
searchOnWeb: 'Search on Web',
48+
searchOnGoogle: 'Search on Google',
49+
searchWithGemini: 'Search with Gemini',
50+
translate: 'Translate',
4751
copyUrl: 'Copy URL',
4852
copyLink: 'Copy Link',
4953
openInBrowser: 'Open in Browser',
@@ -322,6 +326,7 @@ export const en = {
322326
gistId: 'Gist ID',
323327
gistIdHint: '(optional, auto-detected from your gists)',
324328
gistIdPlaceholder: 'Leave empty to create a new gist',
329+
loadSettings: 'Load Settings',
325330
hide: 'Hide',
326331
show: 'Show',
327332
},

src/locale/es.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ export const es: Strings = {
4444
home: 'Inicio',
4545
resetWindow: 'Restablecer Ventana',
4646
resetBounds: 'Restablecer Posición',
47+
searchOnWeb: 'Buscar en la Web',
48+
searchOnGoogle: 'Buscar en Google',
49+
searchWithGemini: 'Buscar con Gemini',
50+
translate: 'Traducir',
4751
copyUrl: 'Copiar URL',
4852
copyLink: 'Copiar Enlace',
4953
openInBrowser: 'Abrir en el Navegador',
@@ -323,6 +327,7 @@ export const es: Strings = {
323327
gistId: 'ID del Gist',
324328
gistIdHint: '(opcional, auto-detectado de tus gists)',
325329
gistIdPlaceholder: 'Dejar vacío para crear un nuevo gist',
330+
loadSettings: 'Cargar configuración',
326331
hide: 'Ocultar',
327332
show: 'Mostrar',
328333
},

src/locale/fr.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ export const fr: Strings = {
4444
home: 'Accueil',
4545
resetWindow: 'Réinitialiser la Fenêtre',
4646
resetBounds: 'Réinitialiser la Position',
47+
searchOnWeb: 'Rechercher sur le Web',
48+
searchOnGoogle: 'Rechercher sur Google',
49+
searchWithGemini: 'Rechercher avec Gemini',
50+
translate: 'Traduire',
4751
copyUrl: 'Copier l\'URL',
4852
copyLink: 'Copier le Lien',
4953
openInBrowser: 'Ouvrir dans le Navigateur',
@@ -323,6 +327,7 @@ export const fr: Strings = {
323327
gistId: 'ID du Gist',
324328
gistIdHint: '(optionnel, détecté automatiquement depuis vos gists)',
325329
gistIdPlaceholder: 'Laisser vide pour créer un nouveau gist',
330+
loadSettings: 'Charger les paramètres',
326331
hide: 'Masquer',
327332
show: 'Afficher',
328333
},

src/locale/it.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ export const it: Strings = {
4444
home: 'Home',
4545
resetWindow: 'Ripristina Finestra',
4646
resetBounds: 'Ripristina Posizione',
47+
searchOnWeb: 'Cerca sul Web',
48+
searchOnGoogle: 'Cerca su Google',
49+
searchWithGemini: 'Cerca con Gemini',
50+
translate: 'Traduci',
4751
copyUrl: 'Copia URL',
4852
copyLink: 'Copia Link',
4953
openInBrowser: 'Apri nel Browser',
@@ -323,6 +327,7 @@ export const it: Strings = {
323327
gistId: 'ID del Gist',
324328
gistIdHint: '(opzionale, rilevato automaticamente dai tuoi gist)',
325329
gistIdPlaceholder: 'Lascia vuoto per creare un nuovo gist',
330+
loadSettings: 'Carica impostazioni',
326331
hide: 'Nascondi',
327332
show: 'Mostra',
328333
},

src/locale/pt-BR.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ export const ptBR: Strings = {
4444
home: 'Início',
4545
resetWindow: 'Redefinir Janela',
4646
resetBounds: 'Redefinir Posição',
47+
searchOnWeb: 'Pesquisar na Web',
48+
searchOnGoogle: 'Pesquisar no Google',
49+
searchWithGemini: 'Pesquisar com Gemini',
50+
translate: 'Traduzir',
4751
copyUrl: 'Copiar URL',
4852
copyLink: 'Copiar Link',
4953
openInBrowser: 'Abrir no Navegador',
@@ -323,6 +327,7 @@ export const ptBR: Strings = {
323327
gistId: 'ID do Gist',
324328
gistIdHint: '(opcional, auto-detectado de seus gists)',
325329
gistIdPlaceholder: 'Deixe em branco para criar um novo gist',
330+
loadSettings: 'Carregar configurações',
326331
hide: 'Ocultar',
327332
show: 'Mostrar',
328333
},

0 commit comments

Comments
 (0)