- Created /source-code.html — sovereign hosting landing page explaining
why we left GitHub, how to access the code, and the sovereignty model
- Navbar: GitHub link → Source Code link (desktop + mobile)
- Footer: GitHub link → Source Code link
- Docs sidebar: GitHub section → Source Code section with sovereign repo
- Implementer page: all repository links point to /source-code.html,
clone instructions updated, CI/CD code example genericised
- FAQ: GitHub Discussions button → Contact Us with email icon
- FAQ content: all 4 locales (en/de/fr/mi) rewritten to remove
GitHub Actions YAML, GitHub URLs, and GitHub-specific patterns
- faq.js fallback content: same changes as locale files
- agent-lightning integration page: updated to source-code.html
- Project model: example URL changed from GitHub to Codeberg
- All locale files updated: navbar.github → navbar.source_code,
footer GitHub → source_code, FAQ button text updated in 4 languages
Zero GitHub references remain in any HTML, JS, or JSON file
(only github-dark.min.css theme name in highlight.js CDN reference).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The docs.html ?doc= parameter matches against the document list from
the API, which returns only long slugs. The short slug for STO-RES-0009
wasn't found, showing "Select a Document" instead. Also fixes two
docs-viewer.html links in home-ai.html to use docs.html routing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Research modal links pointed to docs-viewer.html which has a flat,
uncategorized sidebar. docs.html already supports ?doc=slug with
auto-expanding categories. Also adds editorial note CSS to docs.html
so the notes render with proper styling in the main docs view.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add summary projection to Document.list() excluding heavy content fields
- Fix 23 documents with invalid categories (framework/governance/reference)
- Archive 9 duplicate documents (kept canonical short-slug versions)
- Add Te Reo Māori UI translations to docs-app.js and document-cards.js
- Refactor language checks to be extensible (no more hardcoded EN/DE/FR)
- Remove unused font preloads from docs.html (fixes browser warning)
- Add resources to valid publish categories
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add i18n data-i18n attributes to navbar.js (~30 elements) and expand
all 4 common.json files with navbar translation keys (EN/DE/FR/MI)
- Replace broken HuggingFace Space links with local audit analytics
dashboard across 4 HTML files; update counts to 171,800+
- Add Steering Vectors, Taonga Governance, and Home AI sections to
researcher.html, leader.html, and implementer.html
- Update stale metrics: development period (11+ months), sessions
(1,000+), instructions (68), model references (Opus 4.6)
- Update roadmap Multi-LLM status to reflect Home AI as first non-Claude
deployment; add Sovereign Training Pipeline and Taonga Registry items
- Update all EN/DE/FR translation files with new section keys
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
FAB overlaps PWA install prompt and update notifications on small screens.
Mobile users now access feedback via the navbar drawer instead. Install
prompt dismissal persists in localStorage and is skipped in standalone mode.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Publications button in the Research dropdown was non-functional
on every page except index.html because the modal script was only
loaded there. Now the navbar dynamically loads it on all pages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Create mi/homepage.json (125 keys) and mi/common.json (68 keys)
- Enable mi in i18n system and language selector (remove disabled flag)
- Add data-i18n attributes to untranslated elements (skip link, paper
Read CTAs, PDF download labels, timeline date labels)
- Add corresponding new keys to en/de/fr locale files
- Remove Counter-Arguments from About dropdown (desktop + mobile)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove individual paper titles from the Research dropdown. Replace with
three navigational items: Publications (opens research papers modal),
For Researchers, Research Timeline. Papers belong on pages, not in
navigation menus.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Embeds the research modal's paper content directly into the navbar
Research dropdown as a wider mega-dropdown. Shows Recent Research papers
as side-by-side cards, Foundational section with edition selector pills
(Academic/Community/Policymakers), and quick links to Researchers,
Timeline, and Browse All Docs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The max-h-96 class was only added via JS so Tailwind's scanner never
generated it. Switch to inline style.maxHeight using scrollHeight for
reliable expand/collapse.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Merge Architecture link and Implementation dropdown into single "Framework"
dropdown on desktop (5 → 4 top-level items). Replace flat mobile drawer
sections with collapsible accordion (chevron toggle, auto-expand active
section). Remove Company section and Give Feedback button from mobile.
Koha promoted to standalone teal link in mobile.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The taonga paper's migrated slug includes the full subtitle. Update the
modal href to match the actual documents collection slug so the
docs-viewer resolves it correctly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docs-viewer.html uses ?slug= not ?doc= (which is for docs.html).
The wrong parameter caused the viewer to fall back to the default
document instead of loading the requested paper.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace direct link to architectural-alignment.html with a modal
showing all research papers grouped by recency, with a footer link
to /docs.html for broader documentation discovery.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix TOC field name mismatch: API returns title/slug but renderTOC
read text/id, causing empty bullet points
- Dispatch documentLoaded event after async content loads so sidebar
TOC rebuilds with actual headings
- Update cache-bust version strings to force fresh JS/CSS
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds Blog link to both desktop nav (between Architecture and About)
and mobile menu (before About & Resources section).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- interactive-diagram.js: Only warn about missing translations when i18n
has already initialized (not during initial race before i18n completes)
- Add empty home-ai.json locale files (en/de/fr) to prevent console
warning on /home-ai.html page
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace "ensures", "guarantee", "foolproof", "world-class" and similar
absolute terms with evidence-based language throughout public pages, JS
components, and FAQ content. Changes apply inst_017 (no absolute
assurance terms) consistently.
Replacements:
- "ensures X" → "validates X", "so that X", "supports X", "maintains X"
- "guarantee" → removed or rephrased with qualified language
- "foolproof" → "infallible"
- "architecturally impossible" → "architecture prevents without
explicit override flags"
Preserved: published research papers (architectural-alignment*.html),
EU AI Act quotes, Te Tiriti treaty language, and FAQ meta-commentary
that deliberately critiques this language (lines 2842-2896).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Homepage redesign with coherent story arc: Problem → Philosophy →
Architecture → Production Evidence → Audience Paths → Papers → Timeline.
Add Koha (donations) section prominently after Honesty Note for optimal
placement. Add Philosophical Foundations PDF download link.
New pages: timeline.html (research evolution Oct 2025–Feb 2026),
home-ai.html (SLL sovereign AI story). Blog seed script with two
initial posts.
Global navigation: consistent desktop nav with Research, Architecture,
and About dropdowns across all pages. Blog/FAQ removed from nav until
populated.
Page refinements: remove emoji from headings across architecture,
leader, implementer, researcher pages. Fix FAQ dead links → counter-
arguments. Add no-JS fallback to docs.html. Fix CSP inline style
violations in village-case-study.html (hero and CTA sections converted
from inline styles to Tailwind/CSS classes). Add Home AI cross-reference
to village case study.
Note: philosophical-foundations-village-project.pdf must be deployed
separately to public/downloads/ (gitignored directory).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Create korero-counter-arguments.html (STO-INN-0004) with styled critique cards
- Remove umami-tracker.js and all references from HTML files
- Update privacy.html Section 6 to reflect "No Analytics" policy
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Downloaded flag SVG locally to avoid CORS issues
- Updated language-selector.js to use local SVG path
- Replaced NZ emoji with proper Tino Rangatiratanga flag
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Uses SVG from mysovereignty.digital for proper Māori representation.
Tooltip still shows "Planned" as requested.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add 'Company' section to footer with MySovereignty website links
- Link to main website (mysovereignty.digital)
- Link to Village Ecosystem page
- Link to About Us page
- Add 'Company' section to navbar mobile menu
- Link to main website (mysovereignty.digital)
- Update footer grid layout: md:grid-cols-4 → md:grid-cols-2 lg:grid-cols-5
- Include translations for all 3 languages (EN, DE, FR)
- EN: Company
- DE: Unternehmen
- FR: Entreprise
Files modified:
- public/js/components/footer.js (lines 52-62)
- public/js/components/navbar.js (lines 110-116)
- public/locales/en/common.json
- public/locales/de/common.json
- public/locales/fr/common.json
Tested locally on port 9000 - all links functional, translations verified.
Root cause: Tailwind arbitrary value z-[9999] was not in compiled CSS
(tailwind.css last modified Oct 9, feedback.js modified Nov 3).
Solution: Use inline styles with !important for all critical properties:
- position: fixed
- bottom/right positioning
- z-index: 999999
- display: flex
- visibility: visible
- opacity: 1
This bypasses Tailwind compilation issues and ensures button is visible.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Agent Lightning link to navbar menu (visible on all pages)
- Add prominent "What's New" banner on homepage highlighting AL integration
- Link to AL Discord and integration page
- Improve discoverability of AL integration for visitors
Related to Phase 2 Master Plan completion
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Feedback Button (z-index issue):
- Increased z-index from 40 to 9999 with !important
- Button was rendering but hidden behind other elements
- Added inline style as backup for z-index
Agent Lightning Page:
- Fixed text visibility: changed gray-300 to white on dark background
- Fixed broken download link: changed to GitHub repo link
- Fixed collaboration button: now triggers feedback FAB correctly
- Removed duplicate closing script tag
All issues resolved and deployed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed init() to render FAB/modal before fetching CSRF token
- CSRF fetch now runs in parallel (non-blocking)
- Prevents button from never appearing if CSRF fetch fails/is slow
- Fixed cache version in agent-lightning.html to match deployment
Fixes issue where feedback button was invisible on all pages
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Adds 'Give Feedback' button to mobile navigation menu
- Integrates with feedback modal system
- Part of governed feedback system (Tractatus + AL)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added null check for section.technicalLevel (defaults to 'basic')
- Prevents "Cannot read properties of undefined (reading 'charAt')" error
- Updated fix-glossary-structure.js to set category: 'getting-started'
- Moves glossary back to Getting Started section where it belongs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added 'navbarReady' event dispatch from navbar after rendering
- Language selector now waits for navbar container to exist
- Fixes race condition where language selector ran before navbar rendered
- Language toggle now functional on researcher, implementer, leader, about pages
- Removes data-domains attribute that was blocking tracking
- Allows tracking on agenticgovernance.digital and any subdomains
- Fixes issue where pages were not being tracked
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
HIGH PRIORITY: Fixes production 404 error on research inquiry form
Research Inquiry API:
- Add POST /api/research-inquiry endpoint for form submissions
- Add admin endpoints for inquiry management (list, get, assign, respond, delete)
- Create ResearchInquiry model with MongoDB integration
- Add to moderation queue for human review (strategic quadrant)
- Include rate limiting (5 req/min) and CSRF protection
- Tested locally: endpoint responding, data saving to DB
Umami Analytics (Privacy-First):
- Add Docker Compose config for Umami + PostgreSQL
- Create nginx reverse proxy config with SSL support
- Implement privacy-first tracking script (DNT, opt-out, no cookies)
- Integrate tracking across 26 public HTML pages
- Exclude admin pages from tracking (privacy boundary)
- Add comprehensive deployment guide (UMAMI_SETUP_GUIDE.md)
- Environment variables added to .env.example
Files Created (9):
- src/models/ResearchInquiry.model.js
- src/controllers/research.controller.js
- src/routes/research.routes.js
- public/js/components/umami-tracker.js
- deployment-quickstart/nginx-analytics.conf
- deployment-quickstart/UMAMI_SETUP_GUIDE.md
- scripts/add-umami-tracking.sh
- scripts/add-tracking-python.py
- SESSION_SUMMARY_ANALYTICS_RESEARCH_INQUIRY.md
Files Modified (29):
- src/routes/index.js (research routes)
- deployment-quickstart/docker-compose.yml (umami services)
- deployment-quickstart/.env.example (umami config)
- 26 public HTML pages (tracking script)
Values Alignment:
✅ Privacy-First Design (cookie-free, DNT honored, opt-out available)
✅ Human Agency (research inquiries require human review)
✅ Data Sovereignty (self-hosted analytics, no third-party sharing)
✅ GDPR Compliance (no personal data in analytics)
✅ Transparency (open-source tools, documented setup)
Testing Status:
✅ Research inquiry: Locally tested, data verified in MongoDB
⏳ Umami analytics: Pending production deployment
Next Steps:
1. Deploy to production (./scripts/deploy.sh)
2. Test research form on live site
3. Deploy Umami following UMAMI_SETUP_GUIDE.md
4. Update umami-tracker.js with website ID after setup
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implements comprehensive GDPR compliance documentation explaining how the
Tractatus Framework enforces data protection through architectural constraints
rather than policy documents.
Key features:
- 8 sections covering GDPR Articles 5, 6, 15-22, 25, 32, 33
- Framework positioning: BoundaryEnforcer, CrossReferenceValidator, PluralisticDeliberationOrchestrator
- Full trilingual support (EN/DE/FR) via DeepL API (322 translations)
- Footer links and i18n integration across all languages
- Professional translations for legal accuracy
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed issue where clicking "Kontakt" in German mode showed English contact form.
Changes:
- Re-apply translations when modal opens (ensures current language is used)
- Use translated "submitting" text for sending state (DE: "Senden...", FR: "Envoi en cours...")
- Use translated submit button text when re-enabled
- Remove duplicate success message text
Now clicking "Kontakt" in DE mode or "Nous contacter" in FR mode correctly shows the modal in that language.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
**Contact Modal:**
- Added complete DE/FR translations for contact form
- Added 17 data-i18n attributes to modal elements
- Form labels, buttons, messages now translate
- Languages: EN, DE (Nachricht senden), FR (Envoyer le message)
**Fixed Translations:**
- media-inquiry.json: Fixed "Your Name" → "Ihr Name" (DE), "Votre nom" (FR)
- common.json: Added contact_modal section with all form text
**Translations Added:**
- Modal heading, description, all form labels
- Inquiry type options (general, partnership, technical, feedback)
- Submit/cancel buttons, success/error messages
- Dynamic "Sending..." text (Senden.../Envoi en cours...)
**Technical:**
- Contact modal in footer.js now fully i18n-enabled
- Uses window.I18n.translations for dynamic content
- All text translates when language selector is used
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replaced <object> element with inline SVG to fix contentDocument NULL issues
- Simplified interactive-diagram.js to work with inline SVG directly
- Added diagram_services translations loading from window.i18nTranslations
- Exposed window.i18nTranslations in i18n-simple.js for global access
- Added event listeners for i18nInitialized and languageChanged
- Diagram modals now fully translate across EN/DE/FR languages
- Removed complex retry/race condition logic from SVG loading
- Converted SVG style attributes to presentation attributes (CSP compliant)
Fixes: Interactive diagram was broken due to contentDocument being NULL
when accessing SVG via <object> element. Inline SVG approach is more
reliable and works immediately without race conditions.
- Added loadFallbackData() method with English defaults
- Check if i18n translations loaded before using them
- Falls back to English if window.i18nTranslations not ready yet
- Fixes 'Failed to load SVG after 20 retries' error caused by empty serviceData
- Added data-i18n to service card descriptions (validator, pressure, metacognitive, deliberation)
- Fixed interactive-diagram.js to properly load translations from i18n system
- Added language change handlers for dynamic modal updates
- All service cards and modals now fully translate across EN/DE/FR
- Added diagram_services section to all three language JSON files
- Modified interactive-diagram.js to load translations from i18n system
- Added language change event listeners to update modals dynamically
- Removed hardcoded English serviceData from JavaScript
- Modals now fully translate when language is switched