fix(audit): fix timeline chart rendering with pixel heights and count labels
Fixed broken "Decisions Over Time" chart that wasn't displaying bars. Root cause: Empty divs with percentage heights collapsed in flex containers. Fixes applied: 1. **Pixel heights instead of percentages** - Calculate absolute pixel heights from h-48 container (192px) - Percentage heights don't work in flex containers with items-end 2. **Non-breaking space inside bars** - Added to prevent empty div collapse - Even with height set, empty divs can collapse in some layouts 3. **Decision count labels** - Display count above each bar for exact numbers - Shows both visual proportion (bar height) and exact value (label) 4. **Minimum 10px height** - Ensures small values are always visible - Prevents bars from disappearing for low counts 5. **Wider bars** - Changed from max-w-16 (64px) to w-3/4 (75% width) - More visible and easier to interact with Timeline modes working: - ✅ 6-Hourly (24h) - 4 bars showing last 24 hours in 6-hour buckets - ✅ Daily (7d) - 7 bars showing last 7 days - ✅ Weekly (4w) - 4 bars showing last 4 weeks All modes show current snapshot updated on refresh. Files changed: - public/js/admin/audit-analytics.js: Timeline rendering logic - public/admin/audit-analytics.html: Updated cache version - public/*.html: Cache version bump for consistency 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
bb3d74006d
commit
4f889b073c
19 changed files with 150 additions and 139 deletions
|
|
@ -5,9 +5,9 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>About | Tractatus AI Safety Framework</title>
|
||||
<meta name="description" content="Learn about the Tractatus Framework: our mission, values, team, and commitment to preserving human agency through structural AI safety.">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
/* Accessibility: Skip link */
|
||||
.skip-link { position: absolute; left: -9999px; top: 0; }
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<!-- Navigation (injected by navbar.js) -->
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Breadcrumb Navigation -->
|
||||
<nav class="bg-gray-50 border-b border-gray-200 py-3" aria-label="Breadcrumb">
|
||||
|
|
@ -310,17 +310,17 @@
|
|||
<!-- Footer with Te Tiriti Acknowledgment -->
|
||||
<!-- Footer -->
|
||||
<!-- Internationalization -->
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Scroll Animations (Phase 3) -->
|
||||
<script src="/js/scroll-animations.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/scroll-animations.js?v=0.1.0.1761346862495"></script>
|
||||
<!-- Page Transitions (Phase 3) -->
|
||||
<script src="/js/page-transitions.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/page-transitions.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
|
||||
<!-- Footer Component -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@
|
|||
|
||||
</main>
|
||||
|
||||
<script src="/js/admin/audit-analytics.js?v=0.1.0.1761262254119"></script>
|
||||
<script src="/js/admin/audit-analytics.js?v=0.1.0.1761348045814"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>API Reference | Tractatus Framework</title>
|
||||
<meta name="description" content="Complete API reference for Tractatus Framework - endpoints, authentication, request/response formats, and examples.">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
.endpoint-badge {
|
||||
@apply inline-block px-2 py-1 rounded text-xs font-mono font-semibold;
|
||||
|
|
@ -869,7 +869,7 @@
|
|||
|
||||
<!-- Footer -->
|
||||
<!-- Footer Component -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@
|
|||
<!-- RSS Feed -->
|
||||
<link rel="alternate" type="application/rss+xml" title="Tractatus Blog RSS Feed" href="/api/blog/rss">
|
||||
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
/* Accessibility: Skip link */
|
||||
.skip-link { position: absolute; left: -9999px; top: 0; }
|
||||
|
|
@ -118,7 +118,7 @@
|
|||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<!-- Navigation (injected by navbar.js) -->
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Breadcrumb -->
|
||||
<div class="bg-white border-b border-gray-200">
|
||||
|
|
@ -226,10 +226,10 @@
|
|||
<!-- Footer -->
|
||||
|
||||
<!-- Load Blog Post JavaScript -->
|
||||
<script src="/js/blog-post.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/blog-post.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Footer Component -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@
|
|||
<!-- RSS Feed -->
|
||||
<link rel="alternate" type="application/rss+xml" title="Tractatus Blog RSS Feed" href="/api/blog/rss">
|
||||
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
/* Accessibility: Skip link */
|
||||
.skip-link { position: absolute; left: -9999px; top: 0; }
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<!-- Navigation (injected by navbar.js) -->
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Hero Section -->
|
||||
<div class="bg-gradient-to-br from-indigo-50 to-blue-50 py-20">
|
||||
|
|
@ -260,14 +260,14 @@
|
|||
|
||||
<!-- Footer -->
|
||||
<!-- Internationalization (must load first for footer translations) -->
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Load Blog JavaScript -->
|
||||
<script src="/js/blog.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/blog.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Footer Component -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Submit Case Study | Tractatus AI Safety</title>
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
/* Accessibility: Skip link */
|
||||
.skip-link { position: absolute; left: -9999px; top: 0; }
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<!-- Navigation (injected by navbar.js) -->
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main id="main-content" class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
|
||||
|
|
@ -217,10 +217,10 @@
|
|||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<script src="/js/case-submission.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/case-submission.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Footer Component -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,6 @@
|
|||
</ol>
|
||||
</div>
|
||||
|
||||
<script src="/js/check-version.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/check-version.js?v=0.1.0.1761346862495"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Documentation - Tractatus Framework</title>
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
/* Prose styling for document content */
|
||||
.prose h1 { @apply text-3xl font-bold mt-8 mb-4 text-gray-900; }
|
||||
|
|
@ -66,12 +66,12 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="/js/utils/api.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/utils/router.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/document-viewer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/code-copy-button.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/toc.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/docs-viewer-app.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/utils/api.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/utils/router.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/document-viewer.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/code-copy-button.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/toc.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/docs-viewer-app.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -24,9 +24,9 @@
|
|||
<link rel="preload" href="/fonts/inter-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/fonts/inter-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
|
|
@ -485,7 +485,7 @@
|
|||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<!-- Navigation (injected by navbar.js) -->
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523" defer></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495" defer></script>
|
||||
|
||||
<!-- Page Header -->
|
||||
<div class="bg-white border-b border-gray-200">
|
||||
|
|
@ -866,15 +866,15 @@
|
|||
</div>
|
||||
|
||||
<!-- Version Management & PWA -->
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346269523" defer></script>
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346862495" defer></script>
|
||||
|
||||
<script src="/js/components/document-cards.js?v=0.1.0.1761346269523" defer></script>
|
||||
<script src="/js/docs-app.js?v=0.1.0.1761346269523" defer></script>
|
||||
<script src="/js/docs-search-enhanced.js?v=0.1.0.1761346269523" defer></script>
|
||||
<script src="/js/components/document-cards.js?v=0.1.0.1761346862495" defer></script>
|
||||
<script src="/js/docs-app.js?v=0.1.0.1761346862495" defer></script>
|
||||
<script src="/js/docs-search-enhanced.js?v=0.1.0.1761346862495" defer></script>
|
||||
|
||||
<!-- Internationalization -->
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346269523" defer></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346269523" defer></script>
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346862495" defer></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346862495" defer></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -18,21 +18,21 @@
|
|||
<meta name="apple-mobile-web-app-title" content="Tractatus">
|
||||
<link rel="apple-touch-icon" href="/images/tractatus-icon-new.svg">
|
||||
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
|
||||
<!-- Syntax highlighting for code blocks -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css?v=0.1.0.1761346269523">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/bash.min.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/javascript.min.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/json.min.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/yaml.min.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/python.min.js?v=0.1.0.1761346269523"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css?v=0.1.0.1761346862495">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/bash.min.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/javascript.min.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/json.min.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/yaml.min.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/python.min.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Markdown parser -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/11.0.0/marked.min.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/11.0.0/marked.min.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<style>
|
||||
/* Accessibility: Skip link */
|
||||
|
|
@ -325,7 +325,7 @@
|
|||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<!-- Navigation -->
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Hero -->
|
||||
<div class="bg-gradient-to-br from-blue-50 to-indigo-50 py-16">
|
||||
|
|
@ -630,16 +630,16 @@
|
|||
</div>
|
||||
|
||||
<!-- Internationalization -->
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Version Management & PWA -->
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<script src="/js/faq.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/faq.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Footer Component -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@
|
|||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="theme-color" content="#3b82f6">
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon-new.svg">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
.skip-link { position: absolute; left: -9999px; top: 0; }
|
||||
.skip-link:focus { left: 0; z-index: 100; background: white; padding: 1rem; border: 2px solid #3b82f6; }
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
<body class="bg-gray-50">
|
||||
|
||||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Breadcrumb -->
|
||||
<nav class="bg-gray-50 border-b border-gray-200 py-3" aria-label="Breadcrumb">
|
||||
|
|
@ -638,12 +638,12 @@ npm start</code></pre>
|
|||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/scroll-animations.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/page-transitions.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/scroll-animations.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/page-transitions.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@
|
|||
<link rel="icon" type="image/svg+xml" href="/favicon-new.svg">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346862495">
|
||||
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
.gradient-text { background: linear-gradient(120deg, #3b82f6 0%, #8b5cf6 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
|
||||
.hover-lift { transition: transform 0.2s; }
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
|
||||
<!-- Navigation (injected by navbar.js) -->
|
||||
<div id="navbar-placeholder" class="min-h-16"></div>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Hero Section -->
|
||||
<header role="banner">
|
||||
|
|
@ -407,21 +407,21 @@ Additional case studies and research findings documented in technical papers
|
|||
|
||||
<!-- Footer -->
|
||||
<!-- Version Management & PWA -->
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
|
||||
<!-- Internationalization -->
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Scroll Animations (Phase 3) -->
|
||||
<script src="/js/scroll-animations.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/scroll-animations.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Page Transitions (Phase 3) -->
|
||||
<script src="/js/page-transitions.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/page-transitions.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Footer Component -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -421,17 +421,20 @@ function renderTimelineChart() {
|
|||
});
|
||||
|
||||
const maxCount = Math.max(...buckets.map(b => b.count), 1);
|
||||
const containerHeight = 192; // h-48 = 192px
|
||||
|
||||
const html = buckets.map(bucket => {
|
||||
const percentage = (bucket.count / maxCount) * 100;
|
||||
const barHeight = Math.max(percentage, 5);
|
||||
const minPercentage = Math.max(percentage, 5);
|
||||
const pixelHeight = Math.round((minPercentage / 100) * containerHeight);
|
||||
|
||||
return `
|
||||
<div class="flex flex-col items-center flex-1">
|
||||
<div class="w-full flex items-end justify-center h-48">
|
||||
<div class="w-full max-w-16 bg-purple-600 rounded-t transition-all duration-300 hover:bg-purple-700"
|
||||
data-height="${barHeight}"
|
||||
title="${bucket.label}: ${bucket.count} decisions"></div>
|
||||
<div class="w-full flex flex-col items-center justify-end h-48">
|
||||
<span class="text-xs font-semibold text-gray-700 mb-1">${bucket.count}</span>
|
||||
<div class="w-3/4 min-w-10 bg-purple-600 rounded-t transition-all duration-300 hover:bg-purple-700 flex items-center justify-center"
|
||||
data-pixel-height="${pixelHeight}"
|
||||
title="${bucket.label}: ${bucket.count} decisions"> </div>
|
||||
</div>
|
||||
<span class="text-xs text-gray-600 mt-2 text-center">${bucket.label}</span>
|
||||
</div>
|
||||
|
|
@ -524,10 +527,18 @@ function init() {
|
|||
init();
|
||||
// Set widths/heights from data attributes (CSP compliance)
|
||||
function setProgressBarWidths(container) {
|
||||
const elements = container.querySelectorAll('[data-width], [data-height]');
|
||||
const elements = container.querySelectorAll('[data-width], [data-height], [data-pixel-height]');
|
||||
elements.forEach(el => {
|
||||
if (el.dataset.width) el.style.width = el.dataset.width + '%';
|
||||
if (el.dataset.height) el.style.height = el.dataset.height + '%';
|
||||
if (el.dataset.width) {
|
||||
el.style.width = el.dataset.width + '%';
|
||||
}
|
||||
if (el.dataset.height) {
|
||||
el.style.height = el.dataset.height + '%';
|
||||
}
|
||||
if (el.dataset.pixelHeight) {
|
||||
const height = Math.max(parseInt(el.dataset.pixelHeight), 10); // Minimum 10px
|
||||
el.style.height = height + 'px';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Koha — Reciprocal Support | Tractatus AI Safety</title>
|
||||
<meta name="description" content="Join a relationship of mutual support for AI safety. Koha is reciprocal giving that maintains community bonds — your contribution sustains this work; our work serves you and the commons.">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
.gradient-text { background: linear-gradient(120deg, #3b82f6 0%, #8b5cf6 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
|
||||
.skip-link { position: absolute; left: -9999px; }
|
||||
|
|
@ -51,7 +51,7 @@
|
|||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<!-- Navigation (injected by navbar.js) -->
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main id="main-content" class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
|
||||
|
|
@ -380,17 +380,17 @@
|
|||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Currency utilities and selector -->
|
||||
<script src="/js/utils/currency.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/currency-selector.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/utils/currency.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/currency-selector.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Donation form functionality -->
|
||||
<script src="/js/koha-donation.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/koha-donation.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Internationalization -->
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346862495"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@
|
|||
<link rel="apple-touch-icon" href="/images/tractatus-icon-new.svg">
|
||||
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon-new.svg">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
.hover-lift { transition: all 0.3s ease; }
|
||||
.hover-lift:hover { transform: translateY(-2px); }
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
|
||||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Breadcrumb Navigation -->
|
||||
<nav class="bg-gray-50 border-b border-gray-200 py-3" aria-label="Breadcrumb">
|
||||
|
|
@ -605,20 +605,20 @@
|
|||
|
||||
<!-- Footer -->
|
||||
<!-- Internationalization (must load first for footer translations) -->
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Scroll Animations (Phase 3) -->
|
||||
<script src="/js/scroll-animations.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/scroll-animations.js?v=0.1.0.1761346862495"></script>
|
||||
<!-- Page Transitions (Phase 3) -->
|
||||
<script src="/js/page-transitions.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/page-transitions.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Version Management & PWA -->
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/leader-page.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/leader-page.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Footer Component -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Media Inquiry | Tractatus AI Safety</title>
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
.form-group { margin-bottom: 1.5rem; }
|
||||
.form-label {
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<!-- Navigation (injected by navbar.js) -->
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main id="main-content" class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
|
||||
|
|
@ -171,10 +171,10 @@
|
|||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<script src="/js/media-inquiry.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/media-inquiry.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Footer Component -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title data-i18n="meta.title">Privacy Policy | Tractatus AI Safety Framework</title>
|
||||
<meta name="description" content="Privacy policy for the Tractatus AI Safety Framework. Learn how we collect, use, and protect your data." data-i18n="meta.description">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
.skip-link { position: absolute; left: -9999px; }
|
||||
.skip-link:focus { left: 0; z-index: 100; background: white; padding: 1rem; }
|
||||
|
|
@ -26,11 +26,11 @@
|
|||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<!-- Navigation (injected by navbar.js) -->
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- i18n Support -->
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main id="main-content" class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
|
||||
|
|
@ -246,7 +246,7 @@
|
|||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@
|
|||
<link rel="apple-touch-icon" href="/images/tractatus-icon-new.svg">
|
||||
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon-new.svg">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346269523">
|
||||
<link rel="stylesheet" href="/css/fonts.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1761346862495">
|
||||
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1761346862495">
|
||||
<style>
|
||||
.skip-link { position: absolute; left: -9999px; }
|
||||
.skip-link:focus { left: 0; z-index: 100; background: white; padding: 1rem; }
|
||||
|
|
@ -69,7 +69,7 @@
|
|||
</div>
|
||||
</noscript>
|
||||
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/navbar.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Breadcrumb Navigation -->
|
||||
<nav class="bg-gray-50 border-b border-gray-200 py-3" aria-label="Breadcrumb">
|
||||
|
|
@ -611,20 +611,20 @@
|
|||
|
||||
<!-- Footer -->
|
||||
<!-- Internationalization (must load first for footer translations) -->
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/i18n-simple.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/components/language-selector.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Scroll Animations (Phase 3) -->
|
||||
<script src="/js/scroll-animations.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/scroll-animations.js?v=0.1.0.1761346862495"></script>
|
||||
<!-- Page Transitions (Phase 3) -->
|
||||
<script src="/js/page-transitions.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/page-transitions.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Version Management & PWA -->
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/researcher-page.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/version-manager.js?v=0.1.0.1761346862495"></script>
|
||||
<script src="/js/researcher-page.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
<!-- Footer Component -->
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346269523"></script>
|
||||
<script src="/js/components/footer.js?v=0.1.0.1761346862495"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"version": "0.1.1",
|
||||
"buildDate": "2025-10-24T22:51:09.529Z",
|
||||
"buildDate": "2025-10-24T23:01:02.497Z",
|
||||
"changelog": [
|
||||
"Mobile: Fixed calendar page loading issues with enhanced error handling",
|
||||
"Cache: Service worker v0.1.2 - FORCE REFRESH for mobile cache fix",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue