diff --git a/workspace/_assets_/boards.css b/workspace/_assets_/boards.css new file mode 100644 index 0000000..846590c --- /dev/null +++ b/workspace/_assets_/boards.css @@ -0,0 +1,86 @@ +.board-page +{ + max-width: 75em; + margin: 0 auto; +} + +.board +{ + display: flex; + gap: calc( var( --font-size ) * 1.5 ); + align-items: flex-start; +} + +.lane +{ + flex: 1; + min-width: 0; +} + +.lane-header +{ + font-size: calc( var( --font-size ) * 1.1 ); + font-weight: 600; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var( --accent ); + margin-bottom: calc( var( --font-size ) * 1 ); + padding-bottom: calc( var( --font-size ) * 0.5 ); + border-bottom: 1px solid var( --border ); +} + +task-item +{ + display: block; + background: var( --surface ); + border: 1px solid var( --item-color, var( --border ) ); + border-radius: 8px; + margin-bottom: calc( var( --font-size ) * 0.75 ); + overflow: hidden; +} + +task-title +{ + display: block; + padding: calc( var( --font-size ) * 0.5 ) calc( var( --font-size ) * 0.85 ); + font-size: calc( var( --font-size ) * 0.9 ); + font-weight: 600; + color: var( --item-color, var( --text ) ); + cursor: pointer; + user-select: none; + line-height: 1.5; +} + +task-title::before +{ + content: '▾ '; + font-size: 0.75em; + opacity: 0.6; +} + +task-item.hide-content task-title::before +{ + content: '▸ '; +} + +task-content +{ + display: block; + padding: calc( var( --font-size ) * 0.4 ) calc( var( --font-size ) * 0.85 ) calc( var( --font-size ) * 0.65 ); + font-size: calc( var( --font-size ) * 0.85 ); + color: var( --muted ); + border-top: 1px solid var( --border ); + line-height: 1.6; +} + +task-item.hide-content task-content +{ + display: none; +} + +task-item.red { --item-color: #c96b6b; } +task-item.green { --item-color: #57a870; } +task-item.blue { --item-color: #7c8cff; } +task-item.yellow { --item-color: #c4a040; } +task-item.purple { --item-color: #9060d0; } +task-item.orange { --item-color: #c47840; } diff --git a/workspace/_assets_/nav-data.js b/workspace/_assets_/nav-data.js index 8d78269..294beac 100644 --- a/workspace/_assets_/nav-data.js +++ b/workspace/_assets_/nav-data.js @@ -2,6 +2,15 @@ var NAV_DATA = { title: 'Workspace', path: 'index.html', children: [ + { + title: 'Boards', + path: 'boards/index.html', + children: [ + { title: 'Tasks', path: 'boards/tasks.html' }, + { title: 'Bugs', path: 'boards/bugs.html' }, + { title: 'Backlog', path: 'boards/backlog.html' }, + ] + }, { title: 'Outline', path: 'outline/index.html', diff --git a/workspace/_assets_/roject.svg b/workspace/_assets_/roject.svg index 9d45528..321fb7c 100644 --- a/workspace/_assets_/roject.svg +++ b/workspace/_assets_/roject.svg @@ -26,8 +26,8 @@ inkscape:document-units="px" showgrid="false" inkscape:zoom="0.20890503" - inkscape:cx="1969.7946" - inkscape:cy="1179.962" + inkscape:cx="1605.9929" + inkscape:cy="1093.7985" inkscape:window-width="1920" inkscape:window-height="1017" inkscape:window-x="-8" @@ -35,6 +35,34 @@ inkscape:window-maximized="1" inkscape:current-layer="g17" />COMPUTER! ZOOM IN! + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';fill:#00cbf5;fill-opacity:1;stroke-width:16.8787">COMPUTER! ZOOM IN!ROJECTROJECTROJECT diff --git a/workspace/_assets_/styles.css b/workspace/_assets_/styles.css index cf470c9..88ff6a3 100644 --- a/workspace/_assets_/styles.css +++ b/workspace/_assets_/styles.css @@ -198,3 +198,90 @@ pre code padding: 0; font-size: inherit; } + +.board-page +{ + max-width: 75em; + margin: 0 auto; +} + +.board +{ + display: flex; + gap: calc( var( --font-size ) * 1.5 ); + align-items: flex-start; +} + +.lane +{ + flex: 1; + min-width: 0; +} + +.lane-header +{ + font-size: calc( var( --font-size ) * 1.1 ); + font-weight: 600; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var( --accent ); + margin-bottom: calc( var( --font-size ) * 1 ); + padding-bottom: calc( var( --font-size ) * 0.5 ); + border-bottom: 1px solid var( --border ); +} + +task-item +{ + display: block; + background: var( --surface ); + border: 1px solid var( --item-color, var( --border ) ); + border-radius: 8px; + margin-bottom: calc( var( --font-size ) * 0.75 ); + overflow: hidden; +} + +task-title +{ + display: block; + padding: calc( var( --font-size ) * 0.5 ) calc( var( --font-size ) * 0.85 ); + font-size: calc( var( --font-size ) * 0.9 ); + font-weight: 600; + color: var( --item-color, var( --text ) ); + cursor: pointer; + user-select: none; + line-height: 1.5; +} + +task-title::before +{ + content: '▾ '; + font-size: 0.75em; + opacity: 0.6; +} + +task-item.hide-content task-title::before +{ + content: '▸ '; +} + +task-content +{ + display: block; + padding: calc( var( --font-size ) * 0.4 ) calc( var( --font-size ) * 0.85 ) calc( var( --font-size ) * 0.65 ); + font-size: calc( var( --font-size ) * 0.85 ); + color: var( --muted ); + border-top: 1px solid var( --border ); + line-height: 1.6; +} + +task-item.hide-content task-content +{ + display: none; +} + +task-item.red { --item-color: #c96b6b; } +task-item.green { --item-color: #57a870; } +task-item.blue { --item-color: #7c8cff; } +task-item.yellow { --item-color: #c4a040; } +task-item.purple { --item-color: #9060d0; } +task-item.orange { --item-color: #c47840; } \ No newline at end of file diff --git a/workspace/boards/backlog.html b/workspace/boards/backlog.html new file mode 100644 index 0000000..29414d7 --- /dev/null +++ b/workspace/boards/backlog.html @@ -0,0 +1,98 @@ + + + + + + Backlog - Roject + + + + + +
+ +
+

Board

+

Backlog

+

Big visions and user stories. Too complex or vague for tasks, but important for direction.

+
+ +
+ +
+
MVP
+ + + Local Git Repository Integration + + Git integration inside the editor: file status indicators in the tree, staging, + commit, push, pull, diffs, and history. Depends on local filesystem access. + Once Roject can open an arbitrary local directory, the git repo is already there. + Implementation via simple-git (thin Node.js wrapper around the git CLI). + + + +
+ +
+
Nice To Have
+ + + Internet Tunnel / Port Relay + + Allow local devices — a Stable Diffusion instance, a local LLM, a GDScript language + server — to be accessible to authorised Roject users over the internet, routed through + the Roject server via a persistent WebSocket. Primary use case: phone as a thin client + while the main machine handles all heavy processing. + + + + + Real-Time Multi-User Collaboration + + Multiple users editing the same file simultaneously with presence indicators + and conflict resolution. Likely via operational transforms or CRDTs. + Significant architecture work; not planned for the near term. + + + +
+ +
+
To The Moon
+ + + Mobile App (PWA first, native shell later) + + Make Roject usable on a phone or tablet. Quickest path: PWA with a manifest + and service worker — works in Safari and Chrome on Android and iOS without an + app store. If native capabilities are later needed, Capacitor can wrap the same + web app. A React Native or Flutter rewrite is not planned. + The realistic mobile workflow is browsing files, reading output, and light edits + rather than heavy coding. + + + +
+ +
+ +
+ Roject — backlog +
+ +
+ + + + + + diff --git a/workspace/boards/bugs.html b/workspace/boards/bugs.html new file mode 100644 index 0000000..2026bb3 --- /dev/null +++ b/workspace/boards/bugs.html @@ -0,0 +1,102 @@ + + + + + + Bugs - Roject + + + + + +
+ +
+

Board

+

Bugs

+

Click a task title to expand or collapse its content.

+
+ +
+ +
+
Critical
+ + + Projects Lookup/Editing Broken + + The projects a user can view should only be the ones the user created + or is a member of. Currently a second account can open and edit the content + of a project belonging to the first account. + + + + + 401 Not Handled in Data-Fetching Components + + Components that fetch data (groups, projects, etc.) do not handle 401 responses + gracefully — they crash when the API returns an error object instead of an array. + Should show an appropriate message or redirect to login. + + + +
+ +
+
Visual / UI / UX
+ + + Code Editor Needs Click to Show Content + + The code editor's content is not rendered immediately — it needs a click to show up. + This happens when selecting a fresh new tab or when a file is selected. + + + + + Right Panel Has No Default Content + + The Right panel is empty by default and relies on manual tab dragging to populate. + Should show a placeholder or hint explaining what to do. + + + + + Portrait Mode Section Switcher Not Wired + + The secondary section switcher in portrait mode (when a panel has multiple + side-by-side sections) is not yet functional. + + + + + Member List Shows Raw UUIDs + + The member list UI displays raw UUIDs instead of usernames. + Should resolve user IDs to display names via the auth service. + + + +
+ +
+ +
+ Roject — bugs +
+ +
+ + + + + + diff --git a/workspace/boards/index.html b/workspace/boards/index.html new file mode 100644 index 0000000..6623066 --- /dev/null +++ b/workspace/boards/index.html @@ -0,0 +1,57 @@ + + + + + + Boards — Roject + + + + +
+ +
+

Boards

+

Roject

+

Planning and tracking boards for development work.

+
+ +
+ +
+

Tasks

+

+ Current development sprint. Active work items with To Do, In Progress, and Done lanes. + We try to keep this focused — only things being worked on now or very soon. +

+
+ +
+

Bugs

+

+ Known issues we want to fix later. Organized by severity: Critical for things that + break correctness or security, Visual/UI/UX for things that look or feel wrong. +

+
+ +
+

Backlog

+

+ Big user stories and visions. Too complex or vague to be tasks, but important for + understanding the direction. Lanes: MVP for the core product vision, + Nice To Have for quality-of-life additions, To The Moon for longer-horizon ambitions. +

+
+ +
+ +
+ Roject — boards +
+ +
+ + + + + diff --git a/workspace/boards/tasks.html b/workspace/boards/tasks.html new file mode 100644 index 0000000..e2aca73 --- /dev/null +++ b/workspace/boards/tasks.html @@ -0,0 +1,122 @@ + + + + + + Tasks - Roject + + + + + +
+ +
+

Board

+

Tasks

+

Click a task title to expand or collapse its content.

+
+ +
+ +
+
To Do
+ + + Remote Projects in Electron + + Allow the Electron app to connect to roject.rokojori.com and list remote projects + alongside local ones. The JWT is already available; + it's a matter of pointing requests at the remote URL with the token. + + + + + Unauthenticated Landing Screen + + Unauthenticated users currently crash on dashboard components. + They should land on a screen that explains the app and shows a login link. + + + + + Replace browser confirm() in group editor and account delete + + The group editor and account delete button still use the browser confirm() dialog. + Replace with the custom <confirm-dialog> component already used elsewhere. + + + + + MediaViewerPanel for images and PDFs + + Non-text files (images, PDFs) are visible in the file tree but not openable. + Add a MediaViewerPanel and register it in FileEditorRegistry for common media types. + + + + + CI deploy email notification + + The /api/deploy endpoint should send an email notification after each successful + restart so deploys are visible without checking server logs. + + + + + Switch Gitea webhook to dev branch + + The Gitea webhook currently triggers on pushes to main, redeploying on every commit. + Switch to a dev branch so main is the stable release target. + + + +
+ +
+
In Progress
+ + + Local Filesystem Access + + Extend the file tree to browse arbitrary directories on the host + machine using Node.js fs rather than the server's JSON-backed project storage. + + + +
+ +
+
Done
+ + + Electron Desktop App Shell + + Login window, JWT auth via API, Authorization header injection, token persistence, + ROJECT_ROOT path fix, ELECTRON_RUN_AS_NODE workaround. Full local-only Electron app working. + + + +
+ +
+ +
+ Roject — tasks +
+ +
+ + + + + + diff --git a/workspace/history/2026/07-July/14-Monday/index.html b/workspace/history/2026/07-July/14-Monday/index.html index a5da022..f96f4ba 100644 --- a/workspace/history/2026/07-July/14-Monday/index.html +++ b/workspace/history/2026/07-July/14-Monday/index.html @@ -161,20 +161,60 @@ +
+

Workspace boards system

+ +
+

Task boards (workspace/boards/)

+

+ A new Boards section added to the workspace with three boards: + Tasks (current sprint, To Do / In Progress / Done), + Bugs (Critical and Visual/UI/UX lanes), + Backlog (MVP / Nice To Have / To The Moon). + Each board uses custom HTML elements — <task-item>, + <task-title>, <task-content> — styled + to match the workspace visual language (CSS variables, same spacing rhythm, + lane headers matching section h2). Clicking a title toggles + the content open/closed via hide-content class. + Shared styles extracted to workspace/_assets_/boards.css. +

+
+ workspace/boards/ + task-item + boards.css +
+
+ +
+

Outline shortened

+

+ workspace/outline/index.html was rewritten to remove the long + numbered to-do list and the "Smaller open improvements" bullet list. + Those items were distributed across the three boards. + The outline now covers only: what Roject is, what exists now (condensed into + named cards), a one-card pointer to the boards, and the technical implementation + reference. About half the original length. +

+
+ +
+

Workspace index improved

+

+ workspace/index.html gained a Boards card and a + "Quick orientation" section with separate guidance for humans and agents: + read Outline → Guides → Reference before making changes; check Boards and + the most recent History entry for current context. +

+
+
+

What's next

- Local filesystem access — extend the file tree to browse arbitrary directories - on the host machine using Node.js fs rather than the server's - JSON-backed project storage. -

-

- Remote projects in Electron — allow the Electron app to connect to a remote - Roject server (roject.rokojori.com) and list projects hosted - there alongside local ones. The JWT is already available; it's a matter of - pointing a request (or a BrowserView panel) at the remote URL with the token. + See Tasks board for the current sprint. + Local filesystem access and remote projects in Electron are the two active items.

diff --git a/workspace/history/index.html b/workspace/history/index.html index 2cd78c2..a72e377 100644 --- a/workspace/history/index.html +++ b/workspace/history/index.html @@ -21,7 +21,7 @@

Monday, 14 July 2026

-

Electron desktop app shell — login window, JWT auth via API, Authorization header injection, token persistence, ROJECT_ROOT path fix, ELECTRON_RUN_AS_NODE workaround.

+

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.

diff --git a/workspace/index.html b/workspace/index.html index f84eb02..cbd1587 100644 --- a/workspace/index.html +++ b/workspace/index.html @@ -17,15 +17,24 @@
-

Outline

- Explains Roject's goals, features and future plans for the project. + What Roject is, what exists now, and the technical implementation. + Start here for the big picture.
+ Read the outline +

+
- Read more about the outline +
+

Boards

+

+ Current state at a glance: active tasks, known bugs, and longer-horizon backlog. + Check here to know what is being worked on right now. +
+ Open the boards

@@ -34,8 +43,7 @@

Context, rules, workflows and examples for how to do things.
- - Read more about the guides + Read the guides

@@ -44,18 +52,16 @@

Named tasks and steps for recurring topics.
- - Read more about the actions + Read the actions

History

- Per-day history that gives insights about the daily work. + Per-day session log. Good for understanding what changed and why.
- - Read more about the history + Read the history

@@ -64,18 +70,27 @@

Technical reference for core systems: the Editor singleton, events, and the client/server compilation split.
- - Read more about the reference + Read the reference

- -
- To get the full picture, follow each page (as human or agent). -
- +
+

Quick orientation

+ +
+

+ New here? Read Outline for the big picture, then Guides for how things are done. + Check Boards for what is active right now. +

+

+ Agents: read Outline → Guides → Reference before making changes. + Check Boards and the most recent History entry to understand the current context. + Follow all coding conventions in the Guides — do not infer style from existing code alone. +

+
+