wip: montaukos.org web improvements

This commit is contained in:
2026-04-18 17:18:05 +02:00
parent ee47e5d68f
commit 68464af440
7 changed files with 353 additions and 14 deletions
+171
View File
@@ -0,0 +1,171 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="MontaukOS downloads and release notes">
<title>Downloads - MontaukOS</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Open Sans', Arial, sans-serif;
max-width: 960px;
margin: 0 auto;
padding: 1em;
line-height: 1.5;
display: flex;
gap: 2em;
}
p { margin: 0 0 0.5em; }
h2 { margin: 0.5em 0; }
h3 { margin: 0 0 0.25em; }
.sidebar {
width: 160px;
flex-shrink: 0;
}
.sidebar ul {
list-style: none;
padding: 0;
}
.sidebar li {
margin: 0.5em 0;
}
.sidebar a {
color: #0066CC;
text-decoration: none;
font-weight: 600;
}
.sidebar a:hover {
color: #004499;
text-decoration: underline;
}
.sidebar .current {
color: #004499;
}
.sidebar hr {
border: none;
border-top: 1px solid #999;
margin: 0.75em 0;
}
.main {
flex: 1;
min-width: 0;
}
a { color: #0000EE; }
a:visited { color: #0066CC; }
hr { border-style: solid; border-width: 1px 0 0 0; border-color: #999; }
.center { text-align: center; }
.box {
border: 1px solid #999;
padding: 0.75em;
margin: 0.75em 0;
}
.release-card {
margin-bottom: 1em;
}
.release-meta {
color: #555;
font-size: 0.95em;
margin-bottom: 0.5em;
}
.release-actions {
margin-top: 0.75em;
}
.release-actions a {
font-weight: 600;
text-decoration: none;
}
.release-actions a:hover {
text-decoration: underline;
}
.note {
background: #f7f7f7;
}
</style>
</head>
<body>
<div class="sidebar">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="downloads.html" class="current">Downloads</a></li>
<li><a href="docs/index.html">Documentation</a></li>
</ul>
<hr>
<ul>
<li><a href="#latest">Latest Release</a></li>
<li><a href="#v040">v0.4.0</a></li>
<li><a href="#v032">v0.3.2</a></li>
<li><a href="#v030">v0.3.0</a></li>
</ul>
</div>
<div class="main">
<div class="center">
<h1>Downloads</h1>
</div>
<hr>
<h2 id="latest">Latest Release</h2>
<div class="box release-card" id="v040">
<h3>MontaukOS v0.4.0 Preview</h3>
<p class="release-meta">Released April 12, 2026 | Preview channel | Tested in QEMU, VirtualBox, and select Intel desktop hardware</p>
<p>
This preview build focuses on desktop stability and broadens the hardware story for audio, storage, and graphics.
It is the recommended sample build for screenshots, demos, and early testing on new machines.
</p>
<ul>
<li>Improved Intel graphics bring-up during desktop startup</li>
<li>Reduced audio glitches in the HDA playback path</li>
<li>Added more complete PDF Viewer and Weather App integration</li>
<li>Refined installer messaging and first-boot desktop defaults</li>
</ul>
<p><strong>Package details:</strong> Raw disk image bundle, sample size 84 MB, includes release notes and checksum placeholder.</p>
<p class="release-actions"><a href="downloads/montaukos-v0.4.0-preview.txt" download>Download sample package</a></p>
</div>
<h2>Release Archive</h2>
<div class="box release-card" id="v032">
<h3>MontaukOS v0.3.2 Stable</h3>
<p class="release-meta">Released December 18, 2025 | Stable channel | Maintenance update</p>
<p>
This stable release is aimed at repeatable demos and development setups. It bundles the same core desktop
environment as the preview builds, but with fewer experimental kernel and driver changes enabled by default.
</p>
<ul>
<li>Fixed several ext2 edge cases during larger file copies</li>
<li>Improved network driver recovery after emulator resets</li>
<li>Shipped a more reliable default audio mixer configuration</li>
</ul>
<p><strong>Notes:</strong> Best starting point for users who want a conservative baseline before trying preview releases.</p>
<p class="release-actions"><a href="downloads/montaukos-v0.3.2-stable.txt" download>Download sample package</a></p>
</div>
<div class="box release-card" id="v030">
<h3>MontaukOS v0.3.0 Alpha</h3>
<p class="release-meta">Released September 29, 2025 | Alpha channel | Early public image</p>
<p>
The first broadly shared build of MontaukOS. It remains useful as a reference point for tracking how the
kernel, desktop environment, and bundled applications have evolved over time.
</p>
<ul>
<li>Introduced the initial desktop environment and application launcher</li>
<li>Added Terminal, File Manager, Weather App, and DOOM to the base image</li>
<li>Established the first multi-user session and filesystem workflow</li>
</ul>
<p><strong>Notes:</strong> Keep for archival purposes and regression testing rather than daily use.</p>
<p class="release-actions"><a href="downloads/montaukos-v0.3.0-alpha.txt" download>Download sample package</a></p>
</div>
<hr>
<div class="center">
<a href="index.html">Back to Home</a>
</div>
</div>
</body>
</html>
@@ -0,0 +1,7 @@
MontaukOS v0.3.0 Alpha
Released: 2025-09-29
Channel: Alpha
This is a sample package placeholder for the website downloads page.
Replace this file with the published disk image, archive, or installer artifact
when official release assets are available.
@@ -0,0 +1,7 @@
MontaukOS v0.3.2 Stable
Released: 2025-12-18
Channel: Stable
This is a sample package placeholder for the website downloads page.
Replace this file with the published disk image, archive, or installer artifact
when official release assets are available.
@@ -0,0 +1,7 @@
MontaukOS v0.4.0 Preview
Released: 2026-04-12
Channel: Preview
This is a sample package placeholder for the website downloads page.
Replace this file with the published disk image, archive, or installer artifact
when official release assets are available.
Binary file not shown.

After

Width:  |  Height:  |  Size: 587 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

+161 -14
View File
@@ -80,46 +80,107 @@
.app-item a:hover { .app-item a:hover {
text-decoration: underline; text-decoration: underline;
} }
.slideshow {
margin: 0 0 1em;
}
.slideshow-frame {
position: relative;
}
.slideshow-frame img {
display: block;
width: 100%;
aspect-ratio: 16 / 10;
object-fit: contain;
}
.slideshow-button {
position: absolute;
top: 50%;
transform: translateY(-50%);
border: 1px solid #999;
background: rgba(255, 255, 255, 0.9);
color: #222;
padding: 0.35em 0.55em;
cursor: pointer;
font: inherit;
}
.slideshow-button:hover {
background: #fff;
}
.slideshow-button.prev {
left: 0.75em;
}
.slideshow-button.next {
right: 0.75em;
}
.slideshow-meta {
display: flex;
justify-content: space-between;
align-items: center;
gap: 1em;
margin-top: 0.6em;
flex-wrap: wrap;
}
.slideshow-caption {
margin: 0;
}
.slideshow-dots {
display: flex;
gap: 0.4em;
}
.slideshow-dot {
width: 10px;
height: 10px;
border-radius: 50%;
border: 1px solid #999;
background: #ddd;
padding: 0;
}
.slideshow-dot.active {
background: #0066CC;
border-color: #004499;
}
</style> </style>
</head> </head>
<body> <body>
<div class="sidebar"> <div class="sidebar">
<ul> <ul>
<li><a href="#">About</a></li> <li><a href="#about">About</a></li>
<li><a href="#">Features</a></li> <li><a href="#features">Features</a></li>
<li><a href="#">Applications</a></li> <li><a href="#applications">Applications</a></li>
<li><a href="#">Downloads</a></li> <li><a href="downloads.html">Downloads</a></li>
<li><a href="#">Documentation</a></li> <li><a href="docs/index.html">Documentation</a></li>
<li><a href="#">GitHub</a></li>
</ul> </ul>
</div> </div>
<div class="main"> <div class="main">
<div class="center"> <div class="center">
<h1>MontaukOS</h1> <h1>MontaukOS</h1>
<p>Modern and unique operating bare metal operating system</p> <p>Modern and unique bare metal operating system</p>
</div> </div>
<hr> <hr>
<h2 id="about">About</h2>
<h2>About</h2>
<p> <p>
MontaukOS is a novel multi-user operating system that runs on bare metal. MontaukOS is a novel multi-user operating system that runs on bare metal.
It features its own preemptive multitasking kernel and modern userspace with its own desktop environment, It features its own preemptive multitasking kernel and modern userspace with its own desktop environment,
targeting both emulators and real hardware. targeting both emulators and real hardware.
</p> </p>
<br>
<h2>Features</h2> <p>
MontaukOS is <strong>not</strong> Linux, nor is it Unix-like. Rather, it uses its own custom Montauk kernel with its own architecture and design.
</p>
<hr>
<h2 id="features">Features</h2>
<ul style="margin: 0 0 0.5em;"> <ul style="margin: 0 0 0.5em;">
<li>Real hardware support: Intel GPU, e100e Ethernet, HDA audio, Bluetooth</li> <li>Real hardware support: Intel GPU, e100e Ethernet, HDA audio, Bluetooth</li>
<li>Storage: AHCI/NVMe SSDs, GPT partitions, ext2 and FAT32 filesystems</li> <li>Storage: AHCI/NVMe SSDs, GPT partitions, ext2 and FAT32 filesystems</li>
<li>ACPI support including S3 sleep and shutdown</li> <li>ACPI support including support for shutdown and partial support for S3 sleep</li>
<li>USB and PS/2 input device support</li> <li>USB and PS/2 input device support</li>
<li>Desktop environment with 12+ applications</li> <li>Desktop environment with 12+ applications</li>
</ul> </ul>
<h2>Applications</h2> <h2 id="applications">Applications</h2>
<br> <br>
<div class="app-grid"> <div class="app-grid">
<div class="app-item"> <div class="app-item">
@@ -152,12 +213,98 @@ targeting both emulators and real hardware.
</div> </div>
</div> </div>
<br><br> <br><br>
<hr>
<h2 id="screenshots">Screenshots</h2>
<div class="slideshow">
<div class="slideshow-frame">
<img id="slideshow-image" src="images/mtk_doomgame.png" alt="MontaukOS screenshot showing DOOM running in the desktop environment">
<button type="button" class="slideshow-button prev" id="slideshow-prev" aria-label="Show previous screenshot">&lt;</button>
<button type="button" class="slideshow-button next" id="slideshow-next" aria-label="Show next screenshot">&gt;</button>
</div>
<div class="slideshow-meta">
<p class="slideshow-caption" id="slideshow-caption">DOOM running inside MontaukOS.</p>
<div class="slideshow-dots" id="slideshow-dots" aria-label="Screenshot selector"></div>
</div>
</div>
<hr> <hr>
<div class="center"> <div class="center">
<a href="#">Releases</a></p> <a href="downloads.html">Releases</a>
</div> </div>
<hr>
<br>
<div class="center"><p>Copyright &copy; 2025-2026 Montauk Operating System</p></div>
</div> </div>
<script>
const slideshowItems = [
{
src: 'images/mtk_doomgame.png',
alt: 'MontaukOS screenshot showing DOOM running in the desktop environment',
caption: 'DOOM running inside MontaukOS.'
},
{
src: 'images/mtk_procmgr_devexplorer.png',
alt: 'MontaukOS screenshot showing Process Manager and Developer Explorer',
caption: 'Process Manager and Developer Explorer open on the MontaukOS desktop.'
}
];
const slideshowImage = document.getElementById('slideshow-image');
const slideshowCaption = document.getElementById('slideshow-caption');
const slideshowDots = document.getElementById('slideshow-dots');
const slideshowPrev = document.getElementById('slideshow-prev');
const slideshowNext = document.getElementById('slideshow-next');
let slideshowIndex = 0;
function renderSlideshow(index) {
const item = slideshowItems[index];
slideshowImage.src = item.src;
slideshowImage.alt = item.alt;
slideshowCaption.textContent = item.caption;
Array.from(slideshowDots.children).forEach(function(dot, dotIndex) {
dot.classList.toggle('active', dotIndex === index);
dot.setAttribute('aria-current', dotIndex === index ? 'true' : 'false');
});
}
function showSlide(index) {
slideshowIndex = (index + slideshowItems.length) % slideshowItems.length;
renderSlideshow(slideshowIndex);
}
if (slideshowItems.length === 0) {
slideshowImage.remove();
slideshowCaption.textContent = 'Screenshots will appear here when they are added to the site.';
slideshowPrev.hidden = true;
slideshowNext.hidden = true;
} else {
slideshowItems.forEach(function(item, index) {
const dot = document.createElement('span');
dot.className = 'slideshow-dot';
dot.setAttribute('aria-hidden', 'true');
slideshowDots.appendChild(dot);
});
slideshowPrev.addEventListener('click', function() {
showSlide(slideshowIndex - 1);
});
slideshowNext.addEventListener('click', function() {
showSlide(slideshowIndex + 1);
});
if (slideshowItems.length === 1) {
slideshowPrev.hidden = true;
slideshowNext.hidden = true;
}
renderSlideshow(slideshowIndex);
}
</script>
</body> </body>
</html> </html>