Commit graph

96 commits

Author SHA1 Message Date
TheFlow
e217c860ef fix: Hide feedback FAB on mobile, add to drawer, persist install dismissal
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>
2026-02-11 05:55:30 +13:00
TheFlow
90376f9089 fix: Load research papers modal on all pages with navbar
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>
2026-02-09 19:53:45 +13:00
TheFlow
3192bec2fe feat: Add Te Reo Māori (mi) translation for landing page + i18n fixes
- 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>
2026-02-09 18:26:28 +13:00
TheFlow
9e4aa1aea0 refactor: Clean up Research dropdown — navigational items only
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>
2026-02-09 18:11:22 +13:00
TheFlow
41c8df46cb feat: Replace Research dropdown with mega-dropdown showing paper cards
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>
2026-02-09 18:07:01 +13:00
TheFlow
7243115def fix: Use inline maxHeight for mobile accordion instead of Tailwind class
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>
2026-02-09 17:58:27 +13:00
TheFlow
68c2f667a6 feat: Consolidate navbar — Framework dropdown + mobile accordion
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>
2026-02-09 17:55:08 +13:00
TheFlow
00b9121ba6 fix: Use correct document slug for taonga paper in research modal
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>
2026-02-09 16:33:43 +13:00
TheFlow
f98d7b8fa7 fix: Use correct query parameter for docs-viewer paper links
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>
2026-02-09 16:21:50 +13:00
TheFlow
5ca788cf84 feat: Add research papers modal to homepage hero button
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>
2026-02-09 16:16:53 +13:00
TheFlow
f2050a2644 fix: Fix docs-viewer TOC, cache busting, and documentLoaded event
- 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>
2026-02-09 10:36:18 +13:00
TheFlow
68f9530acf feat: Add Blog link to navbar navigation
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>
2026-02-08 18:06:15 +13:00
TheFlow
ace893f49c fix: Suppress diagram translation warning on initial load, add home-ai locale stubs
- 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>
2026-02-07 20:59:06 +13:00
TheFlow
701bd18eb0 fix: Remove absolute assurance language per inst_017 across codebase
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>
2026-02-07 14:44:45 +13:00
TheFlow
a594012aa7 feat: Complete site audit and UI/UX redesign for agenticgovernance.digital
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>
2026-02-07 12:44:53 +13:00
TheFlow
403a54decf feat: Add Kōrero HTML page, remove umami analytics
- 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>
2026-01-20 11:43:29 +13:00
TheFlow
e3250ea82b feat: Add Tino Rangatiratanga (Māori) flag to language selector
- 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>
2025-12-09 18:26:10 +13:00
TheFlow
b289b3a208 feat: Replace NZ flag with Tino Rangatiratanga flag for Te Reo Māori
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>
2025-12-09 18:21:50 +13:00
TheFlow
8f22d0336c feat: Add company website links to navbar and footer
- 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.
2025-11-24 13:12:44 +13:00
TheFlow
3c278c7ade feat: Add Phase 2 newsletter enhancements and email templates
Phase 2 Implementation:
- Add RSS feed discovery links to footer (Subscribe section)
- Create email templates (base-template.html, research-updates-content.html)
- Add comprehensive newsletter sending implementation plan
- Fix CSP check to exclude email-templates directory

Email templates use inline styles for cross-client compatibility
(Gmail, Outlook, Apple Mail) and are excluded from CSP checks.

Next steps: Install dependencies (handlebars, @sendgrid/mail),
implement EmailService, controller methods, and admin UI.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 11:13:15 +13:00
TheFlow
2e3ce0a2fc feat: Add comprehensive visitor retention system
Implemented RSS feeds, newsletter subscriptions, email templates, and admin UI
to encourage repeat visits from self-selected visitors.

## RSS Feeds
- Created RSS 2.0 feed generation (main + topic-specific)
- Endpoints: /feed.xml and /feed/:topic.xml
- Added getPublished() and getPublishedByTag() to BlogPost model

## Newsletter Subscriptions
- Created reusable newsletter modal component
- Added to index, researcher, implementer, leader pages
- Interest selection: research, implementation, governance, project-updates
- Added newsletter trigger button to footer
- Uses existing /api/newsletter/subscribe endpoint

## Email Templates
- Created comprehensive specifications for 4 newsletter tiers
- Research Updates (monthly) - scholarly audience
- Implementation Notes (bi-weekly) - practitioners
- Governance Discussions (sporadic) - stakeholders
- Project Updates (quarterly) - general audience
- Documented template variables, design guidelines

## Admin UI
- Enhanced newsletter management with "Send Newsletter" section
- Tier selection, subject/preview input, JSON content editor
- Preview/test/send buttons (UI ready, email service TBD)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 10:42:43 +13:00
TheFlow
7a148b7eca feat: add i18n support for Agent Lightning page and navbar feedback
Added comprehensive internationalization:
- German and French translations via DeepL API
- Language-responsive Agent Lightning integration page
- Navbar feedback button now translates (DE: "Feedback geben", FR: "Donner son avis")
- Translation files: agent-lightning-integration.json (EN/DE/FR)
- Data-i18n attributes on all major headings and CTA buttons
- i18n scripts loaded on Agent Lightning page

Translation coverage:
- Hero section
- All major section headings
- Call-to-action buttons
- Navbar feedback menu item

Files modified:
- public/integrations/agent-lightning.html (i18n scripts + data-i18n attributes)
- public/js/components/navbar.js (data-i18n for feedback button)
- public/js/i18n-simple.js (page map entry)
- public/locales/*/agent-lightning-integration.json (translations)
- public/locales/*/common.json (navbar.feedback translations)
- scripts/translate-agent-lightning.js (translation automation)
- docs/reports/FRAMEWORK_PERFORMANCE_REPORT_2025-11-03.md (framework stats)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 15:58:12 +13:00
TheFlow
7b5b988282 fix: feedback button visibility using inline styles
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>
2025-11-03 15:39:23 +13:00
TheFlow
3b0cbad664 feat: Add Agent Lightning integration to navigation and homepage
- 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>
2025-11-03 15:12:29 +13:00
TheFlow
be306c89aa fix: feedback button visibility and Agent Lightning page issues
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>
2025-11-03 15:04:00 +13:00
TheFlow
a8e1d5cb5d fix: render feedback button immediately without waiting for CSRF
- 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>
2025-11-03 14:52:37 +13:00
TheFlow
c8a95e97f8 feat: Add feedback button to navbar
- 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>
2025-11-03 12:53:14 +13:00
TheFlow
2de8a33322 feat: Complete Phase 2 - Agent Lightning integration and Discord community launch
## Website Updates
- **Homepage** (index.html):
  - Updated hero subtitle to mention Agent Lightning integration
  - Added " Now with AL" badges to all pathway cards
  - Removed Audit Logs from hero (moved to researcher page)
  - Added comprehensive community section with both Discord servers

- **Researcher Page** (researcher.html:619-786):
  - Added Agent Lightning integration section
  - 5 open research questions
  - Demo 2 validation status with limitations
  - Both Discord community links

- **Implementer Page** (implementer.html:1324-1341):
  - Added Discord invite buttons to AL CTA section

- **Leader Page** (leader.html:424-441):
  - Added Discord invite buttons to AL CTA section

- **New Integration Page** (integrations/agent-lightning.html):
  - Standalone AL integration guide
  - Overview and community links

## Feedback System (Governed AI Communication)
- Backend: Feedback model, controller, routes, governance service
- Frontend: FAB, modal UI, navbar integration
- Three governance pathways: Autonomous, Deliberation, Human Mandatory

## Discord Communities
- Tractatus Discord: https://discord.gg/Dkke2ADu4E
- Agent Lightning Discord: https://discord.gg/bVZtkceKsS

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 12:52:26 +13:00
TheFlow
467f2833f1 fix: handle undefined technicalLevel in cards and set glossary category
- 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>
2025-11-01 11:41:18 +13:00
TheFlow
34e70a1b44 fix: language selector now works on all pages
- 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
2025-10-29 15:41:17 +13:00
TheFlow
2b52a073fb feat: add disk monitoring system for dev and production
Add comprehensive disk monitoring with real-time metrics:
- Backend API endpoints for disk/memory metrics (local + remote)
- Admin UI page with CSP-compliant DOM rendering
- Health status indicators with color-coded thresholds
- SSH-based remote metrics collection from OVH VPS
- Auto-refresh every 5 minutes

Backend:
- src/models/DiskMetrics.model.js: Metrics collection model
- src/controllers/diskMetrics.controller.js: 3 admin endpoints
- src/routes/diskMetrics.routes.js: Admin-authenticated routes
- src/routes/index.js: Register disk-metrics routes

Frontend:
- public/admin/disk-monitoring.html: Admin dashboard page
- public/js/admin-disk-monitoring.js: CSP-compliant UI rendering
- public/js/components/navbar-admin.js: Add disk monitoring link

Documentation:
- deployment-quickstart/UPTIME_MONITORING_SETUP.md

API endpoints:
- GET /api/admin/disk-metrics (all systems)
- GET /api/admin/disk-metrics/local (dev system)
- GET /api/admin/disk-metrics/remote (production VPS)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 11:53:55 +13:00
TheFlow
6376e1568b fix(analytics): remove data-domains restriction from tracking
- 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>
2025-10-29 10:02:44 +13:00
TheFlow
ad89ce2845 feat(analytics): add Umami website ID to tracking script
- Website ID: e09dad07-361b-453b-9e2c-2132c657d203
- Analytics dashboard: https://analytics.agenticgovernance.digital
- Tracking now fully operational for agenticgovernance.digital

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 02:12:43 +13:00
TheFlow
ccb4bdaabf feat(api): implement research inquiry endpoint and Umami analytics
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>
2025-10-29 01:31:02 +13:00
TheFlow
07fcaa2e8f feat(compliance): add GDPR compliance page with trilingual support
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>
2025-10-28 10:26:57 +13:00
TheFlow
836421cf92 fix(i18n): ensure contact modal displays in correct language when opened
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>
2025-10-26 18:37:40 +13:00
TheFlow
a1c4a2e1f8 feat(i18n): add multilingual support to Contact Us modal and fix translations
**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>
2025-10-26 16:57:47 +13:00
TheFlow
6ad2f4437b fix(architecture): inline SVG and complete i18n for interactive diagram
- 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.
2025-10-26 13:45:39 +13:00
TheFlow
7ad5f8848e fix(interactive-diagram): add fallback data to prevent race condition with i18n
- 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
2025-10-26 13:24:04 +13:00
TheFlow
c4e54502da fix(i18n): complete architecture page translations and fix diagram modals
- 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
2025-10-26 13:20:56 +13:00
TheFlow
a230a319a0 feat(i18n): add interactive diagram modal translations for 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
2025-10-26 13:15:50 +13:00
TheFlow
75ba04a99d fix(interactive-diagram): resolve race condition with SVG contentDocument loading 2025-10-26 12:23:55 +13:00
TheFlow
2e0e11229f feat(i18n): complete architecture.html internationalization with P0/P1/P2 fixes
## P0 - Launch Blockers
 Created comprehensive translation files (EN, DE, FR)
  - /locales/en/architecture.json (31 translatable sections)
  - /locales/de/architecture.json (complete German translations)
  - /locales/fr/architecture.json (complete French translations)

 Added data-i18n attributes throughout HTML
  - Breadcrumb navigation
  - Hero section (badge, title, subtitle, challenge, approach, CTAs)
  - Comparison section (headings, titles)
  - Architecture diagram (titles, descriptions for all 3 layers)
  - Six Governance Services (all service names, descriptions, promises)
  - Interactive section (titles, instructions, tooltips)
  - Data visualizations heading
  - Production section (titles, results, disclaimers)
  - Limitations section (headings, limitations list, quote)
  - CTA section (heading, subtitle, buttons)
  - Total: 31 data-i18n attributes added

 Fixed card overflow on Six Governance Services cards
  - Added min-w-0 max-w-full overflow-hidden to all 6 service cards
  - Added break-words overflow-wrap-anywhere to card titles
  - Added break-words to service descriptions
  - Prevents cards from breaking container boundaries

## P1 - Should Fix Before Launch
 Added touch event handling to interactive diagram
  - Added touchstart listener with passive:false
  - Prevents default behavior for better mobile UX
  - Complements existing click handlers

## P2 - Nice to Have
 Improved mobile diagram sizing
  - Increased from w-48 sm:w-56 lg:w-64 to w-64 sm:w-72 lg:w-80
  - ~33% larger on all breakpoints for better mobile visibility

 Added soft hyphens to long service names
  - BoundaryEnforcer → Boundary&shy;Enforcer
  - InstructionPersistenceClassifier → Instruction&shy;Persistence&shy;Classifier
  - CrossReferenceValidator → Cross&shy;Reference&shy;Validator
  - ContextPressureMonitor → Context&shy;Pressure&shy;Monitor
  - MetacognitiveVerifier → Metacognitive&shy;Verifier
  - PluralisticDeliberationOrchestrator → Pluralistic&shy;Deliberation&shy;Orchestrator
  - Enables intelligent line breaking for long CamelCase service names

## Changes Summary
- 3 new translation files created (1,866 lines total)
- architecture.html: 31 data-i18n attributes, 6 overflow-protected cards, 6 soft hyphens
- interactive-diagram.js: Added touch event support for mobile

## Impact
- architecture.html now fully internationalized (EN, DE, FR)
- Cards respect boundaries on all screen sizes
- Interactive diagram works on touch devices
- Long service names wrap intelligently
- Matches quality level of docs.html

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 11:33:04 +13:00
TheFlow
ce5dfdf7ad fix(docs): card overflow, sequencing, colour legend, and category fixes
Fixed multiple issues with the docs page card-based document view:

**Card Overflow Fixed:**
- Added overflow-x-hidden to #document-content container
- Added w-full max-w-full to card-grid-container
- Added w-full to grid itself
- Added max-w-full overflow-hidden to individual cards
- Cards now stay within container boundaries at all viewport sizes

**Long Title Wrapping:**
- Added insertSoftHyphens() method to break CamelCase words
- Inserts soft hyphens (&shy;) before capitals in compound words
- Examples: "InstructionPersistenceClassifier" → "Instruction­Persistence­Classifier"
- Titles now wrap intelligently without being cut off

**Colour Legend (Option C):**
- Added toggle button (ℹ️) next to ToC and PDF buttons
- Popup shows all 5 colour codes with descriptions
- Translated to EN ("Colour Guide"), DE ("Farbcode"), FR ("Guide des couleurs")
- Fixed colour square visibility (bg-500 with borders instead of bg-400)
- Click outside to close functionality

**Card Sequencing:**
- Cards now display in original markdown document order
- Removed groupByCategory() grouping logic
- Removed category header sections
- Color coding preserved based on section category

**Category Fallback Bug:**
- Fixed invalid fallback category 'downloads-resources' → 'resources'
- Ensures uncategorized documents go to valid category

**Database Migration:**
- Added scripts/move-guides-to-resources.js
- Moved 3 implementation guides from getting-started to resources
- Getting Started now contains only: Introduction, Core Concepts
- Resources now contains: Implementation guides

**Result:**
 Cards respect container width (no overflow)
 Long titles wrap with hyphens (no cutoff)
 Colour legend accessible and translated
 Cards in logical reading order from markdown
 Implementation guides in correct category

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 11:03:23 +13:00
TheFlow
8c22811110 feat(docs): intelligent section recategorization + i18n infrastructure
This commit includes two major improvements to the documentation system:

## 1. Section Recategorization (UX Fix)

**Problem**: 64 sections (24%) were incorrectly marked as "critical" and
displayed at the bottom of documents, burying important foundational content.

**Solution**:
- Created intelligent recategorization script analyzing titles, excerpts,
  and document context
- Reduced "critical" from 64 → 2 sections (97% reduction)
- Properly categorized content by purpose:
  - Conceptual: 63 → 138 (+119%) - foundations, "why this matters"
  - Practical: 3 → 46 (+1433%) - how-to guides, examples
  - Technical: 111 → 50 (-55%) - true implementation details

**UI Improvements**:
- Reordered category display: Critical → Conceptual → Practical → Technical → Reference
- Changed Critical color from amber to red for better visual distinction
- All 22 documents recategorized (173 sections updated)

## 2. i18n Infrastructure (Phase 2)

**Backend**:
- DeepL API integration service with quota management and error handling
- Translation API routes (GET /api/documents/:slug?lang=de, POST /api/documents/:id/translate)
- Document model already supports translations field (no schema changes)

**Frontend**:
- docs-app.js enhanced with language detection and URL parameter support
- Automatic fallback to English when translation unavailable
- Integration with existing i18n-simple.js system

**Scripts**:
- translate-all-documents.js: Batch translation workflow (dry-run support)
- audit-section-categories.js: Category distribution analysis

**URL Strategy**: Query parameter approach (?lang=de, ?lang=fr)

**Status**: Backend complete, ready for DeepL API key configuration

**Files Modified**:
- Frontend: document-cards.js, docs-app.js
- Backend: documents.controller.js, documents.routes.js, DeepL.service.js
- Scripts: 3 new governance/i18n scripts

**Database**: 173 sections recategorized via script (already applied)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 00:48:27 +13:00
TheFlow
f347d0a34e fix(architecture): interactive diagram SVG click handler timing issues
Fixed non-responsive service node clicks on architecture.html interactive diagram.

Root cause: SVG loaded via <object> tag had contentDocument timing issues -
event listeners attached before SVG fully accessible.

Solution:
- Added retry mechanism for contentDocument access (100ms intervals)
- Implemented multiple loading strategies (immediate, load event, timeout)
- Enabled event capturing phase (addEventListener 3rd param: true)
- Enhanced logging for debugging click event flow
- Auto-display overview panel on initialization
- CSP-compliant cursor styling via JavaScript

Deployed to production: https://agenticgovernance.digital/architecture.html

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 18:22:15 +13:00
TheFlow
0b853c537d feat(crm): complete Phase 3 multi-project CRM + critical bug fixes
Phase 3 Multi-Project CRM Implementation:
- Add UnifiedContact model for cross-project contact linking
- Add Organization model with domain-based auto-detection
- Add ActivityTimeline model for comprehensive interaction tracking
- Add SLATracking model for 24-hour response commitment
- Add ResponseTemplate model with variable substitution
- Add CRM controller with 8 API endpoints
- Add Inbox controller for unified communications
- Add CRM dashboard frontend with tabs (Contacts, Orgs, SLA, Templates)
- Add Contact Management interface (Phase 1)
- Add Unified Inbox interface (Phase 2)
- Integrate CRM routes into main API

Critical Bug Fixes:
- Fix newsletter DELETE button (event handler context issue)
- Fix case submission invisible button (invalid CSS class)
- Fix Chart.js CSP violation (add cdn.jsdelivr.net to policy)
- Fix Chart.js SRI integrity hash mismatch

Technical Details:
- Email-based contact deduplication across projects
- Automatic organization linking via email domain
- Cross-project activity timeline aggregation
- SLA breach detection and alerting system
- Template rendering with {placeholder} substitution

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 18:10:14 +13:00
TheFlow
efab76e13c feat(crm): implement unified contact form system
Complete CRM foundation with contact modal in footer

Backend:
- Contact.model.js: Full CRUD model with statistics tracking
- contact.controller.js: Submit, list, assign, respond, update, delete
- contact.routes.js: Public submission + admin management endpoints
- routes/index.js: Mount contact routes at /api/contact

Frontend:
- footer.js: Replace mailto link with Contact Us modal button
- Contact modal: Form with type, name, email, org, subject, message
- CSRF protection: Extracts token from cookie (like newsletter)
- Rate limiting: formRateLimiter (5/min)
- Validation: Input sanitization + required fields
- UX: Success/error messages, auto-close on success

Admin UI:
- navbar-admin.js: New 'CRM & Communications' section
- Links: Contact Management, Case Submissions, Media Inquiries

Foundation for multi-project CRM across tractatus, family-history, sydigital

Next: Build /admin/contact-management.html page
2025-10-24 16:56:21 +13:00
TheFlow
70ab7c0a01 feat(admin): reorganize navbar with CRM section and add missing tools
- Add new 'CRM & Communications' section for contact/inquiry management
- Add Editorial Guidelines to Content Management
- Add Credential Vault to System & Framework
- Reorganize for future unified CRM across all projects
2025-10-24 16:51:04 +13:00
TheFlow
ac2db33732 fix(submissions): restructure Economist package and fix article display
- Create Economist SubmissionTracking package correctly:
  * mainArticle = full blog post content
  * coverLetter = 216-word SIR— letter
  * Links to blog post via blogPostId
- Archive 'Letter to The Economist' from blog posts (it's the cover letter)
- Fix date display on article cards (use published_at)
- Target publication already displaying via blue badge

Database changes:
- Make blogPostId optional in SubmissionTracking model
- Economist package ID: 68fa85ae49d4900e7f2ecd83
- Le Monde package ID: 68fa2abd2e6acd5691932150

Next: Enhanced modal with tabs, validation, export

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 08:47:42 +13:00