Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/prepare-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
workflow_dispatch:
inputs:
version:
description: "Version (X.Y.Z, no v prefix)"
description: "PEP 440 version (e.g. 0.4.0 or 0.4.0a1), no v prefix"
required: true
type: string
release_date:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ instance/

# Sphinx documentation
docs/_build/
# Autosummary stubs (generated by sphinx-build / make html; do not commit)
docs/_autosummary/

# PyBuilder
Expand Down
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.12
3.12
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Contributing to Clinical DBS Annotator
# Contributing to DBS Annotator

We welcome contributions to the Clinical DBS Annotator! This document provides guidelines for contributors who want to help improve this open-source software for deep brain stimulation research.
We welcome contributions to DBS Annotator! This document provides guidelines for contributors who want to help improve this open-source software for deep brain stimulation research.

For detailed guidelines, please see the [Contributing Guide](docs/contributing.rst).

Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2025 BML
Copyright (c) 2026 Wyss Center

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Clinical DBS Annotator
# DBS Annotator

[![CI](https://github.com/Brain-Modulation-Lab/App_ClinicalDBSAnnot/actions/workflows/ci.yml/badge.svg)](https://github.com/Brain-Modulation-Lab/App_ClinicalDBSAnnot/actions/workflows/ci.yml)
[![Docs Health](https://github.com/Brain-Modulation-Lab/App_ClinicalDBSAnnot/actions/workflows/docs-health.yml/badge.svg)](https://github.com/Brain-Modulation-Lab/App_ClinicalDBSAnnot/actions/workflows/docs-health.yml)
Expand All @@ -7,7 +7,7 @@
A desktop application for annotating Deep Brain Stimulation (DBS) clinical programming sessions. Built for clinicians and researchers working with DBS systems (Medtronic Percept and others).

**Version:** derived from `dbs_annotator.__version__`
**Author:** Lucia Poma (lucia.poma@wysscenter.ch)
**Publisher:** Wyss Center (contact: lucia.poma@wysscenter.ch)

## For End Users

Expand Down Expand Up @@ -209,4 +209,4 @@ MIT License — see [LICENSE](LICENSE) for details.

## Contact

Lucia Poma — lucia.poma@wysscenter.ch
Wyss Center — lucia.poma@wysscenter.ch
4 changes: 2 additions & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@

_DIST_NAME = "dbs-annotator"

project = "Clinical DBS Annotator"
author = "Lucia Poma"
project = "DBS Annotator"
author = "Wyss Center"
release = metadata.version(_DIST_NAME)
version = ".".join(release.split(".")[:2])
copyright = f"2025-{datetime.now().year}, {author}"
Expand Down
13 changes: 6 additions & 7 deletions docs/contributing.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
Contributing to Clinical DBS Annotator
Contributing to DBS Annotator
======================================

We welcome contributions to the Clinical DBS Annotator! This page is the
authoritative contributor guide for the repository. The short
``CONTRIBUTING.md`` at the repository root is a pointer into this page.
We welcome contributions to DBS Annotator! This page is the authoritative
contributor guide for the repository. The short ``CONTRIBUTING.md`` at the
repository root is a pointer into this page.

.. contents::
:local:
Expand Down Expand Up @@ -489,9 +489,8 @@ For data-science contributions:
Thank You
---------

Thank you for considering contributing to the Clinical DBS Annotator! Your
contributions help make deep brain stimulation research more accessible and
reproducible.
Thank you for considering contributing to DBS Annotator! Your contributions
help make deep brain stimulation research more accessible and reproducible.

For questions about contributing, please open an issue or start a discussion
on GitHub.
10 changes: 5 additions & 5 deletions docs/index.rst
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
.. Clinical DBS Annotator documentation master file
.. DBS Annotator documentation master file

Clinical DBS Annotator
======================
DBS Annotator
=============

.. image:: _static/logo.png
:alt: Clinical DBS Annotator
:alt: DBS Annotator
:align: center
:width: 180px

|

**Clinical DBS Annotator** is a desktop application for recording and analysing
**DBS Annotator** is a desktop application for recording and analysing
Deep Brain Stimulation (DBS) clinical programming sessions. It guides the
clinician or researcher through the full session workflow — from initial
electrode configuration and baseline scales, through real-time stimulation
Expand Down
6 changes: 3 additions & 3 deletions docs/installation.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Installation
============

Clinical DBS Annotator ships as a **single self-contained executable** — no
DBS Annotator ships as a **single self-contained executable** — no
Python, no libraries, no system configuration required.

----
Expand All @@ -26,7 +26,7 @@ Steps
b. Follow the on-screen prompts (Next → Next → Finish).
c. A shortcut appears on your Desktop and in the Start Menu.

3. **If you received a standalone** ``ClinicalDBSAnnot.exe`` **file:**
3. **If you received a standalone** ``DBSAnnotator.exe`` **file:**

a. Copy the file to any folder you prefer (e.g. ``C:\Users\YourName\DBS_Tool\``).
b. Double-click to launch — no further steps needed.
Expand Down Expand Up @@ -62,7 +62,7 @@ macOS
below assume a ``.dmg`` disk image has been provided.

1. Open the ``.dmg`` file.
2. Drag **ClinicalDBSAnnot** to your *Applications* folder.
2. Drag **DBSAnnotator** to your *Applications* folder.
3. On first launch, right-click the app icon → **Open** → **Open** again in the
dialog. This is required once because the app is not notarised.

Expand Down
2 changes: 1 addition & 1 deletion docs/quickstart.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ choosing the right workflow for your needs.
Launching the Application
--------------------------

Double-click **ClinicalDBSAnnot.exe** (or the Desktop shortcut). The main
Double-click **DBSAnnotator.exe** (or the Desktop shortcut). The main
window opens, showing the **Home screen**.

.. image:: _static/home_screen.png
Expand Down
27 changes: 22 additions & 5 deletions docs/releasing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ Version sources
Keep these in sync whenever you cut a release:

- ``__version__`` in ``src/dbs_annotator/__init__.py`` — Hatch reads this as the
``dbs-annotator`` distribution version.
``dbs-annotator`` distribution version (PEP 440: stable ``X.Y.Z`` or prereleases
such as ``X.Y.Za1``, ``X.Y.Zb2``, ``X.Y.Zrc1``).
- ``version`` under ``[tool.briefcase]`` in ``pyproject.toml`` (Briefcase requires a static string)

The automation below updates both, then runs `Towncrier`_ to fold Markdown fragments
Expand Down Expand Up @@ -55,8 +56,23 @@ Option A — Prepare the release PR locally
.. code-block:: bash

uv sync --dev
uv run python scripts/release_prepare.py X.Y.Z --dry-run
uv run python scripts/release_prepare.py X.Y.Z --commit
uv run python scripts/release_prepare.py 0.4.0 --dry-run
uv run python scripts/release_prepare.py 0.4.0rc1 --commit

Instead of typing the next version explicitly, derive it from the current
``__version__`` with ``--bump``:

.. code-block:: bash

uv run python scripts/release_prepare.py --bump alpha --dry-run
uv run python scripts/release_prepare.py --bump beta --dry-run
uv run python scripts/release_prepare.py --bump rc --dry-run
uv run python scripts/release_prepare.py --bump stable --dry-run
uv run python scripts/release_prepare.py --bump patch --dry-run

``alpha`` / ``beta`` / ``rc`` advance the prerelease train; ``stable`` drops
prerelease labels (``0.4.0rc2`` → ``0.4.0``). ``patch`` / ``minor`` / ``major``
apply only when there is **no** prerelease segment (run ``--bump stable`` first).

Use ``--date YYYY-MM-DD`` if the Towncrier release date should not be “today”.
Use ``--skip-towncrier`` only in exceptional cases (changelog skipped).
Expand All @@ -69,8 +85,9 @@ Option B — Prepare the release PR from GitHub Actions

1. In GitHub: **Actions** → **CD - Prepare release PR** → **Run workflow**.

2. Enter **Version** (``X.Y.Z`` without a ``v`` prefix). Optionally set **Release date**
(``YYYY-MM-DD``); otherwise UTC “today” is used.
2. Enter **Version** (PEP 440 string without a ``v`` prefix, e.g. ``0.4.0`` or
``0.4.0a1``). Optionally set **Release date** (``YYYY-MM-DD``); otherwise UTC
“today” is used.

3. The workflow creates branch ``chore/release-prep-X.Y.Z``, runs the same steps as
``scripts/release_prepare.py``, pushes it, and opens a pull request.
Expand Down
1 change: 1 addition & 0 deletions newsfragments/62.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Ship ``0.4.0a1`` alpha, space-free data/install paths (``WyssCenter`` / ``DBSAnnotator``), optional GitHub release update checks, upgrade-safe user config locations, and ``release_prepare.py --bump`` for prerelease and semver bumps.
29 changes: 12 additions & 17 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ authors = [
keywords = ["dbs", "annotation", "neuroscience", "deep-brain-stimulation"]
dynamic = ["version"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Healthcare Industry",
"Intended Audience :: Science/Research",
"Topic :: Scientific/Engineering :: Medical Science Apps.",
Expand All @@ -29,14 +28,15 @@ dependencies = [
"pydantic>=2.0",
"pyside6>=6.11.0",
"matplotlib>=3.5",
"packaging>=23.0",
]

[dependency-groups]
dev = [
"pytest>=9.0.3",
"pytest-qt>=4.5.0",
"pytest-timeout>=2.4.0",
"pytest-cov>=7.1.0",
"pytest>=8.0.0",
"pytest-qt>=4.4.0",
"pytest-timeout>=2.3.0",
"pytest-cov>=4.1.0",
"ruff>=0.1.0",
"pre-commit>=3.6",
"pre-commit-uv>=4.2.1",
Expand Down Expand Up @@ -119,11 +119,7 @@ select = [
"src/dbs_annotator/views/wizard_window.py" = ["E501"]

[tool.codespell]
# `vas` is the clinical abbreviation for "Visual Analog Scale"; without this
# it is reported as a misspelling of "was". Add further domain terms as they
# come up.
ignore-words-list = "vas"
# Skip binary assets, generated build output, lockfiles, and logs.
skip = "uv.lock,.venv,build,dist,htmlcov,docs/_build,*.svg,*.ico,*.png,*.pdf,*.log,*.min.js"

[tool.doc8]
Expand All @@ -132,7 +128,6 @@ ignore = ["D004"]
ignore-path = ["docs/_build", "docs/_templates"]

[tool.interrogate]
# Starting floor; raise as coverage improves.
fail-under = 85
ignore-init-module = true
ignore-magic = true
Expand Down Expand Up @@ -177,19 +172,19 @@ directory = "docs"
name = "Documentation"
showcontent = true

# BeeWare Briefcase: native installers (Windows MSI / macOS .app + DMG).
# App entrypoint: `python -m dbs_annotator` (see src/dbs_annotator/__main__.py).
# Project [project] metadata (version via Hatch, dependencies) is merged by Briefcase.
[tool.briefcase]
project_name = "DBS Annotator"
project_name = "DBSAnnotator"
bundle = "ch.wysscenter.dbsannotator"
# Briefcase requires a static version here even when [project] uses dynamic version from Hatch.
version = "0.3.0"
# Briefcase requires a static version here even when [project] uses dynamic version
version = "0.4.0a1"
license = { file = "LICENSE" }
author = "WyssCenter"
author_email = "lucia.poma@wysscenter.ch"
url = "https://github.com/Brain-Modulation-Lab/App_ClinicalDBSAnnot"

[tool.briefcase.app.dbs_annotator]
formal_name = "DBSAnnotator"
description = "An application for annotating clinical programming sessions."
description = "A graphical user interface for annotating DBS clinical programming sessions"
long_description = """
DBS Annotator is a desktop application used to structure and review
deep-brain stimulation programming sessions in a reproducible workflow.
Expand Down
Loading
Loading