diff --git a/workspace/_assets_/nav-data.js b/workspace/_assets_/nav-data.js index f445e21..fff2afe 100644 --- a/workspace/_assets_/nav-data.js +++ b/workspace/_assets_/nav-data.js @@ -49,6 +49,7 @@ var NAV_DATA = { title: 'History', path: 'history/index.html', children: [ + { title: 'Tuesday, 15 July 2026', path: 'history/2026/07-July/15-Tuesday/index.html' }, { title: 'Monday, 14 July 2026', path: 'history/2026/07-July/14-Monday/index.html' }, { title: 'Sunday, 13 July 2026', path: 'history/2026/07-July/13-Sunday/index.html' }, { title: 'Sunday, 12 July 2026', path: 'history/2026/07-July/12-Sunday/index.html' }, diff --git a/workspace/boards/backlog.html b/workspace/boards/backlog.html index acdebff..29414d7 100644 --- a/workspace/boards/backlog.html +++ b/workspace/boards/backlog.html @@ -22,31 +22,6 @@
Tuesday, 15 July 2026
+styles.rokojori.com built and deployed; Roject font migration; add-subdomain deployment guide.
+
+ Built a new standalone asset hosting service from scratch at
+ styles.rokojori.com. Same stack as the other rokojori services:
+ Node.js + Express + ts-node, no external database, Web Components + raw CSS on
+ the frontend.
+
Key pieces:
+@font-face CSS; font files served statically from storage/fonts/.meta.json.Origin header against *.rokojori.com regex; echoes origin back only if matched. Public * header explicitly avoided.requireAccess middleware copied from auth workspace (role: admin, or user + product: styles / premium). HTML pages redirect to login; API routes return 401/403 JSON./ detects auth state via fetch and shows hero or sections list; /list-fonts renders all families with live preview sentence; /add-fonts takes family name + optional weights, downloads, shows inline preview.
+ Removed three stale pages: dashboard.html, groups.html,
+ projects.html — all superseded by the project-home redesign from the
+ previous session.
+
+ Migrated Barlow font loading from Google Fonts to styles.rokojori.com:
+ removed the three Google Fonts <link> tags from
+ source/pages/index.html and added
+ @import url('https://styles.rokojori.com/get-font?family=barlow&weights=100,400,700,900')
+ at the top of project-list-default.css. The theme now self-describes
+ its font dependency; no Google dependency at runtime.
+
+ Created workspace/add-subdomain.html — a step-by-step deployment
+ checklist for adding any new rokojori subdomain service to Server A. Covers:
+ Gitea repo creation, .gitignore, DNS on IONOS, server clone, install/build/env,
+ nginx HTTP config, Let's Encrypt via certbot, nginx HTTPS verification, and
+ systemd service setup.
+
+ The guide has an interactive variables bar at the top (subdomain, port, service
+ name) — all commands throughout the page update live via JS as you type.
+ systemd unit file format matched to the Roject convention:
+ /usr/bin/npx ts-node, Restart=on-failure,
+ StandardOutput/Error=journal.
+ Added a step 0 explaining the CORS allowlist pattern with full code example.
+
+ Convention: 400.woff2, 400-italic.woff2. No "bold"
+ alias — numeric weights only. woff2 has near-universal browser support; no
+ fallback formats needed.
+
+ Access-Control-Allow-Origin: * was rejected in favour of an
+ allowlist that echoes back the matched origin. The regex
+ /^https?:\/\/([\w-]+\.)?rokojori\.com$/ covers all current and
+ future subdomains. Extra origins can be added as strings or regexes to the
+ CORS_ALLOWED array.
+
+ Initially conceived as a font host; scope widened to a general shared-asset + platform: fonts now, shared HTML components / Web Components, CSS presets, and + binary assets (images, sounds, video) planned. +
+styles.rokojori.com built and deployed (font hosting, /get-font public CSS endpoint, CORS allowlist, auth-gated management pages); Roject Barlow font migrated from Google Fonts; old dashboard/groups/projects pages removed; add-subdomain deployment guide with live variable inputs.
+Electron desktop app shell, workspace boards system. Full project home redesign: new / entry point, project-home component (hero / theme dispatch), default theme (logo nav, UUID-coloured badges, Barlow skewed names, new-project dialog), user settings backend, groups removed from UI.
user_settings.json via
GET / PUT /api/user/settings. A second theme (Italic Neon) is
planned. /edit redirects to the existing /editor.html.
+ Barlow is loaded via @import from styles.rokojori.com
+ (weights 100, 400, 700, 900 including italics) — no Google Fonts dependency.
+
+
+ A shared asset hosting service for all rokojori projects, live at
+ styles.rokojori.com. Currently serves self-hosted fonts downloaded
+ from Google Fonts on demand via a GET /get-font public endpoint that
+ returns a dynamic CSS file with @font-face rules. Font files are
+ stored as storage/fonts/<family>/<weight>.woff2 and
+ served statically. CORS is restricted to *.rokojori.com origins.
+ Access to the management UI (/list-fonts, /add-fonts)
+ is gated by the shared JWT cookie via requireAccess middleware
+ (role: admin, or role: user + product: styles / premium).
+
+ Planned: shared HTML components / Web Components, CSS presets, and binary assets + (images, sounds, video) — making styles.rokojori.com the single place to manage + any reusable front-end resource across the rokojori ecosystem.