[Hackathon] feat: Project Gallery Redesign + Collaboration Suite#5100
Open
EmilySun621 wants to merge 5 commits into
Open
[Hackathon] feat: Project Gallery Redesign + Collaboration Suite#5100EmilySun621 wants to merge 5 commits into
EmilySun621 wants to merge 5 commits into
Conversation
This bundles the feature work that built up on this branch:
- Custom agents: dashboard CRUD page and editor dialog (48px icon tile,
chip-style guardrails, model selector). Each custom agent now carries a
LiteLLM model_name (Opus 4.7 / Haiku 4.5) that is passed through to the
agent-service so different agents can use different models.
- Conversation history is scoped per (workflowId, agentId): switching
agent or workflow yields a different conversation list. localStorage
key: texera.workflowConversations.v1.{workflowId}.{agentId}.
- Time machine: workflow snapshot list, revert, and agent-tagged
checkpoints. New workflow-history-tool in agent-service backs the
"undo my last change" flow; amber gains a WorkflowSnapshotResource;
sql/updates/23.sql adds the snapshot table.
- Operator-aware custom-agent prompts: the system prompt now injects the
full operator catalog with a "prefer built-in operators over Python
UDFs" rule, sourced from WorkflowSystemMetadata at request time.
- LiteLLM: added the claude-opus-4.7 entry alongside claude-haiku-4.5
and gpt-5-mini in bin/litellm-config.yaml.
- Agent panel rewritten around the (conversation list / chat) two-view
model with subscription-managed list reloads and per-step persistence.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…detail Replaces the utilitarian Projects list with a card-based gallery that surfaces icon + name + description + stats (📄 workflows · 📊 datasets · 👥 members) + relative-time updated. Adds a dedicated Create/Edit Project modal with emoji icon picker and preset color swatches, and rewrites the project detail page as a tabbed view (Workflows / Datasets / Members) — Workflows tab reuses the existing saved-workflow-section, Members tab renders ShareAccessComponent inline (component now accepts @input bindings as a fallback to NZ_MODAL_DATA), Datasets tab shows a "Coming soon" placeholder. Workflow list items now badge their project memberships (emoji + name chip) regardless of whether the project has a custom color. Per-project emoji icons are stored in localStorage (no DB migration required for hackathon scope). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ence
Builds the UI on top of the existing CollaborationService scaffold. Adds a
slide-in panel on the right of the workspace with three tabs:
• Chat — Yjs-synced team chat for the current workflow, Enter-to-send
• Comments — per-operator threaded comments with resolve / reopen and
inline reply composer. Right-click an operator → "add comment" opens
a yellow new-thread composer at the top of that operator's section.
• Online — presence list derived from Yjs awareness, idle status,
"you" tag, and per-user current-edit hints.
The menu bar gets a team-icon toggle button with an nz-badge counting
unresolved comment threads across the workflow. The context menu on
single-operator selection gains an "add comment" item that opens the
panel pre-targeted at the clicked operator (uses a new
startNewThreadForOperator action on CollaborationService).
CollaborationService gains a draftThreadOperatorId stream so the panel
can surface a draft composer for operators with zero existing threads;
the service casts the readonly WorkflowGraph to access sharedModel /
newYDocLoadedSubject from the existing real-time edit infrastructure.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Project Gallery polish on top of the earlier card redesign:
• Workflows tab in project detail now fetches via the dedicated
/api/project/:pid/workflows endpoint and renders a clean card list,
bypassing the generic search index which silently dropped project-
filtered queries. Cards expose Open + Remove-from-project actions and
the project's accessLevel as a badge. "Create Workflow" creates an
empty workflow, adds it to the project, and routes to the editor.
• Datasets tab fully wired: localStorage-backed pid→dids overlay (no DB
migration), card grid with size/owner/visibility, popconfirm remove,
and a dedicated Add-Existing-Dataset modal that filters out datasets
already in the project.
• Members tab replaced the dual-card ShareAccessComponent UI with a
dedicated ProjectMembersComponent: single-row invite (email + Editor/
Viewer dropdown + Invite button) on top, member cards below with
deterministic-color avatar, role badge, inline role dropdown, and
popconfirm remove.
• Add-Workflows and Add-Datasets modals rebuilt as searchable card lists
with select-all, hover/selected states, primary "Add Selected" button
with a white count pill, consistent 10px-row / 12px-gap styling.
• Sidebar Projects link unconditional — *ngIf removed, projects_enabled
default flipped to true, loadTabs() skips it so admin config can't
flip it back.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Story
Dr. Sarah's lab has 5 people. They all use Texera. But their workspace is chaos — 30 workflows with names like "Untitled workflow", no way to organize them by research project, no way to communicate inside the platform. They use Slack to discuss workflows, then switch back to Texera to make changes. Context is lost constantly.
When two students edit the same workflow, they can see each other's cursors (Texera already has real-time collab), but they can't talk to each other. They can't leave a comment on a specific operator saying "this join looks wrong." They can't see who's online or what anyone else is working on.
We fixed the organization problem and the communication problem in one PR.
What We Built
Texera had a basic project feature, but it was hidden and bare-bones. We redesigned it into a first-class experience.
Project List Page:
Card-based layout with emoji icons, colored circles, project descriptions
Stats at a glance: 📄 N workflows · 📊 N datasets · 👥 N members
Create Project dialog with emoji picker and color swatches
Project Detail Page — 3 tabs:
Workflows tab: Direct list of project workflows with Open and Remove actions. "Create Workflow" for new ones, "Add Existing Workflow" to pull in workflows you've already built. No more hunting through a flat list of 30 "Untitled workflow" entries.
Datasets tab: Connect datasets to your project to keep related data and workflows together. "Add Existing Dataset" modal to pick from your uploaded datasets.
Members tab: Redesigned sharing UI — single-line invite (email + role dropdown + Invite button), clean member list with avatar, name, and role badge (Owner/Editor/Viewer).
Workflow badges: On the main Workflows page, each workflow now shows colored project chips with emoji, so you can see at a glance which project it belongs to.
2. Collaboration Suite — Talk Where You Work
A new Collaboration panel in the workflow editor with three tabs:
Team Chat:
Real-time messaging between all collaborators on the current workflow
Messages show avatar, name, timestamp
Agent actions appear as system messages ("🤖 Agent added RandomForest operator")
No more switching to Slack to discuss a workflow
Operator Comments:
Right-click any operator → "Add Comment"
Comment threads anchored to specific operators
💬 badge on operators with unresolved comments
Comments tab shows all threads across the workflow, grouped by operator
Click a thread → canvas highlights that operator
Resolve threads when discussion is done
Online Presence:
See who's currently viewing/editing the workflow
Status: 🟢 active, 🟡 idle
Shows which operator each collaborator is working on
Demo
Open Projects → Create "🧬 Diabetes Study" → add 3 workflows and a dataset
Invite a collaborator → they see the project and its contents
Open a workflow → click 👥 Collaboration button in toolbar
Team Chat: send "Let's add evaluation metrics"
Right-click Random Forest operator → Add Comment → "Should we tune hyperparameters?"
💬 badge appears on the operator
Online tab shows both users active
Technical Details
Project Gallery
Redesigned user-project.component — card layout, stats, emoji icons (localStorage for icons, no DB migration)
New create-project-dialog/ component — emoji picker, color swatches, validation
Redesigned user-project-section.component — 3-tab layout (Workflows/Datasets/Members)
Direct workflow list rendering bypassing SearchResultsComponent for reliable display
add-dataset-dialog/ — modal for associating existing datasets with projects
share-access.component made inline-compatible (was modal-only before)
Workflow list items now show project badges with emoji + color
Projects sidebar link always visible (removed feature flag gate)
Collaboration Suite
New collaboration-panel/ component with 3-tab layout
collaboration.service.ts — Yjs-backed real-time sync for chat and comments
Menu toggle button with unresolved comment count badge
Right-click context menu "Add Comment" integration
Panel wired into workspace.component alongside existing panels
Files Changed
Project Gallery
dashboard/component/user/user-project/ — list page, list item, section, create dialog
dashboard/component/user/user-project/project-icon.util.ts — emoji storage
dashboard/component/user/user-workflow/user-workflow-list-item/ — project badges
dashboard/component/user/share-access/ — inline mode support
dashboard/component/dashboard.component.html — sidebar always-show fix
dashboard/component/dashboard.component.ts — projects_enabled forced true
Collaboration Suite
workspace/component/collaboration-panel/ — panel component (ts, html, scss)
workspace/service/collaboration/ — service + types
workspace/component/menu/menu.component.* — toggle button + badge
workspace/component/workflow-editor/context-menu/ — "Add Comment" item
Testing
Angular build: clean ✅
Project CRUD: create, edit, delete projects ✅
Add/remove workflows to project ✅
Add datasets to project ✅
Member invite UI ✅
Collaboration panel renders ✅
Comment on operator via right-click ✅