diff --git a/AGENTS.md b/AGENTS.md index 5ed4eed..f8a538f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,7 +1,7 @@ # AGENTS.md Guidance for coding agents working on the Ghost Assembly organization site, -. Read `README.md` for the human overview; this file +. Read `README.md` for the human overview; this file holds the rules that are not obvious from the code. ## What gets published @@ -11,9 +11,21 @@ holds the rules that are not obvious from the code. - **Everything in `docs/` is public, and nothing outside it is.** Keep tooling, tests, the design notes and the source logo out of `docs/`. - `docs/.nojekyll` disables Jekyll. Do not remove it. -- The project docs at `/quickmusic/`, `/quickrem/`, `/quicktiler/` and `/quickts/` are - published from those projects' own repositories. Never create `docs/quickrem/` (or any - other project name) here — it would collide with them. +- The project docs at `/quickclip/`, `/quickmusic/`, `/quickrem/`, `/quicktiler/` and + `/quickts/` are published from those projects' own repositories. Never create + `docs/quickrem/` (or any other project name) here — it would collide with them. + GhostDock has no docs site, so it has no slug here; its card is Source only. + +## Domain + +- The site is served at `https://ghost-assembly.com/`, set by `docs/CNAME`. Do not + remove or edit that file as routine work. +- Each project's docs site inherits the same domain, `https://ghost-assembly.com//`, + from that project's own repository and `CNAME` — not from anything in this repo. +- HTTPS enforcement (`https_enforced`) is a GitHub Pages account/repository setting, not + something this repo configures or assumes. +- Never hardcode `ghost-assembly.github.io` in new content. The old host still resolves + and redirects, but new links and metadata point at `ghost-assembly.com`. ## Hard constraints @@ -65,9 +77,9 @@ WebKit is not supported on the maintainer's Fedora base, so do not add it. A project appears in three places, and all three must change together: -1. `docs/index.html` — an `
` in the right group. Link Docs to - `https://ghost-assembly.github.io//` only if that project publishes a docs - site; otherwise give it Source only. +1. `docs/index.html` — an `
` in the right group. Docs link + only where a docs site exists, at `https://ghost-assembly.com//`; otherwise + Source only. 2. `tests/site.spec.js` — the `projects` list at the top, so its links are checked. 3. The org profile README, `profile/README.md` in the separate [Ghost-Assembly/.github](https://github.com/Ghost-Assembly/.github) repository. @@ -87,5 +99,7 @@ recipe are the measured bounds of the emblem and the whole logo in the 1254px so - Branch from `main`, open a pull request, and squash-merge once the `ci` job (which runs `just ci`) passes. - Conventional Commits, imperative subject, no trailing period. +- American English spelling throughout (color, behavior, license, organization, + standardize). Keep third-party identifiers and quoted messages as they are. - Third-party GitHub Actions are pinned by commit SHA with the version in a comment. - `design/` holds the agreed design notes. Update them when the design changes. diff --git a/README.md b/README.md index cd9576b..7398b7e 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,14 @@ [![ci](https://github.com/Ghost-Assembly/ghost-assembly.github.io/actions/workflows/ci.yml/badge.svg)](https://github.com/Ghost-Assembly/ghost-assembly.github.io/actions/workflows/ci.yml) -The Ghost Assembly organization site: ****. +The Ghost Assembly organization site: ****. One hand-written page listing the org's projects, with links to each one's docs and source. No framework, no build step and no JavaScript on the page — `docs/` is what GitHub Pages serves, as-is. Each project publishes its own docs from its own repository's `docs/` folder, at -`https://ghost-assembly.github.io//`. This repository only owns the root. +`https://ghost-assembly.com//`. This repository only owns the root. ## Develop @@ -25,9 +25,14 @@ just ci # everything CI runs: lint, test, security, build ## Adding a project -Add an `
` to the right group in `docs/index.html`, and add it -to the `projects` list at the top of `tests/site.spec.js` so the suite checks its -links. A project with no docs site gets a Source link only. +A project appears in three places, and all three must change together: + +1. An `
` in the right group in `docs/index.html`. A project + with no docs site gets a Source link only. +2. An entry in the `projects` list at the top of `tests/site.spec.js`, so the suite + checks its links. +3. The org profile README, `profile/README.md` in the separate + [Ghost-Assembly/.github](https://github.com/Ghost-Assembly/.github) repository. ## Images diff --git a/design/2026-09-24-org-hub-design.md b/design/2026-09-24-org-hub-design.md index 9f75f8e..9100224 100644 --- a/design/2026-09-24-org-hub-design.md +++ b/design/2026-09-24-org-hub-design.md @@ -130,3 +130,16 @@ Pattern sources to copy/adapt: `quickrem/justfile`, `quickrem/mise.toml`, shared with the user. - After Pages is enabled: `xh -h https://ghost-assembly.github.io/` returns 200, and the existing `/quickrem/`, `/quicktiler/`, `/quickts/` docs still resolve. + +## Amendment — 2026-09-26: custom domain and GhostDock + +- The org bought `ghost-assembly.com`. `docs/CNAME` now points GitHub Pages at it, and + every absolute URL on the page (og:url, og:image, project Docs links) points at the + new domain instead of `ghost-assembly.github.io`. Each project's own docs site + inherits the domain the same way, from its own repository. +- The project list grew to seven: QuickClip, QuickMusic, QuickRem, QuickTiler and + QuickTS (GNOME Shell extensions), awsdiag (command-line), and GhostDock, a new + self-hosted Docker Compose manager, in a third group, "Self-hosted services", placed + after "Command-line tools". GhostDock publishes no docs site, so its card is Source + only, like awsdiag. +- Footer text and copyright year are unchanged. diff --git a/docs/index.html b/docs/index.html index 14e0052..bbf5c75 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,7 +6,7 @@ Ghost Assembly @@ -28,10 +28,10 @@ property="og:description" content="Small, sharp tools for the Linux desktop and the cloud." /> - + @@ -67,8 +67,9 @@

Small, sharp tools for the Linux desktop and the cloud.

- Open-source GNOME Shell extensions and command-line tools. Each one - does a single job and stays out of your way. + Open-source GNOME Shell extensions, command-line tools and + self-hosted services. Each one does a single job and stays out of + your way.

Browse projects @@ -85,20 +86,38 @@

Projects

GNOME Shell extensions

-

- Quick Settings tiles and keyboard tiling for GNOME Shell. -

+

Quick Settings tiles for GNOME Shell.

+
+

QuickClip

+

GNOME 50

+

+ A private clipboard history in Quick Settings, with + developer transforms. Copies are kept in memory only, + and anything a password manager marks as secret is + skipped. +

+ +
+

QuickMusic

GNOME 50

- What is playing, in Quick Settings and the top bar. - Play, pause and skip in Spotify or any other MPRIS - player without leaving the panel. + What is playing, in Quick Settings and the top bar, with + play/pause, previous and next for any MPRIS player. It + follows whichever player started most recently, or stays + on one you pin.

QuickRem

GNOME 49–50

- Your saved Remmina connections in the Quick Settings - panel. The list follows Remmina’s profile folder as it - changes, so a new connection appears without a reload. + Your saved Remmina connections in Quick Settings, + following the profile folder as it changes. It never + reads Remmina’s stored passwords.

QuickTiler

GNOME 49–50

- Keyboard-driven zone tiling. Press a direction again to - cycle the window through quarter, half and center zones, - with no overlay and no timers. + Keyboard-driven zone tiling with a Quick Settings tile, + no overlay and no timers. Press a direction again and + the focused window cycles through the zones on that + side.

QuickTS

GNOME 50

- Tailscale in Quick Settings. Toggle the tailnet, pick an - exit node, switch profiles and send files over Taildrop - without leaving the panel. + Tailscale in Quick Settings: toggle the tailnet, pick an + exit node, switch profiles, ping nodes and send or + receive Taildrop files. If tailscaled refuses its + socket, the menu says so instead of showing a tailnet + that looks silently disconnected.

awsdiag

Rust

- Fast, compact AWS diagnostic data collection. Built to - be driven by an AI agent during troubleshooting, and - just as usable by hand. + Fast, compact AWS diagnostic data collection, built to + be driven by an AI agent and rendered into a single + self-contained HTML report. It is just as usable by + hand.

+ +
+

Self-hosted services

+

Software you run on your own hardware.

+
+
diff --git a/tests/site.spec.js b/tests/site.spec.js index 5024d04..73a3034 100644 --- a/tests/site.spec.js +++ b/tests/site.spec.js @@ -2,16 +2,18 @@ import { test, expect } from '@playwright/test'; import AxeBuilder from '@axe-core/playwright'; const org = 'https://github.com/Ghost-Assembly'; -const pages = 'https://ghost-assembly.github.io'; +const pages = 'https://ghost-assembly.com'; // Every project on the page, and the links its card must carry. A project with -// no docs site has `docs: null`, and its card must not grow a Docs link. +// no docs site has `docs: false`, and its card must not grow a Docs link. const projects = [ + { name: 'QuickClip', slug: 'quickclip', docs: true }, { name: 'QuickMusic', slug: 'quickmusic', docs: true }, { name: 'QuickRem', slug: 'quickrem', docs: true }, { name: 'QuickTiler', slug: 'quicktiler', docs: true }, { name: 'QuickTS', slug: 'quickts', docs: true }, { name: 'awsdiag', slug: 'awsdiag', docs: false }, + { name: 'GhostDock', slug: 'ghostdock', docs: false }, ]; test('loads every asset from its own origin, without errors', async ({