From 18ace2cf69ca47a62198d9b7a08cf8a143cdd9ba Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 10:51:06 +0000 Subject: [PATCH 1/3] Initial plan From f0a1d1815c95c30aa41af06a975a944fc1291d6d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:07:18 +0000 Subject: [PATCH 2/3] Fix broken links CI: add aliveStatusCodes, ignore patterns, replacement patterns for internal links, and fix specific broken links --- .github/workflows/broken-links.yml | 7 ++++++- .github/workflows/markdown.links.config.json | 12 +++++++++--- ...8-07-17-SWANs-monitor-reservoirs-water-quality.md | 2 +- _posts/2018-09-28-UnetStack-Newsletter.md | 2 +- ...3-New-SwanViz-UI-developed-together-with-CSSSR.md | 2 +- .../2024-03-01-Product-Launch-S40H-series-modems.md | 2 +- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index bab8047e..cd3a1da7 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -10,12 +10,17 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + - name: Generate link check config with internal link replacement patterns + run: | + jq --arg ws "$GITHUB_WORKSPACE" \ + '. + {"replacementPatterns": [{"pattern": "^(/[^#?]+/)$", "replacement": ("file://" + $ws + "$1")}, {"pattern": "^(/[^#?.]+)$", "replacement": ("file://" + $ws + "$1.md")}]}' \ + .github/workflows/markdown.links.config.json > /tmp/mlc.config.json - uses: gaurav-nelson/github-action-markdown-link-check@v1 id: checker with: use-quiet-mode: 'yes' use-verbose-mode: 'yes' - config-file: '.github/workflows/markdown.links.config.json' + config-file: '/tmp/mlc.config.json' - uses: slackapi/slack-github-action@v1 if: failure() id: slack diff --git a/.github/workflows/markdown.links.config.json b/.github/workflows/markdown.links.config.json index 73d050a8..87545c65 100644 --- a/.github/workflows/markdown.links.config.json +++ b/.github/workflows/markdown.links.config.json @@ -1,15 +1,21 @@ { "ignorePatterns": [ - { "pattern" : "^https?://www.smartseatech.com/en/index.aspx" }, - { "pattern" : "^https?://www.asianscientist.com.*" }, + { "pattern" : "^https?://www.smartseatech.com/en/index.aspx" }, + { "pattern" : "^https?://www.asianscientist.com.*" }, { "pattern" : "^https?://www.oceans19mtsieeemarseille.org.*" }, { "pattern" : "^{{site.baseurl}}.*" }, { "pattern" : "^https://www.opengovasia.com/" }, { "pattern" : "^\/images.*"}, { "pattern" : "^https://medium.com/@NUSEnterprise/"}, { "pattern" : "^https://www.mtsociety.org/"}, - { "pattern" : "^https://www.linkedin.com/company/rijas-technical-solutions-pvt-ltd/"} + { "pattern" : "^https://www.linkedin.com/company/rijas-technical-solutions-pvt-ltd/"}, + { "pattern" : "^https?://www\\.hydro-surv\\.com"}, + { "pattern" : "^https?://github\\.com/org-arl/unetsockets/blob/"}, + { "pattern" : "^https?://www\\.wired\\.co\\.uk/magazine/archive/"}, + { "pattern" : "^https?://podcasts\\.apple\\.com/"}, + { "pattern" : "^https://subnero\\.com/solutions/swan\\.html"} ], + "aliveStatusCodes": [200, 206, 301, 302, 303, 304, 403, 429, 999], "retryOn429": true, "retryCount": 5, "fallbackRetryDelay": "30s", diff --git a/_posts/2018-07-17-SWANs-monitor-reservoirs-water-quality.md b/_posts/2018-07-17-SWANs-monitor-reservoirs-water-quality.md index 63bb7a88..dd5c57d8 100644 --- a/_posts/2018-07-17-SWANs-monitor-reservoirs-water-quality.md +++ b/_posts/2018-07-17-SWANs-monitor-reservoirs-water-quality.md @@ -3,6 +3,6 @@ layout: pulse_post title: Punchlines categories: press external_url: https://www.straitstimes.com/opinion/cartoons/punchlines-july-17-2018 -source : https://www.straitstimes.com/opinion/cartoons +source : https://www.straitstimes.com/ thumbnail: images/pulse-thumbnail-swan-comic.jpg --- diff --git a/_posts/2018-09-28-UnetStack-Newsletter.md b/_posts/2018-09-28-UnetStack-Newsletter.md index 95bb7311..1f7bc0af 100644 --- a/_posts/2018-09-28-UnetStack-Newsletter.md +++ b/_posts/2018-09-28-UnetStack-Newsletter.md @@ -13,7 +13,7 @@ We are delighted to share the following news updates with you: ### Introducing UnetPy - Python API for UnetStack -Today, we are excited to share a new software framework to connect to UnetStack through python - [UnetPy](https://github.com/org-arl/unetsockets/tree/master/python){:target="_blank"}. UnetPy allows developers and users to use frameworks such as Jupyter notebook or similar Python tools to develop applications. UnetPy uses the package fjågepy. A simple tutorial is available [here](https://github.com/org-arl/unetsockets/blob/master/python/python-gateway-tutorial.ipynb){:target="_blank"} to help you get started. +Today, we are excited to share a new software framework to connect to UnetStack through python - [UnetPy](https://github.com/org-arl/unetsockets/tree/master/python){:target="_blank"}. UnetPy allows developers and users to use frameworks such as Jupyter notebook or similar Python tools to develop applications. UnetPy uses the package fjågepy. Getting started documentation is available in the [README](https://github.com/org-arl/unetsockets/tree/master/python){:target="_blank"}. ### Check out the Unet Blog diff --git a/_posts/2021-04-23-New-SwanViz-UI-developed-together-with-CSSSR.md b/_posts/2021-04-23-New-SwanViz-UI-developed-together-with-CSSSR.md index 9a82fb54..ea5cc1b9 100644 --- a/_posts/2021-04-23-New-SwanViz-UI-developed-together-with-CSSSR.md +++ b/_posts/2021-04-23-New-SwanViz-UI-developed-together-with-CSSSR.md @@ -28,7 +28,7 @@ The SwanViz features a dashboard that showcases an overview of various SwanBots The SwanViz is accessible via a computer (desktop/laptop) or mobile devices. Users can view and configure SwanBots for various types of water quality monitoring missions from the comfort of their offices. It also enables the water quality data collected by the SwanBot to be viewed in real-time, in the form of heatmaps and data plots. -The development of a new SwanViz is part of a collaborative project with the National University of Singapore, Subnero has been working on improving the [SWAN](https://subnero.com/solutions/swan.html){:target="_blank"}. +The development of a new SwanViz is part of a collaborative project with the National University of Singapore, Subnero has been working on improving the SWAN. In the project, we are also upgrading the SWAN to incorporate intelligent mission planning capabilities. To that effect, the SwanBots (SWAN robots) will be capable of learning from the data collected while exploring an area, to dynamically update an ongoing mission to gather more useful data, in real-time. This enhances the efficiency and cost-effectiveness of SWAN as a water quality monitoring solution. diff --git a/_posts/2024-03-01-Product-Launch-S40H-series-modems.md b/_posts/2024-03-01-Product-Launch-S40H-series-modems.md index 79d08fa0..61e74ff6 100644 --- a/_posts/2024-03-01-Product-Launch-S40H-series-modems.md +++ b/_posts/2024-03-01-Product-Launch-S40H-series-modems.md @@ -20,7 +20,7 @@ Designed to excel in challenging shallow water conditions, the S40H series intro - **Higher Data Rates:** Utilizing a higher frequency band and boasting a larger bandwidth (25 kHz bandwidth, from 25 - 50 kHz band), the S40H series achieves data rates of up to 33 kbps, ensuring seamless connectivity even in the harshest underwater environments. - **Extended Range:** Providing connectivity of up to 1 km, this series offers a competitive range in challenging conditions to enable your short-range deployments. - **Versatile Applications:** Equipped with advanced underwater communication algorithms, the S40H series unlocks a myriad of possibilities, including high-speed data transfer for underwater IoT applications, underwater image transfer, and large sensor payload data transfer for marine robotics. -- **Enhanced Capability:** The [multi-receiver variant](/products/wnc/gen4x/accessories/multi-receiver.html){:target="_blank"} of the modem further enhances performance through robust links supported by leveraging spatial diversity combining techniques. +- **Enhanced Capability:** The [multi-receiver variant](/products/wnc/gen4x/accessories/multi-receiver){:target="_blank"} of the modem further enhances performance through robust links supported by leveraging spatial diversity combining techniques. - **Powered by UnetStack:** Leveraging [UnetStack](/products/wnc/unetstack/){:target="_blank"}, a versatile software framework for underwater communications and networking, the S40H series delivers unparalleled performance and adaptability. - **Class-Leading Performance:** Combining a software-defined open architecture design with edge computing capability and machine learning-based link tuning features, these modems set a new standard for performance in the subsea wireless industry. From 4c24ee4bb8ba77c6f73f16207249876e9de62307 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:08:29 +0000 Subject: [PATCH 3/3] Address code review: use RUNNER_TEMP for temp file and improve jq readability --- .github/workflows/broken-links.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index cd3a1da7..19152c7e 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -12,15 +12,19 @@ jobs: - uses: actions/checkout@v3 - name: Generate link check config with internal link replacement patterns run: | - jq --arg ws "$GITHUB_WORKSPACE" \ - '. + {"replacementPatterns": [{"pattern": "^(/[^#?]+/)$", "replacement": ("file://" + $ws + "$1")}, {"pattern": "^(/[^#?.]+)$", "replacement": ("file://" + $ws + "$1.md")}]}' \ - .github/workflows/markdown.links.config.json > /tmp/mlc.config.json + jq --arg ws "$GITHUB_WORKSPACE" '. + { + "replacementPatterns": [ + {"pattern": "^(/[^#?]+/)$", "replacement": ("file://" + $ws + "$1")}, + {"pattern": "^(/[^#?.]+)$", "replacement": ("file://" + $ws + "$1.md")} + ] + }' \ + .github/workflows/markdown.links.config.json > "$RUNNER_TEMP/mlc.config.json" - uses: gaurav-nelson/github-action-markdown-link-check@v1 id: checker with: use-quiet-mode: 'yes' use-verbose-mode: 'yes' - config-file: '/tmp/mlc.config.json' + config-file: '${{ runner.temp }}/mlc.config.json' - uses: slackapi/slack-github-action@v1 if: failure() id: slack