Eugeny/tabby · warning · Error
Unavailable
Error message
Unavailable
What it means
Thrown by WebHostWindow.minimize(), the web implementation of the abstract HostWindowService.minimize(). A web page cannot minimize the host OS window, so the browser build throws 'Unavailable'. Other methods like setTitle, toggleFullscreen, and close ARE implemented because the browser exposes them; minimize is not.
Source
Thrown at tabby-web/src/services/hostWindow.service.ts:44
reload (): void {
location.reload()
}
setTitle (title?: string): void {
document.title = title ?? 'Tabby'
}
toggleFullscreen (): void {
if (this.isFullscreen) {
document.exitFullscreen()
} else {
document.body.requestFullscreen({ navigationUI: 'hide' })
}
}
minimize (): void {
throw new Error('Unavailable')
}
isMaximized (): boolean {
return true
}
toggleMaximize (): void {
throw new Error('Unavailable')
}
close (): void {
window.close()
}
}
View on GitHub (pinned to 14e2d60b9b)
Solutions
- Hide the minimize button when hostWindow is the Web implementation or platform is Web.
- Catch 'Unavailable' and show a tooltip/message that the OS window cannot be minimized from the browser.
- Use the desktop build where native window controls are required.
- Bind minimize only in the Electron host window service path.
Example fix
// before
this.window?.minimize()
// after
try {
this.window?.minimize()
} catch {
// web build: no native minimize available
} Defensive patterns
Strategy: fallback
Validate before calling
import { Platform } from 'tabby-core'
if (hostApp.platform === Platform.Web) {
// minimize unavailable in browser; disable the button
} else {
hostWindow.minimize()
} Type guard
import { WebHostWindow } from 'tabby-web'
function isWebWindow (w: unknown): w is WebHostWindow {
return w instanceof WebHostWindow
} Try / catch
try { this.window?.minimize() } catch (e) {
if (e.message !== 'Unavailable') throw e
} Prevention
- Hide custom minimize controls in the web build.
- Catch 'Unavailable' in shared window-control components.
- Keep window-control affordances platform-aware.
When it happens
Trigger: hostWindow.minimize() is called in the web build. The window controls (app/lib/window.ts:390) call this when the user clicks a custom 'minimize' titlebar button rendered inside the web app.
Common situations: Custom in-app window controls (frameless-style title bar buttons) are rendered in the web build and the user clicks minimize; shared window-control component runs in both Electron and Web; a plugin triggers minimize programmatically.
Related errors
AI-assisted analysis of Eugeny/tabby@14e2d60b9b (2026-08-12).
Data as JSON: /api/errors/730969da7995732e.
Report an issue: GitHub.