Skip to content

fix(org-ui): full-width Organization pages and scrollable bodies - #70

Draft
XYAIStudio wants to merge 3 commits into
mainfrom
cursor/org-subpage-layout-abe8
Draft

XYAIStudio wants to merge 3 commits into
mainfrom
cursor/org-subpage-layout-abe8

Conversation

@XYAIStudio

@XYAIStudio XYAIStudio commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Summary

Organization submodule pages under /organization/... were a centered slim column (max-width: 880–1040px) and, with PageShell fill + overflow: hidden, could not be scrolled when content was taller than the viewport.

This PR keeps the FreeOS shell (sidebar + Organization path tabs) and makes the page body full-bleed like Chat / Knowledge / Settings, with a scrollable content region.

Follow-up: Organization Tasks discussion is now one embedded conversation pane (not a comment list plus an empty right-hand detail column).

Target branch

  • Base is develop (feature / fix — default)
  • Base is main (this repo’s default; develop is not present)

Type of change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Refactor / chore
  • Release / hotfix

What changed

Layout / scroll

  • Shared dashboard/src/org-ui/layout/orgPage.module.csswidth: 100%, no centered max-width.
  • All migrated org-ui .page wrappers compose that shell.
  • PageShell fill (and mobile path-tabs) now wrap children in page-shell-scroll-body (overflow-y: auto) so tall pages scroll instead of clipping.
  • Organization adapters use ORG_PAGE_SHELL (fill + pathTabsPlacement="below-title") so 12 module tabs sit in two rows under the title, matching Personalization.

Tasks conversation (this follow-up)

  • TaskDetailPage no longer uses a 2-column “comments list | sparse status/assignee” split.
  • Left stack: task metadata, subtasks (with progress), status transition / completed state, assignee.
  • Right pane (org-task-conversation): one chat-style panel — scrollable thread (avatars, bubbles, user vs comment_type=ai) + composer with Send. Empty state when there are no comments.
  • Logic unchanged: still GET/POST /api/org-module/tasks/:id/comments via the injected OrgTasksClient. No FreeOS Chat runtime, no iframe.
  • Composer Enter sends (Shift+Enter keeps a newline), matching a conversation composer rather than a disconnected notes list.

Visual / interaction closer to openXYOS OpenApp

  • Announcements: pinned ring, hover shadow, unread pill, empty icon, Eye on read %.
  • Tasks list: full-width search, status pills with counts, empty icon; row is no longer a nested <button>.
  • Employees / skills / knowledge cards: hover lift; employees empty icon.
  • Inner titles aligned with originals where host APIs allow (人机资源, 任务管理, 治理引擎, 反思引擎).

Standalone export

  • Extra padding on [data-testid^="org-ui-"] so the same pages are usable without PageShell.

Pages touched

Adapters: workbench, workspace, announcements, org chart, employees (+ detail), skills, governance, knowledge, tasks (+ detail), reflections, settings, agents.

org-ui: shared layout + CSS/pages above. PageShell (all fill pages, including Knowledge Bases / Personalization).

Tasks-specific: dashboard/src/org-ui/pages/tasks/TaskDetailPage.tsx, TasksPage.module.css, labels.ts, TaskDetailPage.test.tsx.

Intentional remaining differences

  • Ant Design tokens/controls vs original Tailwind OpenApp (buttons, tags, tables, modals).
  • Org chart remains a nested department list, not the canvas / zoom / export original (html-to-image / jsPDF). Host /api/org-module/org has no layout/version/import APIs.
  • Employees is the host directory (human / AI). No talent-market / reserve / offboarding tabs — those APIs are not on the host.
  • Skills is generate/publish catalog wrappers, not the sidecar marketplace / plugin center.
  • Governance is host PEP pauses + audit JSONL, not the sidecar permission-matrix / comm-rules / process-templates engine.
  • Knowledge lists host knowledge_bases (same rows Chat uses), not sidecar notes/files folders.
  • Settings edits org module toggles + local prefs; models/users/timezone stay on /system-settings.
  • Chat remains FreeOS-native (not openXYOS Chat). Task discussion is host comments styled as a conversation, not a second chat runtime.
  • Task attachments are not shown: host /api/org-module/tasks has no attachments API (openXYOS TaskDetail lists them).
  • Task list and detail remain separate routes (/organization/tasks and /organization/tasks/:id), same as openXYOS /tasks and /tasks/:id.

Test plan

  • make all after this Tasks follow-up (in progress)
  • Added/updated tests
cd dashboard && npm test -- src/layouts/PageShell.test.tsx \
  src/org-ui/layout/orgPage.module.css.test.ts \
  src/org-ui/pages/**/*.test.tsx \
  src/pages/Organization/index.test.tsx

Focused Tasks vitest (8 tests) passed after the conversation merge. Browser E2E of Organization routes was not run in this environment (no running FreeOS UI). Closest substitute: unit tests + CSS contract test that .page is not a centered max-width column.

Checklist

  • Updated CHANGELOG.md (if user-facing)
  • README / docs updated (if needed)
Open in Web Open in Cursor 

cursoragent and others added 3 commits September 19, 2026 08:44
Remove the centered max-width column on migrated org-ui pages so they
match sibling FreeOS Dashboard content width. Pin Organization path
tabs below the title and scroll the PageShell body when content is
taller than the viewport. Align list/empty/filter chrome closer to
the original openXYOS OpenApp pages without changing host APIs.

Co-authored-by: XYAI Labs <haoboy8@gmail.com>
Co-authored-by: XYAI Labs <haoboy8@gmail.com>
Task detail no longer splits a comment list from an empty right-hand
detail column. Discussion lives in one chat-style panel (thread +
composer) beside task metadata, still using host task comments.

Co-authored-by: XYAI Labs <haoboy8@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants