From e70b133073a9af3e02b3b126e6070cccdaa1d43e Mon Sep 17 00:00:00 2001 From: swanadiva Date: Tue, 7 Jul 2026 15:36:12 +0700 Subject: [PATCH] fix: add missing _content partial templates for HTMX nav (terminal, sftp, settings, brief) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Create terminal_content.html, sftp_content.html, settings_content.html, brief_content.html - Update full page templates to use partial templates via {{template}} - Handlers already rendered these templates on HX-Request, but files were missing → 500 - All pages now return 200 for both full page and HTMX nav requests --- app/backend/static/css/output.css | 172 ----------------- app/backend/static/js/clipboard.js | 8 +- app/backend/views/brief.html | 77 +------- app/backend/views/brief_content.html | 78 ++++++++ app/backend/views/host_modal.html | 6 +- app/backend/views/index.html | 9 +- app/backend/views/key_grid.html | 146 +++++++------- app/backend/views/keychain.html | 4 +- app/backend/views/nav.html | 2 +- app/backend/views/settings.html | 243 +---------------------- app/backend/views/settings_content.html | 244 ++++++++++++++++++++++++ app/backend/views/sftp.html | 139 +------------- app/backend/views/sftp_content.html | 141 ++++++++++++++ app/backend/views/sftp_pane.html | 4 +- app/backend/views/snippet_grid.html | 91 +++++---- app/backend/views/snippets.html | 2 +- app/backend/views/terminal.html | 90 +-------- app/backend/views/terminal_content.html | 91 +++++++++ 18 files changed, 696 insertions(+), 851 deletions(-) create mode 100644 app/backend/views/brief_content.html create mode 100644 app/backend/views/settings_content.html create mode 100644 app/backend/views/sftp_content.html create mode 100644 app/backend/views/terminal_content.html diff --git a/app/backend/static/css/output.css b/app/backend/static/css/output.css index 537e845..ea7bce5 100644 --- a/app/backend/static/css/output.css +++ b/app/backend/static/css/output.css @@ -6,10 +6,8 @@ --font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif; --font-mono: 'JetBrains Mono', ui-monospace, monospace; --color-red-50: oklch(97.1% 0.013 17.38); - --color-red-200: oklch(88.5% 0.062 18.334); --color-red-400: oklch(70.4% 0.191 22.216); --color-red-500: oklch(63.7% 0.237 25.331); - --color-red-600: oklch(57.7% 0.245 27.325); --color-amber-500: oklch(76.9% 0.188 70.08); --color-yellow-500: oklch(79.5% 0.184 86.047); --color-purple-50: oklch(97.7% 0.014 308.299); @@ -17,7 +15,6 @@ --color-black: #000; --color-white: #fff; --spacing: 0.25rem; - --container-xs: 20rem; --container-sm: 24rem; --container-md: 28rem; --container-lg: 32rem; @@ -315,9 +312,6 @@ .mt-3 { margin-top: calc(var(--spacing) * 3); } - .mt-6 { - margin-top: calc(var(--spacing) * 6); - } .mr-1 { margin-right: var(--spacing); } @@ -330,18 +324,12 @@ .mb-2 { margin-bottom: calc(var(--spacing) * 2); } - .mb-3 { - margin-bottom: calc(var(--spacing) * 3); - } .mb-4 { margin-bottom: calc(var(--spacing) * 4); } .mb-6 { margin-bottom: calc(var(--spacing) * 6); } - .ml-0\.5 { - margin-left: calc(var(--spacing) * 0.5); - } .ml-1 { margin-left: var(--spacing); } @@ -465,27 +453,18 @@ .w-11 { width: calc(var(--spacing) * 11); } - .w-14 { - width: calc(var(--spacing) * 14); - } .w-16 { width: calc(var(--spacing) * 16); } .w-32 { width: calc(var(--spacing) * 32); } - .w-40 { - width: calc(var(--spacing) * 40); - } .w-48 { width: calc(var(--spacing) * 48); } .w-\[260px\] { width: 260px; } - .w-fit { - width: fit-content; - } .w-full { width: 100%; } @@ -510,9 +489,6 @@ .max-w-sm { max-width: var(--container-sm); } - .max-w-xs { - max-width: var(--container-xs); - } .min-w-0 { min-width: 0; } @@ -775,12 +751,6 @@ --tw-border-style: none; border-style: none; } - .border-\[\#58a6ff\] { - border-color: #58a6ff; - } - .border-\[\#30363d\] { - border-color: #30363d; - } .border-error-container\/40 { border-color: color-mix(in srgb, #f9dedc 40%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -847,9 +817,6 @@ .border-primary { border-color: var(--color-primary); } - .border-red-200 { - border-color: var(--color-red-200); - } .border-secondary\/20 { border-color: color-mix(in srgb, #006e2f 20%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -865,27 +832,6 @@ .border-transparent { border-color: transparent; } - .bg-\[\#0d1117\] { - background-color: #0d1117; - } - .bg-\[\#3fb950\] { - background-color: #3fb950; - } - .bg-\[\#8b949e\] { - background-color: #8b949e; - } - .bg-\[\#161b22\] { - background-color: #161b22; - } - .bg-\[\#191c1e\] { - background-color: #191c1e; - } - .bg-black\/30 { - background-color: color-mix(in srgb, #000 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-black) 30%, transparent); - } - } .bg-black\/40 { background-color: color-mix(in srgb, #000 40%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -967,9 +913,6 @@ .bg-red-50 { background-color: var(--color-red-50); } - .bg-red-500 { - background-color: var(--color-red-500); - } .bg-secondary { background-color: var(--color-secondary); } @@ -1006,24 +949,12 @@ .bg-surface-container-low { background-color: var(--color-surface-container-low); } - .bg-surface-container-low\/30 { - background-color: color-mix(in srgb, #f0f2f5 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-surface-container-low) 30%, transparent); - } - } .bg-surface-container-low\/50 { background-color: color-mix(in srgb, #f0f2f5 50%, transparent); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-surface-container-low) 50%, transparent); } } - .bg-tertiary\/10 { - background-color: color-mix(in srgb, #7e23cc 10%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-tertiary) 10%, transparent); - } - } .bg-tertiary\/20 { background-color: color-mix(in srgb, #7e23cc 20%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1048,12 +979,6 @@ background-color: color-mix(in oklab, var(--color-white) 40%, transparent); } } - .bg-white\/50 { - background-color: color-mix(in srgb, #fff 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-white) 50%, transparent); - } - } .bg-white\/70 { background-color: color-mix(in srgb, #fff 70%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1195,9 +1120,6 @@ .pb-4 { padding-bottom: calc(var(--spacing) * 4); } - .pb-16 { - padding-bottom: calc(var(--spacing) * 16); - } .pl-2 { padding-left: calc(var(--spacing) * 2); } @@ -1305,9 +1227,6 @@ .whitespace-pre-wrap { white-space: pre-wrap; } - .text-\[\#8b949e\] { - color: #8b949e; - } .text-\[\#191c1e\] { color: #191c1e; } @@ -1332,18 +1251,6 @@ .text-on-surface-variant { color: var(--color-on-surface-variant); } - .text-on-surface-variant\/40 { - color: color-mix(in srgb, #424656 40%, transparent); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-on-surface-variant) 40%, transparent); - } - } - .text-on-surface-variant\/50 { - color: color-mix(in srgb, #424656 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-on-surface-variant) 50%, transparent); - } - } .text-outline { color: var(--color-outline); } @@ -1371,12 +1278,6 @@ .text-red-400 { color: var(--color-red-400); } - .text-red-500 { - color: var(--color-red-500); - } - .text-red-600 { - color: var(--color-red-600); - } .text-secondary { color: var(--color-secondary); } @@ -1523,10 +1424,6 @@ -webkit-user-select: all; user-select: all; } - .select-none { - -webkit-user-select: none; - user-select: none; - } .group-hover\:scale-110 { &:is(:where(.group):hover *) { @media (hover: hover) { @@ -1586,12 +1483,6 @@ scale: var(--tw-scale-x) var(--tw-scale-y); } } - .last\:border-0 { - &:last-child { - border-style: var(--tw-border-style); - border-width: 0px; - } - } .hover\:border-error { &:hover { @media (hover: hover) { @@ -1606,23 +1497,6 @@ } } } - .hover\:border-primary\/30 { - &:hover { - @media (hover: hover) { - border-color: color-mix(in srgb, #0050cb 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--color-primary) 30%, transparent); - } - } - } - } - .hover\:bg-\[\#30363d\] { - &:hover { - @media (hover: hover) { - background-color: #30363d; - } - } - } .hover\:bg-black\/10 { &:hover { @media (hover: hover) { @@ -1697,13 +1571,6 @@ } } } - .hover\:bg-red-600 { - &:hover { - @media (hover: hover) { - background-color: var(--color-red-600); - } - } - } .hover\:bg-surface-container { &:hover { @media (hover: hover) { @@ -1718,13 +1585,6 @@ } } } - .hover\:text-\[\#c9d1d9\] { - &:hover { - @media (hover: hover) { - color: #c9d1d9; - } - } - } .hover\:text-error { &:hover { @media (hover: hover) { @@ -1753,16 +1613,6 @@ } } } - .hover\:text-primary\/50 { - &:hover { - @media (hover: hover) { - color: color-mix(in srgb, #0050cb 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-primary) 50%, transparent); - } - } - } - } .hover\:text-primary\/80 { &:hover { @media (hover: hover) { @@ -1780,20 +1630,6 @@ } } } - .hover\:text-red-600 { - &:hover { - @media (hover: hover) { - color: var(--color-red-600); - } - } - } - .hover\:text-white { - &:hover { - @media (hover: hover) { - color: var(--color-white); - } - } - } .hover\:underline { &:hover { @media (hover: hover) { @@ -1850,14 +1686,6 @@ } } } - .focus\:ring-primary\/30 { - &:focus { - --tw-ring-color: color-mix(in srgb, #0050cb 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - --tw-ring-color: color-mix(in oklab, var(--color-primary) 30%, transparent); - } - } - } .focus\:outline-none { &:focus { --tw-outline-style: none; diff --git a/app/backend/static/js/clipboard.js b/app/backend/static/js/clipboard.js index 82122d3..678ad0b 100644 --- a/app/backend/static/js/clipboard.js +++ b/app/backend/static/js/clipboard.js @@ -1,10 +1,14 @@ -function copyToClipboard(text) { +document.addEventListener('click', function(e) { + const btn = e.target.closest('[data-copy]'); + if (!btn) return; + const text = btn.getAttribute('data-copy'); + if (!text) return; if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(() => fallbackCopy(text)); } else { fallbackCopy(text); } -} +}); function fallbackCopy(text) { const ta = document.createElement('textarea'); diff --git a/app/backend/views/brief.html b/app/backend/views/brief.html index cf6fc4c..ab5ca90 100644 --- a/app/backend/views/brief.html +++ b/app/backend/views/brief.html @@ -19,82 +19,7 @@

{{.Title}}

-
- -
-

- - Color Palette — Lumina System -

-
-
Primary #0050cb
-
Secondary #006e2f
-
Tertiary #7e23cc
-
Error #b3261e
-
Surface #f7f9fb
-
On-Surface #191c1e
-
On-Surface-Var #424656
-
Outline-Var #c2c6d8
-
-
- - -
-

- - Typography -

-
-

Heading XL — Inter 800

text-xl font-bold tracking-tight

-

Heading Base — Inter 700

text-base font-bold

-

Body — Inter 500

text-sm font-medium

-

Caption — Inter 400/500

text-xs text-on-surface-variant

-

Monospace — JetBrains Mono 400/600

text-xs font-mono

-
-
- - -
-

- - Elevation & Layout -

-
-
- shadow-sm -
-
-
- shadow-md -
-
-
- shadow-lg -
-
-
- shadow-2xl -
-
-
-
- - -
-

- - Keyboard Shortcuts -

-
-
New HostCmd + N
-
New SnippetCmd + I
-
Toggle ViewCmd + T
-
SearchCmd + P
-
Quick TerminalCmd + K
-
Close PanelEsc
-
-
-
+ {{template "brief_content" .}}
diff --git a/app/backend/views/brief_content.html b/app/backend/views/brief_content.html new file mode 100644 index 0000000..a3f09d6 --- /dev/null +++ b/app/backend/views/brief_content.html @@ -0,0 +1,78 @@ +{{define "brief_content"}} +
+ +
+

+ + Color Palette — Lumina System +

+
+
Primary #0050cb
+
Secondary #006e2f
+
Tertiary #7e23cc
+
Error #b3261e
+
Surface #f7f9fb
+
On-Surface #191c1e
+
On-Surface-Var #424656
+
Outline-Var #c2c6d8
+
+
+ + +
+

+ + Typography +

+
+

Heading XL — Inter 800

text-xl font-bold tracking-tight

+

Heading Base — Inter 700

text-base font-bold

+

Body — Inter 500

text-sm font-medium

+

Caption — Inter 400/500

text-xs text-on-surface-variant

+

Monospace — JetBrains Mono 400/600

text-xs font-mono

+
+
+ + +
+

+ + Elevation & Layout +

+
+
+ shadow-sm +
+
+
+ shadow-md +
+
+
+ shadow-lg +
+
+
+ shadow-2xl +
+
+
+
+ + +
+

+ + Keyboard Shortcuts +

+
+
New HostCmd + N
+
New SnippetCmd + I
+
Toggle ViewCmd + T
+
SearchCmd + P
+
Quick TerminalCmd + K
+
Close PanelEsc
+
+
+
+{{end}} \ No newline at end of file diff --git a/app/backend/views/host_modal.html b/app/backend/views/host_modal.html index 9ff497e..d7436d1 100644 --- a/app/backend/views/host_modal.html +++ b/app/backend/views/host_modal.html @@ -57,13 +57,13 @@
+ class="py-2.5 px-3 border rounded-lg font-bold text-xs uppercase tracking-wider transition-all">API Node + class="py-2.5 px-3 border rounded-lg font-bold text-xs uppercase tracking-wider transition-all">DB Node + class="py-2.5 px-3 border rounded-lg font-bold text-xs uppercase tracking-wider transition-all">Web Node
diff --git a/app/backend/views/index.html b/app/backend/views/index.html index d0038a3..84506fb 100644 --- a/app/backend/views/index.html +++ b/app/backend/views/index.html @@ -17,12 +17,15 @@
{{template "nav" .}}
-
-

Hosts

- Manage connections, monitor uptime, and deploy +
+

Hosts

+
+

Hosts

+

Manage connections, monitor uptime, and deploy

+
diff --git a/app/backend/views/key_grid.html b/app/backend/views/key_grid.html index 86d9f29..1e89edf 100644 --- a/app/backend/views/key_grid.html +++ b/app/backend/views/key_grid.html @@ -1,87 +1,85 @@ {{define "credential_grid"}} -
- {{range $i, $key := .Keys}} -
-
-
-
- -
-
-

{{.Name}}

- {{.Type}} -
+{{range $i, $key := .Keys}} +
+
+
+
+ +
+
+

{{.Name}}

+ {{.Type}}
- - {{if eq .Strength "secure"}} - - - SECURE - - {{else if eq .Strength "moderate"}} - - - MODERATE - - {{else}} - - - WEAK - - {{end}}
-
-
- User Login - {{.Username}} -
-
- Credential Secrets -
- - - -
-
+ {{if eq .Strength "secure"}} + + + SECURE + + {{else if eq .Strength "moderate"}} + + + MODERATE + + {{else}} + + + WEAK + + {{end}} +
- {{if .Fingerprint}} -
- SHA256 FINGERPRINT - {{.Fingerprint}} -
- {{end}} +
+
+ User Login + {{.Username}}
- -
- Created {{.CreatedAt}} -
-
- {{if .URL}} - {{.URL}} - {{end}} -
- +
-
- {{end}} - {{if eq (len .Keys) 0}} -
- No credentials found. Add your first credential. + {{if .Fingerprint}} +
+ SHA256 FINGERPRINT + {{.Fingerprint}} +
+ {{end}} +
+ +
+ Created {{.CreatedAt}} +
+
+ {{if .URL}} + {{.URL}} + {{end}} +
+ +
- {{end}}
{{end}} + +{{if eq (len .Keys) 0}} +
+ No credentials found. Add your first credential. +
+{{end}} +{{end}} diff --git a/app/backend/views/keychain.html b/app/backend/views/keychain.html index 78f6a53..4917804 100644 --- a/app/backend/views/keychain.html +++ b/app/backend/views/keychain.html @@ -44,7 +44,7 @@
-
+
{{template "credential_grid" .}}
@@ -70,7 +70,7 @@

Register Secure Credential

-
diff --git a/app/backend/views/nav.html b/app/backend/views/nav.html index e804cca..17e82c9 100644 --- a/app/backend/views/nav.html +++ b/app/backend/views/nav.html @@ -1,6 +1,6 @@ {{define "nav"}}
-
- - -
- - -
- - -
-

Workspace Preferences

-

Configure authentication sync protocols and cloud billing

-
- -
- -
- - -
-

- - Developer Profile -

- -
- - -
-
- - -
-
- - -
-
- -
- -
- - -
-

- - Security & Transmission Protocols -

-
- - - - - -
-
- - -
-

- - Terminal Preferences -

-
-
-
- - -
-
- - -
-
- - - -
- -
-
-
-
- - -
- - -
-
-
- HostKeeper Pro - -
-

Active Workspace

-
-
-
- RENEWAL CYCLE -

July 2026

-
- - - PAID ACCOUNT - -
-
- -
-
- - -
-

- - Synchronized Devices -

-
- {{range .Devices}} -
-
-
- - {{if eq .Type "desktop"}}{{end}} - {{if eq .Type "mobile"}}{{end}} - {{if eq .Type "tablet"}}{{end}} - -
- {{.Name}} -
- - - {{if .Current}}Online{{else}}Offline{{end}} - -
- {{end}} -
-
- - -
-

- - Reset Local State -

-

Resetting will clear all your locally loaded keystores, snippets, and connection cache buffers from the browser storage.

- -
- -
-
-
+ {{template "settings_content" .}}
diff --git a/app/backend/views/settings_content.html b/app/backend/views/settings_content.html new file mode 100644 index 0000000..2ad2dfd --- /dev/null +++ b/app/backend/views/settings_content.html @@ -0,0 +1,244 @@ +{{define "settings_content"}} +
+ + +
+ + +
+ + +
+

Workspace Preferences

+

Configure authentication sync protocols and cloud billing

+
+ +
+ +
+ + +
+

+ + Developer Profile +

+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+ + +
+

+ + Security & Transmission Protocols +

+
+ + + + + +
+
+ + +
+

+ + Terminal Preferences +

+
+
+
+ + +
+
+ + +
+
+ + + +
+ +
+
+
+
+ + +
+ + +
+
+
+ HostKeeper Pro + +
+

Active Workspace

+
+
+
+ RENEWAL CYCLE +

July 2026

+
+ + + PAID ACCOUNT + +
+
+ +
+
+ + +
+

+ + Synchronized Devices +

+
+ {{range .Devices}} +
+
+
+ + {{if eq .Type "desktop"}}{{end}} + {{if eq .Type "mobile"}}{{end}} + {{if eq .Type "tablet"}}{{end}} + +
+ {{.Name}} +
+ + + {{if .Current}}Online{{else}}Offline{{end}} + +
+ {{end}} +
+
+ + +
+

+ + Reset Local State +

+

Resetting will clear all your locally loaded keystores, snippets, and connection cache buffers from the browser storage.

+ +
+ +
+
+
+{{end}} \ No newline at end of file diff --git a/app/backend/views/sftp.html b/app/backend/views/sftp.html index d2f09f1..8ba47ef 100644 --- a/app/backend/views/sftp.html +++ b/app/backend/views/sftp.html @@ -19,144 +19,7 @@

{{.Title}}

-
- - -
- - -
- - -
-
-

SFTP Secure File Sync

-

Dual streams for real-time asset transmission and file editing

-
-
- -
-
- - -
- - -
-
-
- - Local Workstation -
- -
- - -
- {{range .LocalBreadcrumb}} - {{.Name}} - - {{end}} -
- - -
- - -
- -
- {{template "sftp_pane" dict "Pane" "local" "Files" .LocalFiles "Breadcrumb" .LocalBreadcrumb}} -
-
- - -
-
-
- - Remote Cluster Node -
- -
- - -
- {{range .RemoteBreadcrumb}} - {{.Name}} - - {{end}} -
- - -
- - -
- -
- {{template "sftp_pane" dict "Pane" "remote" "Files" .RemoteFiles "Breadcrumb" .RemoteBreadcrumb}} -
-
-
- - -
- -

Drag files directly here to start batch upload

-

- Files are automatically split into parallel streams of 5MB chunks and secured with AES-256 keychain keys. -

-
- - -
-
-
-
-
-

New Folder

- -
-
- -
- - -
-
- - -
-
-
-
-
-
+ {{template "sftp_content" .}}
diff --git a/app/backend/views/sftp_content.html b/app/backend/views/sftp_content.html new file mode 100644 index 0000000..02b02eb --- /dev/null +++ b/app/backend/views/sftp_content.html @@ -0,0 +1,141 @@ +{{define "sftp_content"}} +
+ + +
+ + +
+ + +
+
+

SFTP Secure File Sync

+

Dual streams for real-time asset transmission and file editing

+
+
+ +
+
+ + +
+ + +
+
+
+ + Local Workstation +
+ +
+ + +
+ {{range .LocalBreadcrumb}} + {{.Name}} + + {{end}} +
+ + +
+ + +
+ +
+ {{template "sftp_pane" dict "Pane" "local" "Files" .LocalFiles "Breadcrumb" .LocalBreadcrumb}} +
+
+ + +
+
+
+ + Remote Cluster Node +
+ +
+ + +
+ {{range .RemoteBreadcrumb}} + {{.Name}} + + {{end}} +
+ + +
+ + +
+ +
+ {{template "sftp_pane" dict "Pane" "remote" "Files" .RemoteFiles "Breadcrumb" .RemoteBreadcrumb}} +
+
+
+ + +
+ +

Drag files directly here to start batch upload

+

+ Files are automatically split into parallel streams of 5MB chunks and secured with AES-256 keychain keys. +

+
+ + +
+
+
+
+
+

New Folder

+ +
+
+ +
+ + +
+
+ + +
+
+
+
+
+
+{{end}} \ No newline at end of file diff --git a/app/backend/views/sftp_pane.html b/app/backend/views/sftp_pane.html index 36823f9..bb21c71 100644 --- a/app/backend/views/sftp_pane.html +++ b/app/backend/views/sftp_pane.html @@ -38,13 +38,13 @@
{{if ne .Type "folder"}} {{if eq $.Pane "local"}} - {{end}} {{if eq $.Pane "remote"}} - diff --git a/app/backend/views/snippet_grid.html b/app/backend/views/snippet_grid.html index 837d11f..eda9635 100644 --- a/app/backend/views/snippet_grid.html +++ b/app/backend/views/snippet_grid.html @@ -1,58 +1,57 @@ {{define "snippet_grid"}} -
- {{range .Snippets}} -
-
-
-
-

{{.Name}}

-
- {{range .Tags}} - {{.}} - {{end}} -
+ +{{range .Snippets}} +
+
+
+
+

{{.Name}}

+
+ {{range .Tags}} + {{.}} + {{end}}
- {{if .Description}} -

{{.Description}}

- {{end}} -
- -
- -
+ {{if .Description}} +

{{.Description}}

+ {{end}}
-
-
{{.Content}}
- +
- -
- Last adjusted {{.CreatedAt}} - - - Ready to inject to shell - -
- {{end}} - {{if eq (len .Snippets) 0}} -
- No matching snippet found. +
+
{{.Content}}
+ +
+ +
+ Last adjusted {{.CreatedAt}} + + + Ready to inject to shell +
- {{end}}
{{end}} + +{{if eq (len .Snippets) 0}} +
+ No matching snippet found. +
+{{end}} +{{end}} diff --git a/app/backend/views/snippets.html b/app/backend/views/snippets.html index 1a90e0a..dd729bc 100644 --- a/app/backend/views/snippets.html +++ b/app/backend/views/snippets.html @@ -110,7 +110,7 @@

Store Custom Snippet

-
diff --git a/app/backend/views/terminal.html b/app/backend/views/terminal.html index 61c90db..931deec 100644 --- a/app/backend/views/terminal.html +++ b/app/backend/views/terminal.html @@ -26,95 +26,7 @@
-
- -
-
- - -
-
-
- - SECURE CRYPTO PATH -
-
- HOST: -
-
-
- - -
- -
-
- - - - ssh -i id_ed25519 root@ -
-
- -
-
- - -
- -
-
- - - - - - root@:~$ - - - - -
- - -
- SHORTCUT SUGGESTIONS: - - - - - - - - -
-
+ {{template "terminal_content" .}}
diff --git a/app/backend/views/terminal_content.html b/app/backend/views/terminal_content.html new file mode 100644 index 0000000..c488f78 --- /dev/null +++ b/app/backend/views/terminal_content.html @@ -0,0 +1,91 @@ +{{define "terminal_content"}} +
+ +
+
+ + +
+
+
+ + SECURE CRYPTO PATH +
+
+ HOST: +
+
+
+ + +
+ +
+
+ + + + ssh -i id_ed25519 root@ +
+
+ +
+
+ + +
+ +
+
+ + +
+ + + root@:~$ + + + +
+
+ + +
+ SHORTCUT SUGGESTIONS: + + + + + + + + +
+
+{{end}} \ No newline at end of file