diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 278b6c7..4211169 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -7,6 +7,12 @@ "commands": [ "docfx" ] + }, + "doclinkchecker": { + "version": "1.19.0", + "commands": [ + "DocLinkChecker" + ] } } } \ No newline at end of file diff --git a/.github/workflows/DocLinkChecker.config b/.github/workflows/DocLinkChecker.config new file mode 100644 index 0000000..1c30fc1 --- /dev/null +++ b/.github/workflows/DocLinkChecker.config @@ -0,0 +1,29 @@ +{ + "DocumentationFiles": { + "src": ".", + "Files": [ + "**/*.md", + "*.md" + ], + "Exclude": [ + "_site/*", + ".bonsai/*", + "src/*" + ] + }, + "ResourceFolderNames": [ + ], + "DocLinkChecker": { + "RelativeLinkStrategy": "All", + "CheckForOrphanedResources": true, + "CleanupOrphanedResources": false, + "ValidatePipeTableFormatting": true, + "ValidateExternalLinks": true, + "ConcurrencyLevel": 5, + "MaxHttpRedirects": 20, + "ExternalLinkDurationWarning": 3000, + "WhitelistUrls": [ + "http://localhost" + ] + } +} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 552f93b..78c60d4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,10 +2,10 @@ name: Build docs on: - workflow_dispatch: push: - branches: - main + branches: [ main ] + pull_request: + branches: [ main ] jobs: build: @@ -15,12 +15,19 @@ jobs: uses: actions/checkout@v4.1.1 with: submodules: true - + - name: Setup .NET Core SDK uses: actions/setup-dotnet@v4.0.0 with: dotnet-version: 8.x + - name: Install DocLinkChecker + run: dotnet tool install DocLinkChecker + + # Check for missing / broken links in the *.md files prior to building the website + - name: Check Documentation Links + run: dotnet DocLinkChecker -v -f .github/workflows/DocLinkChecker.config + - name: Setup DocFX run: dotnet tool restore @@ -29,8 +36,46 @@ jobs: run: .\Setup.ps1 - name: Build Documentation - run: .\build.ps1 - + run: .\build.ps1 --logLevel Warning --warningsAsErrors + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: _site + path: _site + if-no-files-found: error + + check: + name: Check Links + runs-on: ubuntu-latest + needs: build + steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: _site + path: _site + + # This checks for missing / broken links in the *.html files after building the website. + # We need to run this step here to check that all auto-generated API pages have valid links too. + - name: Check HTML Links After Building + uses: lycheeverse/lychee-action@v1.10.0 + with: + args: --verbose --no-progress --base _site --exclude ^https://github\.com.*merge.* --exclude ^https://github\.com.*apiSpec.* '_site/**/*.html' + fail: true + + deploy: + name: Deploy docs to gh-pages + runs-on: ubuntu-latest + needs: [ build, check ] + if: github.event_name == 'push' + steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: _site + path: _site + - name: Checkout gh-pages uses: actions/checkout@v4.1.1 with: @@ -38,8 +83,9 @@ jobs: path: gh-pages - name: Publish to github pages - uses: peaceiris/actions-gh-pages@v3.9.3 + uses: peaceiris/actions-gh-pages@v4.0.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: _site force_orphan: true + diff --git a/apidoc/OpenEphys.Onix.ConfigureBreakoutBoard.md b/apidoc/OpenEphys.Onix.ConfigureBreakoutBoard.md index 8677647..fc6cc39 100644 --- a/apidoc/OpenEphys.Onix.ConfigureBreakoutBoard.md +++ b/apidoc/OpenEphys.Onix.ConfigureBreakoutBoard.md @@ -1,5 +1,5 @@ --- -uid: OpenEphys.Onix.ConfigureBreakoutBoard +uid: OpenEphys.Onix1.ConfigureBreakoutBoard --- [!INCLUDE [Hub Template](hub_template.md)] \ No newline at end of file diff --git a/apidoc/OpenEphys.Onix.ConfigureHeadstage64.md b/apidoc/OpenEphys.Onix.ConfigureHeadstage64.md index 36d1720..22bcd1a 100644 --- a/apidoc/OpenEphys.Onix.ConfigureHeadstage64.md +++ b/apidoc/OpenEphys.Onix.ConfigureHeadstage64.md @@ -1,5 +1,5 @@ --- -uid: OpenEphys.Onix.ConfigureHeadstage64 +uid: OpenEphys.Onix1.ConfigureHeadstage64 --- [!INCLUDE [Hub Template](hub_template.md)] \ No newline at end of file diff --git a/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV1eHeadstage.md b/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV1eHeadstage.md index c1a6b25..14a4ced 100644 --- a/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV1eHeadstage.md +++ b/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV1eHeadstage.md @@ -1,5 +1,5 @@ --- -uid: OpenEphys.Onix.ConfigureNeuropixelsV1eHeadstage +uid: OpenEphys.Onix1.ConfigureNeuropixelsV1eHeadstage --- [!INCLUDE [Hub Template](hub_template.md)] \ No newline at end of file diff --git a/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV2eBetaHeadstage.md b/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV2eBetaHeadstage.md index 998fe13..235fa3f 100644 --- a/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV2eBetaHeadstage.md +++ b/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV2eBetaHeadstage.md @@ -1,5 +1,5 @@ --- -uid: OpenEphys.Onix.ConfigureNeuropixelsV2eBetaHeadstage +uid: OpenEphys.Onix1.ConfigureNeuropixelsV2eBetaHeadstage --- [!INCLUDE [Hub Template](hub_template.md)] \ No newline at end of file diff --git a/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV2eHeadstage.md b/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV2eHeadstage.md index 85340d2..a947648 100644 --- a/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV2eHeadstage.md +++ b/apidoc/OpenEphys.Onix.ConfigureNeuropixelsV2eHeadstage.md @@ -1,5 +1,5 @@ --- -uid: OpenEphys.Onix.ConfigureNeuropixelsV2eHeadstage +uid: OpenEphys.Onix1.ConfigureNeuropixelsV2eHeadstage --- [!INCLUDE [Hub Template](hub_template.md)] \ No newline at end of file diff --git a/apidoc/OpenEphys_Onix_Bno055Data.md b/apidoc/OpenEphys_Onix_Bno055Data.md deleted file mode 100644 index 5c92613..0000000 --- a/apidoc/OpenEphys_Onix_Bno055Data.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -uid: OpenEphys.Onix.Bno055Data ---- diff --git a/apidoc/OpenEphys_Onix_ConfigureBno055.md b/apidoc/OpenEphys_Onix_ConfigureBno055.md deleted file mode 100644 index 1495311..0000000 --- a/apidoc/OpenEphys_Onix_ConfigureBno055.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -uid: OpenEphys.Onix.ConfigureBno055 ---- diff --git a/articles/getting-started/initialize_oni_context.md b/articles/getting-started/initialize_oni_context.md index 1b9983a..84958c9 100644 --- a/articles/getting-started/initialize_oni_context.md +++ b/articles/getting-started/initialize_oni_context.md @@ -3,22 +3,22 @@ uid: InitializeOniContext title: Initialize the ONI Context --- -The [`CreateContext`](xref:OpenEphys.Onix.CreateContext) operator initializes the acquisition context, and it should be the first node you add to your workflow as it provides access to the hardware device table for all other configuration operators. There are several different ways to find this node and add it to the workflow: +The [`CreateContext`](xref:OpenEphys.Onix1.CreateContext) operator initializes the acquisition context, and it should be the first node you add to your workflow as it provides access to the hardware device table for all other configuration operators. There are several different ways to find this node and add it to the workflow: 1. From the Bonsai editor, navigate to the toolbox on the left side of the screen and expand the **Source** section. Next, expand the **OpenEphys.Onix** section, and find the `CreateContext` line. The node can then be added by either double-clicking it, or dragging and dropping the node into the workflow. - ![Search for CreateContext node manually](~/images/bonsai-editor-place-create-context-manually.png){width=700px} + ![Search for CreateContext node manually](../../images/bonsai-editor-place-create-context-manually.png){width=700px} 2. Click on the textbox at the top of the toolbox on the left, or from Ctrl + E to focus on the textbox, and type `CreateContext` to search for the node. Same as (1), the node can be placed by double-clicking or dragging and dropping; additionally, if the `CreateContext` string is highlighted Enter can be pressed to place the node immediately. - ![Search for CreateContext node from textbox](~/images/bonsai-editor-place-create-context-search.png){width=700px} + ![Search for CreateContext node from textbox](../../images/bonsai-editor-place-create-context-search.png){width=700px} -3. Hover over the image of the [`CreateContext`](xref:OpenEphys.Onix.CreateContext) workflow below, and click on the clipboard icon in the top-right corner of the workflow image to copy the workflow to the clipboard. Navigate back to Bonsai, and paste the copied workflow into the active editor. Pasting can be done via Ctrl + V, or right-clicking in the editor and choosing **Paste**. +3. Hover over the image of the [`CreateContext`](xref:OpenEphys.Onix1.CreateContext) workflow below, and click on the clipboard icon in the top-right corner of the workflow image to copy the workflow to the clipboard. Navigate back to Bonsai, and paste the copied workflow into the active editor. Pasting can be done via Ctrl + V, or right-clicking in the editor and choosing **Paste**. ## CreateContext Workflow -This is a nominally functional workflow that provides access to the ONI context, from which all nodes can then be linked to and configured, while also demonstrating how a Breakout Board can be configured before finishing the configuration chain by placing a [`StartAcquisition`](xref:OpenEphys.Onix.StartAcquisition) node: +This is a nominally functional workflow that provides access to the ONI context, from which all nodes can then be linked to and configured, while also demonstrating how a Breakout Board can be configured before finishing the configuration chain by placing a [`StartAcquisition`](xref:OpenEphys.Onix1.StartAcquisition) node: :::workflow -![CreateContext](~/workflows/operators/ConfigureBreakoutBoard.bonsai) +![CreateContext](../../workflows/operators/ConfigureBreakoutBoard.bonsai) ::: diff --git a/articles/getting-started/next_steps.md b/articles/getting-started/next_steps.md index 0bec522..a18c0df 100644 --- a/articles/getting-started/next_steps.md +++ b/articles/getting-started/next_steps.md @@ -5,6 +5,6 @@ title: Next Steps Continue browsing and check out specific nodes on the left to see how to configure each node, as well as some ways to visualize data. Each page will have a fully functional workflow that can be copied into Bonsai to provide an easy starting point for generating data. -For more technical information on each node, head to the to see a more developer-focused view of each node. +For more technical information on each node, head to the to see a more developer-focused view of each node. More complex and in-depth tutorials for placing multiple nodes and moving towards generating data in an experimental setting can be found in the . diff --git a/articles/getting-started/node_types.md b/articles/getting-started/node_types.md index 0790cb2..bc3f82c 100644 --- a/articles/getting-started/node_types.md +++ b/articles/getting-started/node_types.md @@ -7,8 +7,8 @@ In Bonsai, all objects are called "nodes", and have a specific function associat | Node Type | Description | Example ONIX nodes | | --------- | ----------- | ------------------ | -| Source | Generate event streams from devices or files | [`CreateContext`](xref:OpenEphys.Onix.CreateContext), [`Bno055Data`](xref:OpenEphys.Onix.Bno055Data), [`NeuropixelsV1eData`](xref:OpenEphys.Onix.NeuropixelsV1eData) | -| Sink | Save data or trigger external outputs | [`ConfigureHeadstage64`](xref:OpenEphys.Onix.ConfigureHeadstage64), [`ConfigureNeuropixelsV1eHeadstage`](xref:OpenEphys.Onix.ConfigureNeuropixelsV1eHeadstage) | -| Combinator | Manage control flow or synchronize parallel inputs | [`StartAcquisition`](xref:OpenEphys.Onix.StartAcquisition) | +| Source | Generate event streams from devices or files | [`CreateContext`](xref:OpenEphys.Onix1.CreateContext), [`Bno055Data`](xref:OpenEphys.Onix1.Bno055Data), [`NeuropixelsV1eData`](xref:OpenEphys.Onix1.NeuropixelsV1eData) | +| Sink | Save data or trigger external outputs | [`ConfigureHeadstage64`](xref:OpenEphys.Onix1.ConfigureHeadstage64), [`ConfigureNeuropixelsV1eHeadstage`](xref:OpenEphys.Onix1.ConfigureNeuropixelsV1eHeadstage) | +| Combinator | Manage control flow or synchronize parallel inputs | [`StartAcquisition`](xref:OpenEphys.Onix1.StartAcquisition) | Nodes are placed in the Bonsai editor and can be saved into a "workflow", which is a grouping of nodes and saved settings. This workflow can then be run to perform some task, depending on what nodes are placed. diff --git a/articles/getting-started/tips_and_tricks.md b/articles/getting-started/tips_and_tricks.md index 8a1ed92..1f7a085 100644 --- a/articles/getting-started/tips_and_tricks.md +++ b/articles/getting-started/tips_and_tricks.md @@ -11,7 +11,7 @@ The order of nodes is also important for which actions can be taken. In the tabl | Goal | Clicks / Keystrokes | Description | | ---- | ------------------- | ----------- | -| Link two nodes | Click and hold the first node, drag the cursor to the second node, and release | While dragging the cursor, it will temporarily change to a red symbol until there is a valid target (e.g., the second node), where it will change to an up arrow | +| Link two nodes | Click and hold the first node, drag the cursor to the second node, and release | While dragging the cursor, it will temporarily change to a red symbol until there is a valid target (e.g., the second node), where it will change to an up arrow | | Link two nodes | Right-click the first node, and select **Create Connection**. Select the second node | While moving the cursor, it will change to an up arrow. A valid node target will change color when hovering over it | | Link two nodes on placement | Click on a node in the editor to select it, then place a node using either method (1) or (2) above | If a node is currently selected in the editor when a new node is added, whether it is added by clicking and dragging, double-clicking, or pressing **Enter**, the newly placed node will be connected to the first node automatically | | Unlink two nodes | Click the first node to select it, hold **Shift**, click and hold the first node, drag to the second node, and release | While dragging the cursor, it will temporarily change to a red symbol until there is a valid target (e.g., the second node), where it will change to an up arrow | @@ -20,7 +20,7 @@ The order of nodes is also important for which actions can be taken. In the tabl | Change order of nodes in a row | Hold **Ctrl**, click and hold the first node, drag to the right to the second node, and release | This action does not require that the node be selected prior to performing the action. This can change the order of any two nodes that are a part of the same row; it is not constrained to adjacent nodes. Note that if the new placement of the nodes is not valid (such as giving a `Source` node an input), it will knock the node of the current row and remove any connections | > [!Note] -> In the context of `OpenEphys.Onix`, almost all workflows should have the top row containing a [`CreateContext`](xref:OpenEphys.Onix.CreateContext) node connected to an arbitrary number of `Configure*` nodes, finished with a [`StartAcquisition`](xref:OpenEphys.Onix.StartAcquisition) node. Subsequent rows can contain the corresponding `*Data` nodes configured above, and any processing / visualizing nodes needed. +> In the context of `OpenEphys.Onix1`, almost all workflows should have the top row containing a [`CreateContext`](xref:OpenEphys.Onix1.CreateContext) node connected to an arbitrary number of `Configure*` nodes, finished with a [`StartAcquisition`](xref:OpenEphys.Onix1.StartAcquisition) node. Subsequent rows can contain the corresponding `*Data` nodes configured above, and any processing / visualizing nodes needed.
@@ -29,6 +29,6 @@ The order of nodes is also important for which actions can be taken. In the tabl Some nodes, specifically many of the `Configure*` nodes, can have a GUI attached to the node that allows for easy manipulation of **Configuration** properties in a graphical environment. These GUIs can be accessed by double-clicking on a node; if there is a GUI assigned to it, then it will be opened up in a new window. Please note that not all nodes have GUIs, but if you think that a node would benefit from having this functionality added please reach out to us. > [!Note] -> GUIs are not part of the base `OpenEphys.Onix` library. To take advantage of this added functionality, you must install the accompanying `OpenEphys.Onix.Design` library using the Bonsai package manager. +> GUIs are not part of the base `OpenEphys.Onix1` library. To take advantage of this added functionality, you must install the accompanying `OpenEphys.Onix1.Design` library using the Bonsai package manager. -A number of Bonsai nodes also come shipped with GUIs, but similar to `OpenEphys.Onix`, the corresponding `*.Design` library must be installed before it can be leveraged. +A number of Bonsai nodes also come shipped with GUIs, but similar to `OpenEphys.Onix1`, the corresponding `*.Design` library must be installed before it can be leveraged. diff --git a/articles/hubs/breakoutboard.md b/articles/hubs/breakoutboard.md index c73c988..c4da2db 100644 --- a/articles/hubs/breakoutboard.md +++ b/articles/hubs/breakoutboard.md @@ -4,7 +4,7 @@ title: BreakoutBoard isGuide: true isHeadstage: true headstage: BreakoutBoard -devices: [ { id: MemoryMonitor, file: device-memorymonitor }, { id: Heartbeat, file: device-heartbeat }, { id: DigitalIO, file: device-digitalio } , { id: AnalogIO, file: device-analogio } ] +devices: [ { id: MemoryMonitor, file: ~/articles/devices/memorymonitor }, { id: Heartbeat, file: ~/articles/devices/heartbeat }, { id: DigitalIO, file: ~/articles/devices/breakoutdigitalio } , { id: AnalogIO, file: ~/articles/devices/breakoutanalogio } ] workflow: true workflow_file: ~/workflows/hubs/BreakoutBoard.bonsai --- diff --git a/articles/hubs/headstage64.md b/articles/hubs/headstage64.md index 08f7296..23c04a8 100644 --- a/articles/hubs/headstage64.md +++ b/articles/hubs/headstage64.md @@ -4,7 +4,7 @@ title: Headstage64 isGuide: true isHeadstage: true headstage: Headstage64 -devices: [ { id: TS4231, file: device-ts4231 }, { id: RHD2164, file: device-rhd2164 }, { id: BNO055, file: device-bno055 } ] +devices: [ { id: TS4231, file: ~/articles/devices/ts4231 }, { id: RHD2164, file: ~/articles/devices/rhd2164 }, { id: BNO055, file: ~/articles/devices/bno055 } ] workflow: true workflow_file: ~/workflows/hubs/Headstage64.bonsai --- diff --git a/articles/hubs/neuropixelsv1e.md b/articles/hubs/neuropixelsv1e.md index bae0a03..e99eb1a 100644 --- a/articles/hubs/neuropixelsv1e.md +++ b/articles/hubs/neuropixelsv1e.md @@ -4,7 +4,7 @@ title: NeuropixelsV1eHeadstage isGuide: true isHeadstage: true headstage: NeuropixelsV1e -devices: [ { id: NeuropixelsV1e, file: device-neuropixelsv1e }, { id: BNO055, file: device-bno055_neuropixelsv1e } ] +devices: [ { id: NeuropixelsV1e, file: ~/articles/devices/neuropixelsv1e }, { id: BNO055, file: ~/articles/devices/bno055_neuropixelsv1e } ] workflow: true workflow_file: ~/workflows/hubs/NeuropixelsV1e.bonsai --- diff --git a/articles/hubs/neuropixelsv2e.md b/articles/hubs/neuropixelsv2e.md index 71f9ac3..22ef191 100644 --- a/articles/hubs/neuropixelsv2e.md +++ b/articles/hubs/neuropixelsv2e.md @@ -4,7 +4,7 @@ title: NeuropixelsV2eHeadstage isGuide: true isHeadstage: true headstage: NeuropixelsV2e -devices: [ { id: NeuropixelsV2e, file: device-neuropixelsv2e }, { id: BNO055, file: device-bno055_neuropixelsv2e } ] +devices: [ { id: NeuropixelsV2e, file: ~/articles/devices/neuropixelsv2e }, { id: BNO055, file: ~/articles/devices/bno055_neuropixelsv2e } ] workflow: true workflow_file: ~/workflows/hubs/NeuropixelsV2e.bonsai --- diff --git a/articles/hubs/neuropixelsv2ebeta.md b/articles/hubs/neuropixelsv2ebeta.md index 9abbe0e..db876b3 100644 --- a/articles/hubs/neuropixelsv2ebeta.md +++ b/articles/hubs/neuropixelsv2ebeta.md @@ -4,7 +4,7 @@ title: NeuropixelsV2eBetaHeadstage isGuide: true isHeadstage: true headstage: NeuropixelsV2eBeta -devices: [ { id: NeuropixelsV2eBeta, file: device-neuropixelsv2ebeta }, { id: BNO055, file: device-bno055_neuropixelsv2e } ] +devices: [ { id: NeuropixelsV2eBeta, file: ~/articles/devices/neuropixelsv2ebeta }, { id: BNO055, file: ~/articles/devices/bno055_neuropixelsv2e } ] workflow: true workflow_file: ~/workflows/hubs/NeuropixelsV2eBeta.bonsai --- diff --git a/build.ps1 b/build.ps1 index 05eb599..c8b834c 100644 --- a/build.ps1 +++ b/build.ps1 @@ -3,6 +3,6 @@ $libPath = ".\src\onix-bonsai-onix1\" dotnet build $libPath --configuration Release # Export workflow vectors -$libPath = Join-Path $libPath "artifacts\bin\OpenEphys.Onix\release" +$libPath = Join-Path $libPath "artifacts\bin\OpenEphys.Onix1\release" .\docfx-tools\modules\Export-Image.ps1 -bootstrapperPath .\.bonsai\Bonsai.exe $libPath dotnet docfx @args \ No newline at end of file diff --git a/filter.yml b/filter.yml index feaf080..f6264b2 100644 --- a/filter.yml +++ b/filter.yml @@ -12,11 +12,7 @@ apiRules: uidRegex: OpenEphys.Onix.DeviceContext - exclude: uidRegex: ^.*DeviceFactory -- exclude: - uidRegex: ^.*DataFrame -- exclude: - type: Enum - exclude: uidRegex: OpenEphys.Onix.ConfigureFmcLinkController - exclude: - uidRegex: OpenEphys.Onix.ConfigureDS90UB9x \ No newline at end of file + uidRegex: OpenEphys.Onix.ConfigureDS90UB9x diff --git a/index.md b/index.md index ae030bb..5c5ac2d 100644 --- a/index.md +++ b/index.md @@ -24,9 +24,9 @@ Other major advantages include: \ No newline at end of file diff --git a/src/onix-bonsai-onix1 b/src/onix-bonsai-onix1 index 9347ce3..5dc8fb8 160000 --- a/src/onix-bonsai-onix1 +++ b/src/onix-bonsai-onix1 @@ -1 +1 @@ -Subproject commit 9347ce3c0d71dddf7b8dc8cb87c31d151032d824 +Subproject commit 5dc8fb8a0fd42549ba143fd91bc12292c57fb35b diff --git a/template/conceptual.html.primary.tmpl b/template/conceptual.html.primary.tmpl index a67dd37..921fadb 100644 --- a/template/conceptual.html.primary.tmpl +++ b/template/conceptual.html.primary.tmpl @@ -31,8 +31,8 @@ {{>partials/device.visualize_text}} {{/visualize_text}} -

Refer to Visualizing Data for more information on visualizers and how to download them.

-

Note that data will not be shown until a workflow is running. Check out Running a Workflow to see how to run a workflow.

+

Refer to Visualizing Data for more information on visualizers and how to download them.

+

Note that data will not be shown until a workflow is running. Check out Running a Workflow to see how to run a workflow.

{{/visualize}} {{/isGuide}} diff --git a/tutorials/headstage64-tut.md b/tutorials/headstage64-tut.md index 9bd99bd..35f362e 100644 --- a/tutorials/headstage64-tut.md +++ b/tutorials/headstage64-tut.md @@ -1,5 +1,5 @@ # Headstage 64 Tutorial :::workflow -![Headstage64](~/workflows/examples/Headstage64.bonsai) +![Headstage64](../workflows/examples/Headstage64.bonsai) ::: diff --git a/tutorials/neuropixelsv1e-tut.md b/tutorials/neuropixelsv1e-tut.md index 3ee54b8..92c40fb 100644 --- a/tutorials/neuropixelsv1e-tut.md +++ b/tutorials/neuropixelsv1e-tut.md @@ -1,5 +1,5 @@ # NeuropixelsV1e Tutorial :::workflow -![NeuropixelsV1e](~/workflows/examples/NeuropixelsV1e.bonsai) +![NeuropixelsV1e](../workflows/examples/NeuropixelsV1e.bonsai) ::: diff --git a/tutorials/neuropixelsv2e-tut.md b/tutorials/neuropixelsv2e-tut.md index d7a7406..534ee9d 100644 --- a/tutorials/neuropixelsv2e-tut.md +++ b/tutorials/neuropixelsv2e-tut.md @@ -1,5 +1,5 @@ # NeuropixelsV2e Tutorial :::workflow -![NeuropixelsV2e](~/workflows/examples/NeuropixelsV2e.bonsai) +![NeuropixelsV2e](../workflows/examples/NeuropixelsV2e.bonsai) :::