Skip to content

Build the LCOS GitHub Pages satire desktop - #1

Merged
EmergentMonk merged 17 commits into
masterfrom
agent/build-lcos-pages-satire
Aug 16, 2026
Merged

EmergentMonk merged 17 commits into
masterfrom
agent/build-lcos-pages-satire

Conversation

@EmergentMonk

@EmergentMonk EmergentMonk commented Aug 16, 2026 •

Copy link
Copy Markdown
Member

What changed

Turns the LCOS satire fork into a complete interactive GitHub Pages desktop rather than a README-only concept.

Browser OS

  • adds a ceremonial fake LCOS boot sequence
  • adds LCDE desktop chrome, top panel, taskbar and desktop shortcuts
  • adds draggable, minimizable and maximizable windows
  • adds responsive mobile behavior and reduced-motion support

Fake system applications

  • About LCOS / fake system specifications
  • interactive Lunduke Terminal with help, neofetch, uname -a, apt update, systemctl, x11, wayland, ethics, etc.
  • Package Manager using the native .debate package format
  • Issue Control Center with clearly-labelled parody issue cards
  • Ethics Daemon based on the repository's existing CodeOfEthics.md rules
  • Historical Evidence gallery using all six existing LCOS screenshots

GitHub Pages

  • adds .github/workflows/pages.yml
  • validates app.js with node --check
  • verifies all required static assets before deployment
  • deploys the static root using the GitHub Pages Actions flow
  • adds .nojekyll

Documentation

  • rewrites README with a prominent satire/non-distro disclaimer
  • documents the live Pages URL, features, local serving and upstream relationship

Why

The fork's stated purpose is to visualize what LCOS could look like via GitHub Pages, while explicitly not becoming a real distro. This PR actually builds that visualization and keeps the joke unmistakable.

Validation

The Pages workflow performs JavaScript syntax validation and static asset checks before deployment. The branch is based directly on current master and is not behind it.

No real package manager, init system, telemetry daemon, installer or kernel was injured during development.

Summary by Sourcery

Turn the LCOS satire fork into a fully interactive browser-based desktop experience hosted on GitHub Pages.

New Features:

  • Introduce a LCOS boot sequence and LCDE desktop with draggable, minimizable, and maximizable windows.
  • Add multiple parody system applications including a terminal, package manager, issue control center, ethics daemon, and screenshot gallery.
  • Provide responsive layout and reduced-motion support for the browser-based desktop.

Build:

  • Add a GitHub Pages deployment workflow that validates JavaScript syntax and required static assets before publishing.
  • Include a .nojekyll marker to ensure GitHub Pages serves the static site as-is.

Documentation:

  • Rewrite the README to emphasize the project’s satire/non-distro nature and document the live Pages site, features, and local usage.

@sourcery-ai

sourcery-ai Bot commented Aug 16, 2026

Copy link
Copy Markdown

Reviewer's Guide

Implements a fully client-side LCOS “browser desktop” experience with boot screen, multi-window LCDE UI, fake system apps, and a GitHub Pages deployment workflow, while updating documentation to emphasize the satire/non-distro nature and describe the hosted site.

Sequence diagram for LCOS browser desktop boot and app interactions

sequenceDiagram
  actor User
  participant Browser as browser
  participant app_js as app_js

  User->>Browser: load index_html
  Browser->>app_js: execute IIFE
  app_js->>bootLog: runBoot
  app_js->>boot: finishBoot
  app_js->>desktop: show LCDE desktop
  app_js->>aboutWindow: openWindow
  loop clock updates
    app_js->>clock: updateClock
  end

  User->>applicationsButton: click
  app_js->>applicationsMenu: toggleApplicationsMenu
  User->>applicationsMenu: select LundukeTerminal
  app_js->>terminalWindow: openWindow
  app_js->>terminalOutput: initTerminal

  User->>terminalForm: submit "ethics"
  app_js->>terminalOutput: appendTerminal
  app_js->>terminalCommands: executeTerminal ethics
  terminalCommands->>ethicsWindow: openWindow
  terminalCommands->>terminalOutput: appendTerminal

  User->>window-titlebar: drag
  app_js->>window: makeDraggable
  app_js->>window: focusWindow
  User->>taskButtons: click task_button
  app_js->>window: minimizeWindow / focusWindow
Loading

File-Level Changes

Change Details Files
Introduce the LCOS browser desktop shell with boot sequence, LCDE chrome, taskbar, draggable/maximizable windows, terminal-like interactions, and app wiring.
  • Add a boot screen that streams fake kernel log lines with a reduced-motion fast path and a skip button, then transitions to the desktop and opens the About window by default.
  • Implement window management (open/close/minimize/maximize/focus/z-index) and per-window taskbar buttons, including a show-desktop toggle and responsive mobile behavior that forces single-window, full-screen layout below 900px.
  • Wire desktop icons, top-panel Applications menu entries, and special actions (e.g., panic/systemd gag) to open appropriate windows and show toast notifications.
  • Implement a fake clock that updates every second, exposes a tooltip with full datetime, and shows a toast with formatted time on click.
app.js
index.html
styles.css
Add fake system applications: terminal, package manager, issue control center, ethics daemon, and screenshot gallery.
  • Create a faux terminal with predefined commands (help, about, uname -a, neofetch, ls, apt update, sudo, systemctl, wayland, x11, ethics, clear, reboot, exit), command normalization logic, basic shell-like output rendering, and focus-on-open behavior.
  • Implement a package manager UI backed by click handlers that simulate checking for and applying updates, update log output, and integration with the global toast system.
  • Implement an Issue Control Center with static columns/cards representing open, in-review, and wontfix issues, plus a note clarifying it is parody rather than real GitHub issues.
  • Implement an Ethics Daemon window that surfaces rules from CodeOfEthics, adds a simple profanity filter invoked via button or Enter key, and shows result text; plus a gallery window that presents the existing LCOS screenshots as a grid of figures with captions.
  • Style each fake app distinctly (terminal, packages, issues, ethics, gallery) via dedicated classes and layout rules, including monospace output areas, toolbars, columns, and gallery grid responsive behavior.
app.js
index.html
styles.css
Define overall LCDE visual design, layout, and accessibility behaviors for the desktop, panels, windows, and notifications.
  • Create base desktop wallpaper, noise overlay, LCOS watermark, and dark theme variables; style top panel, taskbar, application menu, desktop icons, and toast notifications to resemble a classic desktop environment.
  • Implement window styling, titlebars, and control buttons, including draggable titlebars with pointer events, snapping to viewport bounds, double-click-to-maximize, and resize constraints; ensure reduced-motion users avoid animations and boot typing effects.
  • Add basic accessibility support with ARIA labels/roles, aria-live regions for boot log and toast/terminal output, hidden/visible toggling via the hidden attribute, and keyboard interactions for closing the app menu with Escape and Enter activation in the ethics input.
  • Ensure layout degrades sensibly on narrow viewports by stacking grids (spec grid, issues columns, gallery), constraining window dimensions, and hiding nonessential panel/taskbar text on mobile.
styles.css
index.html
app.js
Update documentation to explain the satire browser desktop, link to the live Pages site, and clarify the relationship to upstream LCOS.
  • Rewrite README with a clear satire/non-distro disclaimer and a description of LCOS as an interactive GitHub Pages desktop.
  • Document the live GitHub Pages URL, main UI features, explicit non-goals (no ISO, no telemetry, no installer, etc.), and how to run the static site locally.
  • Add an "Upstream" section pointing at the original LCOS project placeholder (currently a dash, presumably to be filled with the upstream URL).
README.md
Add a GitHub Pages deployment workflow and supporting static-site configuration.
  • Create a GitHub Actions workflow that runs on pushes to master or manual dispatch, checks out the repo, validates app.js syntax via node --check, verifies required static assets (HTML/CSS/JS and screenshot files) and references, then configures and deploys to GitHub Pages using the official Pages actions.
  • Add a .nojekyll file so GitHub Pages serves the static root as-is without Jekyll processing.
.github/workflows/pages.yml
.nojekyll

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@EmergentMonk
EmergentMonk marked this pull request as ready for review August 16, 2026 09:54

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @EmergentMonk, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2c52616d2c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/pages.yml Outdated

on:
push:
branches: [master]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Trigger Pages deployment from main

The repository's base branch is main and no master ref exists in the inspected repository, so ordinary merges and pushes to main never trigger this deployment job; only a manual dispatch can publish the advertised live site. Configure this branch filter for main (or otherwise derive the default branch), matching the repository's actual release flow.

Useful? React with 👍 / 👎.

Comment thread app.js Outdated
Comment on lines +313 to +316
setTimeout(() => {
summary.textContent = '3 updates available; 1 eternal argument held back';
showToast('Updates checked. Your computer is now 12% more aware of discourse.');
}, 650);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Cancel the pending update check before applying

If the user clicks Apply Everything Recklessly within 650 ms of Check for Updates, the apply handler reports that the system is current, but this still-pending callback subsequently overwrites that summary with “3 updates available” and shows the stale check-complete toast. Track and cancel the timer, or have the callback verify that an apply has not superseded the check.

Useful? React with 👍 / 👎.

Comment thread styles.css Outdated
.window {
position: absolute; z-index: 100; left: var(--x); top: var(--y); width: min(var(--w), calc(100vw - 30px)); height: min(var(--h), calc(100vh - 100px));
border: 1px solid #5d5d5d; background: var(--window); color: var(--window-text); box-shadow: var(--shadow); overflow: hidden; resize: both;
min-width: 340px; min-height: 240px;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Let windows shrink on narrow mobile screens

On viewports narrower than 356 px, such as a 320 px-wide phone, this min-width overrides the mobile rule's width: calc(100vw - 16px), making every window wider than the viewport. Because both the body and desktop hide overflow, the right edge and most of the rightmost window control are inaccessible; reset the minimum width in the mobile media query or cap it relative to the viewport.

Useful? React with 👍 / 👎.

Comment thread app.js Outdated
Comment on lines +123 to +127
appsMenu.hidden = true;
appsButton.setAttribute('aria-expanded', 'false');

if (id === 'terminalWindow') {
setTimeout(() => $('#terminalInput')?.focus(), 0);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Move keyboard focus into every opened window

When a keyboard user activates a non-terminal item in the Applications menu, opening the window immediately hides the menu button that still owns DOM focus, but focus is moved into the destination only for terminalWindow. The user is consequently returned to an unclear document position and must traverse the desktop controls to reach the window they just opened; focus the destination window or its first meaningful control for every application.

Useful? React with 👍 / 👎.

Comment thread index.html Outdated
<section id="updatesWindow" class="window" style="--x: 12vw; --y: 20vh; --w: 760px; --h: 470px;" hidden aria-label="Package manager window">
<div class="window-titlebar">
<span class="window-title">LCOS Package Manager — Definitely Stable</span>
<div class="window-controls"><button type="button" data-minimize>—</button><button type="button" data-maximize>□</button><button type="button" data-close>×</button></div>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Give symbol-only window controls accessible action names

In the Package Manager—and likewise in the Issues, Ethics, and Gallery windows—the three controls expose only —, □, and × as their accessible names. Screen-reader users therefore hear punctuation or glyph descriptions rather than “Minimize,” “Maximize,” and “Close,” even though the About and Terminal controls already provide those labels; add the same action-specific aria-label values consistently.

Useful? React with 👍 / 👎.

@EmergentMonk
EmergentMonk merged commit b91de0e into master Aug 16, 2026
4 checks passed
@EmergentMonk
EmergentMonk deleted the agent/build-lcos-pages-satire branch August 16, 2026 10:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant