Skip to content

Feature/146 translate open qasm to circuit editor - #163

Merged
Redoxcraft merged 29 commits into
developmentfrom
feature/146-Translate-OpenQASM-to-Circuit-Editor
Jul 22, 2026
Merged

Feature/146 translate open qasm to circuit editor#163
Redoxcraft merged 29 commits into
developmentfrom
feature/146-Translate-OpenQASM-to-Circuit-Editor

Conversation

@RobinMuell

@RobinMuell RobinMuell commented Jul 5, 2026

Copy link
Copy Markdown
Collaborator

Feature #146 – Translate OpenQASM to Circuit Editor

Overview

This pull request introduces the OpenQASM-to-Circuit translation workflow and lays the foundation for supporting multiple circuit editors. As part of the implementation, several issues related to circuit state management, drag & drop, and editor synchronization were also resolved. Some of these bugs were fixed directly through the new implementation, while others were addressed independently during development.

Features

Bug Fixes

Notes

  • The OpenQASM translation pipeline is now fully connected from the frontend to the backend.
  • The new multi-editor architecture provides the foundation for working with multiple circuits simultaneously.
  • Various improvements to drag & drop handling and editor synchronization increase overall stability and user experience.

Redoxcraft and others added 28 commits May 26, 2026 15:06
Added toCode functions that return the code as string in all relevant classes
…o-Circuit-Editor' into feature/146-Translate-OpenQASM-to-Circuit-Editor
Fixed small errors in QasmTest.java Examples.
footer now scrolls with circuit columns, qubit wires now rendering full circuit width
- Fix tabs vanishing after reload: useMonacoGarbageCollector now resets tab state on unmount only, instead of whenever monaco loads.
- Persist circuit edits on tab close/project switch and don't let a late editor-state restore clobber freshly opened tabs.
- Turn QASM parse failures into HTTP 400 (QasmParseException) instead of 500; build registers from declarations and split control/target via the gate
  definition; guard non-finite angles.
- Keep getOrCreateByFileId read-only for VIEWERs, null-guard the REST adapter, retry the editor-state first-save race, and remove debug/dead code.
…RZ gates in Circuit Editor. Use Layernumber instead as UUID in Comment in toCode method.
rest communication von code to qasmcode
Circuit is only Based on File and on nothing else.
Fiexed #129
on DragEnter and onDragLeave
…es and Panel-Reopen Save #119

Backend

* Removed the generateNewId() workaround from rescheduleOperations(); the underlying orphanRemoval issue no longer reproduces and is now covered by OrphanRemovalRegressionTest.
* Preserve client-supplied operation ids across full-replace saves (missing ids are generated). Layer ids remain positional.
* Reject duplicate operation ids and ids belonging to another circuit (422), backed by repository checks and service validation.
* Added/updated unit, mapper, service, and E2E tests for id preservation and validation.

Frontend

* Drop zones now use the scheduler’s span-overlap logic, allowing valid drops next to multi-qubit gates.
* Reopening the Code panel no longer retriggers the last save, preventing intermittent duplicate-PUT “Save failed” errors.
…cuit-Editor

# Conflicts:
#	backend/build.gradle
#	backend/src/main/java/edu/kit/quak/core/circuit/model/QuantumCircuit.java
#	frontend/src/App.tsx
#	frontend/src/hooks/editor/useEditorCommands.ts
#	frontend/src/hooks/editor/useMonacoGarbageCollector.ts
#	frontend/src/views/circuit-view/components/CircuitToolbar.tsx
@RobinMuell RobinMuell added this to the End of summer term milestone Jul 5, 2026
@RobinMuell
RobinMuell requested a review from Redoxcraft July 5, 2026 08:46
@RobinMuell RobinMuell added the enhancement New feature or request label Jul 5, 2026
@sonarqubecloud

sonarqubecloud Bot commented Jul 6, 2026

Copy link
Copy Markdown

@Redoxcraft
Redoxcraft merged commit 2dd76fd into development Jul 22, 2026
5 checks passed
@Redoxcraft
Redoxcraft deleted the feature/146-Translate-OpenQASM-to-Circuit-Editor branch July 22, 2026 12:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment