Skip to content
Draft
38 changes: 38 additions & 0 deletions doc/auto-release-notes.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Usage: $0 START_DATE (format: YEAR-MM-DD) END_DATE [LABEL] [BRANCH1,BRANCH2] [LIMIT]"
exit 1
fi

START_DATE="$1"
END_DATE="$2"

if [ -n "$4" ]; then
IFS=',' read -ra BRANCHES <<< "$4"
else
BRANCHES=("main")
fi

if [ -n "$5" ]; then
LIMIT=$5
else
LIMIT=300
fi

OUTPUT=""
for BRANCH in "${BRANCHES[@]}"; do
OUTPUT+=$(gh pr list --repo SpikeInterface/probeinterface --limit $LIMIT --base "$BRANCH" --state merged --json number,title,mergedAt \
| jq -r --arg start_date "${START_DATE}T00:00:00Z" --arg end_date "${END_DATE}T00:00:00Z" \
'.[] | select(.mergedAt >= $start_date and .mergedAt <= $end_date) | "* \(.title) (#\(.number))"')
done
if [ -n "$OUTPUT" ]; then
echo ""
echo "$OUTPUT"
echo ""
fi

echo "Contributors:"
echo ""
gh pr list --repo SpikeInterface/probeinterface --limit 1000 --base main --state merged --json number,title,author,mergedAt \
| jq -r --arg start_date "${START_DATE}T00:00:00Z" --arg end_date "${END_DATE}T00:00:00Z" \
'[.[] | select(.mergedAt >= $start_date and .mergedAt <= $end_date and .author.login != "app/pre-commit-ci") | .author.login] | unique | .[] | "* @" + .'
1 change: 1 addition & 0 deletions doc/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Release notes
.. toctree::
:maxdepth: 1

releases/0.4.0.rst
releases/0.3.2.rst
releases/0.3.1.rst
releases/0.3.0.rst
Expand Down
59 changes: 59 additions & 0 deletions doc/releases/0.4.0.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
probeinterface 0.4.0
--------------------

Jul, 6th 2026


Features
^^^^^^^^

* Add regex validation pattern in schema version propert (#450)
* Enhance `ProbeGroup` API and add `ProbeGroup._global_contact_order` for interleaved contacts (#446)
* Add Neuropixels 2.0 support to `read_spikegadgets_neuropixels` (#441)
* Add Neuropixels saturation levels estimation from probe table/metadata (#434)
* Auto-generate `contact_ids` when not explicitly set (#429)
* Migrate `read_spikegadgets` to the catalogue pattern (#418)
* Make `_parse_imro_string` self-contained by deriving IMRO field schemas from the catalogue (#417)
* Implement copy/get_slice/get_global_contact_positions for probegroup (#416)
* Remove legacy probe construction path for `read_imro` and support NP1110 (#410)

Bug fixes
^^^^^^^^^

* Preserve planar contour on ProbeGroup slicing and clarify ambiguous `select_contacts` errors (#453)
* Discard 'apps' folder when listing manufacturers (#451)
* Raise on wrong-sized `device_channel_indices` instead of silently accepting (#430)
* Preserve identity on `Probe.copy()` (#428)
* Add contact_sides to JSON schema (#419)
* Fix quad-base with custom names (#413)


Deprecations
^^^^^^^^^^^^

* Rename `read_spikegadgets` to `read_spikegadgets_neuropixels` and add `has_spikegadgets_neuropixels_probes` (#440)
* Rename `read_openephys` to `read_openephys_neuropixels` and add `has_neuropixels_probes` (#427)


Testing
^^^^^^^

* Update CI actions (#438)
* Add NP2020 probe to test suite (#435)

Docs
^^^

* Document the Neuropixels catalogue pattern (#443)

Packaging
^^^^^^^^^

* Fix typing, deprecations, and update to Python3.10 (#414)

Contributors:

* @alejoe91
* @chrishalcrow
* @h-mayorquin
* @samuelgarcia
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "probeinterface"
version = "0.3.2"
version = "0.4.0"
authors = [
{ name="Samuel Garcia", email="sam.garcia.die@gmail.com" },
{ name="Alessio Buccino", email="alessiop.buccino@gmail.com" },
Expand Down
Loading