Change log
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
and this project follows versions of format {year}.{month}.{patch_number}.
[Unreleased]
[0.0.15] - 2026-06-23
Changed
qpi-ui: Upgraded the packaging to support 'rpm', 'apk', macOS and windows installers.
[0.0.14] - 2026-06-23
Fixed
qpi-ui: Fixed the loading of flags which were not taking effect even when supplied.
[0.0.13] - 2026-06-21
Fixed
- Fixed broken links and typos in docs website.
[0.0.12] - 2026-06-21
Fixed
- Fixed failing deployment of documentation site in GitHub actions on push to new tag.
[0.0.11] - 2026-06-21
Fixed
- Fixed failing deployment of documentation site in GitHub actions
[0.0.10] - 2026-06-21
Added
- Documentation site configuration (
mkdocs.yml) with automated deployments (docs.yml) to GitHub Pages via MkDocs Material.
[0.0.9] - 2026-06-21
Added
- TLS connection between the server (qpi-ui) and the driver (qpi-driver)
qpi-driver: added the--ca-fileand--ca-fingerprintparams to the qpi-driver allqpi-ui (dashboard): updated the code snippet shown to the user on QPU creation to include--ca-fingerprint.- Comprehensive Cypress E2E test suite covering all dashboard sections:
- Auth & Navigation — login error flow, role-based navigation, hash routing, back/forward sync, logout
- QPU Registry — admin QPU registration (with token and command verification), toggle online/offline, regular user restrictions
- Jobs Console — default form state, job submission and results, QPU dropdown filtering, empty state
- Bookings — booking a time slot, validation (end before start), cancel with confirmation, visibility (user vs admin)
- Admin Panel — user quota allocations, time request approval/rejection, broadcast announcements, notification badge, approval quota updates
- Overview & Header — metrics row accuracy, quick-action navigation, recent jobs table, notifications panel (dismiss individual/clear all), notification targeting (broadcast vs targeted), notification dismiss isolation (per-user), header page title sync
- Settings & Request Time — profile settings (email, quota, role badge), request time modal submission, validation (empty reason/seconds)
- Error & Edge Cases — empty states (no jobs, no selected job, no QPUs), network failure handling (
alert()messages), unauthorized access to/#admin - Backend unit tests for
OnQPUTimeRequestUpdateRequesthook: - Approval adds requested seconds to user quota; rejection leaves it unchanged
- Non-superusers are forbidden from updating time requests
- Already-processed (approved/rejected) requests cannot be modified
[0.0.8] - 2026-06-17
Added
- Added READMEs for all client packages (Go, JS, Python) and the hardware driver
[0.0.7] - 2026-06-17
Added
- Added logo to CLI and README
Fixed
- Fixed error with 'make package' failing due to missing dashboard built files
[0.0.6] - 2026-06-17
Fixed
- Fixed failing tests on GitHub CI and reduced pocketbase's verbosity.
[0.0.5] - 2026-06-17
Changed
- Fixed GitHub Actions matrix for tests sleeping.
[0.0.4] - 2026-06-17
Changed
qpi-driver: [BREAKING] Changed the format of theelement_typein quantify.device.yml to includepath (str),args (tuple)andkwargs (dict)qpi-driver: Unskipped the e2e errors for 'quantify' executorqpi-driver: Added a log file for the driver atdata/{executor}-driver.logduring e2e tests
Fixed
qpi-driver: Failing e2e errors for 'qblox' executor. Specifically:- Fixed 4ns grid rounding misalignment on custom durations for
Delayoperations. - Added support for OpenQASM
Delayinstructions by mapping them toIdlePulse. - Added concurrent anchoring (
ref_pt="start") for parallel multi-qubit Qiskit instructions (e.g.,Measure,Delay,Barrier). - Handled invalid
-1hardware acquisition dummy data thresholds during Qblox and Quantify dummy measurements. qpi: Resolved Apple Silicon macOS codesign binary integrity crashes during the E2E suite due to dynamically installedq1asm_macos.
[0.0.3] - 2026-06-16
Changed
qpi-ui: Refactored the hooks.go files to make them easier to read
[0.0.2] - 2026-06-16
Added
qpi-ui: Centralized API payload and database collection schemas as Go structs in the newqpi/internal/schemapackage (includingUser,APIToken,QPU,TimeSlot,QuantumJob,QPUTimeRequest,Notification, and corresponding request/response payloads).qpi-ui: Added*FromRecordhelper mapping functions in theschemapackage to safely construct database model structs from PocketBase*core.Recordobjects.qpi-ui: Addedqpi_addrdynamically computed field to the/api/op/qpus/createJSON response.qpi-ui/internal/dashboard: Updated the QPU registry tab to show a success modal upon QPU registration, including copy-to-clipboard icons for both the raw access token and a copyableqpi-driverstart command.qpi-driver: Added support for the Qblox Scheduler (qblox-scheduler) package via a newQbloxExecutor(qblox).qpi-driver: Addedqbloxoptional-dependencies group topyproject.tomland a compatibility layer atqpi_driver/compat/qblox.pyto gracefully handle cases whereqblox-scheduleris not installed.qpi-driver: Created automated test suite atqpi_driver/tests/test_qblox.pyand integratedtest-py-qbloxtest target intoGitHub CImatrix.qpi-client/go: AddedQpiAddrfield to theQpuRecordstruct.qpi-ui: AddedFindAndDeleteOneandFindOneByFilterhelpers to the database query layer (internal/db/queries.go) to support cleaner repository queries.qpi-ui: Added validation-tagged API DTO models (QPUCreateRequest,QPUCreateResponse,QPUToggleResponse,DispatchPayload,JobResultUpdate) underinternal/api/schema.go.
Changed
qpi-ui: Integrated the centralizedschemastructs into all custom REST controllers and handlers inside theapipackage, replacing duplicate local private struct definitions.qpi-driver: [Breaking] Removed deprecated-H/--hostand-P/--portoptions from CLI andrun_driverin favor of--qpi-addr/-a(env:QPI_ADDR, default:http://127.0.0.1:8090).qpi-client: Updated Go/Python/JS client E2E test suites to use theQPI_ACCESS_TOKENenvironment variable.qpi-ui: Refactored all HTTP REST handlers (handleNotificationDismiss,handleTokenDelete,handleQPUConnect,handleQPUToggle) to use database models and generic queries instead of rawcore.Recordobjects.qpi-ui: Removed reflection frominternal/db/queries.goby refactoring methods to accept a pre-allocated model destination interface, improving performance.qpi-ui: Separated access token lookup and status validation inhandleQPUConnectto correctly return401 Unauthorizedfor invalid tokens and403 Forbiddenfor disabled QPUs.qpi-ui/internal/dashboard: UpdatedApp.tsxquantum job submission callback to extractidinstead ofjob_idfrom the backend response.
[0.0.1] - 2026-06-14
Added
qpi-ui: Addednotificationscollection with admin-only CRUD, user visibility rules, broadcast/targeted targeting, time-window filtering, and per-user dismiss support viaPOST /api/notifications/{id}/dismiss.e2e/verify.py: Added thetest_notifications_crudE2E test to verify broadcast/targeted visibility, time-window filtering, per-user dismiss, and admin-only CUD enforcement.qpi-ui: Addedenabledboolean field toqpuscollection to allow administrators to toggle QPU drivers on and off.qpi-ui: Added an update event hook on theqpuscollection that cancels/stops dispatcher and listener goroutines (and sets status to"offline") whenenabledis set tofalse, and starts goroutines (and sets status to"online") whenenabledis set totrue.qpi-ui: Enforcedenabledcheck in the/api/op/qpu/registerroute to reject registration of disabled QPUs with a403 Forbiddenresponse.-
e2e/verify.py: Added thetest_qpu_toggle_switchE2E test to verify the QPU disabled/enabled lifecycle, goroutine lifecycle, and registration blocking. -
qpi-ui: Added authenticated CRUD rules and validation hooks for theqpu_time_requestscollection, supporting user requests, admin approvals/rejections, automatic QPU seconds crediting, and handled request immutability. qpi-ui: Added authenticated CRUD rules and validation hooks fortime_slotscollection, implementing interval order, overlap checks, auto-population of owner, past booking/update/delete restrictions, and admin bypass capability.qpi-ui: Added admin-onlyPATCH /api/admin/users/{id}endpoint for superusers to updateqpu_secondsandapi_tokenson any user record.qpi-client/py:QPIBackend.run()now supportsparameter_valueskwarg for parameterized circuit execution, automatically binding parameters and forwarding ordered values to the API payload.qpi-driver/tests: Added@pytest.mark.skipifdecorators to CLI and quantify tests so they gracefully skip when optional dependencies (typer,quantify_scheduler,qblox_instruments) are not installed.Makefile: Added granulartest-py-base,test-py-cli,test-py-aer, andtest-py-quantifytargets for testing eachpyproject.tomlextra in isolation.qpi-driver: Added an abstractprocess_result()method to theExecutorinterface, letting executors handle their own data processing (e.g. state discrimination, IQ memory formatting) directly in the worker process.qpi-driver: Implemented state discrimination, average/single IQ memory formatting, and raw trace handling inMockExecutor,QiskitAerExecutor, andQuantifyExecutor.qpi-driver: Support forThresholdedAcquisitionprotocol inQuantifyExecutorwhen threshold/rotation parameters are defined on device elements, automatically falling back to software discrimination viaSSBIntegrationComplex.
Changed
qpi-ui: Defaultqpu_secondsfor new users changed from1000to0. Users must now be granted QPU time explicitly by an admin via thePATCH /api/admin/users/{id}endpoint. TheOnRecordCreatehook that previously set the default has been removed.qpi-driver: Renamed thetranslatorprocess toresult senderand simplified it to forward processed dicts via NNG PUSH directly from a queue, eliminating intermediate.pklfilesystem serialization overhead.