website updated

This commit is contained in:
2026-06-24 10:23:30 +08:00
committed by root
parent ddb2a01d93
commit da577299a0
6 changed files with 199 additions and 24 deletions

View File

@@ -17,11 +17,17 @@
<img src="assets/hightube-icon.png" alt="" />
<span>Hightube</span>
</a>
<button class="hamburger" aria-label="Toggle navigation" aria-expanded="false">
<span></span>
<span></span>
<span></span>
</button>
<nav class="nav" aria-label="Primary navigation">
<a href="#architecture">Architecture</a>
<a href="#features">Features</a>
<a href="#downloads">Downloads</a>
<a href="#source">Source</a>
<a class="nav-cta" href="https://stream.nudt.space" target="_blank" rel="noopener">立即尝试</a>
</nav>
</header>
@@ -159,9 +165,8 @@
<p class="eyebrow">Downloads</p>
<h2>Get the current executable builds</h2>
<p>
These files are hosted in the local website resources directory.
Windows server and client builds will be added later. Apple device
builds are not provided at this time.
All builds are distributed through the project release page. Apple
device builds are not provided at this time.
</p>
</div>
<div class="download-grid">
@@ -171,8 +176,8 @@
<p>Backend service for self-hosted streaming deployments.</p>
<a
class="download-link"
href="resources/hightube-server/hightube-server_amd64_v1.0.0"
download
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-server_amd64_v1.0.0"
rel="noopener"
>
Download Linux server
</a>
@@ -183,8 +188,8 @@
<p>Desktop Flutter client packaged as an AppImage.</p>
<a
class="download-link"
href="resources/hightube-client/hightube-linux-amd64-v1.0.0.AppImage"
download
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-linux-amd64-v1.0.0.AppImage"
rel="noopener"
>
Download Linux AppImage
</a>
@@ -195,8 +200,8 @@
<p>ARM64 Android APK build for mobile viewing and interaction.</p>
<a
class="download-link"
href="resources/hightube-client/hightube-android-arm64-v8a-v1.0.0.apk"
download
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-android-arm64-v8a-v1.0.0.apk"
rel="noopener"
>
Download Android APK
</a>
@@ -207,21 +212,35 @@
<p>Static web build archive for hosting the Flutter web frontend.</p>
<a
class="download-link"
href="resources/hightube-client/hightube-web-v1.0.0.tar.gz"
download
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-web-v1.0.0.tar.gz"
rel="noopener"
>
Download Web archive
</a>
</article>
<article class="download-card planned">
<span class="status muted">Coming later</span>
<article class="download-card available">
<span class="status">Available</span>
<h3>Windows server</h3>
<p>Planned server executable for Windows environments.</p>
<p>Server executable for Windows environments.</p>
<a
class="download-link"
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-server_amd64_v1.0.0.exe"
rel="noopener"
>
Download Windows server
</a>
</article>
<article class="download-card planned">
<span class="status muted">Coming later</span>
<article class="download-card available">
<span class="status">Available</span>
<h3>Windows client</h3>
<p>Planned desktop client build for Windows users.</p>
<p>Desktop client build for Windows users.</p>
<a
class="download-link"
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-win_amd64_v1.0.0.zip"
rel="noopener"
>
Download Windows client
</a>
</article>
</div>
</section>
@@ -246,6 +265,17 @@
</section>
</main>
<script>
(function () {
var btn = document.querySelector('.hamburger');
var nav = document.querySelector('.nav');
if (!btn || !nav) return;
btn.addEventListener('click', function () {
var open = nav.classList.toggle('open');
btn.setAttribute('aria-expanded', open);
});
})();
</script>
<footer class="footer">
<span>Hightube</span>
<span>Built with ❤️ by HighGround-soft 2026</span>

View File

@@ -91,6 +91,60 @@ a {
color: var(--primary);
}
/* 立即尝试 CTA button in nav */
.nav-cta {
background: var(--primary) !important;
color: var(--on-primary) !important;
margin-left: 8px;
font-weight: 800 !important;
box-shadow: 0 4px 14px rgba(11, 87, 208, 0.28);
transition: transform 160ms ease, box-shadow 160ms ease, background 160ms ease;
}
.nav-cta:hover {
background: #0a4eb8 !important;
color: var(--on-primary) !important;
transform: translateY(-1px);
box-shadow: 0 8px 20px rgba(11, 87, 208, 0.34);
}
/* Hamburger menu button — hidden on desktop */
.hamburger {
display: none;
flex-direction: column;
justify-content: center;
gap: 5px;
width: 40px;
height: 40px;
padding: 8px;
border: none;
border-radius: 10px;
background: transparent;
cursor: pointer;
z-index: 20;
}
.hamburger span {
display: block;
width: 100%;
height: 2.5px;
border-radius: 2px;
background: var(--text);
transition: transform 200ms ease, opacity 200ms ease;
}
.hamburger[aria-expanded="true"] span:nth-child(1) {
transform: translateY(7.5px) rotate(45deg);
}
.hamburger[aria-expanded="true"] span:nth-child(2) {
opacity: 0;
}
.hamburger[aria-expanded="true"] span:nth-child(3) {
transform: translateY(-7.5px) rotate(-45deg);
}
.hero {
display: grid;
grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
@@ -431,14 +485,41 @@ h3 {
@media (max-width: 900px) {
.topbar {
align-items: flex-start;
flex-direction: column;
flex-direction: row;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
}
.hamburger {
display: flex;
}
.nav {
display: none;
width: 100%;
overflow-x: auto;
padding-bottom: 2px;
flex-direction: column;
gap: 2px;
padding: 8px 0 4px;
border-top: 1px solid rgba(114, 119, 130, 0.14);
margin-top: 10px;
}
.nav.open {
display: flex;
}
.nav a {
width: 100%;
padding: 12px 16px;
border-radius: 14px;
font-size: 1rem;
}
.nav-cta {
margin-left: 0 !important;
margin-top: 6px;
text-align: center;
}
.hero {
@@ -462,30 +543,94 @@ h3 {
}
@media (max-width: 640px) {
.topbar {
padding: 10px 16px;
}
.hero,
.section {
padding-right: 16px;
padding-left: 16px;
}
.hero {
padding-top: 32px;
padding-bottom: 32px;
gap: 24px;
}
h1 {
font-size: clamp(2.8rem, 10vw, 4rem);
}
h2 {
font-size: clamp(1.6rem, 5vw, 2.4rem);
}
.lead {
font-size: 1rem;
margin-top: 16px;
}
.hero-panel {
width: 100%;
}
.device-window {
width: 100%;
border-radius: 20px;
}
.stream-preview {
min-height: 180px;
}
.play-symbol {
width: 60px;
height: 60px;
}
.architecture-grid,
.download-grid,
.feature-list {
grid-template-columns: 1fr;
}
.actions,
.architecture-card,
.download-card {
padding: 20px;
border-radius: 18px;
}
.feature-item {
padding: 20px;
}
.actions {
flex-direction: column;
}
.button,
.download-link {
width: 100%;
justify-content: center;
}
.stream-preview {
min-height: 220px;
.nav a {
min-height: 48px;
padding: 14px 16px;
font-size: 1.05rem;
}
.nav-cta {
min-height: 50px;
font-size: 1.05rem;
}
.footer {
grid-template-columns: 1fr;
gap: 8px;
padding: 24px 16px;
}
.footer span,