i18n: bilingual de/en, bundle js from assets via hugo pipes, css refresh

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-30 01:07:04 +02:00
parent 7932bc35e4
commit c46f9a48f7
44 changed files with 515 additions and 60 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
<p class="tui__cmd"><span class="tui__sym">$</span> cd <span class="err404">.</span></p>
<p class="tui__total">cd: no such file or directory: <span class="err404">.</span></p>
<p>error 404 — nothing lives here.</p>
<p><a href="{{ "/" | relURL }}">cd ~</a></p>
<p><a href="{{ "/" | relLangURL }}">cd ~</a></p>
</div>
<script>
(function () {
+1 -1
View File
@@ -5,7 +5,7 @@
<p class="tui__cmd"><span class="tui__sym">$</span> ls</p>
<p class="tui__cmd tui__total">total {{ if $cv }}2{{ else }}1{{ end }}</p>
<ul class="tui__ls">
<li><a href="{{ "/" | relURL }}" data-name="..">
<li><a href="{{ "/" | relLangURL }}" data-name="..">
<span class="tui__perm">drwxr-xr-x</span><span class="tui__name">..</span>
</a></li>
<li><a data-name="info.md" data-text="info.md" class="is-selected">
+13 -7
View File
@@ -3,19 +3,25 @@
{{ partial "head.html" . }}
<body class="{{ block "bodyclass" . }}{{ end }}">
<div id="boot" aria-hidden="true"><pre class="boot__log"></pre></div>
<a href="#main-content" class="skip-link">Skip to content</a>
<a href="#main-content" class="skip-link">{{ i18n "skip_to_content" }}</a>
{{ partial "header.html" . }}
<main id="main-content" role="main">
{{ block "main" . }}{{ end }}
</main>
{{ partial "footer.html" . }}
<script src="{{ "js/cursor.js" | relURL }}" defer></script>
<script src="{{ "js/shell.js" | relURL }}" defer></script>
<script src="{{ "js/filebrowser.js" | relURL }}" defer></script>
<script src="{{ "js/player.js" | relURL }}" defer></script>
<script src="{{ "js/nav.js" | relURL }}" defer></script>
<script src="{{ "js/boot.js" | relURL }}" defer></script>
{{/* one fingerprinted bundle: the hash changes whenever any script changes,
so the long browser/proxy cache can never serve a stale build. order is
preserved (deferred IIFEs run in sequence). */}}
{{ $js := slice
(resources.Get "js/cursor.js")
(resources.Get "js/shell.js")
(resources.Get "js/filebrowser.js")
(resources.Get "js/player.js")
(resources.Get "js/nav.js")
(resources.Get "js/boot.js")
| resources.Concat "js/bundle.js" | minify | fingerprint }}
<script src="{{ $js.RelPermalink }}" defer></script>
<script>document.addEventListener('contextmenu',function(e){e.preventDefault();});</script>
</body>
</html>
+1 -1
View File
@@ -10,7 +10,7 @@
<p class="tui__cmd"><span class="tui__sym">$</span> ls</p>
<p class="tui__cmd tui__total">total {{ len $files }}</p>
<ul class="tui__ls">
<li><a href="{{ "/" | relURL }}" data-name="..">
<li><a href="{{ "/" | relLangURL }}" data-name="..">
<span class="tui__perm">drwxr-xr-x</span><span class="tui__name">..</span>
</a></li>
{{ range $i, $p := $files }}{{ if $p }}
+1 -1
View File
@@ -7,7 +7,7 @@
{{ $total := 1 }}{{ if $rapport }}{{ $total = add $total 1 }}{{ end }}{{ if $dossier }}{{ $total = add $total 1 }}{{ end }}
<p class="tui__cmd tui__total">total {{ $total }}</p>
<ul class="tui__ls">
<li><a href="{{ "/" | relURL }}" data-name="..">
<li><a href="{{ "/" | relLangURL }}" data-name="..">
<span class="tui__perm">drwxr-xr-x</span><span class="tui__name">..</span>
</a></li>
<li><a data-name="info.md" data-text="info.md" class="is-selected">
+2 -2
View File
@@ -1,7 +1,7 @@
{{ define "main" }}
{{ if .Params.toc }}
<nav class="toc"><strong>TABLE OF CONTENTS</strong><div class="toc-content">{{ .TableOfContents }}</div></nav>
<nav class="toc"><strong>{{ i18n "table_of_contents" }}</strong><div class="toc-content">{{ .TableOfContents }}</div></nav>
{{ end }}
{{ .Content }}
<div class="terminal-nav"><div class="back-nav"><a href="{{ "/" | relURL }}" class="back-link">../</a></div></div>
<div class="terminal-nav"><div class="back-nav"><a href="{{ "/" | relLangURL }}" class="back-link">../</a></div></div>
{{ end }}
+1 -1
View File
@@ -5,7 +5,7 @@
<p class="tui__cmd"><span class="tui__sym">$</span> ls</p>
<p class="tui__cmd tui__total">total {{ len .Pages }}</p>
<ul class="tui__ls">
<li><a href="{{ $up | relURL }}" data-name="..">
<li><a href="{{ $up | relLangURL }}" data-name="..">
<span class="tui__perm">drwxr-xr-x</span><span class="tui__name">..</span>
</a></li>
{{ range .Pages }}
+2 -2
View File
@@ -1,5 +1,5 @@
<footer role="contentinfo">
<p>© {{ now.Year }} karimgabrielevarano.xyz</p>
<p><a href="{{ "/colophon/" | relURL }}" data-name="colophon">colophon</a> · <a href="{{ "/legal-notice/" | relURL }}" data-name="legal-notice">legal notice</a></p>
<a href="{{ "/cv/" | relURL }}" data-name="cv" hidden>cv</a>
<p><a href="{{ "/colophon/" | relLangURL }}" data-name="colophon">{{ i18n "colophon" }}</a> · <a href="{{ "/legal-notice/" | relLangURL }}" data-name="legal-notice">{{ i18n "legal_notice" }}</a></p>
<a href="{{ "/cv/" | relLangURL }}" data-name="cv" hidden>cv</a>
</footer>
+3
View File
@@ -12,6 +12,9 @@
<meta name="description" content="{{ $desc }}">
<meta name="author" content="{{ .Site.Params.author }}">
<link rel="canonical" href="{{ .Permalink }}">
{{/* tell search engines about the other language version of this page */}}
{{ range .AllTranslations }}<link rel="alternate" hreflang="{{ .Language.Lang }}" href="{{ .Permalink }}">
{{ end }}
{{/* social card image: project thumbnail, else home hero, else site default */}}
{{ $ogimg := .Site.Params.ogImage }}
+3 -2
View File
@@ -1,7 +1,8 @@
<header role="banner">
<div class="topbar" data-home="{{ "/" | relURL }}" data-info="{{ .Site.Params.description }}" data-email="{{ .Site.Params.email }}">
<div class="topbar" data-home="{{ "/" | relLangURL }}" data-info="{{ .Site.Params.description }}" data-email="{{ .Site.Params.email }}">
{{ with .Translations }}{{ range . }}<a class="lang-switch" href="{{ .RelPermalink }}" hreflang="{{ .Language.Lang }}" data-name="{{ .Language.Lang }}">{{ .Language.Lang }}</a>{{ end }}{{ end }}
<div class="prompt" aria-label="shell">
<a class="prompt__seg prompt__user" href="{{ "/" | relURL }}">{{ .Site.Params.shellUser }}@{{ .Site.Params.shellHost }}</a><span class="prompt__path">:~{{ if not .IsHome }}{{ $rel := strings.TrimSuffix "/" .RelPermalink }}{{ $parts := after 1 (split $rel "/") }}{{ $last := sub (len $parts) 1 }}{{ $acc := "" }}{{ range $i, $seg := $parts }}{{ $acc = printf "%s/%s" $acc $seg }}{{ $disp := $seg }}{{ if and $.Params.dotfile (eq $i $last) }}{{ $disp = printf ".%s" $seg }}{{ end }}/<a class="prompt__seg" href="{{ (printf "%s/" $acc) | relURL }}">{{ $disp }}</a>{{ end }}{{ end }}$</span><span class="prompt__input" contenteditable="true" role="textbox" aria-label="type a command, then press enter" spellcheck="false"></span><span class="caret">_</span>
<a class="prompt__seg prompt__user" href="{{ "/" | relLangURL }}">{{ .Site.Params.shellUser }}@{{ .Site.Params.shellHost }}</a><span class="prompt__path">:~{{ if not .IsHome }}{{ $rel := strings.TrimSuffix "/" .RelPermalink }}{{ $rel = strings.TrimPrefix .Site.LanguagePrefix $rel }}{{ $parts := after 1 (split $rel "/") }}{{ $last := sub (len $parts) 1 }}{{ $acc := "" }}{{ range $i, $seg := $parts }}{{ $acc = printf "%s/%s" $acc $seg }}{{ $disp := $seg }}{{ if and $.Params.dotfile (eq $i $last) }}{{ $disp = printf ".%s" $seg }}{{ end }}/<a class="prompt__seg" href="{{ (printf "%s/" $acc) | relLangURL }}">{{ $disp }}</a>{{ end }}{{ end }}$</span><span class="prompt__input" contenteditable="true" role="textbox" aria-label="type a command, then press enter" spellcheck="false"></span><span class="caret">_</span>
</div>
<p class="prompt__out" aria-live="polite"></p>
<nav class="menu tui tui--files" aria-label="Main menu">
+1 -1
View File
@@ -6,7 +6,7 @@
<p class="tui__cmd"><span class="tui__sym">$</span> ls</p>
<p class="tui__cmd tui__total">total {{ len $sorted }}</p>
<ul class="tui__ls">
<li><a href="{{ "/" | relURL }}" data-name="..">
<li><a href="{{ "/" | relLangURL }}" data-name="..">
<span class="tui__perm">drwxr-xr-x</span><span class="tui__date"></span><span class="tui__name">..</span>
</a></li>
{{ range $i, $p := $sorted }}
+1 -1
View File
@@ -10,7 +10,7 @@
{{ $total := 0 }}{{ if $images }}{{ $total = len $images }}{{ end }}{{ if $hasText }}{{ $total = add $total 1 }}{{ end }}{{ if $video }}{{ $total = add $total 1 }}{{ end }}
<p class="tui__cmd tui__total">total {{ $total }}</p>
<ul class="tui__ls">
<li><a href="{{ "/portfolio/" | relURL }}" data-name="..">
<li><a href="{{ "/portfolio/" | relLangURL }}" data-name="..">
<span class="tui__perm">drwxr-xr-x</span><span class="tui__name">..</span>
</a></li>
{{ if $hasText }}