Add calendar integrations and collaboration updates
Some checks failed
Backend CI/CD / build_and_deploy (push) Has been cancelled
Frontend CI/CD / build_and_deploy (push) Has been cancelled

This commit is contained in:
2026-05-05 15:25:53 -04:00
parent c49f03ec06
commit b66c10b681
82 changed files with 8420 additions and 2048 deletions

View File

@@ -154,15 +154,9 @@ Each calendar source has a configurable color.
## Calendar Source Control
The Content calendar includes a compact calendar source control.
The Content calendar includes a compact calendar source dropdown placed next to the calendar view selector.
The control lists currently displayed calendar sources, grouped or labeled by:
- Organization
- Workspace
- My calendars
Each source has a visibility toggle. Inherited read-only sources still appear in this list. The last entry is `Add calendar`.
The dropdown lists currently displayed calendar sources with each source's visibility toggle. Inherited read-only sources still appear in this list. The last entry is `Add calendar`.
The `Add calendar` flow lets users search the curated catalog or add a custom `.ics` URL, subject to their permissions and selected scope.

View File

@@ -13,7 +13,7 @@ Show imported calendar events and calendar source controls in the Content calend
- Add calendar source data loading to the Content feature.
- Render imported events as read-only calendar context entries in Month, Week, and Upcoming views.
- Style imported events distinctly from Socialize content items and apply source colors.
- Add a calendar source control grouped by Organization, Workspace, and My calendars.
- Add a compact calendar source dropdown next to the Content calendar view selector.
- Add visibility toggles for displayed sources.
- Add `Add calendar` as the last source-control entry.
- Add an add-calendar flow that supports curated catalog search and custom `.ics` URL subscriptions according to user permissions.

View File

@@ -0,0 +1,46 @@
# Task: Add content production collaboration panel
## Feature
`docs/FEATURES/production-workflow.md`
## Goal
Make the content detail page expose the existing production collaboration data that is already loaded by the frontend store: comments, content revisions, linked assets, asset revisions, and workflow activity.
## Scope
- Add a compact production collaboration panel to `ContentItemDetailView`.
- Keep comment creation and resolution available.
- Show content revision history with change summaries.
- Show linked assets and their revisions.
- Add UI for linking a Google Drive asset and adding a new asset revision.
- Show content-scoped notification activity as a read-only production activity feed.
## Likely Files
- `frontend/src/features/content/views/ContentItemDetailView.vue`
- `frontend/src/features/content/stores/contentItemDetailStore.js`
## Out Of Scope
- Backend schema changes.
- Native file uploads.
- Mention parsing.
- Approval comment visibility rules.
- Reworking content variant persistence.
## Validation
```bash
cd frontend
npm run build
```
## Acceptance Criteria
- [x] Comments, revisions, assets, and activity are visible from the content detail page.
- [x] Users can post comments from the production panel.
- [x] Users can link a Google Drive asset to a content item.
- [x] Users can add a new revision URL/reference to an existing asset.
- [x] Existing create/edit content and approval controls remain available.

View File

@@ -0,0 +1,32 @@
# Task: Scope content editor channels to item workspace
## Feature
`docs/FEATURES/channels.md`
## Goal
Prevent content item channel placements from mixing channels across workspaces when the app is viewed in an all-workspaces scope.
## Context
Seeded content such as `Bakery loyalty carousel` should only use channels from its own workspace. The seed source assigns it to `Atlas Bakery Instagram`, but stale editor drafts or all-workspaces channel options can show unrelated Luma channels in the content detail editor.
## Scope
- Limit content detail channel options to the content item's workspace.
- Deduplicate publication target parsing and summary serialization.
- Normalize restored editor drafts so duplicate or other-workspace known channels are not kept.
## Validation
```bash
cd frontend
npm run build
```
## Acceptance Criteria
- [x] Existing content items only offer channels from their own workspace.
- [x] Duplicate publication target strings render as one placement.
- [x] Stale restored drafts do not keep known channels from other workspaces.

View File

@@ -0,0 +1,40 @@
# Task: Add content activity endpoint
## Feature
`docs/FEATURES/production-workflow.md`
## Goal
Add a content-owned activity history endpoint that is separate from user-facing notifications.
## Scope
- Add persisted content activity entries.
- Add `GET /api/content-items/{id}/activity`.
- Log content creation, revisions, status changes, comments, linked assets, and asset revisions.
- Include field-level metadata for content revision changes such as title, message, channels, hashtags, and publish date.
- Persist publish date changes sent from the content editor revision flow.
- Use the activity endpoint from the content detail production activity tab.
## Out Of Scope
- Full diff rendering UI.
- Deleting tags or assets.
- Notification recipient behavior changes.
## Validation
```bash
dotnet build backend/Socialize.slnx
cd frontend
npm run build
```
## Acceptance Criteria
- [x] `GET /api/content-items/{id}/activity` returns content history for users who can review the content item.
- [x] Activity entries are not filtered by notification recipients.
- [x] Content revision activity records changed fields.
- [x] Publish date changes are saved and included in content activity.
- [x] The content detail activity tab reads from content activity instead of notifications.

View File

@@ -0,0 +1,46 @@
# Task: Organization settings editing
## Feature
`docs/FEATURES/organizations.md`
## Goal
Allow permitted organization users to edit the organization name and add organization members from the settings page.
## Scope
- Add an API endpoint to update organization profile settings.
- Add an API endpoint to add an existing user as an organization member by email and role.
- Add organization logo storage and an API endpoint to upload a cropped organization logo.
- Replace the organization Workspaces settings tab with a Usage tab.
- Wire the organization settings profile section to save the organization name.
- Wire the organization settings profile section to change the organization logo.
- Show current organization usage against preview plan limits.
- Wire the organization settings members section to add members.
- Add English and French UI strings.
## Constraints
- Do not implement email delivery or pending organization invitation tokens in this task.
- Do not change workspace invite behavior.
- Keep organization code under `backend/src/Socialize.Api/Modules/Organizations`.
- Keep frontend organization code under `frontend/src/features/organizations`.
## Done When
- [x] Users with `ManageOrganizationSettings` can update the organization name.
- [x] Users with `ManageOrganizationSettings` can update the organization logo.
- [x] Organization settings show Usage instead of Workspaces.
- [x] Users with `ManageOrganizationMembers` can add an existing user as an organization member.
- [x] Duplicate organization memberships are rejected.
- [x] Frontend build passes.
- [x] Backend build passes.
## Validation Commands
```bash
dotnet build backend/Socialize.slnx
cd frontend
npm run build
```