Skip to content

feat(org): Phase 2 in-host Announcements (org-ui + Dashboard + export skeleton) - #57

Merged
XYAIStudio merged 2 commits into
mainfrom
cursor/org-announcements-phase2-d8c6
Sep 19, 2026
Merged

XYAIStudio merged 2 commits into
mainfrom
cursor/org-announcements-phase2-d8c6

Conversation

@XYAIStudio

@XYAIStudio XYAIStudio commented Sep 19, 2026 •

Copy link
Copy Markdown
Owner

Summary

Phase 2 vertical slice for Organization UI: Announcements as an in-host Organization sub-UI. Organization module / host is the source of truth. No iframe, no second port, no sidecar required.

  • Backend: /api/org-module/announcements* (list / create / update / delete / pin / mark-read / unread). Envelope matches openXYOS { success, data } so later export is easier. Persists to {FREEOS_HOME}/org/announcements.sqlite. Auth is existing FreeOS JWT (current_user); publish/edit/delete require admin.
  • Frontend: Shell-agnostic dashboard/src/org-ui (AnnouncementPage + createOrgApiClient + IdentityBridge types). Dashboard adapter at /organization/announcements with workbench path tabs and an entry card. Sidebar still highlights Organization.
  • Export skeleton: freeos org export-standalone --out … writes a snapshot that lists Announcements and imports the same AnnouncementPage. Full Vite + Node packaging is left as a Phase 5 TODO.

Acceptance (org-merge-plan Phase 2)

# Criterion How
A Route under /organization/... /organization/announcements
B No iframe / second port In-host API + native page; sidecar optional
C Same page for export dashboard/src/org-ui + CLI scaffold imports it
D Logged-in FreeOS user can list / publish / mark-read Host JWT; no sidecar login wall
E Chat runtime untouched No openXYOS Chat; no agent runtime changes

Deferred to Phase 3+

  • Remaining Open-12 pages (workspace, org chart, employees directory UI, skills catalog UI, agents, tasks, knowledge, reflections, governance UI, settings)
  • IdentityBridge local-JWT wiring for a real standalone server
  • Full export-standalone Vite + Node packaging (Phase 5)
  • Commercial App.tsx routes
  • Moving other sidecar CRUD into the host
  • Extracting packages/org-ui (only if the Dashboard Vite graph must be left behind)

Verification

  • make lint + make typecheck green
  • uv run pytest tests/unit/test_org_announcements.py tests/unit/cli/test_org_export_standalone.py tests/unit/i18n tests/unit/test_org_module.py green
  • cd dashboard && npx tsc --noEmit green
  • Dashboard vitest: src/org-ui, Organization page, controlAdminPath, sidebarNav green
  • Browser E2E against a running host was not available in this environment; the page is covered by component tests (no iframe) plus API tests for list/create/read
Open in Web Open in Cursor 

cursoragent and others added 2 commits September 19, 2026 02:38
Add host CRUD at /api/org-module/announcements persisted under
FREEOS_HOME/org, a shell-agnostic AnnouncementPage, Dashboard route
/organization/announcements, and a freeos org export-standalone scaffold.

Co-authored-by: XYAI Labs <haoboy8@gmail.com>
Avoid FastAPI response_model unions, keep mypy happy on the store, and
target the modal submit button in the shared AnnouncementPage test.

Co-authored-by: XYAI Labs <haoboy8@gmail.com>
@XYAIStudio
XYAIStudio marked this pull request as ready for review September 19, 2026 02:50
@XYAIStudio
XYAIStudio merged commit e0d084b into main Sep 19, 2026
5 checks passed
@XYAIStudio
XYAIStudio deleted the cursor/org-announcements-phase2-d8c6 branch September 19, 2026 03:00
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