Skip to content

improvement(sockets): duplicate op should let addBlock take subblock values instead of separate looped op#836

Merged
icecrasher321 merged 2 commits intostagingfrom
improvement/sockets-dup
Aug 1, 2025
Merged

improvement(sockets): duplicate op should let addBlock take subblock values instead of separate looped op#836
icecrasher321 merged 2 commits intostagingfrom
improvement/sockets-dup

Conversation

@icecrasher321
Copy link
Collaborator

Description

Fixing duplicate op to pass in subblock values directly on the add block operation instead of doing batched update.

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added tests that prove my fix is effective or that my feature works
  • All tests pass locally and in CI (bun run test)
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules
  • I have updated version numbers as needed (if needed)
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

Security Considerations:

  • My changes do not introduce any new security vulnerabilities
  • I have considered the security implications of my changes

@vercel
Copy link

vercel bot commented Aug 1, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
sim 🔄 Building (Inspect) Visit Preview 💬 Add feedback Aug 1, 2025 2:35am
1 Skipped Deployment
Name Status Preview Comments Updated (UTC)
docs ⬜️ Skipped (Inspect) Aug 1, 2025 2:35am

@icecrasher321 icecrasher321 merged commit 914f1cd into staging Aug 1, 2025
3 of 4 checks passed
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Greptile Summary

This PR optimizes the block duplication workflow by eliminating the batch subblock update mechanism in favor of passing subblock values directly during the initial block creation operation. The changes remove the entire batch-subblock-update infrastructure across multiple layers of the application:

  • Socket Layer: Removes the batch-subblock-update handler from subblocks.ts that processed multiple subblock updates in a single database transaction
  • Operation Queue: Eliminates emitBatchSubblockUpdate function and its registration from the operation queue store
  • Socket Context: Removes emitBatchSubblockUpdate and onBatchSubblockUpdate methods from the socket context interface
  • Collaborative Workflow Hook: Modifies collaborativeDuplicateBlock to merge subblock values directly into the block payload before sending to the server

The key improvement is in the use-collaborative-workflow.ts file where the duplicate operation now:

  1. Retrieves existing subblock values from the store
  2. Merges them with the source block's subblock structure
  3. Includes the merged subblocks directly in the duplicate operation payload
  4. Applies values locally for immediate UI feedback

This change transforms the duplication process from a two-step operation (create block + batch update subblocks) into a single atomic operation, reducing network overhead and eliminating potential race conditions in collaborative editing scenarios. The approach aligns with existing patterns used in collaborativeAddBlock and leverages the existing mergeSubblockState utility function for consistent state management.

Confidence score: 4/5

  • This change should improve performance and reliability by reducing socket operations and eliminating race conditions
  • The implementation follows established patterns and maintains backward compatibility
  • The removal of batch functionality could impact other use cases that relied on bulk subblock updates, though none are immediately apparent in the changed files

4 files reviewed, 5 comments

Edit Code Review Bot Settings | Greptile

subblockValues: Record<string, any>,
operationId?: string
) => void

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: Empty line left after removing emitBatchSubblockUpdate - consider removing for cleaner formatting

Suggested change
emitSubblockUpdate: (
blockId: string,
subblockId: string,
value: any,
operationId?: string
) => void
emitCursorUpdate: (cursor: { x: number; y: number }) => void

onWorkflowOperation: (handler: (data: any) => void) => void
onSubblockUpdate: (handler: (data: any) => void) => void
onBatchSubblockUpdate: (handler: (data: any) => void) => void

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: Empty line left after removing onBatchSubblockUpdate - consider removing for cleaner formatting

Suggested change
onSubblockUpdate: (handler: (data: any) => void) => void
onCursorUpdate: (handler: (data: any) => void) => void

workflowOperation?: (data: any) => void
subblockUpdate?: (data: any) => void
batchSubblockUpdate?: (data: any) => void

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: Empty line left in eventHandlers type definition after removing batchSubblockUpdate property

Suggested change
const eventHandlers = useRef<{
workflowOperation?: (data: any) => void
subblockUpdate?: (data: any) => void
cursorUpdate?: (data: any) => void

emitWorkflowOperation,
emitSubblockUpdate,
emitBatchSubblockUpdate,

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: Empty line left in context provider value after removing emitBatchSubblockUpdate

Suggested change
emitSubblockUpdate,
emitCursorUpdate,

onWorkflowOperation,
onSubblockUpdate,
onBatchSubblockUpdate,

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: Empty line left in context provider value after removing onBatchSubblockUpdate

Suggested change
onSubblockUpdate,
onCursorUpdate,

waleedlatif1 pushed a commit that referenced this pull request Aug 1, 2025
…values instead of separate looped op (#836)

* improvement(sockets): addBlock can accept subblock values

* cleanup unused code
icecrasher321 added a commit that referenced this pull request Aug 1, 2025
…n, deployed chat improvements (#843)

* fix(domain): fix telemetry endpoint, only add redirects for hosted version (#822)

* fix(otel): change back telemetry endpoint

* only add redirects for hosted version

---------

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>

* fix(search-modal): fixed search modal keyboard nav (#823)

* fixed search modal keyboard nav

* break down file

---------

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>

* improvement(docs): add base exec charge info to docs (#826)

* improvement(doc-tags-subblock): use table for doc tags subblock in create_document tool for KB (#827)

* improvement(doc-tags-subblock): use table for doc tags create doc tool in KB block

* enforce max tags

* remove red warning text

* fix(bugs): fixed rb2b csp, fixed overly-verbose logs, fixed x URLs (#828)

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>

* feat(wand): subblock level wand configuration + migrate old wand usage to this (#829)

* feat(wand): subblock level wand configuration + migrate old wand usage to this

* fix build issue

* Update apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/wand-prompt-bar/wand-prompt-bar.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* remove optional param

* remove unused test file

* address greptile comments

* change to enum for gen type

* fix caching issue

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* feat(tools): added hunter.io tools/block, added default values of first option in dropdowns to avoid operation selector issue, added descriptions & param validation & updated docs (#825)

* feat(tools): added hunter.io tools/block, added default values of first option in dropdowns to avoid operation selector issue

* fix

* added description for all outputs, fixed param validation for tools

* cleanup

* add dual validation, once during serialization and once during execution

* improvement(docs): add base exec charge info to docs (#826)

* improvement(doc-tags-subblock): use table for doc tags subblock in create_document tool for KB (#827)

* improvement(doc-tags-subblock): use table for doc tags create doc tool in KB block

* enforce max tags

* remove red warning text

* fix(bugs): fixed rb2b csp, fixed overly-verbose logs, fixed x URLs (#828)

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>

* fixed serialization errors to appear like execution errors, also fixed contrast on cmdk modal

* fixed required for tools, added tag dropdown for kb tags

* fix remaining tools with required fields

* update utils

* update docs

* fix kb tags

* fix types for exa

* lint

* updated contributing guide + pr template

* Test pre-commit hook with linting

* Test pre-commit hook again

* remove test files

* fixed wealthbox tool

* update telemetry endpoints

---------

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>
Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com>

* fix(deployed-chat): trigger blocks should not interfere with deployed chat exec (#832)

* fix(deployed-chat): allow non-streaming responses in deployed chat, allow partial failure responses in deployed chat (#833)

* fix(deployed-chat): allow non-streaming responses in deployed chat, allow partial failure responses in deployed chat

* fix(csp): runtime variable resolution for CSP

* cleanup

---------

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>

* fix(sockets): duplicate block op should go through debounced path (#834)

* improvement(sockets): add batch subblock updates for duplicate to clear queue faster (#835)

* improvement(sockets): duplicate op should let addBlock take subblock values instead of separate looped op (#836)

* improvement(sockets): addBlock can accept subblock values

* cleanup unused code

* fix(deploy-modal): break down deploy modal into separate components (#837)

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>

* fix(kb-tags): docs page kb tags ui (#838)

* fix(kb-tags): docs page kb tags ui

* remove console logs

* remove console error

* fix(chat-deploy): fixed form submission access patterns, fixed kb block filters (#839)

* fix(chat-deploy): fixed form submission access patterns

* fix(kb-block): fix tag filters component, removed unused component

* fixed kb block subcomponents

---------

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>

* fix(kb-tags): ui fixes, delete persistence for doc page header (#841)

* fix deletion of tags + refactor next slot calc

* fix kb tag filters count ui

* fix(chat-deploy): added new image upload component, fixed some state issues with success view (#842)

* fix(chat-deploy): added new image upload component, fixed some state issues with success view

* cleanup

---------

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>

* feat(deploy-chat): added a logo upload for the chat, incr font size

* fix(deploy-modal): break down deploy modal into separate components (#837)

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>

---------

Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>
Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
@waleedlatif1 waleedlatif1 deleted the improvement/sockets-dup branch August 2, 2025 22:17
waleedlatif1 pushed a commit that referenced this pull request Aug 5, 2025
…values instead of separate looped op (#836)

* improvement(sockets): addBlock can accept subblock values

* cleanup unused code
arenadeveloper02 pushed a commit to arenadeveloper02/p2-sim that referenced this pull request Sep 19, 2025
…values instead of separate looped op (simstudioai#836)

* improvement(sockets): addBlock can accept subblock values

* cleanup unused code
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.

1 participant