Vydané zdroje
Stáhnout zdroje ZIP
CH-J Server Manager
Procházejte adresáře a soubory konkrétního vydání aplikace.
Zdroje jsou zveřejněny pod CH-J Proprietary Software License 1.14. Jejich dostupnost nemění licenční podmínky ani neposkytuje další oprávnění.
1
<!doctype html>2
<html lang="cs">3
<head>4
<meta charset="utf-8">5
<meta name="viewport" content="width=device-width, initial-scale=1">6
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-src 'none'">7
<title>CH-J Server Manager</title>8
<link rel="stylesheet" href="../../node_modules/@xterm/xterm/css/xterm.css">9
<link rel="stylesheet" href="styles.css">10
<link rel="stylesheet" href="diagnostics.css">11
</head>12
<body>13
<div class="window-titlebar" aria-hidden="true">14
<span class="window-titlebar-mark">CJ</span>15
<span class="window-titlebar-title">CH-J Server Manager</span>16
</div>17
<div id="vaultOverlay" class="vault-overlay">18
<form id="vaultForm" class="vault-dialog">19
<select id="vaultLanguageSelect" class="vault-language" aria-label="Jazyk" data-i18n-aria-label="settings.language" disabled><option value="cs" data-i18n="settings.czech">Čeština</option><option value="de" data-i18n="settings.german">Deutsch</option><option value="en" data-i18n="settings.english">English</option></select>20
<div class="vault-mark">CJ</div>21
<span id="vaultModeText" class="eyebrow" data-i18n="vault.storage">ŠIFROVANÉ LOKÁLNÍ ÚLOŽIŠTĚ</span>22
<h1 id="vaultTitle" data-i18n="vault.unlockTitle">Odemknout Server Manager</h1>23
<p id="vaultDescription" data-i18n="vault.unlockIntro">Zadejte hlavní heslo. Heslo se neukládá na disk.</p>24
<label><span data-i18n="vault.password">Hlavní heslo</span><input id="vaultPassword" type="password" autocomplete="current-password" required></label>25
<label id="vaultConfirmLabel" hidden><span data-i18n="vault.confirmPassword">Potvrzení hesla</span><input id="vaultPasswordConfirm" type="password" autocomplete="new-password"></label>26
<p id="vaultMessage" class="form-message" aria-live="polite"></p>27
<button id="vaultSubmit" class="button primary wide" type="submit" data-i18n="vault.unlock">Odemknout</button>28
<button id="biometricUnlockButton" class="button wide" type="button" hidden></button>29
<button id="showVaultResetButton" class="button ghost wide vault-reset-link" type="button" hidden data-i18n="vault.forgot">Zapomenuté heslo / obnovit vault</button>30
<div id="vaultResetPanel" class="vault-reset-panel" hidden>31
<strong data-i18n="vault.resetIrreversible">Obnovení nelze vrátit zpět</strong>32
<p data-i18n="vault.resetDescription">Smažou se všechny serverové profily, uložené host fingerprinty a další šifrovaná data. Instalované pluginy a nastavení aktualizací zůstanou zachované.</p>33
<label><span data-i18n="vault.resetInstruction">Pro potvrzení napište SMAZAT</span><input id="vaultResetConfirmation" maxlength="6" autocomplete="off" spellcheck="false"></label>34
<div class="reset-actions"><button id="cancelVaultResetButton" class="button" type="button" data-i18n="vault.cancel">Zrušit</button><button id="confirmVaultResetButton" class="button danger" type="button" data-i18n="vault.resetAction">Smazat data a obnovit heslo</button></div>35
</div>36
</form>37
</div>38
<div class="app-shell">39
<aside class="sidebar">40
<div class="brand">41
<div class="brand-mark">CJ</div>42
<div><strong>CH-J</strong><span>Server Manager</span></div>43
</div>44
<nav aria-label="Hlavní navigace" data-i18n-aria-label="nav.aria">45
<button class="nav-button active" data-view="overview"><span>●</span><span class="nav-label" data-i18n="nav.overview">Přehled</span></button>46
<button class="nav-button" data-view="terminal"><span>>_</span><span class="nav-label" data-i18n="nav.terminal">Terminál</span></button>47
<button class="nav-button" data-view="profiles"><span>▤</span><span class="nav-label" data-i18n="nav.servers">Servery</span></button>48
<button class="nav-button" data-view="updates"><span>↻</span><span class="nav-label" data-i18n="nav.updates">Aktualizace</span></button>49
<button class="nav-button" data-view="plugins"><span>◇</span><span class="nav-label" data-i18n="nav.plugins">Pluginy</span></button>50
<button class="nav-button" data-view="diagnostics"><span>⌁</span><span class="nav-label" data-i18n="nav.diagnostics">Diagnostika serverů</span></button>51
<button id="hashToolButton" class="nav-button" type="button"><span>#</span><span class="nav-label" data-i18n="nav.hash">Hash a kontrolní součty</span></button>52
<button class="nav-button" data-view="settings"><span>⌘</span><span class="nav-label" data-i18n="nav.settings">Nastavení</span></button>53
</nav>54
<div class="sidebar-footer">55
<span class="status-dot"></span>56
<div><strong data-i18n="app.coreRunning">Core běží</strong><span id="sidebarVersion">v0.0.1</span></div>57
</div>58
</aside>60
<main>61
<header class="topbar">62
<div><span class="eyebrow" data-i18n="app.newArchitecture">NOVÁ ARCHITEKTURA</span><h1 id="viewTitle">Přehled Core</h1></div>63
<div class="topbar-actions"><div class="runtime-badge"><span class="status-dot"></span><span id="runtimeText" data-i18n="app.initializing">Inicializace…</span></div><button id="lockVaultButton" class="button ghost" data-i18n="app.lock">Zamknout</button></div>64
</header>66
<section class="view active" data-view-panel="overview">67
<div class="hero">68
<div><span class="eyebrow">CORE v0.0.1</span><h2 data-i18n="overview.cleanTitle">Čistý základ nové aplikace</h2><p data-i18n="overview.cleanDescription">Oddělené služby, omezené IPC, plugin runtime a bezpečný aktualizační kanál.</p></div>69
<div class="hero-orbit"><span>CORE</span></div>70
</div>71
<div class="card-grid">72
<article class="card"><span class="card-icon blue">◎</span><div><small data-i18n="overview.coreApi">Core API</small><strong id="coreApiValue">—</strong><p data-i18n="overview.coreApiDescription">Stabilní aplikační kontrakt</p></div></article>73
<article class="card"><span class="card-icon green">#</span><div><small data-i18n="overview.dataSchema">Data schema</small><strong id="dataSchemaValue">—</strong><p data-i18n="overview.dataSchemaDescription">Verzované uživatelské úložiště</p></div></article>74
<article class="card"><span class="card-icon violet">◇</span><div><small data-i18n="overview.installedPlugins">Nainstalované pluginy</small><strong id="pluginCountValue">0</strong><p data-i18n="overview.noToolsNeeded">Core funguje i bez Tools</p></div></article>75
</div>76
<article class="panel roadmap-panel">77
<div><span class="eyebrow" data-i18n="overview.currentSlice">AKTUÁLNÍ ŘEZ</span><h3 data-i18n="overview.sliceTitle">Vault + profily + SSH terminál</h3><p data-i18n="overview.sliceDescription">Funkční připojení s povinnou kontrolou host klíče a odděleným SessionManagerem.</p></div>78
<div class="progress"><span></span></div>79
</article>80
</section>82
<section class="view" data-view-panel="terminal">83
<div class="section-heading"><div><span class="eyebrow" data-i18n="terminal.eyebrow">SSH SESSION MANAGER</span><h2 data-i18n="terminal.title">Interaktivní terminál</h2></div><div class="connection-status"><span id="terminalState" class="connection-badge disconnected" data-i18n="terminal.disconnected">Odpojeno</span><span id="terminalLatency" class="terminal-latency" hidden></span></div></div>84
<article class="panel terminal-panel">85
<div class="terminal-toolbar">86
<label><span data-i18n="terminal.server">Server</span><select id="terminalProfileSelect"><option value="" data-i18n="terminal.selectServer">Vyberte server…</option></select></label>87
<label id="credentialLabel"><span id="credentialLabelText" data-i18n="terminal.password">Heslo</span><input id="terminalCredential" type="password" autocomplete="off" placeholder="SSH heslo" data-i18n-placeholder="terminal.sshPassword"></label>88
<button id="connectButton" class="button primary" type="button" data-i18n="terminal.connect">Připojit</button>89
<button id="disconnectButton" class="button" type="button" disabled data-i18n="terminal.disconnect">Odpojit</button>90
</div>91
<div id="terminalHost" class="terminal-host" data-i18n="terminal.noProfile">Nejprve vytvořte profil serveru.</div>92
<div id="terminal" aria-label="SSH terminál" data-i18n-aria-label="terminal.aria"></div>93
</article>94
</section>96
<section class="view" data-view-panel="profiles">97
<div class="section-heading"><div><span class="eyebrow" data-i18n="profiles.eyebrow">ŠIFROVANÉ PROFILY</span><h2 data-i18n="profiles.title">Správa serverů</h2></div><button id="newProfileButton" class="button" data-i18n="profiles.new">Nový server</button></div>98
<div class="profiles-layout">99
<article class="panel profile-list-panel">100
<div id="profileRows" class="profile-rows"></div>101
</article>102
<form id="profileForm" class="panel profile-form">103
<input id="profileId" type="hidden">104
<label><span data-i18n="profiles.name">Název</span><input id="profileLabel" maxlength="100" placeholder="Produkční server" data-i18n-placeholder="profiles.namePlaceholder" required></label>105
<div class="form-columns"><label><span data-i18n="profiles.host">Host / IP</span><input id="profileHost" placeholder="192.168.1.20" required></label><label><span data-i18n="profiles.port">Port</span><input id="profilePort" type="number" min="1" max="65535" value="22" required></label></div>106
<label><span data-i18n="profiles.user">Uživatel</span><input id="profileUsername" maxlength="128" placeholder="root" required></label>107
<label><span data-i18n="profiles.auth">Ověření</span><select id="profileAuthMethod"><option value="password" data-i18n="profiles.authPassword">Heslo při připojení</option><option value="privateKey" data-i18n="profiles.authKey">Soukromý klíč</option></select></label>108
<div id="passwordStorageField" class="password-storage-field">109
<label class="check-label"><input id="profileStorePassword" type="checkbox"><span data-i18n="profiles.storePassword">Uložit heslo do šifrovaného vaultu</span></label>110
<label><span data-i18n="profiles.storedPassword">SSH heslo</span><input id="profileStoredPassword" type="password" maxlength="1024" autocomplete="new-password" placeholder="Zadejte heslo k uložení" data-i18n-placeholder="profiles.storePasswordPlaceholder" disabled></label>111
<small data-i18n="profiles.passwordSecurity">Heslo se ukládá pouze uvnitř šifrovaného vaultu.</small>112
</div>113
<div id="privateKeyField" class="key-field" hidden><label><span data-i18n="profiles.privateKey">Soukromý klíč</span><input id="profilePrivateKeyPath" readonly placeholder="Vyberte soubor…" data-i18n-placeholder="profiles.selectFile"></label><button id="selectPrivateKeyButton" class="button" type="button" data-i18n="profiles.select">Vybrat</button></div>114
<p id="profileMessage" class="form-message" aria-live="polite"></p>115
<div class="button-row"><button class="button primary" type="submit" data-i18n="profiles.save">Uložit profil</button><button id="deleteProfileButton" class="button danger" type="button" hidden data-i18n="profiles.delete">Smazat</button></div>116
</form>117
</div>118
</section>120
<section class="view" data-view-panel="updates">121
<div class="section-heading"><div><span class="eyebrow" data-i18n="updates.eyebrow">HASH URL PROVIDER</span><h2 data-i18n="updates.title">Aktualizace Core</h2></div><div class="catalog-controls"><label><span data-i18n="updates.channelFilter">Kanál</span><select id="updateViewChannelSelect"><option value="alpha">Alpha</option><option value="beta">Beta</option><option value="stable">Stable</option><option value="all" data-i18n="channels.all">Vše</option></select></label><span class="alpha-badge">LAN</span></div></div>122
<article class="panel update-panel">123
<div class="update-version"><small data-i18n="updates.installed">Nainstalovaná verze</small><strong id="currentVersion">—</strong><span id="updateChannel">kanál alpha</span></div>124
<div class="update-copy"><h3 id="updateHeadline" data-i18n="updates.ready">Připraveno ke kontrole</h3><p id="updateMessage" data-i18n="updates.integrityIntro">Core ověří platformu, architekturu, velikost a SHA-512.</p><code id="updateHash" hidden></code></div>125
<div class="button-row">126
<button id="checkUpdateButton" class="button primary" data-i18n="updates.check">Zkontrolovat</button>127
<button id="downloadUpdateButton" class="button" disabled data-i18n="updates.download">Stáhnout a ověřit</button>128
<button id="installUpdateButton" class="button primary" hidden data-i18n="updates.install">Spustit instalátor</button>129
<button id="revealUpdateButton" class="button ghost" hidden data-i18n="updates.reveal">Zobrazit soubor</button>130
</div>131
</article>132
<article class="panel release-catalog-panel">133
<div class="release-catalog-header"><div><span class="eyebrow" data-i18n="updates.catalogEyebrow">KATALOG VYDÁNÍ</span><h3 data-i18n="updates.catalogTitle">Dostupná vydání</h3></div><span id="updateReleaseCount">0</span></div>134
<div id="updateReleaseRows" class="update-release-rows"><div class="update-release-empty" data-i18n="updates.catalogBeforeCheck">Po kontrole se zde zobrazí všechna kompatibilní vydání.</div></div>135
</article>136
<div class="notice"><strong data-i18n="updates.alphaSecurity">Alfa bezpečnostní režim</strong><p data-i18n="updates.alphaDescription">SHA-512 kontroluje integritu stažení. Instalace se nespouští automaticky a zdroj je omezený na povolenou HTTPS doménu.</p></div>137
</section>139
<section class="view" data-view-panel="plugins">140
<div class="section-heading"><div><span class="eyebrow" data-i18n="plugins.eyebrow">PLUGIN API 1.2.0</span><h2 data-i18n="plugins.title">Instalované Tools</h2></div><div class="catalog-controls"><label><span data-i18n="plugins.channelFilter">Kanál katalogu</span><select id="pluginViewChannelSelect"><option value="alpha">Alpha</option><option value="beta">Beta</option><option value="stable">Stable</option><option value="all" data-i18n="channels.all">Vše</option></select></label><button id="checkPluginCatalogButton" class="button primary" data-i18n="plugins.checkCatalog">Načíst webový katalog</button></div></div>141
<article class="panel table-panel">142
<div class="table-header plugin-table-row"><span data-i18n="plugins.plugin">Plugin</span><span data-i18n="plugins.version">Verze</span><span data-i18n="plugins.permissions">Oprávnění</span><span></span></div>143
<div id="pluginRows" class="plugin-rows"><div class="empty-state"><strong data-i18n="plugins.none">Zatím žádné pluginy</strong><span data-i18n="plugins.first">První bude System Monitor.</span></div></div>144
</article>145
<div class="section-heading plugin-catalog-heading"><div><span class="eyebrow" data-i18n="plugins.webCatalog">WEBOVÝ KATALOG</span><h3 data-i18n="plugins.available">Dostupné pluginy</h3></div><span id="pluginCatalogSource"></span></div>146
<article class="panel table-panel">147
<div class="table-header plugin-table-row"><span data-i18n="plugins.plugin">Plugin</span><span data-i18n="plugins.version">Verze</span><span data-i18n="plugins.permissions">Oprávnění</span><span></span></div>148
<div id="pluginCatalogRows" class="plugin-rows"><div class="plugin-catalog-empty" data-i18n="plugins.catalogBeforeCheck">Nejprve načtěte katalog z povoleného update serveru.</div></div>149
</article>150
</section>152
<section class="view" data-view-panel="diagnostics" id="diagnosticsView"></section>154
<section class="view" data-view-panel="settings">155
<div class="section-heading"><div><span class="eyebrow" data-i18n="settings.eyebrow">LOKÁLNÍ KONFIGURACE</span><h2 data-i18n="settings.title">Nastavení Core</h2></div></div>156
<form id="settingsForm" class="panel settings-panel">157
<label><span data-i18n="settings.language">Jazyk</span><select id="languageSelect"><option value="cs" data-i18n="settings.czech">Čeština</option><option value="de" data-i18n="settings.german">Deutsch</option><option value="en" data-i18n="settings.english">English</option></select></label>158
<label><span data-i18n="settings.updateChannel">Kanál aktualizací</span><select id="channelSelect"><option value="alpha">Alpha</option><option value="beta">Beta</option><option value="stable">Stable</option><option value="all" data-i18n="channels.all">Vše</option></select></label>159
<label><span data-i18n="settings.pluginChannel">Kanál pluginů</span><select id="pluginChannelSelect"><option value="alpha">Alpha</option><option value="beta">Beta</option><option value="stable">Stable</option><option value="all" data-i18n="channels.all">Vše</option></select></label>160
<label class="check-label"><input id="autoCheckInput" type="checkbox"><span data-i18n="settings.autoCheck">Automaticky kontrolovat při startu</span></label>161
<div class="field"><span data-i18n="settings.allowedServers">Povolené update servery</span><code id="baseUrlsText"></code></div>162
<div class="button-row"><button class="button primary" type="submit" data-i18n="settings.save">Uložit nastavení</button><span id="settingsStatus"></span></div>163
</form>164
<form id="securityForm" class="panel settings-panel security-panel">165
<h3 data-i18n="security.title">Zabezpečení</h3>166
<p id="biometricStatus" aria-live="polite"></p>167
<p id="biometricProtection"></p>168
<div class="button-row">169
<button id="enableBiometricsButton" class="button" type="button" data-i18n="security.enable">Zapnout biometrické odemykání</button>170
<button id="disableBiometricsButton" class="button" type="button" data-i18n="security.remove">Vypnout a odstranit registraci</button>171
<button id="testBiometricsButton" class="button" type="button" data-i18n="security.test">Otestovat systémové ověření</button>172
</div>173
<label class="check-label"><input id="autoLockEnabled" type="checkbox"><span data-i18n="security.autoLock">Automaticky zamknout při nečinnosti</span></label>174
<label><span data-i18n="security.timeout">Doba nečinnosti</span><select id="autoLockMinutes"><option value="0" data-i18n="security.never">Nikdy</option><option value="1">1 min</option><option value="5">5 min</option><option value="10">10 min</option><option value="15">15 min</option><option value="30">30 min</option><option value="60">60 min</option></select></label>175
<label class="check-label"><input id="lockOnBlur" type="checkbox"><span data-i18n="security.blur">Zamknout při ztrátě zaměření aplikace</span></label>176
<label class="check-label"><input id="requireSystemAuthentication" type="checkbox"><span data-i18n="security.sensitive">Vyžadovat systémové ověření citlivých operací</span></label>177
<p data-i18n="security.scope">Ověření chrání odstranění profilu, instalaci/odstranění pluginu, spuštění instalátoru a reset odemčeného Vaultu. Příkazy vzdáleného terminálu tímto ověřením chráněny nejsou.</p>178
<p data-i18n="security.lockEffect">Zamknutí ukončí aktivní SSH relace, zavře pluginy a zastaví diagnostiku.</p>179
<label><span data-i18n="security.confirmPassword">Hlavní heslo pro změnu pravidel zamykání</span><input id="securityMasterPassword" type="password" autocomplete="current-password" required></label>180
<div class="button-row"><button class="button primary" type="submit" data-i18n="settings.save">Uložit nastavení</button><span id="securityMessage" aria-live="polite"></span></div>181
</form>182
<article class="panel legal-panel">183
<div><span class="eyebrow" data-i18n="legal.eyebrow">PRÁVNÍ INFORMACE</span><h3 data-i18n="legal.title">Licence a dokumentace</h3><p data-i18n="legal.description">CH-J Server Manager je poskytován pod CH-J Proprietary Software License 1.14. Licence komponent třetích stran zůstávají zachované.</p><small>Copyright © 2026 Josef Chudy · CH-J Proprietary Software License 1.14</small></div>184
<div class="button-row legal-actions">185
<button class="button" type="button" data-legal-document="application" data-i18n="legal.application">Licence aplikace</button>186
<button class="button" type="button" data-legal-document="notice" data-i18n="legal.notice">Autorské oznámení</button>187
<button class="button" type="button" data-legal-document="thirdParty" data-i18n="legal.thirdParty">Licence třetích stran</button>188
<button class="button" type="button" data-legal-document="thirdPartyBundle" data-i18n="legal.thirdPartyBundle">Kompletní licenční balík</button>189
<button class="button ghost" type="button" data-legal-document="electron" data-i18n="legal.electron">Licence Electronu</button>190
<button class="button ghost" type="button" data-legal-document="chromium" data-i18n="legal.chromium">Licence Chromia</button>191
<button class="button" type="button" data-legal-document="documentation" data-i18n="legal.documentation">Dokumentace</button>192
<button class="button" type="button" data-legal-document="safetyCzech" data-i18n="legal.safetyCzech">Bezpečnost a zálohování (CS)</button>193
<button class="button" type="button" data-legal-document="safetyEnglish" data-i18n="legal.safetyEnglish">Bezpečnost a zálohování (EN)</button>194
<button class="button" type="button" data-legal-document="safetyGerman" data-i18n="legal.safetyGerman">Bezpečnost a zálohování (DE)</button>195
</div>196
</article>197
</section>198
</main>199
</div>200
<aside id="pluginTaskbar" class="plugin-taskbar" hidden aria-label="Minimalizované pluginy" data-i18n-aria-label="plugins.minimized">201
<span class="plugin-taskbar-title" data-i18n="plugins.minimized">Minimalizované pluginy</span>202
<div id="pluginTaskbarItems" class="plugin-taskbar-items"></div>203
</aside>204
<script src="../../node_modules/@xterm/xterm/lib/xterm.js"></script>205
<script src="../../node_modules/@xterm/addon-fit/lib/addon-fit.js"></script>206
<script src="i18n.js"></script>207
<script src="diagnosticsI18n.js"></script>208
<script src="diagnostics.js"></script>209
<script src="app.js"></script>210
</body>211
</html>SHA-256: 7b6cf9fdd2bf480293f5a1e3280b3a7f51086017252edc1d191a731fcc73fa38
SHA-256 archivu: 5ac91caf4fa32a6fdb114f2430deed486fbe7489d5eea343d1f034169fafb5e0