cache-bust local assets; narrow the language facet to scores >= 3

Part 1 — asset versioning: every local <script src> and <link rel=stylesheet> on the
tracked pages now carries ?v=<sha256-of-the-file> (10 hex), computed at BUILD time from
the file's bytes by work/build-asset-versions.py — never hand-typed, and idempotent
(re-running with no file change rewrites nothing). This is what makes an edited
focus-rule.js / photo-upload.js a new URL instead of a stale cache hit.

Part 2 — language facet: a language now counts for the Language filter only when its
0-5 self-assessment is >= LANG_FACET_MIN (3 = 'works in it'). The constant sits beside
the 15-point rule in the page script and its mirror in build-directory.py. Nothing
stored changes; the card's languages chart still prints every language above 0, the
search box is unchanged, and the facet stays an exact membership test against the
card's value. A '1' language no longer offers the person under that language.
This commit is contained in:
webmaster committed 2026-11-03 21:26:58 +00:00
1 parent c83186f809
commit bd0881f882
51 files changed
+138 -118

No files matched your search

@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
+2 -2
View File
@@ -33,7 +33,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
:root {
--primary: #714b67;
@@ -325,6 +325,6 @@
</div>
</div>
</main>
<script defer src="/static/agent-odoo4projects/agent.js"></script>
<script defer src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"></script>
</body>
</html>
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
+2 -2
View File
@@ -36,7 +36,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
.blog-header {
padding: 2rem 0;
@@ -275,6 +275,6 @@
</div>
</div>
</main>
<script defer src="/static/agent-odoo4projects/agent.js"></script>
<script defer src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"></script>
</body>
</html>
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
+1 -1
View File
@@ -31,7 +31,7 @@
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
rel="stylesheet"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
/* Blog post specific overrides — matching homepage light theme */
body {
+2 -2
View File
@@ -36,7 +36,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
:root {
--primary: #714b67;
@@ -277,6 +277,6 @@
</div>
</div>
</main>
<script defer src="/static/agent-odoo4projects/agent.js"></script>
<script defer src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"></script>
</body>
</html>
+2 -2
View File
@@ -36,7 +36,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
:root {
--primary: #714b67;
@@ -296,6 +296,6 @@ Admin credentials: sent via email</code></pre>
</div>
</div>
</main>
<script defer src="/static/agent-odoo4projects/agent.js"></script>
<script defer src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"></script>
</body>
</html>
+2 -2
View File
@@ -35,7 +35,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
:root {
--primary: #714b67;
@@ -263,7 +263,7 @@
</main>
<script
defer
src="/static/agent-odoo4projects/agent.js"
src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"
></script>
</body>
</html>
+2 -2
View File
@@ -36,7 +36,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
* {
box-sizing: border-box;
@@ -263,7 +263,7 @@
</main>
<script
defer
src="/static/agent-odoo4projects/agent.js"
src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"
></script>
</body>
</html>
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
@@ -34,7 +34,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
:root {
--primary: #714b67;
@@ -175,6 +175,6 @@
</div>
</div>
</main>
<script defer src="/static/agent-odoo4projects/agent.js"></script>
<script defer src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"></script>
</body>
</html>
@@ -17,7 +17,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
+2 -2
View File
@@ -35,7 +35,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
/* Blog post specific styles — leverages CSS vars from style.css */
:root {
@@ -311,6 +311,6 @@
</div>
</div>
</main>
<script defer src="/static/agent-odoo4projects/agent.js"></script>
<script defer src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"></script>
</body>
</html>
+2 -2
View File
@@ -35,7 +35,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
.container {
width: 80%;
@@ -250,6 +250,6 @@ Odoo &gt; Settings &gt; Technical &gt; Scheduled Actions &gt; backup job</code><
</div>
</div>
</main>
<script defer src="/static/agent-odoo4projects/agent.js"></script>
<script defer src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"></script>
</body>
</html>
+2 -2
View File
@@ -35,7 +35,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
:root {
--primary: #714b67;
@@ -267,6 +267,6 @@ Password: (check your email)</code></pre>
</div>
</div>
</main>
<script defer src="/static/agent-odoo4projects/agent.js"></script>
<script defer src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"></script>
</body>
</html>
@@ -34,7 +34,7 @@
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/>
<link rel="stylesheet" href="../../style.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" />
<style>
:root {
--primary: #714b67;
@@ -165,6 +165,6 @@
</div>
</div>
</main>
<script defer src="/static/agent-odoo4projects/agent.js"></script>
<script defer src="/static/agent-odoo4projects/agent.js?v=c3bb0cee2b"></script>
</body>
</html>