Commit Graph

70 Commits

Author SHA1 Message Date
Rokojori 6f4d5c9ff2 fix: update library-ts ref — .js extensions in ActivityAnalyser imports
Extension-less imports compiled fine but 404'd in the browser because
Express static only serves EventListeners.js, not EventListeners.
Was hidden until TokenUpdater started importing ActivityAnalyser client-side.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-02 23:10:30 +02:00
Rokojori 7c754e4256 feat: auth session refresh overhaul — all 7 phases
Fixes two root-cause bugs: browser tabs racing the same single-use refresh
token, and Electron never refreshing after its one-shot startup call.

Browser:
- TokenUpdater: periodic 5-min + activity-triggered pings to /api/auth/me,
  EventSlot-driven valid/refreshing/expired/network-error state.
  Web Locks leader election (one tab runs the updater; others follow via
  BroadcastChannel). Falls back to leader-always without Locks API support.
- GuardedCall: three-tier wrapper (user/editor/silent) with pre-flight state
  check and tier-specific retry. Replaces ad-hoc fetch calls in Editor and
  editor-shell layout save/load.
- auth-connector: jwtMiddleware proactively rotates access-token cookie
  within 15 min of real expiry (server clock, no client-side exp needed).

Electron:
- Periodic token updater in main process: reads JWT exp directly, uses
  server-corrected clock (Date response header offset) for comparisons,
  refreshes within 15 min of expiry. Replaces one-shot startup refresh.
- Session heartbeat: running instance writes accessToken + timestamp every
  10 s. New instance mints its own session via POST /api/auth/new-session
  if heartbeat is ≤30 s old — skips login screen transparently.
- Retired plaintext last-password.txt auto-login.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-02 22:39:56 +02:00
Rokojori 6766f6d467 history: Saturday, 2 August 2026 — Claude API + Claude Code providers for rojo-chat-panel
- Claude API provider (@anthropic-ai/sdk): streaming, separate session history,
  tool use support, rojo-settings-panel claude endpoint type
- Claude Code subprocess provider: --print --output-format stream-json --verbose,
  --session-id/--resume multi-turn, shell:false Windows fix,
  rojo-settings-panel claude-code endpoint type (no API key)
- Rojo local-mode fixes: detection, creation, system-prompt delivery
- Three subprocess bugs fixed: missing --verbose, stdin blocking, cmd.exe mangling

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-02 12:32:11 +02:00
Rokojori 87a42fd5a5 feat: per-project per-device layout persistence (.roject/layout-<deviceId>.json)
Full tab tree (panels → sections → tab-containers → tabs + open files) saved and
restored per project per device. FileEditorPanel extended with getCurrentFile().
.roject/ hidden from file tree listings. Boards, outline, and history updated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-31 20:43:08 +02:00
Rokojori 0b47e4cb97 feat: page editor unified toolbar, floating block menu, insertion triggers, drag-to-reorder, InputDialog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-31 15:43:04 +02:00
Rokojori 6fb2133b2c feat: file tree UX, page editor toolbar, EditorConsole, console-panel
File tree: open-state preserved on refresh, "Mark As Root Directory" moved
to context menu, "Open >" submenu for alternate editors, context menu label
truncated to filename (20 chars max). Page editor: mode buttons moved into
toolbar (sidebar removed). EditorConsole singleton + console-panel tab for
centralised message log with es-info header fade. openDocumentIn fix: derives
editorTag from panelElement.tagName, not registry. History folder renames
corrected (25-Friday→24-Friday, 30-Wednesday→30-Thursday, 31-Friday added).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-31 13:17:40 +02:00
Rokojori 99a8f591e9 history: local filesystem access, remote proxy, file-tree custom elements, project-list tabs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-30 22:02:14 +02:00
Rokojori 6eaa1d8685 fix: remove .js extensions from tool imports to match server convention
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-30 09:03:32 +02:00
Rokojori 2e5f3235be Tools Update 2026-07-30 08:44:46 +02:00
Rokojori dba0fdca1e history: tab container updates, EditorPanel interfaces, editor-shell bug fixes, workspace docs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-25 22:50:14 +02:00
Rokojori 3e25a419ca history: add session entry for 25 July 2026
Page editor panel: structured .page format, block registry, rich-text
toolbar, default-roject theme, wrapSelection helper.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-25 20:52:01 +02:00
Rokojori 420c682408 page-editor-panel: replace html-editor-panel with structured .page editor
Renames html-editor-panel → page-editor-panel and changes the handled
extension from .html/.htm to .page. The new editor introduces a structured
format (page-header / page-root / page-block / page-area / page-footer),
a block registry with Full Width and Two Columns templates, a two-mode
sidebar (Blocks / Areas), rich-text wrapSelection helper, auto-template
injection for empty files, sandbox="allow-same-origin" on the iframe,
and editor-style injection that is stripped before saving.

Adds a default-roject theme (dark BG, Barlow font, blue headings) embedded
as a <style> block in the page <head>, scoped to [data-theme="default-roject"]
on both <body> and <page-root>. Areas toolbar gains H1, H2, H3 buttons.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-24 21:07:32 +02:00
Rokojori 4a72363aaf session 2026-07-18: Electron local dev fixes, nav z-index, board/outline/history update
Electron fixes:
- extractToken (auth-connector): Bearer header checked before cookie — prevents stale
  Electron session cookie from winning over injected token
- JWT_CLOCK_TOLERANCE env var: passed to jwt.verify as clockTolerance; set to 7200
  in .env to absorb ~65 min clock skew between Windows dev machine and prod auth server
- Startup token refresh: main.ts calls POST /api/auth/refresh before opening main window;
  shows login on failure instead of opening with expired tokens
- Quit-on-login fix: createMainWindow() is async; login-success now awaits it before
  closing the login window (zero windows → app.quit() race was killing the process)
- Credential persistence: email + password stored in userData; remember-me checkbox
  controls save behaviour; clear button removes saved files; fields pre-fill on load
- Electron session cookies cleared in createMainWindow() to avoid stale token reuse

CSS: z-index: 10 on .pld-nav (project-list-default) — fixed mobile nav buried under rows

Boards: cleared Done lane, added Electron fixes and nav z-index entries; backlog MVP
entry for local testing solution; bugs.html: 401-handling bug moved to Done.
Outline: auth card updated with extractToken order note and JWT_CLOCK_TOLERANCE docs.
History: Friday 18 July entry expanded with session 2 cards.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-18 08:37:47 +02:00
Rokojori 6e3fe19395 code-panel: self-contained BrowserLexer; revert library-ts to fix ts-node
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-17 23:42:43 +02:00
Rokojori d96a1bf470 library-ts: update submodule pointer (lexer .js extension fixes)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-17 23:30:42 +02:00
Rokojori 5cd9f8e6c4 code-panel: lexer-driven CodeMirror mode with dynamic keyword sets; C# mode
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-17 23:20:21 +02:00
Rokojori 7bcd2d9021 code-panel: add clike/python/shell/yaml syntax highlighting modes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-17 22:56:50 +02:00
Rokojori 9a7a1f2b82 file-tree: focus existing panel if file already open; exclude pinned from available slots
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-17 22:36:49 +02:00
Rokojori 98729fc333 Editor: auth redirect, targeted file open, Godot file types
- editor-shell: redirect to / if not authenticated on load
- file-tree: open file in first clean matching panel, create new panel if all dirty
- Editor: add openDocumentIn() with targetElement for precise panel targeting
- panels: skip onDocumentOpened if targeted at a different panel
- FileEditorRegistry: add Godot extensions (gd, gdshader, gdshaderinc, gdinclude, glsl, tscn, tres, cs, gdextension)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-17 22:22:42 +02:00
Rokojori bbf208b3be Logger Udpate Sync 2026-07-17 21:27:43 +02:00
Rokojori 76c912cd0d Auth connector rewrite: relative imports, rawToken for tunnel forwarding 2026-07-17 15:49:29 +02:00
Rokojori b2a4890c71 Changed Alias Paths 2026-07-17 14:00:16 +02:00
Rokojori 51b8b9f008 Fixed Build Errors 2026-07-17 13:47:43 +02:00
Rokojori a8bfc95d1c Connector Rewrite 2026-07-17 13:37:48 +02:00
Rokojori 73e282af00 CSS Update 2 2026-07-16 21:19:59 +02:00
Rokojori db7a92e457 Mobile/Thinking Update 2026-07-16 21:08:27 +02:00
Rokojori 86fb8551fe CSS Update 2026-07-16 20:58:11 +02:00
Rokojori 1e8ec50f6e Update Server Auth FIx 2026-07-16 18:44:10 +02:00
Rokojori 403499341f tunnel: Electron agent, production deployment, streaming, Roject integration, chunk animation
— Electron Tunnel Agent app (tray, login, tunnel list, start/stop/delete/create)
— tunnel.rokojori.com deployed (nginx WS upgrade, systemd, certbot, port 3003)
— Streaming relay protocol: res_start/res_data/res_end replaces single-shot response
— Roject: browse-tunnels button in rojo-settings-panel, /tunnels/browse proxy route
— Roject: LLM chat via tunnel (TUNNEL_SERVER_URL, /v1 path, dual-source JWT)
— rojo-chat-panel: typeText() splits large relay chunks for smooth streaming appearance
— Boards, outline, and history updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-16 15:46:51 +02:00
Rokojori 614176d2a9 Art Update 2026-07-16 15:06:51 +02:00
Rokojori a061df2a66 Add Rojo system: settings panel, tunnel endpoint, character portrait, fun name generation 2026-07-16 15:06:33 +02:00
Rokojori 93f8c7bb33 tunneling: brainstorm, Phase 1 relay server built + tested, boards + history updated
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-16 07:27:48 +02:00
Rokojori 7c6fca54f9 history+boards+outline: styles.rokojori.com built, font migration, add-subdomain guide
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-15 20:39:06 +02:00
Rokojori 5e27849fa3 Styles Update 2026-07-15 17:13:06 +02:00
Rokojori acba5c819b redesign: project home, default theme, user settings, groups removed from UI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 22:27:03 +02:00
Rokojori 4b913eb53f Email Notifier Update 2026-07-14 15:45:27 +02:00
Rokojori d14c46307f Projects BugFix Update 2026-07-14 15:29:53 +02:00
Rokojori 99f6f787ec Projects Udpate 2026-07-14 15:05:04 +02:00
Rokojori 5bcabe2c67 boards: task/bug/backlog boards, outline shortened, workspace index improved
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 14:34:47 +02:00
Rokojori 7b9f7a1fb9 electron: desktop app shell — login, JWT auth, header injection, token persistence
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 13:31:11 +02:00
Rokojori 54267624bf history+outline+guides: CI/CD pipeline done, agent memory guide, CI improvements noted
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-13 21:56:25 +02:00
Rokojori f08126bd43 CI Follow Up Test 2026-07-13 21:46:48 +02:00
Rokojori aff52e6db9 CI Deployment Test 2026-07-13 21:45:35 +02:00
Rokojori a54d1042cf Deploy Udpate 2026-07-13 21:42:21 +02:00
Rokojori ddb25f72a0 ci: trigger 5th Actions run
Deploy / deploy (push) Has been cancelled Details
2026-07-13 20:50:37 +02:00
Rokojori a25e2d4782 ci: trigger 4th Actions run
Deploy / deploy (push) Failing after 0s Details
2026-07-13 20:43:56 +02:00
Rokojori 6919d6f0d0 ci: trigger third Actions run
Deploy / deploy (push) Failing after 0s Details
2026-07-13 20:38:22 +02:00
Rokojori d1193cc8df ci: trigger second Actions run
Deploy / deploy (push) Failing after 0s Details
2026-07-13 20:30:00 +02:00
Rokojori e2dd619a4a ci: trigger first Actions run
Deploy / deploy (push) Failing after 0s Details
2026-07-13 20:24:28 +02:00
Rokojori c79246b29c Updated Git Ignore 2026-07-13 20:12:33 +02:00