Repository files navigation

GDAM web

The public gdam.dev site: one static Astro page describing GDAM, the Godot Addon Manager.

This is the front door only. The registry application — sign-in, owner pages, addon pages, docs — is a separate app served from app.gdam.dev, and the registry API from api.gdam.dev. Nothing here talks to either: there is no authentication, no application state, no backend and no runtime environment configuration. The page ships no runtime JavaScript, which is why there are no integrations in astro.config.mjs and why CI permits only the non-executable JSON-LD script element and rejects JavaScript assets or external scripts.

Commands

CommandAction
bun installInstall dependencies
bun devStart the Astro development server
bun run buildGenerate the static site in dist/
bun previewPreview the static build

What is on the page, and where it came from

Nothing on the page is invented. Everything traceable to the gdam and gdam-actions repositories is listed here so it can be re-checked when either changes.

The terminal frame follows the released v0.0.8 output for init, two adds, a link, then install. The session is internally consistent on purpose: gdam install prints two lines rather than three because the third addon is linked, and a linked addon has nothing to install.

The only edit is the path prefix. gdam init and gdam link print absolute paths, and the real ones were a scratch directory, so they were re-rooted at ~/code/roguelike/godot_client — consistently, so that ../gd-gesture still resolves to the ~/code/roguelike/gd-gesture the frame shows.

There is no colour in the frame beyond the prompt. That is not restraint, it is accuracy: gdam emits no ANSI codes at all — every line it prints is plain text through fmt.Printf. Syntax-highlighting the output would be drawing a tool that does not exist.

The two JSON files show the released manifest contract. They are the clearest statement of the split worth understanding: published dependencies store exact Release tags, while the linked @aviorstudio/gd-gesture has an empty object and its local path appears only in gdam.link.json.

The command table is every command in printUsage in main.go, all nine, not the three that make a good demo. The three environment variables named in the prose — GDAM_SECRET_KEY, GDAM_API_URL, GITHUB_TOKEN — are from the same place.

The workflow snippet uses the public Actions v0.0.2 tag and installs public CLI v0.0.8. It shows all inputs needed when selecting an asset. Exact tags are the readable recommendation; the adjacent warning accurately identifies a full commit SHA as GitHub's strongest action pin.

The install routes in the closing block are both of the ones the README documents. The hero shows go install rather than the shell installer only because the installer one-liner is 94 characters and would arrive as a horizontally scrolling box in the narrow hero column; the closing block gives it the full width and lists both.

Colour

The palette is the registry's own, taken from what app.gdam.dev already renders: #0f172b ink, #f1f5f9 paper, and #0284c7 for anything actionable. The front door and the thing behind it should look like one site rather than two designs sharing a domain. --sky-deep (#0369a1) is the darkened form for small text on paper, since the lighter blue is a button colour and does not carry body copy.

Fonts are the platform's own. No font is fetched, so no visitor's IP reaches a font CDN and no CSP exception is needed to render the page.

Domain

src/layouts/Full.astro, public/robots.txt and public/sitemap.xml assume https://gdam.dev, and the registry links point at https://app.gdam.dev. That split is the same one ormos uses — apex for the site, app. for the application — and it matches the existing api.gdam.dev.

Correction (2026-09-03): the earlier paragraph said this layout was not in production and that the registry still occupied the apex. That is no longer true: gdam.dev serves this static landing page and app.gdam.dev serves the registry. GitHub records Production deployments created by the Vercel GitHub integration after repository updates. There is no versioned deployment workflow or deployment credential in this repository, so CI must not claim that it deploys the site. The canonical host remains explicit in Full.astro, robots.txt, and sitemap.xml.

Releases

Packages

Contributors

Languages

, '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

Repository files navigation

GDAM web

The public gdam.dev site: one static Astro page describing GDAM, the Godot Addon Manager.

This is the front door only. The registry application — sign-in, owner pages, addon pages, docs — is a separate app served from app.gdam.dev, and the registry API from api.gdam.dev. Nothing here talks to either: there is no authentication, no application state, no backend and no runtime environment configuration. The page ships no runtime JavaScript, which is why there are no integrations in astro.config.mjs and why CI permits only the non-executable JSON-LD script element and rejects JavaScript assets or external scripts.

Commands

CommandAction
bun installInstall dependencies
bun devStart the Astro development server
bun run buildGenerate the static site in dist/
bun previewPreview the static build

What is on the page, and where it came from

Nothing on the page is invented. Everything traceable to the gdam and gdam-actions repositories is listed here so it can be re-checked when either changes.

The terminal frame follows the released v0.0.8 output for init, two adds, a link, then install. The session is internally consistent on purpose: gdam install prints two lines rather than three because the third addon is linked, and a linked addon has nothing to install.

The only edit is the path prefix. gdam init and gdam link print absolute paths, and the real ones were a scratch directory, so they were re-rooted at ~/code/roguelike/godot_client — consistently, so that ../gd-gesture still resolves to the ~/code/roguelike/gd-gesture the frame shows.

There is no colour in the frame beyond the prompt. That is not restraint, it is accuracy: gdam emits no ANSI codes at all — every line it prints is plain text through fmt.Printf. Syntax-highlighting the output would be drawing a tool that does not exist.

The two JSON files show the released manifest contract. They are the clearest statement of the split worth understanding: published dependencies store exact Release tags, while the linked @aviorstudio/gd-gesture has an empty object and its local path appears only in gdam.link.json.

The command table is every command in printUsage in main.go, all nine, not the three that make a good demo. The three environment variables named in the prose — GDAM_SECRET_KEY, GDAM_API_URL, GITHUB_TOKEN — are from the same place.

The workflow snippet uses the public Actions v0.0.2 tag and installs public CLI v0.0.8. It shows all inputs needed when selecting an asset. Exact tags are the readable recommendation; the adjacent warning accurately identifies a full commit SHA as GitHub's strongest action pin.

The install routes in the closing block are both of the ones the README documents. The hero shows go install rather than the shell installer only because the installer one-liner is 94 characters and would arrive as a horizontally scrolling box in the narrow hero column; the closing block gives it the full width and lists both.

Colour

The palette is the registry's own, taken from what app.gdam.dev already renders: #0f172b ink, #f1f5f9 paper, and #0284c7 for anything actionable. The front door and the thing behind it should look like one site rather than two designs sharing a domain. --sky-deep (#0369a1) is the darkened form for small text on paper, since the lighter blue is a button colour and does not carry body copy.

Fonts are the platform's own. No font is fetched, so no visitor's IP reaches a font CDN and no CSP exception is needed to render the page.

Domain

src/layouts/Full.astro, public/robots.txt and public/sitemap.xml assume https://gdam.dev, and the registry links point at https://app.gdam.dev. That split is the same one ormos uses — apex for the site, app. for the application — and it matches the existing api.gdam.dev.

Correction (2026-09-03): the earlier paragraph said this layout was not in production and that the registry still occupied the apex. That is no longer true: gdam.dev serves this static landing page and app.gdam.dev serves the registry. GitHub records Production deployments created by the Vercel GitHub integration after repository updates. There is no versioned deployment workflow or deployment credential in this repository, so CI must not claim that it deploys the site. The canonical host remains explicit in Full.astro, robots.txt, and sitemap.xml.

Releases

Packages

Contributors

Languages

, '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

Repository files navigation

GDAM web

The public gdam.dev site: one static Astro page describing GDAM, the Godot Addon Manager.

This is the front door only. The registry application — sign-in, owner pages, addon pages, docs — is a separate app served from app.gdam.dev, and the registry API from api.gdam.dev. Nothing here talks to either: there is no authentication, no application state, no backend and no runtime environment configuration. The page ships no runtime JavaScript, which is why there are no integrations in astro.config.mjs and why CI permits only the non-executable JSON-LD script element and rejects JavaScript assets or external scripts.

Commands

CommandAction
bun installInstall dependencies
bun devStart the Astro development server
bun run buildGenerate the static site in dist/
bun previewPreview the static build

What is on the page, and where it came from

Nothing on the page is invented. Everything traceable to the gdam and gdam-actions repositories is listed here so it can be re-checked when either changes.

The terminal frame follows the released v0.0.8 output for init, two adds, a link, then install. The session is internally consistent on purpose: gdam install prints two lines rather than three because the third addon is linked, and a linked addon has nothing to install.

The only edit is the path prefix. gdam init and gdam link print absolute paths, and the real ones were a scratch directory, so they were re-rooted at ~/code/roguelike/godot_client — consistently, so that ../gd-gesture still resolves to the ~/code/roguelike/gd-gesture the frame shows.

There is no colour in the frame beyond the prompt. That is not restraint, it is accuracy: gdam emits no ANSI codes at all — every line it prints is plain text through fmt.Printf. Syntax-highlighting the output would be drawing a tool that does not exist.

The two JSON files show the released manifest contract. They are the clearest statement of the split worth understanding: published dependencies store exact Release tags, while the linked @aviorstudio/gd-gesture has an empty object and its local path appears only in gdam.link.json.

The command table is every command in printUsage in main.go, all nine, not the three that make a good demo. The three environment variables named in the prose — GDAM_SECRET_KEY, GDAM_API_URL, GITHUB_TOKEN — are from the same place.

The workflow snippet uses the public Actions v0.0.2 tag and installs public CLI v0.0.8. It shows all inputs needed when selecting an asset. Exact tags are the readable recommendation; the adjacent warning accurately identifies a full commit SHA as GitHub's strongest action pin.

The install routes in the closing block are both of the ones the README documents. The hero shows go install rather than the shell installer only because the installer one-liner is 94 characters and would arrive as a horizontally scrolling box in the narrow hero column; the closing block gives it the full width and lists both.

Colour

The palette is the registry's own, taken from what app.gdam.dev already renders: #0f172b ink, #f1f5f9 paper, and #0284c7 for anything actionable. The front door and the thing behind it should look like one site rather than two designs sharing a domain. --sky-deep (#0369a1) is the darkened form for small text on paper, since the lighter blue is a button colour and does not carry body copy.

Fonts are the platform's own. No font is fetched, so no visitor's IP reaches a font CDN and no CSP exception is needed to render the page.

Domain

src/layouts/Full.astro, public/robots.txt and public/sitemap.xml assume https://gdam.dev, and the registry links point at https://app.gdam.dev. That split is the same one ormos uses — apex for the site, app. for the application — and it matches the existing api.gdam.dev.

Correction (2026-09-03): the earlier paragraph said this layout was not in production and that the registry still occupied the apex. That is no longer true: gdam.dev serves this static landing page and app.gdam.dev serves the registry. GitHub records Production deployments created by the Vercel GitHub integration after repository updates. There is no versioned deployment workflow or deployment credential in this repository, so CI must not claim that it deploys the site. The canonical host remains explicit in Full.astro, robots.txt, and sitemap.xml.

Releases

Packages

Contributors

Languages

, '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

Repository files navigation

GDAM web

The public gdam.dev site: one static Astro page describing GDAM, the Godot Addon Manager.

This is the front door only. The registry application — sign-in, owner pages, addon pages, docs — is a separate app served from app.gdam.dev, and the registry API from api.gdam.dev. Nothing here talks to either: there is no authentication, no application state, no backend and no runtime environment configuration. The page ships no runtime JavaScript, which is why there are no integrations in astro.config.mjs and why CI permits only the non-executable JSON-LD script element and rejects JavaScript assets or external scripts.

Commands

CommandAction
bun installInstall dependencies
bun devStart the Astro development server
bun run buildGenerate the static site in dist/
bun previewPreview the static build

What is on the page, and where it came from

Nothing on the page is invented. Everything traceable to the gdam and gdam-actions repositories is listed here so it can be re-checked when either changes.

The terminal frame follows the released v0.0.8 output for init, two adds, a link, then install. The session is internally consistent on purpose: gdam install prints two lines rather than three because the third addon is linked, and a linked addon has nothing to install.

The only edit is the path prefix. gdam init and gdam link print absolute paths, and the real ones were a scratch directory, so they were re-rooted at ~/code/roguelike/godot_client — consistently, so that ../gd-gesture still resolves to the ~/code/roguelike/gd-gesture the frame shows.

There is no colour in the frame beyond the prompt. That is not restraint, it is accuracy: gdam emits no ANSI codes at all — every line it prints is plain text through fmt.Printf. Syntax-highlighting the output would be drawing a tool that does not exist.

The two JSON files show the released manifest contract. They are the clearest statement of the split worth understanding: published dependencies store exact Release tags, while the linked @aviorstudio/gd-gesture has an empty object and its local path appears only in gdam.link.json.

The command table is every command in printUsage in main.go, all nine, not the three that make a good demo. The three environment variables named in the prose — GDAM_SECRET_KEY, GDAM_API_URL, GITHUB_TOKEN — are from the same place.

The workflow snippet uses the public Actions v0.0.2 tag and installs public CLI v0.0.8. It shows all inputs needed when selecting an asset. Exact tags are the readable recommendation; the adjacent warning accurately identifies a full commit SHA as GitHub's strongest action pin.

The install routes in the closing block are both of the ones the README documents. The hero shows go install rather than the shell installer only because the installer one-liner is 94 characters and would arrive as a horizontally scrolling box in the narrow hero column; the closing block gives it the full width and lists both.

Colour

The palette is the registry's own, taken from what app.gdam.dev already renders: #0f172b ink, #f1f5f9 paper, and #0284c7 for anything actionable. The front door and the thing behind it should look like one site rather than two designs sharing a domain. --sky-deep (#0369a1) is the darkened form for small text on paper, since the lighter blue is a button colour and does not carry body copy.

Fonts are the platform's own. No font is fetched, so no visitor's IP reaches a font CDN and no CSP exception is needed to render the page.

Domain

src/layouts/Full.astro, public/robots.txt and public/sitemap.xml assume https://gdam.dev, and the registry links point at https://app.gdam.dev. That split is the same one ormos uses — apex for the site, app. for the application — and it matches the existing api.gdam.dev.

Correction (2026-09-03): the earlier paragraph said this layout was not in production and that the registry still occupied the apex. That is no longer true: gdam.dev serves this static landing page and app.gdam.dev serves the registry. GitHub records Production deployments created by the Vercel GitHub integration after repository updates. There is no versioned deployment workflow or deployment credential in this repository, so CI must not claim that it deploys the site. The canonical host remains explicit in Full.astro, robots.txt, and sitemap.xml.

Releases

Packages

Contributors

Languages

, '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

Repository files navigation

GDAM web

The public gdam.dev site: one static Astro page describing GDAM, the Godot Addon Manager.

This is the front door only. The registry application — sign-in, owner pages, addon pages, docs — is a separate app served from app.gdam.dev, and the registry API from api.gdam.dev. Nothing here talks to either: there is no authentication, no application state, no backend and no runtime environment configuration. The page ships no runtime JavaScript, which is why there are no integrations in astro.config.mjs and why CI permits only the non-executable JSON-LD script element and rejects JavaScript assets or external scripts.

Commands

CommandAction
bun installInstall dependencies
bun devStart the Astro development server
bun run buildGenerate the static site in dist/
bun previewPreview the static build

What is on the page, and where it came from

Nothing on the page is invented. Everything traceable to the gdam and gdam-actions repositories is listed here so it can be re-checked when either changes.

The terminal frame follows the released v0.0.8 output for init, two adds, a link, then install. The session is internally consistent on purpose: gdam install prints two lines rather than three because the third addon is linked, and a linked addon has nothing to install.

The only edit is the path prefix. gdam init and gdam link print absolute paths, and the real ones were a scratch directory, so they were re-rooted at ~/code/roguelike/godot_client — consistently, so that ../gd-gesture still resolves to the ~/code/roguelike/gd-gesture the frame shows.

There is no colour in the frame beyond the prompt. That is not restraint, it is accuracy: gdam emits no ANSI codes at all — every line it prints is plain text through fmt.Printf. Syntax-highlighting the output would be drawing a tool that does not exist.

The two JSON files show the released manifest contract. They are the clearest statement of the split worth understanding: published dependencies store exact Release tags, while the linked @aviorstudio/gd-gesture has an empty object and its local path appears only in gdam.link.json.

The command table is every command in printUsage in main.go, all nine, not the three that make a good demo. The three environment variables named in the prose — GDAM_SECRET_KEY, GDAM_API_URL, GITHUB_TOKEN — are from the same place.

The workflow snippet uses the public Actions v0.0.2 tag and installs public CLI v0.0.8. It shows all inputs needed when selecting an asset. Exact tags are the readable recommendation; the adjacent warning accurately identifies a full commit SHA as GitHub's strongest action pin.

The install routes in the closing block are both of the ones the README documents. The hero shows go install rather than the shell installer only because the installer one-liner is 94 characters and would arrive as a horizontally scrolling box in the narrow hero column; the closing block gives it the full width and lists both.

Colour

The palette is the registry's own, taken from what app.gdam.dev already renders: #0f172b ink, #f1f5f9 paper, and #0284c7 for anything actionable. The front door and the thing behind it should look like one site rather than two designs sharing a domain. --sky-deep (#0369a1) is the darkened form for small text on paper, since the lighter blue is a button colour and does not carry body copy.

Fonts are the platform's own. No font is fetched, so no visitor's IP reaches a font CDN and no CSP exception is needed to render the page.

Domain

src/layouts/Full.astro, public/robots.txt and public/sitemap.xml assume https://gdam.dev, and the registry links point at https://app.gdam.dev. That split is the same one ormos uses — apex for the site, app. for the application — and it matches the existing api.gdam.dev.

Correction (2026-09-03): the earlier paragraph said this layout was not in production and that the registry still occupied the apex. That is no longer true: gdam.dev serves this static landing page and app.gdam.dev serves the registry. GitHub records Production deployments created by the Vercel GitHub integration after repository updates. There is no versioned deployment workflow or deployment credential in this repository, so CI must not claim that it deploys the site. The canonical host remains explicit in Full.astro, robots.txt, and sitemap.xml.

Releases

Packages

Contributors

Languages

, '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

Repository files navigation

GDAM web

The public gdam.dev site: one static Astro page describing GDAM, the Godot Addon Manager.

This is the front door only. The registry application — sign-in, owner pages, addon pages, docs — is a separate app served from app.gdam.dev, and the registry API from api.gdam.dev. Nothing here talks to either: there is no authentication, no application state, no backend and no runtime environment configuration. The page ships no runtime JavaScript, which is why there are no integrations in astro.config.mjs and why CI permits only the non-executable JSON-LD script element and rejects JavaScript assets or external scripts.

Commands

CommandAction
bun installInstall dependencies
bun devStart the Astro development server
bun run buildGenerate the static site in dist/
bun previewPreview the static build

What is on the page, and where it came from

Nothing on the page is invented. Everything traceable to the gdam and gdam-actions repositories is listed here so it can be re-checked when either changes.

The terminal frame follows the released v0.0.8 output for init, two adds, a link, then install. The session is internally consistent on purpose: gdam install prints two lines rather than three because the third addon is linked, and a linked addon has nothing to install.

The only edit is the path prefix. gdam init and gdam link print absolute paths, and the real ones were a scratch directory, so they were re-rooted at ~/code/roguelike/godot_client — consistently, so that ../gd-gesture still resolves to the ~/code/roguelike/gd-gesture the frame shows.

There is no colour in the frame beyond the prompt. That is not restraint, it is accuracy: gdam emits no ANSI codes at all — every line it prints is plain text through fmt.Printf. Syntax-highlighting the output would be drawing a tool that does not exist.

The two JSON files show the released manifest contract. They are the clearest statement of the split worth understanding: published dependencies store exact Release tags, while the linked @aviorstudio/gd-gesture has an empty object and its local path appears only in gdam.link.json.

The command table is every command in printUsage in main.go, all nine, not the three that make a good demo. The three environment variables named in the prose — GDAM_SECRET_KEY, GDAM_API_URL, GITHUB_TOKEN — are from the same place.

The workflow snippet uses the public Actions v0.0.2 tag and installs public CLI v0.0.8. It shows all inputs needed when selecting an asset. Exact tags are the readable recommendation; the adjacent warning accurately identifies a full commit SHA as GitHub's strongest action pin.

The install routes in the closing block are both of the ones the README documents. The hero shows go install rather than the shell installer only because the installer one-liner is 94 characters and would arrive as a horizontally scrolling box in the narrow hero column; the closing block gives it the full width and lists both.

Colour

The palette is the registry's own, taken from what app.gdam.dev already renders: #0f172b ink, #f1f5f9 paper, and #0284c7 for anything actionable. The front door and the thing behind it should look like one site rather than two designs sharing a domain. --sky-deep (#0369a1) is the darkened form for small text on paper, since the lighter blue is a button colour and does not carry body copy.

Fonts are the platform's own. No font is fetched, so no visitor's IP reaches a font CDN and no CSP exception is needed to render the page.

Domain

src/layouts/Full.astro, public/robots.txt and public/sitemap.xml assume https://gdam.dev, and the registry links point at https://app.gdam.dev. That split is the same one ormos uses — apex for the site, app. for the application — and it matches the existing api.gdam.dev.

Correction (2026-09-03): the earlier paragraph said this layout was not in production and that the registry still occupied the apex. That is no longer true: gdam.dev serves this static landing page and app.gdam.dev serves the registry. GitHub records Production deployments created by the Vercel GitHub integration after repository updates. There is no versioned deployment workflow or deployment credential in this repository, so CI must not claim that it deploys the site. The canonical host remains explicit in Full.astro, robots.txt, and sitemap.xml.

Releases

Packages

Contributors

Languages

, '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

Repository files navigation

GDAM web

The public gdam.dev site: one static Astro page describing GDAM, the Godot Addon Manager.

This is the front door only. The registry application — sign-in, owner pages, addon pages, docs — is a separate app served from app.gdam.dev, and the registry API from api.gdam.dev. Nothing here talks to either: there is no authentication, no application state, no backend and no runtime environment configuration. The page ships no runtime JavaScript, which is why there are no integrations in astro.config.mjs and why CI permits only the non-executable JSON-LD script element and rejects JavaScript assets or external scripts.

Commands

CommandAction
bun installInstall dependencies
bun devStart the Astro development server
bun run buildGenerate the static site in dist/
bun previewPreview the static build

What is on the page, and where it came from

Nothing on the page is invented. Everything traceable to the gdam and gdam-actions repositories is listed here so it can be re-checked when either changes.

The terminal frame follows the released v0.0.8 output for init, two adds, a link, then install. The session is internally consistent on purpose: gdam install prints two lines rather than three because the third addon is linked, and a linked addon has nothing to install.

The only edit is the path prefix. gdam init and gdam link print absolute paths, and the real ones were a scratch directory, so they were re-rooted at ~/code/roguelike/godot_client — consistently, so that ../gd-gesture still resolves to the ~/code/roguelike/gd-gesture the frame shows.

There is no colour in the frame beyond the prompt. That is not restraint, it is accuracy: gdam emits no ANSI codes at all — every line it prints is plain text through fmt.Printf. Syntax-highlighting the output would be drawing a tool that does not exist.

The two JSON files show the released manifest contract. They are the clearest statement of the split worth understanding: published dependencies store exact Release tags, while the linked @aviorstudio/gd-gesture has an empty object and its local path appears only in gdam.link.json.

The command table is every command in printUsage in main.go, all nine, not the three that make a good demo. The three environment variables named in the prose — GDAM_SECRET_KEY, GDAM_API_URL, GITHUB_TOKEN — are from the same place.

The workflow snippet uses the public Actions v0.0.2 tag and installs public CLI v0.0.8. It shows all inputs needed when selecting an asset. Exact tags are the readable recommendation; the adjacent warning accurately identifies a full commit SHA as GitHub's strongest action pin.

The install routes in the closing block are both of the ones the README documents. The hero shows go install rather than the shell installer only because the installer one-liner is 94 characters and would arrive as a horizontally scrolling box in the narrow hero column; the closing block gives it the full width and lists both.

Colour

The palette is the registry's own, taken from what app.gdam.dev already renders: #0f172b ink, #f1f5f9 paper, and #0284c7 for anything actionable. The front door and the thing behind it should look like one site rather than two designs sharing a domain. --sky-deep (#0369a1) is the darkened form for small text on paper, since the lighter blue is a button colour and does not carry body copy.

Fonts are the platform's own. No font is fetched, so no visitor's IP reaches a font CDN and no CSP exception is needed to render the page.

Domain

src/layouts/Full.astro, public/robots.txt and public/sitemap.xml assume https://gdam.dev, and the registry links point at https://app.gdam.dev. That split is the same one ormos uses — apex for the site, app. for the application — and it matches the existing api.gdam.dev.

Correction (2026-09-03): the earlier paragraph said this layout was not in production and that the registry still occupied the apex. That is no longer true: gdam.dev serves this static landing page and app.gdam.dev serves the registry. GitHub records Production deployments created by the Vercel GitHub integration after repository updates. There is no versioned deployment workflow or deployment credential in this repository, so CI must not claim that it deploys the site. The canonical host remains explicit in Full.astro, robots.txt, and sitemap.xml.

Releases

Packages

Contributors

Languages

, '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

Repository files navigation

GDAM web

The public gdam.dev site: one static Astro page describing GDAM, the Godot Addon Manager.

This is the front door only. The registry application — sign-in, owner pages, addon pages, docs — is a separate app served from app.gdam.dev, and the registry API from api.gdam.dev. Nothing here talks to either: there is no authentication, no application state, no backend and no runtime environment configuration. The page ships no runtime JavaScript, which is why there are no integrations in astro.config.mjs and why CI permits only the non-executable JSON-LD script element and rejects JavaScript assets or external scripts.

Commands

CommandAction
bun installInstall dependencies
bun devStart the Astro development server
bun run buildGenerate the static site in dist/
bun previewPreview the static build

What is on the page, and where it came from

Nothing on the page is invented. Everything traceable to the gdam and gdam-actions repositories is listed here so it can be re-checked when either changes.

The terminal frame follows the released v0.0.8 output for init, two adds, a link, then install. The session is internally consistent on purpose: gdam install prints two lines rather than three because the third addon is linked, and a linked addon has nothing to install.

The only edit is the path prefix. gdam init and gdam link print absolute paths, and the real ones were a scratch directory, so they were re-rooted at ~/code/roguelike/godot_client — consistently, so that ../gd-gesture still resolves to the ~/code/roguelike/gd-gesture the frame shows.

There is no colour in the frame beyond the prompt. That is not restraint, it is accuracy: gdam emits no ANSI codes at all — every line it prints is plain text through fmt.Printf. Syntax-highlighting the output would be drawing a tool that does not exist.

The two JSON files show the released manifest contract. They are the clearest statement of the split worth understanding: published dependencies store exact Release tags, while the linked @aviorstudio/gd-gesture has an empty object and its local path appears only in gdam.link.json.

The command table is every command in printUsage in main.go, all nine, not the three that make a good demo. The three environment variables named in the prose — GDAM_SECRET_KEY, GDAM_API_URL, GITHUB_TOKEN — are from the same place.

The workflow snippet uses the public Actions v0.0.2 tag and installs public CLI v0.0.8. It shows all inputs needed when selecting an asset. Exact tags are the readable recommendation; the adjacent warning accurately identifies a full commit SHA as GitHub's strongest action pin.

The install routes in the closing block are both of the ones the README documents. The hero shows go install rather than the shell installer only because the installer one-liner is 94 characters and would arrive as a horizontally scrolling box in the narrow hero column; the closing block gives it the full width and lists both.

Colour

The palette is the registry's own, taken from what app.gdam.dev already renders: #0f172b ink, #f1f5f9 paper, and #0284c7 for anything actionable. The front door and the thing behind it should look like one site rather than two designs sharing a domain. --sky-deep (#0369a1) is the darkened form for small text on paper, since the lighter blue is a button colour and does not carry body copy.

Fonts are the platform's own. No font is fetched, so no visitor's IP reaches a font CDN and no CSP exception is needed to render the page.

Domain

src/layouts/Full.astro, public/robots.txt and public/sitemap.xml assume https://gdam.dev, and the registry links point at https://app.gdam.dev. That split is the same one ormos uses — apex for the site, app. for the application — and it matches the existing api.gdam.dev.

Correction (2026-09-03): the earlier paragraph said this layout was not in production and that the registry still occupied the apex. That is no longer true: gdam.dev serves this static landing page and app.gdam.dev serves the registry. GitHub records Production deployments created by the Vercel GitHub integration after repository updates. There is no versioned deployment workflow or deployment credential in this repository, so CI must not claim that it deploys the site. The canonical host remains explicit in Full.astro, robots.txt, and sitemap.xml.

Releases

Packages

Contributors

Languages