mirror of
https://github.com/hanzoai/ide.git
synced 2026-10-30 18:33:54 +00:00
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.
152 lines
3.6 KiB
HTML
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>
|