CLI-Fixes: Help/Version vor Build, Content-Check, Default-Envs, Artefakte aus Git

- Program.cs: --help/--version werden vor Config-Laden und
  Directories.Init geprüft (verhindert Crashes außerhalb eines
  Site-Verzeichnisses)
- Builder.cs: Pre-flight-Check ob content/ existiert; bei Fehlen
  klare Fehlermeldung + Exit 1 statt unhandled Exception.
  Build() gibt bool zurück, Program.cs setzt Environment.ExitCode.
- BuildConfig.cs: Default-Environments von work/review/staging/deploy
  auf development/staging/deploy bereinigt (konsistent mit CLI-Aliasen)
- .gitignore: build_log.txt/run_log.txt und webstatic.example/dist/
  ignoriert; entsprechende Artefakte aus Git entfernt
- tests/README.md: Platzhalter für künftige Test-Strategie
- plans/01-offensichtliche-fixes.md: Fix-Plan dokumentiert
This commit is contained in:
2026-07-11 17:11:38 +02:00
parent ff634a328a
commit 18c2108d81
54 changed files with 216 additions and 3742 deletions
-34
View File
@@ -1,34 +0,0 @@
=== Build Started: 2026-07-11 12:00:07.845 ===
ENV: work
BASE_URL: http://localhost:8000
CDN_ASSETS: /assets
ROOT: /mnt/brx5/work/OSS/build_webstatic/webstatic.example
Assets copied to: /mnt/brx5/work/OSS/build_webstatic/webstatic.example/dist/assets
Legal: /mnt/brx5/work/OSS/build_webstatic/webstatic.example/dist/de/impressum.html
Legal: /mnt/brx5/work/OSS/build_webstatic/webstatic.example/dist/en/impressum.html
Legal: /mnt/brx5/work/OSS/build_webstatic/webstatic.example/dist/vi/impressum.html
Pagefind (exit 0): Running Pagefind v1.5.2 (Extended)
Running from: "/mnt/brx5/work/OSS/build_webstatic/webstatic.example"
Source: "dist"
Output: "dist/pagefind"
[Walking source directory]
Found 10 files matching **/*.{html}
[Parsing files]
Found a data-pagefind-body element on the site.
↳ Ignoring pages without this tag.
[Reading languages]
Discovered 3 languages: vi, en, de
[Building search indexes]
Total:
Indexed 3 languages
Indexed 9 pages
Indexed 337 words
Indexed 0 filters
Indexed 0 sorts
Finished in 0.036 seconds
-12
View File
@@ -1,12 +0,0 @@
:root { color-scheme: light dark; }
body { font-family: system-ui, sans-serif; margin: 0; color: #1a1a1a; }
.container { max-width: 760px; margin: 0 auto; padding: 1.5rem; }
.skip-link { position: absolute; left: -999px; }
.skip-link:focus { left: 1rem; top: 1rem; background: #0b5fff; color: #fff; padding: .5rem; }
.site-header { display: flex; gap: 1rem; align-items: center; padding: .75rem 1.5rem; border-bottom: 1px solid #ddd; }
.site-nav { display: flex; gap: 1rem; }
.brand { font-weight: 700; text-decoration: none; color: #0b5fff; }
.lang-dropdown__menu { list-style: none; display: flex; gap: .5rem; }
.site-footer { border-top: 1px solid #ddd; padding: 1.5rem; margin-top: 2rem; color: #555; }
.muted { color: #777; }
.page-nav { display: flex; justify-content: space-between; margin-top: 2rem; }
-1
View File
@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><rect width="32" height="32" rx="6" fill="#0b5fff"/><text x="16" y="22" font-size="16" text-anchor="middle" fill="#fff" font-family="sans-serif">G</text></svg>

Before

Width:  |  Height:  |  Size: 220 B

@@ -1,9 +0,0 @@
{
"name": "Meine Website",
"short_name": "Website",
"icons": [
{ "src": "/assets/favicon/favicon.svg", "sizes": "any", "type": "image/svg+xml" }
],
"start_url": "/",
"display": "standalone"
}
-12
View File
@@ -1,12 +0,0 @@
// GCBoK.WebStaticBuilder example theme script.
(function () {
var t = localStorage.getItem('gc-theme') || 'light';
document.documentElement.setAttribute('data-theme', t);
var btn = document.getElementById('themeToggle');
if (btn) btn.addEventListener('click', function () {
var cur = document.documentElement.getAttribute('data-theme');
var next = cur === 'light' ? 'dark' : 'light';
document.documentElement.setAttribute('data-theme', next);
localStorage.setItem('gc-theme', next);
});
})();
-73
View File
@@ -1,73 +0,0 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Impressum</title>
<meta name="description" content="Eine mehrsprachige, statische Website.">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png">
<link rel="icon" href="/assets/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta property="og:title" content="Impressum">
<meta property="og:description" content="Eine mehrsprachige, statische Website.">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:8000/impressum/">
<meta property="og:locale" content="">
<meta property="og:image" content="/assets/favicon/web-app-manifest-512x512.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Impressum">
<meta name="twitter:description" content="Eine mehrsprachige, statische Website.">
<link rel="canonical" href="http://localhost:8000/impressum/">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
</head>
<body>
<a href="#main" class="skip-link">Zum Hauptinhalt springen</a>
<header class="site-header">
<a href="index.html" class="brand" aria-label="Zur Startseite">Meine Website</a>
<nav class="site-nav" aria-label="Hauptnavigation">
<a class="nav-gcbok__link" href="ueber.html">Über</a>
</nav>
<div class="lang-dropdown" aria-label="Sprachumschalter">
<ul class="lang-dropdown__menu">
<li><a href="/de/" hreflang="de"><span>Deutsch</span> <span class="lang-dropdown__code">DE</span></a></li>
<li><a href="/en/" hreflang="en"><span>English</span> <span class="lang-dropdown__code">EN</span></a></li>
<li><a href="/vi/" hreflang="vi"><span>Tiếng Việt</span> <span class="lang-dropdown__code">VI</span></a></li>
</ul>
</div>
</header>
<main id="main" tabindex="-1" data-pagefind-body>
<div class="container">
<h2 id="impressum">Impressum</h2>
<p>Beispiel-Website · Ansprechpartner: webmaster@example.org</p>
<p>© 2026 Beispiel-Website. Erstellt mit GCBoK.WebStaticBuilder (MIT).</p>
</div>
</main>
<footer class="site-footer">
<div class="container">
<h4>MEINE WEBSITE</h4>
<p class="muted">Ein Beispiel für GCBoK.WebStaticBuilder</p>
<ul>
<li><a href="glossar.html">Glossar</a></li>
<li><a href="impressum.html">Impressum</a></li>
</ul>
<p>© 2026 Meine Website</p>
</div>
</footer>
<script src="/assets/js/gcbok-theme.js"></script>
</body>
</html>
-85
View File
@@ -1,85 +0,0 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Startseite</title>
<meta name="description" content="Die Landing-Page dieser Beispiel-Website">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png">
<link rel="icon" href="/assets/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta property="og:title" content="Startseite">
<meta property="og:description" content="Die Landing-Page dieser Beispiel-Website">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:8000/">
<meta property="og:locale" content="">
<meta property="og:image" content="/assets/favicon/web-app-manifest-512x512.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Startseite">
<meta name="twitter:description" content="Die Landing-Page dieser Beispiel-Website">
<link rel="canonical" href="http://localhost:8000/">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
</head>
<body>
<a href="#main" class="skip-link">Zum Hauptinhalt springen</a>
<header class="site-header">
<a href="index.html" class="brand" aria-label="Zur Startseite">Meine Website</a>
<nav class="site-nav" aria-label="Hauptnavigation">
<a class="nav-gcbok__link" href="ueber.html">Über</a>
</nav>
<div class="lang-dropdown" aria-label="Sprachumschalter">
<ul class="lang-dropdown__menu">
<li><a href="/de/" hreflang="de"><span>Deutsch</span> <span class="lang-dropdown__code">DE</span></a></li>
<li><a href="/en/" hreflang="en"><span>English</span> <span class="lang-dropdown__code">EN</span></a></li>
<li><a href="/vi/" hreflang="vi"><span>Tiếng Việt</span> <span class="lang-dropdown__code">VI</span></a></li>
</ul>
</div>
</header>
<main id="main" tabindex="-1" data-pagefind-body>
<div class="container">
<h1 id="willkommen-bei-gcbok.webstaticbuilder">Willkommen bei GCBoK.WebStaticBuilder</h1>
<p>Dies ist der Banner-Block (order 0), der auf der Startseite (Hero/Landing) eingebettet wird.</p>
<h2 id="einfuhrung">Einführung</h2>
<p>Diese Seite wurde mit <strong>GCBoK.WebStaticBuilder</strong> erzeugt — einem statischen, mehrsprachigen
Generator für compliance-freundliche Websites (MIT, OSS).</p>
<h2 id="funktionen">Funktionen</h2>
<ul>
<li>Markdown mit YAML-Frontmatter</li>
<li>Mehrsprachigkeit (de / en / vi)</li>
<li>SEO-Kopf, Sitemap, robots.txt</li>
<li>Client-Suche via Pagefind</li>
<li>UI-Lokalisierung über <code>{{ i18n.* }}</code></li>
</ul>
<h2 id="nachste-schritte">Nächste Schritte</h2>
<p>Siehe <code>docs/</code> im Repository für die Einrichtung.</p>
</div>
</main>
<footer class="site-footer">
<div class="container">
<h4>MEINE WEBSITE</h4>
<p class="muted">Ein Beispiel für GCBoK.WebStaticBuilder</p>
<ul>
<li><a href="glossar.html">Glossar</a></li>
<li><a href="impressum.html">Impressum</a></li>
</ul>
<p>© 2026 Meine Website</p>
</div>
</footer>
<script src="/assets/js/gcbok-theme.js"></script>
</body>
</html>
-81
View File
@@ -1,81 +0,0 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Über das Projekt</title>
<meta name="description" content="Hintergrund zum Beispiel-Projekt">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png">
<link rel="icon" href="/assets/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta property="og:title" content="Über das Projekt">
<meta property="og:description" content="Hintergrund zum Beispiel-Projekt">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:8000/ueber/">
<meta property="og:locale" content="">
<meta property="og:image" content="/assets/favicon/web-app-manifest-512x512.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Über das Projekt">
<meta name="twitter:description" content="Hintergrund zum Beispiel-Projekt">
<link rel="canonical" href="http://localhost:8000/ueber/">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
</head>
<body>
<a href="#main" class="skip-link">Zum Hauptinhalt springen</a>
<header class="site-header">
<a href="index.html" class="brand" aria-label="Zur Startseite">Meine Website</a>
<nav class="site-nav" aria-label="Hauptnavigation">
<a class="nav-gcbok__link" href="ueber.html">Über</a>
</nav>
<div class="lang-dropdown" aria-label="Sprachumschalter">
<ul class="lang-dropdown__menu">
<li><a href="/de/" hreflang="de"><span>Deutsch</span> <span class="lang-dropdown__code">DE</span></a></li>
<li><a href="/en/" hreflang="en"><span>English</span> <span class="lang-dropdown__code">EN</span></a></li>
<li><a href="/vi/" hreflang="vi"><span>Tiếng Việt</span> <span class="lang-dropdown__code">VI</span></a></li>
</ul>
</div>
</header>
<main id="main" tabindex="-1" data-pagefind-body>
<div class="container">
<h2 id="uber">Über</h2>
<p>GCBoK.WebStaticBuilder ist ein eigenständiges OSS-Tool der GitCover Commons.
Es erzeugt statische Websites ohne Server, Datenbank oder Build-Service.</p>
<div class="mermaid">graph TD
A[Markdown] --> B(Builder)
B --> C[HTML]
C --> D[Pagefind Index]
</div>
<nav class="page-nav" aria-label="Seitennavigation">
<span class="page-nav__link">&nbsp;</span>
<span class="page-nav__link page-nav__link--next">&nbsp;</span>
</nav>
</div>
</main>
<footer class="site-footer">
<div class="container">
<h4>MEINE WEBSITE</h4>
<p class="muted">Ein Beispiel für GCBoK.WebStaticBuilder</p>
<ul>
<li><a href="glossar.html">Glossar</a></li>
<li><a href="impressum.html">Impressum</a></li>
</ul>
<p>© 2026 Meine Website</p>
</div>
</footer>
<script src="/assets/js/gcbok-theme.js"></script>
</body>
</html>
-73
View File
@@ -1,73 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Impressum</title>
<meta name="description" content="A multilingual, static website.">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png">
<link rel="icon" href="/assets/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta property="og:title" content="Impressum">
<meta property="og:description" content="A multilingual, static website.">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:8000/impressum/">
<meta property="og:locale" content="">
<meta property="og:image" content="/assets/favicon/web-app-manifest-512x512.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Impressum">
<meta name="twitter:description" content="A multilingual, static website.">
<link rel="canonical" href="http://localhost:8000/impressum/">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
</head>
<body>
<a href="#main" class="skip-link">Skip to main content</a>
<header class="site-header">
<a href="index.html" class="brand" aria-label="Back to home">My Website</a>
<nav class="site-nav" aria-label="Main navigation">
<a class="nav-gcbok__link" href="ueber.html">Über</a>
</nav>
<div class="lang-dropdown" aria-label="Language switcher">
<ul class="lang-dropdown__menu">
<li><a href="/de/" hreflang="de"><span>Deutsch</span> <span class="lang-dropdown__code">DE</span></a></li>
<li><a href="/en/" hreflang="en"><span>English</span> <span class="lang-dropdown__code">EN</span></a></li>
<li><a href="/vi/" hreflang="vi"><span>Tiếng Việt</span> <span class="lang-dropdown__code">VI</span></a></li>
</ul>
</div>
</header>
<main id="main" tabindex="-1" data-pagefind-body>
<div class="container">
<h2 id="impressum">Impressum</h2>
<p>Beispiel-Website · Ansprechpartner: webmaster@example.org</p>
<p>© 2026 Beispiel-Website. Erstellt mit GCBoK.WebStaticBuilder (MIT).</p>
</div>
</main>
<footer class="site-footer">
<div class="container">
<h4>MY WEBSITE</h4>
<p class="muted">An example for GCBoK.WebStaticBuilder</p>
<ul>
<li><a href="glossary.html">Glossary</a></li>
<li><a href="impressum.html">Imprint</a></li>
</ul>
<p>© 2026 My Website</p>
</div>
</footer>
<script src="/assets/js/gcbok-theme.js"></script>
</body>
</html>
-85
View File
@@ -1,85 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Startseite</title>
<meta name="description" content="Die Landing-Page dieser Beispiel-Website">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png">
<link rel="icon" href="/assets/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta property="og:title" content="Startseite">
<meta property="og:description" content="Die Landing-Page dieser Beispiel-Website">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:8000/">
<meta property="og:locale" content="">
<meta property="og:image" content="/assets/favicon/web-app-manifest-512x512.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Startseite">
<meta name="twitter:description" content="Die Landing-Page dieser Beispiel-Website">
<link rel="canonical" href="http://localhost:8000/">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
</head>
<body>
<a href="#main" class="skip-link">Skip to main content</a>
<header class="site-header">
<a href="index.html" class="brand" aria-label="Back to home">My Website</a>
<nav class="site-nav" aria-label="Main navigation">
<a class="nav-gcbok__link" href="ueber.html">Über</a>
</nav>
<div class="lang-dropdown" aria-label="Language switcher">
<ul class="lang-dropdown__menu">
<li><a href="/de/" hreflang="de"><span>Deutsch</span> <span class="lang-dropdown__code">DE</span></a></li>
<li><a href="/en/" hreflang="en"><span>English</span> <span class="lang-dropdown__code">EN</span></a></li>
<li><a href="/vi/" hreflang="vi"><span>Tiếng Việt</span> <span class="lang-dropdown__code">VI</span></a></li>
</ul>
</div>
</header>
<main id="main" tabindex="-1" data-pagefind-body>
<div class="container">
<h1 id="willkommen-bei-gcbok.webstaticbuilder">Willkommen bei GCBoK.WebStaticBuilder</h1>
<p>Dies ist der Banner-Block (order 0), der auf der Startseite (Hero/Landing) eingebettet wird.</p>
<h2 id="einfuhrung">Einführung</h2>
<p>Diese Seite wurde mit <strong>GCBoK.WebStaticBuilder</strong> erzeugt — einem statischen, mehrsprachigen
Generator für compliance-freundliche Websites (MIT, OSS).</p>
<h2 id="funktionen">Funktionen</h2>
<ul>
<li>Markdown mit YAML-Frontmatter</li>
<li>Mehrsprachigkeit (de / en / vi)</li>
<li>SEO-Kopf, Sitemap, robots.txt</li>
<li>Client-Suche via Pagefind</li>
<li>UI-Lokalisierung über <code>{{ i18n.* }}</code></li>
</ul>
<h2 id="nachste-schritte">Nächste Schritte</h2>
<p>Siehe <code>docs/</code> im Repository für die Einrichtung.</p>
</div>
</main>
<footer class="site-footer">
<div class="container">
<h4>MY WEBSITE</h4>
<p class="muted">An example for GCBoK.WebStaticBuilder</p>
<ul>
<li><a href="glossary.html">Glossary</a></li>
<li><a href="impressum.html">Imprint</a></li>
</ul>
<p>© 2026 My Website</p>
</div>
</footer>
<script src="/assets/js/gcbok-theme.js"></script>
</body>
</html>
-81
View File
@@ -1,81 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Über das Projekt</title>
<meta name="description" content="Hintergrund zum Beispiel-Projekt">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png">
<link rel="icon" href="/assets/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta property="og:title" content="Über das Projekt">
<meta property="og:description" content="Hintergrund zum Beispiel-Projekt">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:8000/ueber/">
<meta property="og:locale" content="">
<meta property="og:image" content="/assets/favicon/web-app-manifest-512x512.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Über das Projekt">
<meta name="twitter:description" content="Hintergrund zum Beispiel-Projekt">
<link rel="canonical" href="http://localhost:8000/ueber/">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
</head>
<body>
<a href="#main" class="skip-link">Skip to main content</a>
<header class="site-header">
<a href="index.html" class="brand" aria-label="Back to home">My Website</a>
<nav class="site-nav" aria-label="Main navigation">
<a class="nav-gcbok__link" href="ueber.html">Über</a>
</nav>
<div class="lang-dropdown" aria-label="Language switcher">
<ul class="lang-dropdown__menu">
<li><a href="/de/" hreflang="de"><span>Deutsch</span> <span class="lang-dropdown__code">DE</span></a></li>
<li><a href="/en/" hreflang="en"><span>English</span> <span class="lang-dropdown__code">EN</span></a></li>
<li><a href="/vi/" hreflang="vi"><span>Tiếng Việt</span> <span class="lang-dropdown__code">VI</span></a></li>
</ul>
</div>
</header>
<main id="main" tabindex="-1" data-pagefind-body>
<div class="container">
<h2 id="uber">Über</h2>
<p>GCBoK.WebStaticBuilder ist ein eigenständiges OSS-Tool der GitCover Commons.
Es erzeugt statische Websites ohne Server, Datenbank oder Build-Service.</p>
<div class="mermaid">graph TD
A[Markdown] --> B(Builder)
B --> C[HTML]
C --> D[Pagefind Index]
</div>
<nav class="page-nav" aria-label="Seitennavigation">
<span class="page-nav__link">&nbsp;</span>
<span class="page-nav__link page-nav__link--next">&nbsp;</span>
</nav>
</div>
</main>
<footer class="site-footer">
<div class="container">
<h4>MY WEBSITE</h4>
<p class="muted">An example for GCBoK.WebStaticBuilder</p>
<ul>
<li><a href="glossary.html">Glossary</a></li>
<li><a href="impressum.html">Imprint</a></li>
</ul>
<p>© 2026 My Website</p>
</div>
</footer>
<script src="/assets/js/gcbok-theme.js"></script>
</body>
</html>
-30
View File
@@ -1,30 +0,0 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Meine Website</title>
<script>
(function() {
var supported = ["de","en","vi"];
var defaultLang = "de";
var lang = defaultLang;
if (navigator.languages && navigator.languages.length) {
for (var i = 0; i < navigator.languages.length; i++) {
var pref = navigator.languages[i].toLowerCase().split("-")[0];
if (supported.indexOf(pref) !== -1) { lang = pref; break; }
}
} else if (navigator.language) {
var pref = navigator.language.toLowerCase().split("-")[0];
if (supported.indexOf(pref) !== -1) lang = pref;
}
window.location.replace("/" + lang + "/");
})();
</script>
<meta http-equiv="refresh" content="0; url=/de/">
<link rel="canonical" href="http://localhost:8000/de/">
</head>
<body>
<p>Redirecting to <a href="/de/">Deutsch</a> | <a href="/en/">English</a> | <a href="/vi/">Tiếng Việt</a></p>
</body>
</html>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
{"version":"1.5.2","languages":{"de":{"hash":"de_8987bfa9ae","wasm":"de","page_count":3},"vi":{"hash":"vi_2270a45bad","wasm":null,"page_count":3},"en":{"hash":"en_9b2654cc0d","wasm":"en","page_count":3}},"include_characters":["_","‿","⁀","⁔","︳","︴","","","","_"]}
File diff suppressed because it is too large Load Diff
-214
View File
@@ -1,214 +0,0 @@
:root {
--pagefind-ui-scale: 0.8;
--pagefind-ui-primary: #034AD8;
--pagefind-ui-fade: #707070;
--pagefind-ui-text: #393939;
--pagefind-ui-background: #ffffff;
--pagefind-ui-border: #eeeeee;
--pagefind-ui-tag: #eeeeee;
--pagefind-ui-border-width: 2px;
--pagefind-ui-border-radius: 8px;
--pagefind-ui-image-border-radius: 8px;
--pagefind-ui-image-box-ratio: 3 / 2;
--pagefind-ui-font: system, -apple-system, ".SFNSText-Regular",
"San Francisco", "Roboto", "Segoe UI", "Helvetica Neue",
"Lucida Grande", sans-serif;
}
[data-pfmod-hidden] {
display: none !important;
}
[data-pfmod-suppressed] {
opacity: 0 !important;
pointer-events: none !important;
}
[data-pfmod-sr-hidden] {
-webkit-clip: rect(0 0 0 0) !important;
clip: rect(0 0 0 0) !important;
-webkit-clip-path: inset(100%) !important;
clip-path: inset(100%) !important;
height: 1px !important;
overflow: hidden !important;
overflow: clip !important;
position: absolute !important;
white-space: nowrap !important;
width: 1px !important;
}
[data-pfmod-loading] {
color: var(--pagefind-ui-text);
background-color: var(--pagefind-ui-text);
border-radius: var(--pagefind-ui-border-radius);
opacity: 0.1;
pointer-events: none;
}
/* Input */
.pagefind-modular-input-wrapper {
position: relative;
}
.pagefind-modular-input-wrapper::before {
background-color: var(--pagefind-ui-text);
width: calc(18px * var(--pagefind-ui-scale));
height: calc(18px * var(--pagefind-ui-scale));
top: calc(23px * var(--pagefind-ui-scale));
left: calc(20px * var(--pagefind-ui-scale));
content: "";
position: absolute;
display: block;
opacity: 0.7;
-webkit-mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");
mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");
-webkit-mask-size: 100%;
mask-size: 100%;
z-index: 9;
pointer-events: none;
}
.pagefind-modular-input {
height: calc(64px * var(--pagefind-ui-scale));
padding: 0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale));
background-color: var(--pagefind-ui-background);
border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);
border-radius: var(--pagefind-ui-border-radius);
font-size: calc(21px * var(--pagefind-ui-scale));
position: relative;
appearance: none;
-webkit-appearance: none;
display: flex;
width: 100%;
box-sizing: border-box;
font-weight: 700;
}
.pagefind-modular-input::placeholder {
opacity: 0.2;
}
.pagefind-modular-input-clear {
position: absolute;
top: calc(2px * var(--pagefind-ui-scale));
right: calc(2px * var(--pagefind-ui-scale));
height: calc(60px * var(--pagefind-ui-scale));
border-radius: var(--pagefind-ui-border-radius);
padding: 0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale));
color: var(--pagefind-ui-text);
font-size: calc(14px * var(--pagefind-ui-scale));
cursor: pointer;
background-color: var(--pagefind-ui-background);
border: none;
appearance: none;
}
/* ResultList */
.pagefind-modular-list-result {
list-style-type: none;
display: flex;
align-items: flex-start;
gap: min(calc(40px * var(--pagefind-ui-scale)), 3%);
padding: calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));
border-top: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border);
}
.pagefind-modular-list-result:last-of-type {
border-bottom: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border);
}
.pagefind-modular-list-thumb {
width: min(30%,
calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));
max-width: calc(120px * var(--pagefind-ui-scale));
margin-top: calc(10px * var(--pagefind-ui-scale));
aspect-ratio: var(--pagefind-ui-image-box-ratio);
position: relative;
}
.pagefind-modular-list-image {
display: block;
position: absolute;
left: 50%;
transform: translateX(-50%);
font-size: 0;
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
border-radius: var(--pagefind-ui-image-border-radius);
}
.pagefind-modular-list-inner {
flex: 1;
display: flex;
flex-direction: column;
align-items: flex-start;
margin-top: calc(10px * var(--pagefind-ui-scale));
}
.pagefind-modular-list-title {
display: inline-block;
font-weight: 700;
font-size: calc(21px * var(--pagefind-ui-scale));
margin-top: 0;
margin-bottom: 0;
}
.pagefind-modular-list-link {
color: var(--pagefind-ui-text);
text-decoration: none;
}
.pagefind-modular-list-link:hover {
text-decoration: underline;
}
.pagefind-modular-list-excerpt {
display: inline-block;
font-weight: 400;
font-size: calc(16px * var(--pagefind-ui-scale));
margin-top: calc(4px * var(--pagefind-ui-scale));
margin-bottom: 0;
min-width: calc(250px * var(--pagefind-ui-scale));
}
/* FilterPills */
.pagefind-modular-filter-pills-wrapper {
overflow-x: scroll;
padding: 15px 0;
}
.pagefind-modular-filter-pills {
display: flex;
gap: 6px;
}
.pagefind-modular-filter-pill {
display: flex;
justify-content: center;
align-items: center;
border: none;
appearance: none;
padding: 0 calc(24px * var(--pagefind-ui-scale));
background-color: var(--pagefind-ui-background);
color: var(--pagefind-ui-fade);
border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);
border-radius: calc(25px * var(--pagefind-ui-scale));
font-size: calc(18px * var(--pagefind-ui-scale));
height: calc(50px * var(--pagefind-ui-scale));
cursor: pointer;
white-space: nowrap;
}
.pagefind-modular-filter-pill:hover {
border-color: var(--pagefind-ui-primary);
}
.pagefind-modular-filter-pill[aria-pressed="true"] {
border-color: var(--pagefind-ui-primary);
color: var(--pagefind-ui-primary);
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-3
View File
@@ -1,3 +0,0 @@
User-agent: *
Allow: /
Sitemap: http://localhost:8000/sitemap.xml
-15
View File
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>http://localhost:8000/de/</loc></url>
<url><loc>http://localhost:8000/</loc></url>
<url><loc>http://localhost:8000/</loc></url>
<url><loc>http://localhost:8000/ueber/</loc></url>
<url><loc>http://localhost:8000/en/</loc></url>
<url><loc>http://localhost:8000/</loc></url>
<url><loc>http://localhost:8000/</loc></url>
<url><loc>http://localhost:8000/ueber/</loc></url>
<url><loc>http://localhost:8000/vi/</loc></url>
<url><loc>http://localhost:8000/</loc></url>
<url><loc>http://localhost:8000/</loc></url>
<url><loc>http://localhost:8000/ueber/</loc></url>
</urlset>
-73
View File
@@ -1,73 +0,0 @@
<!doctype html>
<html lang="vi">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Impressum</title>
<meta name="description" content="Một trang web tĩnh, đa ngôn ngữ.">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png">
<link rel="icon" href="/assets/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta property="og:title" content="Impressum">
<meta property="og:description" content="Một trang web tĩnh, đa ngôn ngữ.">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:8000/impressum/">
<meta property="og:locale" content="">
<meta property="og:image" content="/assets/favicon/web-app-manifest-512x512.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Impressum">
<meta name="twitter:description" content="Một trang web tĩnh, đa ngôn ngữ.">
<link rel="canonical" href="http://localhost:8000/impressum/">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
</head>
<body>
<a href="#main" class="skip-link">Đến nội dung chính</a>
<header class="site-header">
<a href="index.html" class="brand" aria-label="Về trang chủ">Trang web của tôi</a>
<nav class="site-nav" aria-label="Điều hướng chính">
<a class="nav-gcbok__link" href="ueber.html">Über</a>
</nav>
<div class="lang-dropdown" aria-label="Chuyển ngôn ngữ">
<ul class="lang-dropdown__menu">
<li><a href="/de/" hreflang="de"><span>Deutsch</span> <span class="lang-dropdown__code">DE</span></a></li>
<li><a href="/en/" hreflang="en"><span>English</span> <span class="lang-dropdown__code">EN</span></a></li>
<li><a href="/vi/" hreflang="vi"><span>Tiếng Việt</span> <span class="lang-dropdown__code">VI</span></a></li>
</ul>
</div>
</header>
<main id="main" tabindex="-1" data-pagefind-body>
<div class="container">
<h2 id="impressum">Impressum</h2>
<p>Beispiel-Website · Ansprechpartner: webmaster@example.org</p>
<p>© 2026 Beispiel-Website. Erstellt mit GCBoK.WebStaticBuilder (MIT).</p>
</div>
</main>
<footer class="site-footer">
<div class="container">
<h4>TRANG WEB CỦA TÔI</h4>
<p class="muted">Một ví dụ cho GCBoK.WebStaticBuilder</p>
<ul>
<li><a href="b-ng-thu-t-ng.html">Bảng thuật ngữ</a></li>
<li><a href="impressum.html">Thông tin pháp lý</a></li>
</ul>
<p>© 2026 Trang web của tôi</p>
</div>
</footer>
<script src="/assets/js/gcbok-theme.js"></script>
</body>
</html>
-85
View File
@@ -1,85 +0,0 @@
<!doctype html>
<html lang="vi">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Startseite</title>
<meta name="description" content="Die Landing-Page dieser Beispiel-Website">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png">
<link rel="icon" href="/assets/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta property="og:title" content="Startseite">
<meta property="og:description" content="Die Landing-Page dieser Beispiel-Website">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:8000/">
<meta property="og:locale" content="">
<meta property="og:image" content="/assets/favicon/web-app-manifest-512x512.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Startseite">
<meta name="twitter:description" content="Die Landing-Page dieser Beispiel-Website">
<link rel="canonical" href="http://localhost:8000/">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
</head>
<body>
<a href="#main" class="skip-link">Đến nội dung chính</a>
<header class="site-header">
<a href="index.html" class="brand" aria-label="Về trang chủ">Trang web của tôi</a>
<nav class="site-nav" aria-label="Điều hướng chính">
<a class="nav-gcbok__link" href="ueber.html">Über</a>
</nav>
<div class="lang-dropdown" aria-label="Chuyển ngôn ngữ">
<ul class="lang-dropdown__menu">
<li><a href="/de/" hreflang="de"><span>Deutsch</span> <span class="lang-dropdown__code">DE</span></a></li>
<li><a href="/en/" hreflang="en"><span>English</span> <span class="lang-dropdown__code">EN</span></a></li>
<li><a href="/vi/" hreflang="vi"><span>Tiếng Việt</span> <span class="lang-dropdown__code">VI</span></a></li>
</ul>
</div>
</header>
<main id="main" tabindex="-1" data-pagefind-body>
<div class="container">
<h1 id="willkommen-bei-gcbok.webstaticbuilder">Willkommen bei GCBoK.WebStaticBuilder</h1>
<p>Dies ist der Banner-Block (order 0), der auf der Startseite (Hero/Landing) eingebettet wird.</p>
<h2 id="einfuhrung">Einführung</h2>
<p>Diese Seite wurde mit <strong>GCBoK.WebStaticBuilder</strong> erzeugt — einem statischen, mehrsprachigen
Generator für compliance-freundliche Websites (MIT, OSS).</p>
<h2 id="funktionen">Funktionen</h2>
<ul>
<li>Markdown mit YAML-Frontmatter</li>
<li>Mehrsprachigkeit (de / en / vi)</li>
<li>SEO-Kopf, Sitemap, robots.txt</li>
<li>Client-Suche via Pagefind</li>
<li>UI-Lokalisierung über <code>{{ i18n.* }}</code></li>
</ul>
<h2 id="nachste-schritte">Nächste Schritte</h2>
<p>Siehe <code>docs/</code> im Repository für die Einrichtung.</p>
</div>
</main>
<footer class="site-footer">
<div class="container">
<h4>TRANG WEB CỦA TÔI</h4>
<p class="muted">Một ví dụ cho GCBoK.WebStaticBuilder</p>
<ul>
<li><a href="b-ng-thu-t-ng.html">Bảng thuật ngữ</a></li>
<li><a href="impressum.html">Thông tin pháp lý</a></li>
</ul>
<p>© 2026 Trang web của tôi</p>
</div>
</footer>
<script src="/assets/js/gcbok-theme.js"></script>
</body>
</html>
-81
View File
@@ -1,81 +0,0 @@
<!doctype html>
<html lang="vi">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Über das Projekt</title>
<meta name="description" content="Hintergrund zum Beispiel-Projekt">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png">
<link rel="icon" href="/assets/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta property="og:title" content="Über das Projekt">
<meta property="og:description" content="Hintergrund zum Beispiel-Projekt">
<meta property="og:type" content="website">
<meta property="og:url" content="http://localhost:8000/ueber/">
<meta property="og:locale" content="">
<meta property="og:image" content="/assets/favicon/web-app-manifest-512x512.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Über das Projekt">
<meta name="twitter:description" content="Hintergrund zum Beispiel-Projekt">
<link rel="canonical" href="http://localhost:8000/ueber/">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="icon" type="image/svg+xml" href="/assets/favicon/favicon.svg">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
</head>
<body>
<a href="#main" class="skip-link">Đến nội dung chính</a>
<header class="site-header">
<a href="index.html" class="brand" aria-label="Về trang chủ">Trang web của tôi</a>
<nav class="site-nav" aria-label="Điều hướng chính">
<a class="nav-gcbok__link" href="ueber.html">Über</a>
</nav>
<div class="lang-dropdown" aria-label="Chuyển ngôn ngữ">
<ul class="lang-dropdown__menu">
<li><a href="/de/" hreflang="de"><span>Deutsch</span> <span class="lang-dropdown__code">DE</span></a></li>
<li><a href="/en/" hreflang="en"><span>English</span> <span class="lang-dropdown__code">EN</span></a></li>
<li><a href="/vi/" hreflang="vi"><span>Tiếng Việt</span> <span class="lang-dropdown__code">VI</span></a></li>
</ul>
</div>
</header>
<main id="main" tabindex="-1" data-pagefind-body>
<div class="container">
<h2 id="uber">Über</h2>
<p>GCBoK.WebStaticBuilder ist ein eigenständiges OSS-Tool der GitCover Commons.
Es erzeugt statische Websites ohne Server, Datenbank oder Build-Service.</p>
<div class="mermaid">graph TD
A[Markdown] --> B(Builder)
B --> C[HTML]
C --> D[Pagefind Index]
</div>
<nav class="page-nav" aria-label="Seitennavigation">
<span class="page-nav__link">&nbsp;</span>
<span class="page-nav__link page-nav__link--next">&nbsp;</span>
</nav>
</div>
</main>
<footer class="site-footer">
<div class="container">
<h4>TRANG WEB CỦA TÔI</h4>
<p class="muted">Một ví dụ cho GCBoK.WebStaticBuilder</p>
<ul>
<li><a href="b-ng-thu-t-ng.html">Bảng thuật ngữ</a></li>
<li><a href="impressum.html">Thông tin pháp lý</a></li>
</ul>
<p>© 2026 Trang web của tôi</p>
</div>
</footer>
<script src="/assets/js/gcbok-theme.js"></script>
</body>
</html>
-5
View File
@@ -1,5 +0,0 @@
=== Run Started: 2026-07-11 12:00:07.880 ===
Language: de, Files: 3
Language: en, Files: 3
Language: vi, Files: 3