Skip to content

The redesign, on the site's own content and hosting - #171

Open
barisgirismen wants to merge 1 commit into
omacom:masterfrom
barisgirismen:redesign
Open

The redesign, on the site's own content and hosting#171
barisgirismen wants to merge 1 commit into
omacom:masterfrom
barisgirismen:redesign

Conversation

@barisgirismen

@barisgirismen barisgirismen commented Sep 3, 2026

Copy link
Copy Markdown
omarchy-redesign-demo.mp4

Try it: https://omarchy.baris.sh (the same static output, served for review)

The redesign, as this repository

This is the redesign of omarchy.org, brought into this repository on its own content, its own build, and its own hosting. Nothing about how the site is written, generated or deployed changes. The app renders the site into a folder of static files from the files already here, and GitHub Pages uploads that folder the way it uploads the repository today.

What stays exactly as it is

  • Hosting. GitHub Pages, on every push to master. pages.yml gains one build step in front of the upload it already does; the upload now points at the built folder.
  • Writing a post. A Markdown file under content/news/, rendered by bin/build-news, committed with the feed. The build reads what that produces.
  • The manual. Rendered from the Omarchy repository by bin/build-manual, committed. The build reads those pages.
  • Adding a theme. A pull request that edits themes/index.html and adds a screenshot. The build parses that file.
  • The feed, the installer scripts, the security contact, the assets. Copied into the output byte for byte.
  • The URLs. A trailing slash on every page. News at its dated address, which is the feed's GUID and every link anyone has shared.

What the pull request changes

Two of this repository's files:

  • .github/workflows/pages.yml gains the Node and Python setup, npm ci and npm run build in front of the upload it already does, and uploads dist/client instead of the repository root.
  • .gitignore gains the build's own directories, after its existing lines.

What it adds

  • The app: src/ (75 files) and public/ (29 files).
  • scripts/: the importer that reads this repository's rendered manual, news, pages and teams into JSON (port_content.py); the refresh of the plugin catalogue, similarity map and release version (refresh-data.mjs); the step that lays this repository's files over the rendered output (assemble-static.mjs, with site-passthrough.mjs as the one list of what those files are); the parity audit (parity.py); and two one-off generators for the not-found glyph and the social-card image, whose outputs are already committed.
  • The build's configuration: package.json and its lockfile, vite.config.ts, tsconfig.json, tsr.config.json, components.json, the eslint and prettier configs.
  • .github/workflows/refresh-content.yml: a scheduled refresh of the plugin catalogue and the release version, committed, and deployed by the ordinary path.

Nothing of this repository's own is removed or rewritten: not bin/, not templates/, not content/, not the generated pages, not the hand-written ones. The build reads them where they are. Retiring any of that is a separate decision.

Proof

npm run parity walks this repository for everything Pages serves, every index.html as its directory's address and every other file as its own path, and requests each from the built folder.

  • 571 addresses on omarchy.org today: 90 pages, 481 files.
  • 571 answer 200 from the build.
  • 480 of 481 files pass through byte-identical. The one that differs is 404.html, replaced on purpose.
  • Two addresses the redesign folded into other pages, /manual/toc/ and /security/credits/, get redirect pages, the same way /discord/ has always worked.

Verified from a cold checkout with no environment set: npm ci, npm run build, npm run parity.

How the site is built now

Every route is rendered at build time. Server functions run at build time and leave their results as static files, so nothing runs on a server; a client-side navigation reads a file. The plugin listing, whose search box has unbounded inputs, arrives with the default listing rendered and does every filter, sort and page in the browser over a trimmed catalogue (0.9MB, about 200KB on the wire). All 2,186 plugin pages are rendered. A /404/ route is written to 404.html, the file Pages serves for an unknown address.

Authors never need Node. Only the deploy runs the build.

Three things not decided here

  1. Plugins on omarchy.org/plugins. The redesign folds the marketplace into the site. That is a product call for you and the marketplace's maintainers, and easy to leave out of the first merge if it should stay separate.
  2. Three pages still wear the old design: /screensaver/, /discord/, /patrons/badges/. They are copied through unchanged, and can follow in their own pull request.
  3. A Node build in the deploy. The site's build today is Ruby, run by hand. This adds a Node build to CI. Said plainly rather than discovered.

The redesign of omarchy.org, as this repository. Nothing about how the
site is written, generated or served changes: a post is still a
Markdown file rendered by bin/build-news and committed with the feed,
the manual is still rendered from the Omarchy repository and
committed, a theme is still a pull request that edits themes/index.html
and adds a screenshot, and GitHub Pages still uploads a folder on every
push to master. The app renders that folder from the files already
here, and pages.yml gains one build step in front of the upload it
already did.

Every route is rendered at build time. Server functions run at build
time and leave their results as static files, so nothing runs on a
server. The plugin listing arrives with its default page rendered and
does every filter, sort and page in the browser, over a trimmed
catalogue fetched once. All 2,186 plugin pages are rendered by name. A
/404/ route is written to 404.html, the file Pages serves for an
unknown address. The site's own URLs are kept: a trailing slash on
every page, news at its dated address.

The feed, the installer scripts, the security contact, the assets, the
images beside posts and chapters, and the pages not yet redesigned are
laid over the output byte for byte. Two addresses folded into other
pages, /manual/toc/ and /security/credits/, get redirect pages the way
/discord/ always has. A scheduled workflow refreshes the plugin
catalogue from the marketplace repository and commits it.

Proven cold, from a fresh checkout with no environment set: npm ci,
npm run build, npm run parity. Every one of the 571 addresses the site
serves today answers from the build, and 480 of 481 files pass through
byte-identical; the one that differs is 404.html, on purpose.

Nothing is removed. The generated pages and the hand-written ones stay
committed; the build reads them. Retiring any of it is a separate
decision.
@barisgirismen
barisgirismen marked this pull request as ready for review September 3, 2026 22:20
@barisgirismen barisgirismen changed the title Bring the redesign in, on the site's own content and hosting The redesign, on the site's own content and hosting Sep 3, 2026
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