diff --git a/electron/main.ts b/electron/main.ts index 47b5c21..e2d96f7 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -117,7 +117,7 @@ function createMainWindow(): void { title: 'Roject', } ); - mainWindow.loadURL( `http://localhost:${PORT}/dashboard.html` ); + mainWindow.loadURL( `http://localhost:${PORT}/` ); const localBase = `http://localhost:${PORT}/`; @@ -137,7 +137,7 @@ function createMainWindow(): void { if ( url.includes( '/api/auth/refresh-session' ) ) { event.preventDefault(); const redirectParam = new URL( url ).searchParams.get( 'redirect' ); - const fallback = `http://localhost:${PORT}/dashboard.html`; + const fallback = `http://localhost:${PORT}/`; if ( currentTokens ) { const fresh = await refreshTokens( currentTokens.refreshToken ); diff --git a/source/components/editor-shell/editor-shell.ts b/source/components/editor-shell/editor-shell.ts index 9049be9..f396101 100644 --- a/source/components/editor-shell/editor-shell.ts +++ b/source/components/editor-shell/editor-shell.ts @@ -66,7 +66,7 @@ class EditorShell extends HTMLElement { this.innerHTML = `
Loading…
+ Review what was done in a session and keep the three boards accurate — + moving completed tasks and bugs to Done, adding new To Do items, and + recommending whether Update Outline is also needed. +
++ Read the action +
+diff --git a/workspace/actions/update-board/index.html b/workspace/actions/update-board/index.html new file mode 100644 index 0000000..a03c335 --- /dev/null +++ b/workspace/actions/update-board/index.html @@ -0,0 +1,98 @@ + + +
+ + +Review what was done in this session and keep the three boards accurate.
++ At an appropriate point in a working session, read the boards and the recent git + history, then propose which items should move, be added, or be removed. + Present the proposal to the user first. Only after approval, apply the changes. + Never move items silently. +
+Read all three board files:
+workspace/boards/tasks.html
+workspace/boards/bugs.html
+workspace/boards/backlog.html
+ + Also read the recent git log and the current session's history entry (if one exists) + to understand what was actually completed. +
++ Present a clear proposal to the user before touching any file. + For each proposed change, state the item name, the board, and the action: +
++ Also note whether Update Outline should be run — recommend it + when new systems, subsystems, or conventions were added that the outline does not + yet describe. +
+Wait for the user to confirm before continuing.
++ After the user approves the proposal, edit the board HTML files accordingly. + Use the correct colour class for each lane: +
+class="green hide-content" — Done (Tasks)class="red hide-content" — Critical (Bugs)class="yellow hide-content" — In Progress (Tasks) or Visual/UI/UX (Bugs)class="blue hide-content" — To Do (Tasks) or MVP (Backlog)class="purple hide-content" — Nice To Have (Backlog)class="orange hide-content" — To The Moon (Backlog)+ Keep the Done lane in Tasks focused — if it grows beyond three or four items, + ask the user whether old Done items should be cleared out. +
+
+ Added UserSetting interface and userSettings CRUD module
+ to source/server/db.ts (persisted in user_settings.json).
+ Created source/server/routes/userSettings.ts with
+ GET / PUT /api/user/settings (requires auth).
+ Cleaned up source/server/index.ts: removed the groups router and
+ explicit / redirect; added /edit → /editor.html
+ redirect and wired the new userSettings route.
+
+ New source/pages/index.html entry point loads Barlow 900 Italic
+ from Google Fonts and the project-home component.
+ project-home checks auth: logged-out → full-screen dark hero with
+ brand text and login link; logged-in → fetches user settings, reads
+ settings.theme, and dynamically imports the matching theme component
+ (project-list-default by default; project-list-italic-neon
+ planned).
+
+ Full default theme: dark radial-gradient background, fixed nav with Roject logo
+ (webp, inner area positioned at 70% scale) and a user-group element where hover
+ slides in "Log out" beneath the email — clicking anywhere triggers logout.
+ Each project row: 7em×7em rounded badge with project colour (hue from UUID via
+ 31-hash), radial-gradient fill (centre at 51% alpha), Barlow 900 Italic skewed
+ name in project colour. Hover reveals delete (×) and members buttons over the
+ badge corners. A "New Project…" dashed-outline card sits first in the list and
+ opens a name dialog on click. Rows animate in staggered on load.
+ Back arrow in the editor updated to /.
+
+ The redesign spec removed groups entirely from the frontend and server routes.
+ The data layer (groups / groupMembers in db.ts) is
+ retained in case groups return later via rokojori-auth; only the router and all
+ UI references were deleted.
+
+ JWT settings from rokojori-auth are read-only. A local
+ user_settings.json DB file with a generic
+ Record<string, unknown> value map provides per-user persistence
+ for any app setting (starting with theme) without requiring changes
+ to the auth service.
+
- See Tasks board for the current sprint. - Local filesystem access and remote projects in Electron are the two active items. + Italic Neon theme (batch 2): skewed cards, warm→cold gradient, hand-crafted SVG + pattern icons (13 files already drawn), daily auto-rotation + user toggle. + See Tasks board for the full sprint.
Electron desktop app shell — login window, JWT auth via API, Authorization header injection, token persistence, ROJECT_ROOT path fix, ELECTRON_RUN_AS_NODE workaround. Workspace boards system (Tasks/Bugs/Backlog) with custom task-item elements; outline shortened; workspace index quick orientation added.
+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.
- Groups and projects with member management (viewer / editor / admin roles).
+ Projects with member management (viewer / editor / admin roles).
Each project gets a real directory on disk at storage/<uuid>/root/
with a default index.html on creation. All data lives as JSON files
- in data/ — no external database.
+ in build/data/db/ — no external database. Groups exist in the data
+ layer but have been removed from the UI; they may return later via rokojori-auth.
+
+ The root / serves a new index.html entry point that
+ loads the project-home component. Logged-out users see a full-screen
+ dark hero; logged-in users get the active theme component dynamically imported.
+ The default theme (project-list-default) renders a dark
+ radial-gradient page with a Roject logo nav, per-project coloured badges (hue
+ from UUID via 31-hash, hsl(h, 95%, 45%)), Barlow 900 Italic
+ uppercase project names, hover-revealed delete / member buttons, and a dashed
+ "New Project" card that opens a name dialog on click. Theme preference is
+ persisted server-side in user_settings.json via
+ GET / PUT /api/user/settings. A second theme (Italic Neon) is
+ planned. /edit redirects to the existing /editor.html.
+ source/server/projectAccess.ts is the single point of truth for
+ ownership and membership checks. GET /api/projects filters to
+ projects the requesting user owns or is a member of. Every file route
+ (tree, read, write, rename, delete) calls checkAccess() before
+ touching the filesystem. Delete and member-management routes verify ownership.
+ Members are currently stored by email address (Option B interim);
+ memberMatchesUser() is the one line to change when migrating to
+ user-ID-based lookup via rokojori-auth.
+
@@ -85,6 +117,9 @@
An EmailService facade (source/server/email/) provides
a sendEmail() entry point backed by a swappable EmailSender
interface; the default is SMTPEmailSender (Nodemailer).
+ EmailService.reportEmail is a static field holding the admin
+ notification address; Roject sends emails on server startup and on each
+ verified deploy request.