Skip to content

Merge new-feature into main — React SPA, federation, onboarding overhaul - #29

Merged
boldbug1 merged 16 commits into
mainfrom
new-feature
Jul 19, 2026
Merged

boldbug1 merged 16 commits into
mainfrom
new-feature

Conversation

@boldbug1

Copy link
Copy Markdown
Contributor

Summary

16 commits bringing a complete frontend rewrite (Vue → React), backend federation & peer-identity features, and a full onboarding overhaul.

Frontend

  • New React SPA (Vite + Tailwind CSS v4) replacing the old Vue 3 app
    • Articles listing with directory browsing (?dir= param, folder cards, breadcrumbs)
    • Article detail page (content fetch, verification badge, prev/next nav, backlinks)
    • About page (protocol info, 3-column principles, how it works)
    • Settings panel (light/dark toggle + 7-language i18n: EN/ES/FR/DE/JA/ZH-CN/HI)
    • Active nav highlighting, Tailwind typography, accessible aria-labels
  • Dark mode via @custom-variant dark with inverted color palettes
  • Removed Vue 3 codebase (src/, tailwind.config.js, vite.config.js, etc.)

Backend

  • Taxonomy + content_index + FTS5 database architecture for structured knowledge organization
  • Peer identity anchored to Ed25519 public key — URL is now a mutable secondary property
  • Challenge-response URL re-registration for nodes behind dynamic cloudflared tunnels (single-use nonce, 5-min TTL, constant-time comparison)
  • Gossip import — pull a peer's peer list and auto-register unknown nodes
  • Peer health history — per-peer last-seen timestamps, sequential failure counts
  • Path-traversal guard in peer sync
  • registry.db moved to stateDir — no longer stored inside dataDir
  • API endpoints: /api/content, /api/recent-files, /api/search-index, /-/admin/verify
  • Image src rewriting for .assets/ paths + file watcher for hot-reload
  • Single-container deployment (removed dual-tier Clearnet+Tor complexity)
  • .air.dev.toml for live-reload development

Onboarding & Documentation

  • INSTALL.md — comprehensive cross-platform install guide (Windows, Linux, macOS, Docker)
  • setup.sh — single entry point: install / dev / build / test / token / status
  • red-dev.sh — parallel Vite + Go dev launcher
  • .env.example — full environment variable reference
  • Makefile — fixed dev/build-frontend/build-backend/clean targets
  • entrypoint.sh — added /app/state chown for Docker
  • scripts/two-node.sh / scripts/node-test.sh — fixed paths, auto-config creation
  • BULLETPROOFING_ROADMAP.md — production hardening checklist
  • PHILOSOPHY.md — extracted full philosophy from README

Cleanup

  • .gitignore: removed bare *.md, added *.exe, pnpm-lock.yaml, node_modules/
  • package.json: removed pnpm declaration, standardized on npm
  • pnpm-lock.yaml removed from git tracking
  • node_modules/ removed from git tracking (was committed to main)
  • Removed red-engine.ps1, red-engine.sh, setup.ps1, setup.sh (old duplicated scripts)
  • FRONTEND_BUILD/ — pre-built frontend assets committed for zero-build deployment

Breaking Changes

  • Node operators must rebuild after pulling (./setup.sh install)
  • registry.db location changed to stateDir — existing nodes should set RED_STATE_DIR or the stateDir config field
  • Vue-based frontend fully replaced — custom Vue templates will not work with the new SPA

StandardCodebase and others added 16 commits June 3, 2026 12:43
Phase 2 (security):
- pullFromPeer now rejects manifest entries whose path escapes destDir
  (.., absolute, or empty) before fetching or writing them.
- registry.db moves out of DataDir (which is served/synced as public
  content) into a private StateDir, default ~/.red-engine alongside the
  node identity keys. Adds Config.StateDir + ResolvedStateDir().

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Phase 4 (engine side):
- Embed the curated 135-node science taxonomy and manual tags
  (internal/taxonomy) and seed them into registry.db on startup.
- Hybrid taxonomy: curated 'core' nodes (permanent UID c<id>) plus
  user-created 'community' branches identified by a deterministic UID
  hash(parent+slug) so independent nodes converge instead of forking.
  Community branches are signed and gated 'verified' via trusted_authors.
- content_index (library/manual/unknown) keyed to taxonomy by uid, with a
  standalone FTS5 search table (indexer-owned, no triggers).
- TaxonomyPath breadcrumb helper + InsertCommunityBranch, covered by a
  new registry test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…der and readd the favicon I accidentally removed
either way: I made an air toml, got the api to work via a vite proxy for frontend dev, and got some formatting to work
… about page, settings panel with dark mode and i18n (EN/ES/FR/DE/JA/ZH-CN/HI)
- Add INSTALL.md (cross-platform install guide)
- Add setup.sh (bash entry point: install/dev/build/test/token/status)
- Add red-dev.sh (parallel Vite + Go dev launcher)
- Add .env.example (full env var reference)
- Add BULLETPROOFING_ROADMAP.md (production hardening checklist)
- Update README: install banner at top, redirect to INSTALL.md
- Update Makefile: dev/build-frontend/build-backend/clean targets
- Update entrypoint.sh: chown /app/state for Docker
- Update scripts/two-node.sh: frontend build before node start
- Update scripts/node-test.sh: auto-create configs, npm from correct dir
- Update package.json: remove pnpm declaration, standardize on npm
- Update .gitignore: remove bare *.md, add *.exe and pnpm-lock.yaml
- Remove pnpm-lock.yaml from tracking (standardizing on npm)
@boldbug1
boldbug1 merged commit fdd9c4e into main Jul 19, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants