Files
ide/index.html
zeekay a5f0f8c9b6 Name the IDE what it is, and let a fresh clone build it
The window, the launcher and the bundle all said "Hanzo", which is the
desktop app's name — two products answering to one word, and on Linux the
two debs fought over the same entry and the same /usr/bin path.

Three things stopped a fresh clone from building at all:

  - src/workbench.ts imports @codingame/monaco-vscode-view-common-service-override
    and no package.json declared it. It resolved only where another package
    had hoisted it, so the build worked on a warm tree and failed on a cold
    one.
  - The npm Tauri packages were pinned below the Rust crates they pair with.
    src-tauri carries no Cargo.lock, so the crates float; api/cli/dialog/fs/sql
    now name the minors those crates actually resolve to.
  - The mark is the H wordmark drawn as an outline, so the IDE reads as a
    sibling of the app rather than a copy of it. Every size is regenerated
    from one master on the 824/1024 grid the platform icons use.
2026-09-05 19:15:51 -07:00

152 lines
3.6 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Hanzo IDE</title>
<style>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html, body {
height: 100%;
width: 100%;
overflow: hidden;
background: #1e1e1e;
}
/* Outer shell — full viewport, vertical flex */
#workbench-shell {
display: flex;
flex-direction: column;
height: 100vh;
width: 100vw;
overflow: hidden;
}
/* Title bar — hidden; using native Tauri window decorations */
#workbench-titlebar {
display: none;
}
/* Main content row: activitybar | sidebar | editor+panel stack */
#workbench-main {
display: flex;
flex: 1;
overflow: hidden;
min-height: 0;
}
/* Activity bar — narrow icon column on the left */
#workbench-activitybar {
width: 48px;
flex-shrink: 0;
overflow: hidden;
}
/* Sidebar — collapsible pane next to activity bar */
#workbench-sidebar {
width: 300px;
flex-shrink: 0;
overflow: hidden;
}
/* Editor + panel take the remaining space, stacked vertically */
#workbench-center {
display: flex;
flex-direction: column;
flex: 1;
overflow: hidden;
min-width: 0;
}
/* Editor area — fills most of center column */
#workbench-editor {
flex: 1;
overflow: hidden;
min-height: 0;
}
/* Panel — terminal/problems/output at bottom of center column */
#workbench-panel {
height: 250px;
flex-shrink: 0;
overflow: hidden;
}
/* Status bar — full-width bar at the very bottom */
#workbench-statusbar {
height: 22px;
flex-shrink: 0;
overflow: hidden;
}
/* Loading screen while workbench boots */
#workbench-loading {
position: fixed;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
background: #1e1e1e;
color: #cccccc;
font-family: 'Zen', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
font-size: 14px;
z-index: 9999;
transition: opacity 0.3s ease;
}
#workbench-loading.hidden {
opacity: 0;
pointer-events: none;
}
.loading-inner {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.loading-logo {
width: 280px;
height: 70px;
background: url('/wordmark.svg') center/contain no-repeat;
}
.loading-spinner {
width: 24px;
height: 24px;
border: 2px solid rgba(255,255,255,0.1);
border-top-color: #ffffff;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
</style>
</head>
<body>
<!-- Loading screen while workbench boots -->
<div id="workbench-loading">
<div class="loading-inner">
<div class="loading-logo"></div>
<div class="loading-spinner"></div>
</div>
</div>
<!-- VS Code workbench shell — getWorkbenchServiceOverride manages layout internally -->
<div id="workbench-shell"></div>
<script type="module" src="/src/main.ts"></script>
<!-- Branding and theme overrides are in src/global.css -->
</body>
</html>