Skip to content

feat(frontend): Hackaton UP - add reusable workflow sections - #8527

Draft
jpablo-gz wants to merge 1 commit into
apache:mainfrom
jpablo-gz:feat/reusable-workflow-sections
Draft

feat(frontend): Hackaton UP - add reusable workflow sections#8527
jpablo-gz wants to merge 1 commit into
apache:mainfrom
jpablo-gz:feat/reusable-workflow-sections

Conversation

@jpablo-gz

Copy link
Copy Markdown

What changes were proposed in this PR?

Add rectangle selection, explanatory section boxes, and a library of reusable workflow sections.

  • Secondary-button drag or Alt + primary-button drag selects operators, internal links, and annotations. Selected elements can be moved together, copied, or deleted.
  • Named, colored section boxes annotate workflow regions using the existing annotation model, persistence, undo, and collaboration.
  • Saving a reusable section captures geometrically contained operators, their configuration (including UDF code), internal links, and the section box. Library entries provide a description and graph preview.
  • Insertion creates independent copies with remapped IDs and selects the inserted elements for immediate placement.

The reusable library is stored in the current browser's localStorage; it is not a shared server-side library. This change is frontend-only and adds no dependencies.

Any related issues, documentation, discussions?

Closes #8526.
Maintainer agreement has not yet been established.
Contribution workflow: https://github.com/apache/texera/blob/main/CONTRIBUTING.md

How was this PR tested?

Focused unit/integration suites, from frontend/:

npm test -- --include=src/app/workspace/component/canvas-selection/canvas-selection.component.spec.ts --include=src/app/workspace/component/canvas-selection/selection-geometry.spec.ts --include=src/app/workspace/component/left-panel/left-panel.component.spec.ts --include=src/app/workspace/component/left-panel/my-snippets/my-snippets.component.spec.ts --include=src/app/workspace/component/left-panel/my-snippets/reusable-section-detail.component.spec.ts --include=src/app/workspace/component/overbox/overbox-dialog.component.spec.ts --include=src/app/workspace/component/overbox/overbox-interaction.component.spec.ts --include=src/app/workspace/component/workflow-editor/create-snippet-modal/create-snippet-modal.component.spec.ts --include=src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts --include=src/app/workspace/service/overbox/overbox-colors.spec.ts --include=src/app/workspace/service/overbox/overbox.service.spec.ts --include=src/app/workspace/service/workflow-fragment/workflow-fragment.service.spec.ts --include=src/app/workspace/service/workflow-snippet/workflow-snippet.service.spec.ts

179 tests passed across 13 suites against upstream main at 0b103f8.
Prettier and ESLint checked on the contributed files.
Browser-mode validation and before/after visual evidence remain pending; publish as a draft until these are complete.

Manual review steps:

  1. Drag a selection rectangle around multiple operators and move the selection.
  2. Create a section box, edit its name/color, and resize it.
  3. Save it as a reusable section with a description.
  4. Open the library preview, then insert into another workflow.
  5. Verify that the section and its operators are selected and can move together.
  6. Edit the inserted operators and confirm the saved library entry is unchanged.

Was this PR authored or co-authored using generative AI tooling?

Generated-by: OpenAI Codex (GPT-6; earlier implementation also used GPT-5-based Codex).

@github-actions github-actions Bot added feature frontend Changes related to the frontend GUI labels Sep 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

👋 Thanks for your first contribution to Texera, @jpablo-gz!

If you're looking for a good place to start, browse issues labeled starter-task; they're scoped to be approachable for newcomers.

You can drive common housekeeping yourself by commenting one of these commands on its own line:

  • Issues. Comment /take to assign an open issue to yourself, or /untake to release it. You can find unclaimed work with the search filter is:issue is:open no:assignee.
  • Sub-issues. To link issues into a parent/child hierarchy, comment /sub-issue #5166 #5222 on the parent to attach those children (or /unsub-issue #5166 #5222 to detach them). From a child issue, comment /parent-issue #5166 to set its parent, or /unparent-issue to clear it (the current parent is detected automatically). References may be written as #5166 or as a bare 5166; cross-repository references are not supported.
  • Pull requests (author only). Comment /request-review @user to request a review from someone, or /unrequest-review @user to withdraw that request.

Each command must match exactly: /take this will not work, only /take does. For the full contribution flow, see CONTRIBUTING.md.

@github-actions

Copy link
Copy Markdown
Contributor

Automated Reviewer Suggestions

Based on the git blame history of the changed files, we recommend the following reviewers:

  • Contributors with relevant context: @yangzhang75, @Yicong-Huang, @mengw15
    You can notify them by mentioning @yangzhang75, @Yicong-Huang, @mengw15 in a comment.

@jpablo-gz jpablo-gz changed the title feat(frontend): add reusable workflow sections feat(frontend): Hackaton UP - add reusable workflow sections Sep 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature frontend Changes related to the frontend GUI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Hackaton UP - Add canvas selection and reusable workflow sections

1 participant