2026-07-14 12:34:47 +00:00
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<html lang="en">
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
|
<title>Bugs - Roject</title>
|
|
|
|
|
<link rel="stylesheet" href="../_assets_/styles.css">
|
|
|
|
|
<link rel="stylesheet" href="../_assets_/nav.css">
|
|
|
|
|
<link rel="stylesheet" href="../_assets_/boards.css">
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<div class="board-page">
|
|
|
|
|
|
|
|
|
|
<header>
|
|
|
|
|
<p class="date">Board</p>
|
|
|
|
|
<h1>Bugs</h1>
|
|
|
|
|
<p class="subtitle">Click a task title to expand or collapse its content.</p>
|
|
|
|
|
</header>
|
|
|
|
|
|
|
|
|
|
<div class="board">
|
|
|
|
|
|
|
|
|
|
<div class="lane">
|
|
|
|
|
<div class="lane-header">Critical</div>
|
|
|
|
|
|
|
|
|
|
<task-item class="red hide-content">
|
|
|
|
|
<task-title>401 Not Handled in Data-Fetching Components</task-title>
|
|
|
|
|
<task-content>
|
2026-07-15 18:39:06 +00:00
|
|
|
Components that fetch data do not handle 401 responses gracefully — they crash
|
|
|
|
|
when the API returns an error object instead of an array. Groups and the old
|
|
|
|
|
projects page have been removed; the current surfaces to check are project-home
|
|
|
|
|
and its theme components (project-list-default). Should show an appropriate
|
|
|
|
|
message or redirect to the refresh-session endpoint when a 401 is received.
|
2026-07-14 12:34:47 +00:00
|
|
|
</task-content>
|
|
|
|
|
</task-item>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="lane">
|
|
|
|
|
<div class="lane-header">Visual / UI / UX</div>
|
|
|
|
|
|
|
|
|
|
<task-item class="yellow hide-content">
|
|
|
|
|
<task-title>Code Editor Needs Click to Show Content</task-title>
|
|
|
|
|
<task-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.
|
|
|
|
|
</task-content>
|
|
|
|
|
</task-item>
|
|
|
|
|
|
|
|
|
|
<task-item class="yellow hide-content">
|
|
|
|
|
<task-title>Right Panel Has No Default Content</task-title>
|
|
|
|
|
<task-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.
|
|
|
|
|
</task-content>
|
|
|
|
|
</task-item>
|
|
|
|
|
|
|
|
|
|
<task-item class="yellow hide-content">
|
|
|
|
|
<task-title>Portrait Mode Section Switcher Not Wired</task-title>
|
|
|
|
|
<task-content>
|
|
|
|
|
The secondary section switcher in portrait mode (when a panel has multiple
|
|
|
|
|
side-by-side sections) is not yet functional.
|
|
|
|
|
</task-content>
|
|
|
|
|
</task-item>
|
|
|
|
|
|
2026-07-14 20:27:03 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="lane">
|
|
|
|
|
<div class="lane-header">Done</div>
|
|
|
|
|
|
|
|
|
|
<task-item class="green hide-content">
|
|
|
|
|
<task-title>Projects Lookup/Editing Broken</task-title>
|
|
|
|
|
<task-content>
|
|
|
|
|
Fixed. GET /api/projects now filters to owner-or-member only. All file routes
|
|
|
|
|
(tree, read, write, rename, delete) go through checkAccess() in projectAccess.ts.
|
|
|
|
|
Delete and member-management routes verify ownership. A single memberMatchesUser()
|
|
|
|
|
function centralises the comparison so migrating from email to user ID later
|
|
|
|
|
requires changing one line.
|
|
|
|
|
</task-content>
|
|
|
|
|
</task-item>
|
|
|
|
|
|
|
|
|
|
<task-item class="green hide-content">
|
2026-07-14 12:34:47 +00:00
|
|
|
<task-title>Member List Shows Raw UUIDs</task-title>
|
|
|
|
|
<task-content>
|
2026-07-14 20:27:03 +00:00
|
|
|
Fixed. Members are now stored by email (Option B interim). The member panel
|
|
|
|
|
shows the owner's email first, then added members by email with their role badge.
|
|
|
|
|
Add-member form takes an email address and role; the member_type select is gone.
|
2026-07-14 12:34:47 +00:00
|
|
|
</task-content>
|
|
|
|
|
</task-item>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<footer>
|
|
|
|
|
Roject — bugs
|
|
|
|
|
</footer>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<script>var NAV_ROOT = '../';</script>
|
|
|
|
|
<script src="../_assets_/nav-data.js"></script>
|
|
|
|
|
<script src="../_assets_/nav.js"></script>
|
|
|
|
|
<script>
|
|
|
|
|
document.querySelectorAll( 'task-title' ).forEach( title =>
|
|
|
|
|
{
|
|
|
|
|
title.addEventListener( 'click', () =>
|
|
|
|
|
{
|
|
|
|
|
title.closest( 'task-item' ).classList.toggle( 'hide-content' );
|
|
|
|
|
} );
|
|
|
|
|
} );
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|