feat(docs-theme): continuous org→project→docs tree inside My Projects #182

Merged
haydar merged 1 commit from fix/docs-project-tree-ux into develop 2026-10-30 13:28:11 +00:00
Member

The sidebar Browse section is folded into My Projects: each project
row is now a lazy treeitem that expands the project's own bounded
tree (GET /api/v1/docs/{org}/projects/{project}/tree) in place —
folders and documents nest directly under their project. Several
projects stay expanded at once with independent per-space caches
(state.trees keyed by org/project), persisted expansion sets
(dwb.tree.exp per space, dwb.tree.projects for the open rows) and a
30s freshness window.

Project rows: name opens the space overview ({root} page), twisty
expands, + opens the docsMenu New Document/Folder scoped to the
space root (write:pages only), ⋯ opens the project context menu
(Open overview, Copy link, Favorite project, Open in Portal, and
the authz-gated structure writes). Folder/document rows keep the
treeNode behavior and gain the same + affordance — its parent_path
is the node's own path. Unprovisioned projects render as unlinked
leaf rows.

Auto-expand resolves the document in view via the nav bindings
(projectForPath, rebound roots included) or the canonical path
shape, then opens org → project → ancestors so a direct URL,
bookmark or refresh lands expanded with the active document
highlighted. Org open-state honors the visitor's session choices.

Favorites fix: the 'No favorites yet' placeholder is appended only
after the document/project/repository lists populate — the union
empty-state can no longer render ahead of real favorites.

Also: verify-docs-theme step added to the test-deploy pipeline
(same served-fingerprint check as staging, resolved via the test
service uuid), roving tabindex restored across the merged tree, and
dead Browse-section styles removed from inject.css.

The sidebar Browse section is folded into My Projects: each project row is now a lazy treeitem that expands the project's own bounded tree (GET /api/v1/docs/{org}/projects/{project}/tree) in place — folders and documents nest directly under their project. Several projects stay expanded at once with independent per-space caches (state.trees keyed by org/project), persisted expansion sets (dwb.tree.exp per space, dwb.tree.projects for the open rows) and a 30s freshness window. Project rows: name opens the space overview ({root} page), twisty expands, + opens the docsMenu New Document/Folder scoped to the space root (write:pages only), ⋯ opens the project context menu (Open overview, Copy link, Favorite project, Open in Portal, and the authz-gated structure writes). Folder/document rows keep the treeNode behavior and gain the same + affordance — its parent_path is the node's own path. Unprovisioned projects render as unlinked leaf rows. Auto-expand resolves the document in view via the nav bindings (projectForPath, rebound roots included) or the canonical path shape, then opens org → project → ancestors so a direct URL, bookmark or refresh lands expanded with the active document highlighted. Org open-state honors the visitor's session choices. Favorites fix: the 'No favorites yet' placeholder is appended only after the document/project/repository lists populate — the union empty-state can no longer render ahead of real favorites. Also: verify-docs-theme step added to the test-deploy pipeline (same served-fingerprint check as staging, resolved via the test service uuid), roving tabindex restored across the merged tree, and dead Browse-section styles removed from inject.css.
feat(docs-theme): continuous org→project→docs tree inside My Projects
All checks were successful
ci / commit-trailers (pull_request) Successful in 11s
ci / secret-scan (pull_request) Successful in 18s
ci / release-tests (pull_request) Successful in 1m45s
ci / portal-frontend (pull_request) Successful in 52s
ci / integrations-js (pull_request) Successful in 34s
ci / openproject-spec (pull_request) Successful in 45s
ci / portal-php (pull_request) Successful in 6m39s
ci / openproject-rspec (pull_request) Successful in 4m52s
9830385476
The sidebar Browse section is folded into My Projects: each project
row is now a lazy treeitem that expands the project's own bounded
tree (GET /api/v1/docs/{org}/projects/{project}/tree) in place —
folders and documents nest directly under their project. Several
projects stay expanded at once with independent per-space caches
(state.trees keyed by org/project), persisted expansion sets
(dwb.tree.exp per space, dwb.tree.projects for the open rows) and a
30s freshness window.

Project rows: name opens the space overview ({root} page), twisty
expands, + opens the docsMenu New Document/Folder scoped to the
space root (write:pages only), ⋯ opens the project context menu
(Open overview, Copy link, Favorite project, Open in Portal, and
the authz-gated structure writes). Folder/document rows keep the
treeNode behavior and gain the same + affordance — its parent_path
is the node's own path. Unprovisioned projects render as unlinked
leaf rows.

Auto-expand resolves the document in view via the nav bindings
(projectForPath, rebound roots included) or the canonical path
shape, then opens org → project → ancestors so a direct URL,
bookmark or refresh lands expanded with the active document
highlighted. Org open-state honors the visitor's session choices.

Favorites fix: the 'No favorites yet' placeholder is appended only
after the document/project/repository lists populate — the union
empty-state can no longer render ahead of real favorites.

Also: verify-docs-theme step added to the test-deploy pipeline
(same served-fingerprint check as staging, resolved via the test
service uuid), roving tabindex restored across the merged tree, and
dead Browse-section styles removed from inject.css.
haydar scheduled this pull request to auto merge when all checks succeed 2026-10-30 13:21:19 +00:00
haydar merged commit d3e8aa0632 into develop 2026-10-30 13:28:11 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
developing4all/devworkbase!182
No description provided.