diff --git a/Cargo.lock b/Cargo.lock
index 83292b6a650f..4ea5f80d2efd 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1161,7 +1161,7 @@ dependencies = [
[[package]]
name = "qiskit-accelerate"
-version = "1.2.0"
+version = "1.2.1"
dependencies = [
"ahash 0.8.11",
"approx",
@@ -1189,7 +1189,7 @@ dependencies = [
[[package]]
name = "qiskit-circuit"
-version = "1.2.0"
+version = "1.2.1"
dependencies = [
"bytemuck",
"hashbrown 0.14.5",
@@ -1203,7 +1203,7 @@ dependencies = [
[[package]]
name = "qiskit-pyext"
-version = "1.2.0"
+version = "1.2.1"
dependencies = [
"pyo3",
"qiskit-accelerate",
@@ -1214,7 +1214,7 @@ dependencies = [
[[package]]
name = "qiskit-qasm2"
-version = "1.2.0"
+version = "1.2.1"
dependencies = [
"hashbrown 0.14.5",
"num-bigint",
@@ -1224,7 +1224,7 @@ dependencies = [
[[package]]
name = "qiskit-qasm3"
-version = "1.2.0"
+version = "1.2.1"
dependencies = [
"hashbrown 0.14.5",
"indexmap",
diff --git a/Cargo.toml b/Cargo.toml
index 0abe3a3c7c6f..81d550d63503 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ members = ["crates/*"]
resolver = "2"
[workspace.package]
-version = "1.2.0"
+version = "1.2.1"
edition = "2021"
rust-version = "1.70" # Keep in sync with README.md and rust-toolchain.toml.
license = "Apache-2.0"
diff --git a/docs/conf.py b/docs/conf.py
index 0bec4a881fdd..757cfd955052 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -32,7 +32,7 @@
# The short X.Y version
version = "1.2"
# The full version, including alpha/beta/rc tags
-release = "1.2.0"
+release = "1.2.1"
language = "en"
diff --git a/qiskit/VERSION.txt b/qiskit/VERSION.txt
index 26aaba0e8663..6085e946503a 100644
--- a/qiskit/VERSION.txt
+++ b/qiskit/VERSION.txt
@@ -1 +1 @@
-1.2.0
+1.2.1
diff --git a/releasenotes/notes/adjust-neato-settings-3adcc0ae9e245ce9.yaml b/releasenotes/notes/1.2/adjust-neato-settings-3adcc0ae9e245ce9.yaml
similarity index 79%
rename from releasenotes/notes/adjust-neato-settings-3adcc0ae9e245ce9.yaml
rename to releasenotes/notes/1.2/adjust-neato-settings-3adcc0ae9e245ce9.yaml
index 9dec5debb2ef..be977f98dcdd 100644
--- a/releasenotes/notes/adjust-neato-settings-3adcc0ae9e245ce9.yaml
+++ b/releasenotes/notes/1.2/adjust-neato-settings-3adcc0ae9e245ce9.yaml
@@ -1,6 +1,6 @@
---
fixes:
- |
- Fixes an issue with the visualizations of some backends/coupling maps that showed as folded on their own. The
+ Fixed an issue with the visualizations of some backends/coupling maps that showed as folded on their own. The
`default ``neato`` setting `_ works well in most cases. However,
``prism`` overlap returns a more regular layout for other scenarios.
diff --git a/releasenotes/notes/extract-standard-parametric-controlled-1a495f6f7ce89397.yaml b/releasenotes/notes/1.2/extract-standard-parametric-controlled-1a495f6f7ce89397.yaml
similarity index 100%
rename from releasenotes/notes/extract-standard-parametric-controlled-1a495f6f7ce89397.yaml
rename to releasenotes/notes/1.2/extract-standard-parametric-controlled-1a495f6f7ce89397.yaml
diff --git a/releasenotes/notes/1.2/fix-2q-basis-decomposer-non-std-kak-gate-edc69ffb5d9ef302.yaml b/releasenotes/notes/1.2/fix-2q-basis-decomposer-non-std-kak-gate-edc69ffb5d9ef302.yaml
new file mode 100644
index 000000000000..13c2ddaad710
--- /dev/null
+++ b/releasenotes/notes/1.2/fix-2q-basis-decomposer-non-std-kak-gate-edc69ffb5d9ef302.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Fixed a bug in :class:`.TwoQubitBasisDecomposer` where the Rust-based code
+ would panic if the given KAK gate was not a default version of the standard gates (for example, using ``CXGate(ctrl_state=0)``).
+ Fixed `#12998 `__.
\ No newline at end of file
diff --git a/releasenotes/notes/fix-InstructionDurations-b47a9770b424d7a0.yaml b/releasenotes/notes/1.2/fix-InstructionDurations-b47a9770b424d7a0.yaml
similarity index 97%
rename from releasenotes/notes/fix-InstructionDurations-b47a9770b424d7a0.yaml
rename to releasenotes/notes/1.2/fix-InstructionDurations-b47a9770b424d7a0.yaml
index ce8b789462de..c13570891a89 100644
--- a/releasenotes/notes/fix-InstructionDurations-b47a9770b424d7a0.yaml
+++ b/releasenotes/notes/1.2/fix-InstructionDurations-b47a9770b424d7a0.yaml
@@ -2,4 +2,4 @@
fixes:
- |
Fixed a bug where :meth:`.InstructionDurations.from_backend` did not work for :class:`.BackendV2` backends.
- Fixed `#12760 `.
\ No newline at end of file
+ Fixed `#12760 `__.
\ No newline at end of file
diff --git a/releasenotes/notes/fix-cu-rust-6464b6893ecca1b3.yaml b/releasenotes/notes/1.2/fix-cu-rust-6464b6893ecca1b3.yaml
similarity index 79%
rename from releasenotes/notes/fix-cu-rust-6464b6893ecca1b3.yaml
rename to releasenotes/notes/1.2/fix-cu-rust-6464b6893ecca1b3.yaml
index 406d6052a1df..1ad10fe6dfc4 100644
--- a/releasenotes/notes/fix-cu-rust-6464b6893ecca1b3.yaml
+++ b/releasenotes/notes/1.2/fix-cu-rust-6464b6893ecca1b3.yaml
@@ -2,7 +2,7 @@
fixes:
- |
Fixed the definition of the :class:`.CUGate` matrix in Rust-space.
- While this was not noticable while handling the :class:`.CUGate` purely on
+ While this was not noticable when handling the :class:`.CUGate` purely on the
Python side, this had knock-on effects when transpiler passes were using the
Rust representation, such as could happen in :class:`.Consolidate2qBlocks`.
Fixed `#13118 `__.
diff --git a/releasenotes/notes/fix-hoare-opt-56d1ca6a07f07a2d.yaml b/releasenotes/notes/1.2/fix-hoare-opt-56d1ca6a07f07a2d.yaml
similarity index 71%
rename from releasenotes/notes/fix-hoare-opt-56d1ca6a07f07a2d.yaml
rename to releasenotes/notes/1.2/fix-hoare-opt-56d1ca6a07f07a2d.yaml
index 7548dcc99564..00bf6c7a19f7 100644
--- a/releasenotes/notes/fix-hoare-opt-56d1ca6a07f07a2d.yaml
+++ b/releasenotes/notes/1.2/fix-hoare-opt-56d1ca6a07f07a2d.yaml
@@ -3,3 +3,4 @@ fixes:
- |
Fixed a bug in :class:`.HoareOptimizer` where a controlled gate was simplified
by removing its controls but the new gate was not handled correctly.
+ Fixed `#13079 `__.
diff --git a/releasenotes/notes/1.2/fix-negative-seed-pm-2813a62a020da115.yaml b/releasenotes/notes/1.2/fix-negative-seed-pm-2813a62a020da115.yaml
new file mode 100644
index 000000000000..d1cb164fd8a7
--- /dev/null
+++ b/releasenotes/notes/1.2/fix-negative-seed-pm-2813a62a020da115.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ :func:`.generate_preset_pass_manager` now correctly raises an exception,
+ if ``seed_transpiler`` is set to an invalid value (i.e., it is not a non-negative integer).
+ Fixed `#12938 `__.
diff --git a/releasenotes/notes/fix-sabre-releasevalve-7f9af9bfc0482e04.yaml b/releasenotes/notes/1.2/fix-sabre-releasevalve-7f9af9bfc0482e04.yaml
similarity index 76%
rename from releasenotes/notes/fix-sabre-releasevalve-7f9af9bfc0482e04.yaml
rename to releasenotes/notes/1.2/fix-sabre-releasevalve-7f9af9bfc0482e04.yaml
index 17432259be29..45f50580014f 100644
--- a/releasenotes/notes/fix-sabre-releasevalve-7f9af9bfc0482e04.yaml
+++ b/releasenotes/notes/1.2/fix-sabre-releasevalve-7f9af9bfc0482e04.yaml
@@ -1,7 +1,7 @@
---
fixes:
- |
- Fixed an edge case in :class:`.SabreLayout`, where in rare cases on large
+ Fixed an edge case in :class:`.SabreLayout`, where, in rare cases on large
devices and challenging circuits, the routing would fail. This was due to the
release valve making more than one two-qubit gate routable, where only one was expected.
Fixed `#13081 `__.
\ No newline at end of file
diff --git a/releasenotes/notes/1.2/fix-split-2q-unitaries-custom-gate-d10f7670a35548f4.yaml b/releasenotes/notes/1.2/fix-split-2q-unitaries-custom-gate-d10f7670a35548f4.yaml
new file mode 100644
index 000000000000..2dbd27c987c6
--- /dev/null
+++ b/releasenotes/notes/1.2/fix-split-2q-unitaries-custom-gate-d10f7670a35548f4.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Fixed a bug in :class:`.Split2QUnitaries` where it would fail to run on circuits
+ with custom :class:`.Gate` objects that did not implement ``__array__``.
+ See `#12970 `__.
\ No newline at end of file
diff --git a/releasenotes/notes/fix-stateprep-normalize-a8057c339ba619bd.yaml b/releasenotes/notes/1.2/fix-stateprep-normalize-a8057c339ba619bd.yaml
similarity index 100%
rename from releasenotes/notes/fix-stateprep-normalize-a8057c339ba619bd.yaml
rename to releasenotes/notes/1.2/fix-stateprep-normalize-a8057c339ba619bd.yaml
diff --git a/releasenotes/notes/fix-synth-qregs-7662681c0ff02511.yaml b/releasenotes/notes/1.2/fix-synth-qregs-7662681c0ff02511.yaml
similarity index 63%
rename from releasenotes/notes/fix-synth-qregs-7662681c0ff02511.yaml
rename to releasenotes/notes/1.2/fix-synth-qregs-7662681c0ff02511.yaml
index d838032ffaf9..519e9f2d18b3 100644
--- a/releasenotes/notes/fix-synth-qregs-7662681c0ff02511.yaml
+++ b/releasenotes/notes/1.2/fix-synth-qregs-7662681c0ff02511.yaml
@@ -3,5 +3,6 @@ fixes:
- |
Fixed a bug where various synthesis methods created circuits without quantum or
classical registers. This also affected functions that internally used the synthesis
- methods, such as :meth:`.Clifford.to_circuit`.
+ methods, such as :meth:`.Clifford.to_circuit`. While the circuits were valid, this could
+ cause issues when comparing circuits with registers.
Fixed `#13041 `__.
diff --git a/releasenotes/notes/1.2/fix_initialize_gates_to_uncompute-d0dba6a642d07f30.yaml b/releasenotes/notes/1.2/fix_initialize_gates_to_uncompute-d0dba6a642d07f30.yaml
new file mode 100644
index 000000000000..4076388364d6
--- /dev/null
+++ b/releasenotes/notes/1.2/fix_initialize_gates_to_uncompute-d0dba6a642d07f30.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Fixed a bug that caused the method :meth:`.Initialize.gates_to_uncompute` fail.
+ Fixed `#12969 `__.
diff --git a/releasenotes/notes/1.2/prepare-1.2.1-511ae054e7db7e41.yaml b/releasenotes/notes/1.2/prepare-1.2.1-511ae054e7db7e41.yaml
new file mode 100644
index 000000000000..648c3207d5d5
--- /dev/null
+++ b/releasenotes/notes/1.2/prepare-1.2.1-511ae054e7db7e41.yaml
@@ -0,0 +1,3 @@
+---
+prelude: >
+ Qiskit 1.2.1 is a minor bugfix release for the 1.2 series.
diff --git a/releasenotes/notes/restrict-split2q-d51d840cc7a7a482.yaml b/releasenotes/notes/1.2/restrict-split2q-d51d840cc7a7a482.yaml
similarity index 100%
rename from releasenotes/notes/restrict-split2q-d51d840cc7a7a482.yaml
rename to releasenotes/notes/1.2/restrict-split2q-d51d840cc7a7a482.yaml
diff --git a/releasenotes/notes/fix-2q-basis-decomposer-non-std-kak-gate-edc69ffb5d9ef302.yaml b/releasenotes/notes/fix-2q-basis-decomposer-non-std-kak-gate-edc69ffb5d9ef302.yaml
deleted file mode 100644
index 903b9ceac2a2..000000000000
--- a/releasenotes/notes/fix-2q-basis-decomposer-non-std-kak-gate-edc69ffb5d9ef302.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-fixes:
- - |
- Fixed a bug in :class:`.TwoQubitBasisDecomposer` where the Rust-based code
- would panic if the given KAK gate wasn't a Rust-space :class:`StandardGate`.
\ No newline at end of file
diff --git a/releasenotes/notes/fix-negative-seed-pm-2813a62a020da115.yaml b/releasenotes/notes/fix-negative-seed-pm-2813a62a020da115.yaml
deleted file mode 100644
index 352f068537e8..000000000000
--- a/releasenotes/notes/fix-negative-seed-pm-2813a62a020da115.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-fixes:
- - |
- Fixed the behavior of :meth:`.generate_preset_pass_manager` to raise a `ValueError` exception if not provided with a non-negative integer `seed_transpiler` argument.
diff --git a/releasenotes/notes/fix-split-2q-unitaries-custom-gate-d10f7670a35548f4.yaml b/releasenotes/notes/fix-split-2q-unitaries-custom-gate-d10f7670a35548f4.yaml
deleted file mode 100644
index 331156cf6012..000000000000
--- a/releasenotes/notes/fix-split-2q-unitaries-custom-gate-d10f7670a35548f4.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-fixes:
- - |
- Fixed a bug in :class:`.Split2QUnitaries` where it would fail to run on circuits
- with custom gates that didn't implement :meth:`__array__`.
- See `#12984 `__.
\ No newline at end of file
diff --git a/releasenotes/notes/fix_initialize_gates_to_uncompute-d0dba6a642d07f30.yaml b/releasenotes/notes/fix_initialize_gates_to_uncompute-d0dba6a642d07f30.yaml
deleted file mode 100644
index 3c24569455e2..000000000000
--- a/releasenotes/notes/fix_initialize_gates_to_uncompute-d0dba6a642d07f30.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-fixes:
- - |
- Fix a bug that caused the method :meth:`Initialize.gates_to_uncompute()` fail.