docs: split README into showcase + user/setup guide - #148

Merged
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase
Aug 15, 2026
Merged

docs: split README into showcase + user/setup guide#148
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase

Conversation

@jonocodes

Copy link
Copy Markdown
Owner

Why

The README had grown to ~1330 lines — mostly setup, per-platform install, configuration reference, and per-feature deep-dives (Now Playing alone was ~270 lines). That buried the showcase. This splits it so the README is a ~180-line showcase and everything technical lives in one guide.

What changed

  • README.md — trimmed to showcase (pitch, screenshots, status, comparison, architecture diagram, quick start, docs index). Keeps the ASCII architecture diagram as the hero. In-page links to moved sections now point into docs/GUIDE.md.
  • docs/GUIDE.md(new) — install/run, macOS + KDE Plasma Wayland + X11 setup, phone/tablet pairing, design tooling, PWA-over-Tailscale, client features (manual control, editor, tuning, a11y), uinput/focus watcher, dev UX, production, full configuration reference, and the media surfaces (VLC, Now Playing, running programs). Relative file links fixed for the docs/ location (packaging/../packaging/).
  • Dedup — the guide's CLI and Under the hood sections collapse to explicit pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources instead of restating them.
  • Reverse linksREFERENCE.md, ARCHITECTURE.md, and ONBOARDING.md now list GUIDE.md and describe the README as showcase-only.

Verification

  • Every cross-doc file link and #anchor verified to resolve.
  • README 1331 → 177 lines; docs/GUIDE.md 1181 lines.

🤖 Generated with Claude Code

jonocodesand others added 2 commits August 13, 2026 09:08
Follow-up to b38e575, closing the gaps a two-axis review found against
the issue's acceptance criteria.
The swatch lied about non-hex colours. `<input type="color">` coerces
anything it can't parse to #000000, so a `rebeccapurple` widget rendered
a black swatch beside a purple canvas cell — and left an accidental
confirm one click from clobbering the authored CSS string. Values the
picker can't hold (named colours, `hsl(...)`, `#RRGGBBAA`) now show as a
read-only preview of the real colour, with the text input as the escape
hatch the any-CSS-string schema needs. `#RGB` shorthand expands rather
than falling into that bucket, since the picker can represent it
losslessly; an unset widget still gets the picker, which is the main way
into it.
A hand-authored `color:` on a non-button kind was stranded: ADR-0006
keeps the field button-only, but EditorCanvas still paints it, so the
value was invisible to the panel and unclearable. The field now also
appears on any kind that already carries a colour.
AC4 (save round-trips the colour unchanged) had no test. Adds write-path
coverage over hex, named and `hsl(...)` values — the hex case also pins
that the writer quotes a leading `#` rather than emitting a YAML comment
— plus the clear-to-unset case.
Also: give the text input an accessible name (it had none, which is why
the tests had reached for CSS-class selectors), drop a pass-through
callback, rename `parseHexColor` to `toSwatchHex` since it formats
rather than parses, fold the duplicated focus rule into the file's
`:focus-visible` convention, and document the picker in the README.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The README had grown to ~1330 lines, mostly setup, per-platform install,
configuration reference, and per-feature deep-dives. Move all of that into
a new docs/GUIDE.md so the README is a ~180-line showcase (pitch, screenshots,
status, comparison, architecture diagram, quick start, docs index).
- README.md: trimmed to showcase; keeps the ASCII architecture diagram as the
hero; in-page links to moved sections now point into docs/GUIDE.md.
- docs/GUIDE.md: new — install/run, macOS + KDE + X11 setup, phone/tablet
pairing, design tooling, PWA-over-Tailscale, client features, uinput/focus
watcher, dev UX, production, full configuration reference, media surfaces.
Relative file links fixed for the docs/ location (packaging/ -> ../packaging/).
- Dedup: GUIDE's CLI and "Under the hood" sections collapsed to explicit
pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources.
- Reverse links: REFERENCE.md, ARCHITECTURE.md, ONBOARDING.md now list
GUIDE.md and describe the README as showcase-only.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jonocodes
jonocodes merged commit 0b2a664 into mainAug 15, 2026
1 of 2 checks passed
Sign up for freeto 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

@jonocodes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

docs: split README into showcase + user/setup guide - #148

Merged
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase
Aug 15, 2026
Merged

docs: split README into showcase + user/setup guide#148
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase

Conversation

@jonocodes

Copy link
Copy Markdown
Owner

Why

The README had grown to ~1330 lines — mostly setup, per-platform install, configuration reference, and per-feature deep-dives (Now Playing alone was ~270 lines). That buried the showcase. This splits it so the README is a ~180-line showcase and everything technical lives in one guide.

What changed

  • README.md — trimmed to showcase (pitch, screenshots, status, comparison, architecture diagram, quick start, docs index). Keeps the ASCII architecture diagram as the hero. In-page links to moved sections now point into docs/GUIDE.md.
  • docs/GUIDE.md(new) — install/run, macOS + KDE Plasma Wayland + X11 setup, phone/tablet pairing, design tooling, PWA-over-Tailscale, client features (manual control, editor, tuning, a11y), uinput/focus watcher, dev UX, production, full configuration reference, and the media surfaces (VLC, Now Playing, running programs). Relative file links fixed for the docs/ location (packaging/../packaging/).
  • Dedup — the guide's CLI and Under the hood sections collapse to explicit pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources instead of restating them.
  • Reverse linksREFERENCE.md, ARCHITECTURE.md, and ONBOARDING.md now list GUIDE.md and describe the README as showcase-only.

Verification

  • Every cross-doc file link and #anchor verified to resolve.
  • README 1331 → 177 lines; docs/GUIDE.md 1181 lines.

🤖 Generated with Claude Code

jonocodesand others added 2 commits August 13, 2026 09:08
Follow-up to b38e575, closing the gaps a two-axis review found against
the issue's acceptance criteria.
The swatch lied about non-hex colours. `<input type="color">` coerces
anything it can't parse to #000000, so a `rebeccapurple` widget rendered
a black swatch beside a purple canvas cell — and left an accidental
confirm one click from clobbering the authored CSS string. Values the
picker can't hold (named colours, `hsl(...)`, `#RRGGBBAA`) now show as a
read-only preview of the real colour, with the text input as the escape
hatch the any-CSS-string schema needs. `#RGB` shorthand expands rather
than falling into that bucket, since the picker can represent it
losslessly; an unset widget still gets the picker, which is the main way
into it.
A hand-authored `color:` on a non-button kind was stranded: ADR-0006
keeps the field button-only, but EditorCanvas still paints it, so the
value was invisible to the panel and unclearable. The field now also
appears on any kind that already carries a colour.
AC4 (save round-trips the colour unchanged) had no test. Adds write-path
coverage over hex, named and `hsl(...)` values — the hex case also pins
that the writer quotes a leading `#` rather than emitting a YAML comment
— plus the clear-to-unset case.
Also: give the text input an accessible name (it had none, which is why
the tests had reached for CSS-class selectors), drop a pass-through
callback, rename `parseHexColor` to `toSwatchHex` since it formats
rather than parses, fold the duplicated focus rule into the file's
`:focus-visible` convention, and document the picker in the README.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The README had grown to ~1330 lines, mostly setup, per-platform install,
configuration reference, and per-feature deep-dives. Move all of that into
a new docs/GUIDE.md so the README is a ~180-line showcase (pitch, screenshots,
status, comparison, architecture diagram, quick start, docs index).
- README.md: trimmed to showcase; keeps the ASCII architecture diagram as the
hero; in-page links to moved sections now point into docs/GUIDE.md.
- docs/GUIDE.md: new — install/run, macOS + KDE + X11 setup, phone/tablet
pairing, design tooling, PWA-over-Tailscale, client features, uinput/focus
watcher, dev UX, production, full configuration reference, media surfaces.
Relative file links fixed for the docs/ location (packaging/ -> ../packaging/).
- Dedup: GUIDE's CLI and "Under the hood" sections collapsed to explicit
pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources.
- Reverse links: REFERENCE.md, ARCHITECTURE.md, ONBOARDING.md now list
GUIDE.md and describe the README as showcase-only.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jonocodes
jonocodes merged commit 0b2a664 into mainAug 15, 2026
1 of 2 checks passed
Sign up for freeto 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

@jonocodes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: split README into showcase + user/setup guide - #148

Merged
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase
Aug 15, 2026
Merged

docs: split README into showcase + user/setup guide#148
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase

Conversation

@jonocodes

Copy link
Copy Markdown
Owner

Why

The README had grown to ~1330 lines — mostly setup, per-platform install, configuration reference, and per-feature deep-dives (Now Playing alone was ~270 lines). That buried the showcase. This splits it so the README is a ~180-line showcase and everything technical lives in one guide.

What changed

  • README.md — trimmed to showcase (pitch, screenshots, status, comparison, architecture diagram, quick start, docs index). Keeps the ASCII architecture diagram as the hero. In-page links to moved sections now point into docs/GUIDE.md.
  • docs/GUIDE.md(new) — install/run, macOS + KDE Plasma Wayland + X11 setup, phone/tablet pairing, design tooling, PWA-over-Tailscale, client features (manual control, editor, tuning, a11y), uinput/focus watcher, dev UX, production, full configuration reference, and the media surfaces (VLC, Now Playing, running programs). Relative file links fixed for the docs/ location (packaging/../packaging/).
  • Dedup — the guide's CLI and Under the hood sections collapse to explicit pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources instead of restating them.
  • Reverse linksREFERENCE.md, ARCHITECTURE.md, and ONBOARDING.md now list GUIDE.md and describe the README as showcase-only.

Verification

  • Every cross-doc file link and #anchor verified to resolve.
  • README 1331 → 177 lines; docs/GUIDE.md 1181 lines.

🤖 Generated with Claude Code

jonocodesand others added 2 commits August 13, 2026 09:08
Follow-up to b38e575, closing the gaps a two-axis review found against
the issue's acceptance criteria.
The swatch lied about non-hex colours. `<input type="color">` coerces
anything it can't parse to #000000, so a `rebeccapurple` widget rendered
a black swatch beside a purple canvas cell — and left an accidental
confirm one click from clobbering the authored CSS string. Values the
picker can't hold (named colours, `hsl(...)`, `#RRGGBBAA`) now show as a
read-only preview of the real colour, with the text input as the escape
hatch the any-CSS-string schema needs. `#RGB` shorthand expands rather
than falling into that bucket, since the picker can represent it
losslessly; an unset widget still gets the picker, which is the main way
into it.
A hand-authored `color:` on a non-button kind was stranded: ADR-0006
keeps the field button-only, but EditorCanvas still paints it, so the
value was invisible to the panel and unclearable. The field now also
appears on any kind that already carries a colour.
AC4 (save round-trips the colour unchanged) had no test. Adds write-path
coverage over hex, named and `hsl(...)` values — the hex case also pins
that the writer quotes a leading `#` rather than emitting a YAML comment
— plus the clear-to-unset case.
Also: give the text input an accessible name (it had none, which is why
the tests had reached for CSS-class selectors), drop a pass-through
callback, rename `parseHexColor` to `toSwatchHex` since it formats
rather than parses, fold the duplicated focus rule into the file's
`:focus-visible` convention, and document the picker in the README.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The README had grown to ~1330 lines, mostly setup, per-platform install,
configuration reference, and per-feature deep-dives. Move all of that into
a new docs/GUIDE.md so the README is a ~180-line showcase (pitch, screenshots,
status, comparison, architecture diagram, quick start, docs index).
- README.md: trimmed to showcase; keeps the ASCII architecture diagram as the
hero; in-page links to moved sections now point into docs/GUIDE.md.
- docs/GUIDE.md: new — install/run, macOS + KDE + X11 setup, phone/tablet
pairing, design tooling, PWA-over-Tailscale, client features, uinput/focus
watcher, dev UX, production, full configuration reference, media surfaces.
Relative file links fixed for the docs/ location (packaging/ -> ../packaging/).
- Dedup: GUIDE's CLI and "Under the hood" sections collapsed to explicit
pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources.
- Reverse links: REFERENCE.md, ARCHITECTURE.md, ONBOARDING.md now list
GUIDE.md and describe the README as showcase-only.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jonocodes
jonocodes merged commit 0b2a664 into mainAug 15, 2026
1 of 2 checks passed
Sign up for freeto 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

@jonocodes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: split README into showcase + user/setup guide - #148

Merged
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase
Aug 15, 2026
Merged

docs: split README into showcase + user/setup guide#148
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase

Conversation

@jonocodes

Copy link
Copy Markdown
Owner

Why

The README had grown to ~1330 lines — mostly setup, per-platform install, configuration reference, and per-feature deep-dives (Now Playing alone was ~270 lines). That buried the showcase. This splits it so the README is a ~180-line showcase and everything technical lives in one guide.

What changed

  • README.md — trimmed to showcase (pitch, screenshots, status, comparison, architecture diagram, quick start, docs index). Keeps the ASCII architecture diagram as the hero. In-page links to moved sections now point into docs/GUIDE.md.
  • docs/GUIDE.md(new) — install/run, macOS + KDE Plasma Wayland + X11 setup, phone/tablet pairing, design tooling, PWA-over-Tailscale, client features (manual control, editor, tuning, a11y), uinput/focus watcher, dev UX, production, full configuration reference, and the media surfaces (VLC, Now Playing, running programs). Relative file links fixed for the docs/ location (packaging/../packaging/).
  • Dedup — the guide's CLI and Under the hood sections collapse to explicit pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources instead of restating them.
  • Reverse linksREFERENCE.md, ARCHITECTURE.md, and ONBOARDING.md now list GUIDE.md and describe the README as showcase-only.

Verification

  • Every cross-doc file link and #anchor verified to resolve.
  • README 1331 → 177 lines; docs/GUIDE.md 1181 lines.

🤖 Generated with Claude Code

jonocodesand others added 2 commits August 13, 2026 09:08
Follow-up to b38e575, closing the gaps a two-axis review found against
the issue's acceptance criteria.
The swatch lied about non-hex colours. `<input type="color">` coerces
anything it can't parse to #000000, so a `rebeccapurple` widget rendered
a black swatch beside a purple canvas cell — and left an accidental
confirm one click from clobbering the authored CSS string. Values the
picker can't hold (named colours, `hsl(...)`, `#RRGGBBAA`) now show as a
read-only preview of the real colour, with the text input as the escape
hatch the any-CSS-string schema needs. `#RGB` shorthand expands rather
than falling into that bucket, since the picker can represent it
losslessly; an unset widget still gets the picker, which is the main way
into it.
A hand-authored `color:` on a non-button kind was stranded: ADR-0006
keeps the field button-only, but EditorCanvas still paints it, so the
value was invisible to the panel and unclearable. The field now also
appears on any kind that already carries a colour.
AC4 (save round-trips the colour unchanged) had no test. Adds write-path
coverage over hex, named and `hsl(...)` values — the hex case also pins
that the writer quotes a leading `#` rather than emitting a YAML comment
— plus the clear-to-unset case.
Also: give the text input an accessible name (it had none, which is why
the tests had reached for CSS-class selectors), drop a pass-through
callback, rename `parseHexColor` to `toSwatchHex` since it formats
rather than parses, fold the duplicated focus rule into the file's
`:focus-visible` convention, and document the picker in the README.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The README had grown to ~1330 lines, mostly setup, per-platform install,
configuration reference, and per-feature deep-dives. Move all of that into
a new docs/GUIDE.md so the README is a ~180-line showcase (pitch, screenshots,
status, comparison, architecture diagram, quick start, docs index).
- README.md: trimmed to showcase; keeps the ASCII architecture diagram as the
hero; in-page links to moved sections now point into docs/GUIDE.md.
- docs/GUIDE.md: new — install/run, macOS + KDE + X11 setup, phone/tablet
pairing, design tooling, PWA-over-Tailscale, client features, uinput/focus
watcher, dev UX, production, full configuration reference, media surfaces.
Relative file links fixed for the docs/ location (packaging/ -> ../packaging/).
- Dedup: GUIDE's CLI and "Under the hood" sections collapsed to explicit
pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources.
- Reverse links: REFERENCE.md, ARCHITECTURE.md, ONBOARDING.md now list
GUIDE.md and describe the README as showcase-only.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jonocodes
jonocodes merged commit 0b2a664 into mainAug 15, 2026
1 of 2 checks passed
Sign up for freeto 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

@jonocodes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

docs: split README into showcase + user/setup guide - #148

Merged
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase
Aug 15, 2026
Merged

docs: split README into showcase + user/setup guide#148
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase

Conversation

@jonocodes

Copy link
Copy Markdown
Owner

Why

The README had grown to ~1330 lines — mostly setup, per-platform install, configuration reference, and per-feature deep-dives (Now Playing alone was ~270 lines). That buried the showcase. This splits it so the README is a ~180-line showcase and everything technical lives in one guide.

What changed

  • README.md — trimmed to showcase (pitch, screenshots, status, comparison, architecture diagram, quick start, docs index). Keeps the ASCII architecture diagram as the hero. In-page links to moved sections now point into docs/GUIDE.md.
  • docs/GUIDE.md(new) — install/run, macOS + KDE Plasma Wayland + X11 setup, phone/tablet pairing, design tooling, PWA-over-Tailscale, client features (manual control, editor, tuning, a11y), uinput/focus watcher, dev UX, production, full configuration reference, and the media surfaces (VLC, Now Playing, running programs). Relative file links fixed for the docs/ location (packaging/../packaging/).
  • Dedup — the guide's CLI and Under the hood sections collapse to explicit pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources instead of restating them.
  • Reverse linksREFERENCE.md, ARCHITECTURE.md, and ONBOARDING.md now list GUIDE.md and describe the README as showcase-only.

Verification

  • Every cross-doc file link and #anchor verified to resolve.
  • README 1331 → 177 lines; docs/GUIDE.md 1181 lines.

🤖 Generated with Claude Code

jonocodesand others added 2 commits August 13, 2026 09:08
Follow-up to b38e575, closing the gaps a two-axis review found against
the issue's acceptance criteria.
The swatch lied about non-hex colours. `<input type="color">` coerces
anything it can't parse to #000000, so a `rebeccapurple` widget rendered
a black swatch beside a purple canvas cell — and left an accidental
confirm one click from clobbering the authored CSS string. Values the
picker can't hold (named colours, `hsl(...)`, `#RRGGBBAA`) now show as a
read-only preview of the real colour, with the text input as the escape
hatch the any-CSS-string schema needs. `#RGB` shorthand expands rather
than falling into that bucket, since the picker can represent it
losslessly; an unset widget still gets the picker, which is the main way
into it.
A hand-authored `color:` on a non-button kind was stranded: ADR-0006
keeps the field button-only, but EditorCanvas still paints it, so the
value was invisible to the panel and unclearable. The field now also
appears on any kind that already carries a colour.
AC4 (save round-trips the colour unchanged) had no test. Adds write-path
coverage over hex, named and `hsl(...)` values — the hex case also pins
that the writer quotes a leading `#` rather than emitting a YAML comment
— plus the clear-to-unset case.
Also: give the text input an accessible name (it had none, which is why
the tests had reached for CSS-class selectors), drop a pass-through
callback, rename `parseHexColor` to `toSwatchHex` since it formats
rather than parses, fold the duplicated focus rule into the file's
`:focus-visible` convention, and document the picker in the README.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The README had grown to ~1330 lines, mostly setup, per-platform install,
configuration reference, and per-feature deep-dives. Move all of that into
a new docs/GUIDE.md so the README is a ~180-line showcase (pitch, screenshots,
status, comparison, architecture diagram, quick start, docs index).
- README.md: trimmed to showcase; keeps the ASCII architecture diagram as the
hero; in-page links to moved sections now point into docs/GUIDE.md.
- docs/GUIDE.md: new — install/run, macOS + KDE + X11 setup, phone/tablet
pairing, design tooling, PWA-over-Tailscale, client features, uinput/focus
watcher, dev UX, production, full configuration reference, media surfaces.
Relative file links fixed for the docs/ location (packaging/ -> ../packaging/).
- Dedup: GUIDE's CLI and "Under the hood" sections collapsed to explicit
pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources.
- Reverse links: REFERENCE.md, ARCHITECTURE.md, ONBOARDING.md now list
GUIDE.md and describe the README as showcase-only.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jonocodes
jonocodes merged commit 0b2a664 into mainAug 15, 2026
1 of 2 checks passed
Sign up for freeto 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

@jonocodes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: split README into showcase + user/setup guide - #148

Merged
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase
Aug 15, 2026
Merged

docs: split README into showcase + user/setup guide#148
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase

Conversation

@jonocodes

Copy link
Copy Markdown
Owner

Why

The README had grown to ~1330 lines — mostly setup, per-platform install, configuration reference, and per-feature deep-dives (Now Playing alone was ~270 lines). That buried the showcase. This splits it so the README is a ~180-line showcase and everything technical lives in one guide.

What changed

  • README.md — trimmed to showcase (pitch, screenshots, status, comparison, architecture diagram, quick start, docs index). Keeps the ASCII architecture diagram as the hero. In-page links to moved sections now point into docs/GUIDE.md.
  • docs/GUIDE.md(new) — install/run, macOS + KDE Plasma Wayland + X11 setup, phone/tablet pairing, design tooling, PWA-over-Tailscale, client features (manual control, editor, tuning, a11y), uinput/focus watcher, dev UX, production, full configuration reference, and the media surfaces (VLC, Now Playing, running programs). Relative file links fixed for the docs/ location (packaging/../packaging/).
  • Dedup — the guide's CLI and Under the hood sections collapse to explicit pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources instead of restating them.
  • Reverse linksREFERENCE.md, ARCHITECTURE.md, and ONBOARDING.md now list GUIDE.md and describe the README as showcase-only.

Verification

  • Every cross-doc file link and #anchor verified to resolve.
  • README 1331 → 177 lines; docs/GUIDE.md 1181 lines.

🤖 Generated with Claude Code

jonocodesand others added 2 commits August 13, 2026 09:08
Follow-up to b38e575, closing the gaps a two-axis review found against
the issue's acceptance criteria.
The swatch lied about non-hex colours. `<input type="color">` coerces
anything it can't parse to #000000, so a `rebeccapurple` widget rendered
a black swatch beside a purple canvas cell — and left an accidental
confirm one click from clobbering the authored CSS string. Values the
picker can't hold (named colours, `hsl(...)`, `#RRGGBBAA`) now show as a
read-only preview of the real colour, with the text input as the escape
hatch the any-CSS-string schema needs. `#RGB` shorthand expands rather
than falling into that bucket, since the picker can represent it
losslessly; an unset widget still gets the picker, which is the main way
into it.
A hand-authored `color:` on a non-button kind was stranded: ADR-0006
keeps the field button-only, but EditorCanvas still paints it, so the
value was invisible to the panel and unclearable. The field now also
appears on any kind that already carries a colour.
AC4 (save round-trips the colour unchanged) had no test. Adds write-path
coverage over hex, named and `hsl(...)` values — the hex case also pins
that the writer quotes a leading `#` rather than emitting a YAML comment
— plus the clear-to-unset case.
Also: give the text input an accessible name (it had none, which is why
the tests had reached for CSS-class selectors), drop a pass-through
callback, rename `parseHexColor` to `toSwatchHex` since it formats
rather than parses, fold the duplicated focus rule into the file's
`:focus-visible` convention, and document the picker in the README.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The README had grown to ~1330 lines, mostly setup, per-platform install,
configuration reference, and per-feature deep-dives. Move all of that into
a new docs/GUIDE.md so the README is a ~180-line showcase (pitch, screenshots,
status, comparison, architecture diagram, quick start, docs index).
- README.md: trimmed to showcase; keeps the ASCII architecture diagram as the
hero; in-page links to moved sections now point into docs/GUIDE.md.
- docs/GUIDE.md: new — install/run, macOS + KDE + X11 setup, phone/tablet
pairing, design tooling, PWA-over-Tailscale, client features, uinput/focus
watcher, dev UX, production, full configuration reference, media surfaces.
Relative file links fixed for the docs/ location (packaging/ -> ../packaging/).
- Dedup: GUIDE's CLI and "Under the hood" sections collapsed to explicit
pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources.
- Reverse links: REFERENCE.md, ARCHITECTURE.md, ONBOARDING.md now list
GUIDE.md and describe the README as showcase-only.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jonocodes
jonocodes merged commit 0b2a664 into mainAug 15, 2026
1 of 2 checks passed
Sign up for freeto 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

@jonocodes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: split README into showcase + user/setup guide - #148

Merged
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase
Aug 15, 2026
Merged

docs: split README into showcase + user/setup guide#148
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase

Conversation

@jonocodes

Copy link
Copy Markdown
Owner

Why

The README had grown to ~1330 lines — mostly setup, per-platform install, configuration reference, and per-feature deep-dives (Now Playing alone was ~270 lines). That buried the showcase. This splits it so the README is a ~180-line showcase and everything technical lives in one guide.

What changed

  • README.md — trimmed to showcase (pitch, screenshots, status, comparison, architecture diagram, quick start, docs index). Keeps the ASCII architecture diagram as the hero. In-page links to moved sections now point into docs/GUIDE.md.
  • docs/GUIDE.md(new) — install/run, macOS + KDE Plasma Wayland + X11 setup, phone/tablet pairing, design tooling, PWA-over-Tailscale, client features (manual control, editor, tuning, a11y), uinput/focus watcher, dev UX, production, full configuration reference, and the media surfaces (VLC, Now Playing, running programs). Relative file links fixed for the docs/ location (packaging/../packaging/).
  • Dedup — the guide's CLI and Under the hood sections collapse to explicit pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources instead of restating them.
  • Reverse linksREFERENCE.md, ARCHITECTURE.md, and ONBOARDING.md now list GUIDE.md and describe the README as showcase-only.

Verification

  • Every cross-doc file link and #anchor verified to resolve.
  • README 1331 → 177 lines; docs/GUIDE.md 1181 lines.

🤖 Generated with Claude Code

jonocodesand others added 2 commits August 13, 2026 09:08
Follow-up to b38e575, closing the gaps a two-axis review found against
the issue's acceptance criteria.
The swatch lied about non-hex colours. `<input type="color">` coerces
anything it can't parse to #000000, so a `rebeccapurple` widget rendered
a black swatch beside a purple canvas cell — and left an accidental
confirm one click from clobbering the authored CSS string. Values the
picker can't hold (named colours, `hsl(...)`, `#RRGGBBAA`) now show as a
read-only preview of the real colour, with the text input as the escape
hatch the any-CSS-string schema needs. `#RGB` shorthand expands rather
than falling into that bucket, since the picker can represent it
losslessly; an unset widget still gets the picker, which is the main way
into it.
A hand-authored `color:` on a non-button kind was stranded: ADR-0006
keeps the field button-only, but EditorCanvas still paints it, so the
value was invisible to the panel and unclearable. The field now also
appears on any kind that already carries a colour.
AC4 (save round-trips the colour unchanged) had no test. Adds write-path
coverage over hex, named and `hsl(...)` values — the hex case also pins
that the writer quotes a leading `#` rather than emitting a YAML comment
— plus the clear-to-unset case.
Also: give the text input an accessible name (it had none, which is why
the tests had reached for CSS-class selectors), drop a pass-through
callback, rename `parseHexColor` to `toSwatchHex` since it formats
rather than parses, fold the duplicated focus rule into the file's
`:focus-visible` convention, and document the picker in the README.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The README had grown to ~1330 lines, mostly setup, per-platform install,
configuration reference, and per-feature deep-dives. Move all of that into
a new docs/GUIDE.md so the README is a ~180-line showcase (pitch, screenshots,
status, comparison, architecture diagram, quick start, docs index).
- README.md: trimmed to showcase; keeps the ASCII architecture diagram as the
hero; in-page links to moved sections now point into docs/GUIDE.md.
- docs/GUIDE.md: new — install/run, macOS + KDE + X11 setup, phone/tablet
pairing, design tooling, PWA-over-Tailscale, client features, uinput/focus
watcher, dev UX, production, full configuration reference, media surfaces.
Relative file links fixed for the docs/ location (packaging/ -> ../packaging/).
- Dedup: GUIDE's CLI and "Under the hood" sections collapsed to explicit
pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources.
- Reverse links: REFERENCE.md, ARCHITECTURE.md, ONBOARDING.md now list
GUIDE.md and describe the README as showcase-only.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jonocodes
jonocodes merged commit 0b2a664 into mainAug 15, 2026
1 of 2 checks passed
Sign up for freeto 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

@jonocodes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

docs: split README into showcase + user/setup guide - #148

Merged
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase
Aug 15, 2026
Merged

docs: split README into showcase + user/setup guide#148
jonocodes merged 2 commits into
mainfrom
docs/split-readme-showcase

Conversation

@jonocodes

Copy link
Copy Markdown
Owner

Why

The README had grown to ~1330 lines — mostly setup, per-platform install, configuration reference, and per-feature deep-dives (Now Playing alone was ~270 lines). That buried the showcase. This splits it so the README is a ~180-line showcase and everything technical lives in one guide.

What changed

  • README.md — trimmed to showcase (pitch, screenshots, status, comparison, architecture diagram, quick start, docs index). Keeps the ASCII architecture diagram as the hero. In-page links to moved sections now point into docs/GUIDE.md.
  • docs/GUIDE.md(new) — install/run, macOS + KDE Plasma Wayland + X11 setup, phone/tablet pairing, design tooling, PWA-over-Tailscale, client features (manual control, editor, tuning, a11y), uinput/focus watcher, dev UX, production, full configuration reference, and the media surfaces (VLC, Now Playing, running programs). Relative file links fixed for the docs/ location (packaging/../packaging/).
  • Dedup — the guide's CLI and Under the hood sections collapse to explicit pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources instead of restating them.
  • Reverse linksREFERENCE.md, ARCHITECTURE.md, and ONBOARDING.md now list GUIDE.md and describe the README as showcase-only.

Verification

  • Every cross-doc file link and #anchor verified to resolve.
  • README 1331 → 177 lines; docs/GUIDE.md 1181 lines.

🤖 Generated with Claude Code

jonocodesand others added 2 commits August 13, 2026 09:08
Follow-up to b38e575, closing the gaps a two-axis review found against
the issue's acceptance criteria.
The swatch lied about non-hex colours. `<input type="color">` coerces
anything it can't parse to #000000, so a `rebeccapurple` widget rendered
a black swatch beside a purple canvas cell — and left an accidental
confirm one click from clobbering the authored CSS string. Values the
picker can't hold (named colours, `hsl(...)`, `#RRGGBBAA`) now show as a
read-only preview of the real colour, with the text input as the escape
hatch the any-CSS-string schema needs. `#RGB` shorthand expands rather
than falling into that bucket, since the picker can represent it
losslessly; an unset widget still gets the picker, which is the main way
into it.
A hand-authored `color:` on a non-button kind was stranded: ADR-0006
keeps the field button-only, but EditorCanvas still paints it, so the
value was invisible to the panel and unclearable. The field now also
appears on any kind that already carries a colour.
AC4 (save round-trips the colour unchanged) had no test. Adds write-path
coverage over hex, named and `hsl(...)` values — the hex case also pins
that the writer quotes a leading `#` rather than emitting a YAML comment
— plus the clear-to-unset case.
Also: give the text input an accessible name (it had none, which is why
the tests had reached for CSS-class selectors), drop a pass-through
callback, rename `parseHexColor` to `toSwatchHex` since it formats
rather than parses, fold the duplicated focus rule into the file's
`:focus-visible` convention, and document the picker in the README.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The README had grown to ~1330 lines, mostly setup, per-platform install,
configuration reference, and per-feature deep-dives. Move all of that into
a new docs/GUIDE.md so the README is a ~180-line showcase (pitch, screenshots,
status, comparison, architecture diagram, quick start, docs index).
- README.md: trimmed to showcase; keeps the ASCII architecture diagram as the
hero; in-page links to moved sections now point into docs/GUIDE.md.
- docs/GUIDE.md: new — install/run, macOS + KDE + X11 setup, phone/tablet
pairing, design tooling, PWA-over-Tailscale, client features, uinput/focus
watcher, dev UX, production, full configuration reference, media surfaces.
Relative file links fixed for the docs/ location (packaging/ -> ../packaging/).
- Dedup: GUIDE's CLI and "Under the hood" sections collapsed to explicit
pointers at the canonical REFERENCE.md / ARCHITECTURE.md sources.
- Reverse links: REFERENCE.md, ARCHITECTURE.md, ONBOARDING.md now list
GUIDE.md and describe the README as showcase-only.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jonocodes
jonocodes merged commit 0b2a664 into mainAug 15, 2026
1 of 2 checks passed
Sign up for freeto 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

@jonocodes