diff --git a/.github/workflows/desktop-app.yml b/.github/workflows/desktop-app.yml index 6d8a7cf8..3c03f2f7 100644 --- a/.github/workflows/desktop-app.yml +++ b/.github/workflows/desktop-app.yml @@ -36,7 +36,7 @@ jobs: matrix: include: - os: macos-14 # Apple silicon - platform: macOS-arm64 + platform: macOS-AppleSilicon - os: macos-15-intel # Intel platform: macOS-Intel - os: windows-latest @@ -121,7 +121,9 @@ jobs: - name: Package .dmg if: runner.os == 'macOS' env: - NAME: MEA-NAP-${{ steps.version.outputs.version }}-${{ matrix.platform }} + # No version in the name: the docs link to + # releases/latest/download/, which needs the same name every release. + NAME: MEA-NAP-${{ matrix.platform }} run: | staging=packaging/build/dmg rm -rf "$staging" && mkdir -p "$staging" @@ -143,7 +145,7 @@ jobs: /DSourceDir="$PWD\packaging\dist\MEA-NAP" ` /DOutputDir="$PWD\packaging\dist" ` packaging\windows\meanap.iss - $asset = "packaging/dist/MEA-NAP-${{ steps.version.outputs.version }}-${{ matrix.platform }}-Setup.exe" + $asset = "packaging/dist/MEA-NAP-${{ matrix.platform }}-Setup.exe" "ASSET=$asset" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 - uses: actions/upload-artifact@v4 diff --git a/README.md b/README.md index add3fde4..9b8c79b3 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ > [!IMPORTANT] > **MEA-NAP is now available in Python (beta).** It is much faster and introduces a lot of new features. The MATLAB version is still supported. > -> [**Read the release note**](release_notes/python-beta.md) · [**Download the app**](docs/python/installation.md#the-desktop-app-easiest) (Windows, Mac) · [**Install from source**](docs/python/installation.md#from-the-source-code) · [**Quickstart**](docs/python/quickstart.md) · [**MATLAB vs Python**](docs/python/matlab-vs-python.md) · [**Send us feedback**](https://github.com/SAND-Lab/MEA-NAP/discussions) +> [**Read the release note**](release_notes/python-beta.md) · [**Download the app**](https://analysis-pipeline.readthedocs.io/en/latest/python/installation.html#the-desktop-app-easiest) (Windows, Mac) · [**Install from source**](https://analysis-pipeline.readthedocs.io/en/latest/python/installation.html#from-the-source-code) · [**Quickstart**](docs/python/quickstart.md) · [**MATLAB vs Python**](docs/python/matlab-vs-python.md) · [**Send us feedback**](https://github.com/SAND-Lab/MEA-NAP/discussions) ![Visitors](https://api.visitorbadge.io/api/visitors?path=https%3A%2F%2Fgithub.com%2FSAND-Lab%2FAnalysisPipeline&label=Visitors&countColor=%23263759) [![Documentation Status](https://readthedocs.org/projects/analysis-pipeline/badge/?version=latest)](https://analysis-pipeline.readthedocs.io/en/latest/?badge=latest) diff --git a/docs/imgs/download-mac.svg b/docs/imgs/download-mac.svg new file mode 100644 index 00000000..32de3dc6 --- /dev/null +++ b/docs/imgs/download-mac.svg @@ -0,0 +1 @@ +Download for Mac diff --git a/docs/imgs/download-windows.svg b/docs/imgs/download-windows.svg new file mode 100644 index 00000000..ecb0b8c3 --- /dev/null +++ b/docs/imgs/download-windows.svg @@ -0,0 +1 @@ +Download for Windows diff --git a/docs/python/installation.md b/docs/python/installation.md index 616f08b2..198345c3 100644 --- a/docs/python/installation.md +++ b/docs/python/installation.md @@ -13,21 +13,21 @@ same results. ## The desktop app (easiest) -Download the file for your computer from the -[**latest release**](https://github.com/SAND-Lab/MEA-NAP/releases/latest) -on GitHub, under **Assets**: +Click the logo for your computer. The download starts straight away, and is +always the newest version. -| Computer | File | -|---|---| -| Windows 10 or 11 (64-bit) | `MEA-NAP--Windows-x64-Setup.exe` | -| Mac with Apple silicon (M1, M2, M3, M4 …) | `MEA-NAP--macOS-arm64.dmg` | -| Mac with an Intel processor | `MEA-NAP--macOS-Intel.dmg` | +| [![Download for Windows](../imgs/download-windows.svg)](https://github.com/SAND-Lab/MEA-NAP/releases/latest/download/MEA-NAP-Windows-x64-Setup.exe) | [![Download for Mac with Apple silicon](../imgs/download-mac.svg)](https://github.com/SAND-Lab/MEA-NAP/releases/latest/download/MEA-NAP-macOS-AppleSilicon.dmg) | [![Download for Mac with Intel](../imgs/download-mac.svg)](https://github.com/SAND-Lab/MEA-NAP/releases/latest/download/MEA-NAP-macOS-Intel.dmg) | +|:---:|:---:|:---:| +| [**Windows**](https://github.com/SAND-Lab/MEA-NAP/releases/latest/download/MEA-NAP-Windows-x64-Setup.exe)
Windows 10 or 11 | [**Mac – Apple silicon**](https://github.com/SAND-Lab/MEA-NAP/releases/latest/download/MEA-NAP-macOS-AppleSilicon.dmg)
M1, M2, M3, M4 … | [**Mac – Intel**](https://github.com/SAND-Lab/MEA-NAP/releases/latest/download/MEA-NAP-macOS-Intel.dmg)
older Macs | Not sure which Mac you have? Apple menu → **About This Mac**: "Chip: Apple M…" means Apple silicon; "Processor: … Intel …" means an Intel Mac. Either needs macOS 12 (Monterey) or later. -The download is about 150 MB (about 700 MB once installed): it carries its own Python +What changed in each version, and older versions, are on the +[releases page](https://github.com/SAND-Lab/MEA-NAP/releases). + +The download is 130–180 MB (about 700 MB once installed): it carries its own Python and every library MEA-NAP uses, including OASIS for CAT-NAP and the spike sorters. @@ -48,11 +48,9 @@ In Edge, it's the **…** beside the download → **Keep** → **Show more** → [GitHub releases page](https://github.com/SAND-Lab/MEA-NAP/releases) — that is what makes it safe to click through. -:::::{tab-set} - -::::{tab-item} Windows +### Installing on Windows -1. Double-click `MEA-NAP-…-Setup.exe`. +1. Double-click `MEA-NAP-Windows-x64-Setup.exe`. 2. Windows may show **"Windows protected your PC"**. This appears for any app that is not yet signed with a paid certificate. Click **More info**, then **Run anyway**. @@ -64,11 +62,9 @@ To update, download the newer installer and run it: it replaces the old version and keeps your settings. To uninstall: **Settings → Apps → Installed apps → MEA-NAP → Uninstall**. -:::: +### Installing on a Mac -::::{tab-item} macOS - -1. Double-click the `MEA-NAP-…-macOS-….dmg` you downloaded, then drag **MEA-NAP** onto +1. Double-click the `MEA-NAP-macOS-….dmg` you downloaded, then drag **MEA-NAP** onto the **Applications** folder in the window that opens. 2. Open MEA-NAP from Applications (or Launchpad). The first time, macOS says it **"could not verify MEA-NAP is free of malware"** (older macOS: "cannot @@ -96,9 +92,7 @@ again: xattr -dr com.apple.quarantine /Applications/MEA-NAP.app ``` -:::: - -::::: +### Good to know **The first analysis is slower than later ones.** Parts of step 4 are compiled for your processor the first time they run, and the result is kept for next @@ -187,12 +181,13 @@ If a fresh install fails with `error: command 'cmake' not found`, `clang: error: unsupported option '-fopenmp'`, or a long `Building wheel for ... did not run successfully` traceback, it's almost always one of the three above missing. +### Installing + Install with either uv or pip — **from the `MEA-NAP` folder** you changed into above. If you have opened a new terminal since then, `cd` back into it first. -::::{tab-set} +#### With uv (recommended) -:::{tab-item} uv (recommended) [uv](https://docs.astral.sh/uv/) manages the virtual environment and the lockfile (`uv.lock`) for you, so every contributor gets identical dependency versions. @@ -215,9 +210,9 @@ don't need to activate the environment — prefix commands with `uv run`: ```bash uv run meanap-gui ``` -::: -:::{tab-item} pip / venv +#### With pip / venv + If you'd rather manage your own virtual environment — again from the `MEA-NAP` folder: @@ -234,22 +229,17 @@ This installs `meanap` in editable mode using the dependencies declared in ```bash meanap-gui ``` -::: - -:::: The same install gives the `meanap` command, which runs a saved parameter file without the GUI — see [Running from the command line](command-line.md). On a machine with no screen, `meanap example` is a quick check that everything works. -:::{admonition} "No `pyproject.toml` found" / "Neither 'setup.py' nor 'pyproject.toml' found" -:class: tip -Both errors mean the same thing: the command ran in the wrong directory. Run -`pwd` — the path should end in `/MEA-NAP` — and `ls`, which should list -`pyproject.toml` next to the `src/`, `python/` and `docs/` folders. If you are -inside `python/`, run `cd ..` and try again. -::: +> **"No `pyproject.toml` found" / "Neither 'setup.py' nor 'pyproject.toml' +> found"?** Both errors mean the same thing: the command ran in the wrong +> directory. Run `pwd` — the path should end in `/MEA-NAP` — and `ls`, which +> should list `pyproject.toml` next to the `src/`, `python/` and `docs/` +> folders. If you are inside `python/`, run `cd ..` and try again. ### Optional: OASIS deconvolution (CAT-NAP) diff --git a/packaging/windows/meanap.iss b/packaging/windows/meanap.iss index 78363578..d701710f 100644 --- a/packaging/windows/meanap.iss +++ b/packaging/windows/meanap.iss @@ -1,6 +1,6 @@ ; Inno Setup script for the MEA-NAP Windows installer. ; -; iscc /DAppVersion=1.12.0 /DSourceDir=packaging\dist\MEA-NAP /DOutputDir=out packaging\windows\meanap.iss +; iscc /DAppVersion=1.13.0 /DSourceDir=packaging\dist\MEA-NAP /DOutputDir=out packaging\windows\meanap.iss ; ; Installs for the current user only (no administrator rights, which many ; university-managed PCs don't give), into %LOCALAPPDATA%\Programs\MEA-NAP. @@ -34,7 +34,8 @@ PrivilegesRequiredOverridesAllowed=dialog ArchitecturesAllowed=x64compatible ArchitecturesInstallIn64BitMode=x64compatible OutputDir={#OutputDir} -OutputBaseFilename=MEA-NAP-{#AppVersion}-Windows-x64-Setup +; No version: the docs link to releases/latest/download/. +OutputBaseFilename=MEA-NAP-Windows-x64-Setup SetupIconFile=..\build\icon.ico UninstallDisplayIcon={app}\MEA-NAP.exe Compression=lzma2/max diff --git a/python/DESKTOP_APP_PLAN.md b/python/DESKTOP_APP_PLAN.md index 9ad78d62..83e1281c 100644 --- a/python/DESKTOP_APP_PLAN.md +++ b/python/DESKTOP_APP_PLAN.md @@ -14,6 +14,7 @@ it, and gets the MEA-NAP GUI. Today's route — git clone, `uv sync`, | Extras inside | **OASIS** (CAT-NAP denoising; without it results silently differ) and **spike sorting** (SpikeInterface + MountainSort5 + hdbscan). | | Left out | CAT-NAP **cell tracking** (needs `roicat` → PyTorch, not a declared dependency); **Kilosort**; **launching MATLAB / old MATLAB-only releases**; switching between versions in place. | | Distribution | `.dmg` (macOS) and a setup `.exe` (Windows, Inno Setup), built by GitHub Actions on each **official** release tag (and on demand) and attached to the GitHub release. Not on every dev build: hundreds of MB per merge. | +| Download links | Asset names carry **no version** (`MEA-NAP-Windows-x64-Setup.exe`, `MEA-NAP-macOS-AppleSilicon.dmg`, `MEA-NAP-macOS-Intel.dmg`) so the install page can link to `releases/latest/download/`, one click, always the newest. README → the docs site's install page (MyST doesn't render on GitHub). | | Updates | The app checks GitHub's releases (public repo, no git, no login) and offers a link to download the newer one. | ## What has to change in the code