From f67c544e164e622141199f03f03971c3c9d7e942 Mon Sep 17 00:00:00 2001
From: Aaron Cunliffe <7946141+aaroncunliffe@users.noreply.github.com>
Date: Mon, 2 Feb 2026 10:27:02 +0000
Subject: [PATCH 1/4] fix: webserver folder creation regex change (#653)
## Summary
Resolves #562
Implements regex change to support valid characters discussed by
@daveallie in issue
[here](https://github.com/crosspoint-reader/crosspoint-reader/issues/562#issuecomment-3830809156).
Also rejects `.` and `..` as folder names which are invalid in FAT32 and
exFAT filesystems
## Additional Context
- Unsure on the wording for the alert, it feels overly explicit, but
that might be a good thing. Happy to change.
---
### AI Usage
While CrossPoint doesn't have restrictions on AI tools in contributing,
please be transparent about their usage as it
helps set the right context for reviewers.
Did you use AI tools to help write this code? _**< PARTIALLY >**_
---
docs/webserver.md | 2 +-
src/network/html/FilesPage.html | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/docs/webserver.md b/docs/webserver.md
index 355bac41..d1d3bac5 100644
--- a/docs/webserver.md
+++ b/docs/webserver.md
@@ -153,7 +153,7 @@ Click **File Manager** to access file management features.
1. Click the **+ Add** button in the top-right corner
2. Select **New Folder** from the dropdown menu
-3. Enter a folder name (letters, numbers, underscores, and hyphens only)
+3. Enter a folder name (must not contain characters \" * : < > ? / \\ | and must not be . or ..)
4. Click **Create Folder**
This is useful for organizing your ebooks by genre, author, or series.
diff --git a/src/network/html/FilesPage.html b/src/network/html/FilesPage.html
index bfdbe3cc..95993b8e 100644
--- a/src/network/html/FilesPage.html
+++ b/src/network/html/FilesPage.html
@@ -1146,10 +1146,10 @@ function retryAllFailedUploads() {
return;
}
- // Validate folder name (no special characters except underscore and hyphen)
- const validName = /^[a-zA-Z0-9_\-]+$/.test(folderName);
+ // Validate folder name
+ const validName = /^(?!\.{1,2}$)[^"*:<>?\/\\|]+$/.test(folderName);
if (!validName) {
- alert('Folder name can only contain letters, numbers, underscores, and hyphens.');
+ alert('Folder name cannot contain \" * : < > ? / \\ | and must not be . or ..');
return;
}
From d403044f76bbdbcc684913221a6ee0969ffb2cfc Mon Sep 17 00:00:00 2001
From: Aaron Cunliffe <7946141+aaroncunliffe@users.noreply.github.com>
Date: Tue, 3 Feb 2026 15:24:23 +0000
Subject: [PATCH 2/4] fix: Increase network SSID display length (#670)
## Rationale
I have 2 wifi access points with almost identical names, just one has
`_EXT` at the end of it. With the current display limit of 13 characters
before adding ellipsis, I can't tell which is which.
Before device screenshot with masked SSIDs:
## Summary
Adjusted displayed length from 13 characters to 30 in the Wifi selection
screen - I've left some space for potential proportional font changes in
the future
After image with masked SSIDs:
---
### AI Usage
While CrossPoint doesn't have restrictions on AI tools in contributing,
please be transparent about their usage as it
helps set the right context for reviewers.
Did you use AI tools to help write this code? _**< NO >**_
---
src/activities/network/WifiSelectionActivity.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/activities/network/WifiSelectionActivity.cpp b/src/activities/network/WifiSelectionActivity.cpp
index 8bf83a93..becd41a3 100644
--- a/src/activities/network/WifiSelectionActivity.cpp
+++ b/src/activities/network/WifiSelectionActivity.cpp
@@ -546,8 +546,8 @@ void WifiSelectionActivity::renderNetworkList() const {
// Draw network name (truncate if too long)
std::string displayName = network.ssid;
- if (displayName.length() > 16) {
- displayName.replace(13, displayName.length() - 13, "...");
+ if (displayName.length() > 33) {
+ displayName.replace(30, displayName.length() - 30, "...");
}
renderer.drawText(UI_10_FONT_ID, 20, networkY, displayName.c_str());
From dac11c3fdd28d554cd7aa60e45b62a614638a07a Mon Sep 17 00:00:00 2001
From: Luke Stein <44452336+lukestein@users.noreply.github.com>
Date: Tue, 3 Feb 2026 16:32:52 -0500
Subject: [PATCH 3/4] fix: Correct instruction text to match actual button text
(#672)
## Summary
* Instruction text says "Press OK to scan again" but button label is
actually "Connect" (not OK)
* Corrects instruction text
---
### AI Usage
Did you use AI tools to help write this code? **No**
---
src/activities/network/WifiSelectionActivity.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/activities/network/WifiSelectionActivity.cpp b/src/activities/network/WifiSelectionActivity.cpp
index becd41a3..76bf1869 100644
--- a/src/activities/network/WifiSelectionActivity.cpp
+++ b/src/activities/network/WifiSelectionActivity.cpp
@@ -520,7 +520,7 @@ void WifiSelectionActivity::renderNetworkList() const {
const auto height = renderer.getLineHeight(UI_10_FONT_ID);
const auto top = (pageHeight - height) / 2;
renderer.drawCenteredText(UI_10_FONT_ID, top, "No networks found");
- renderer.drawCenteredText(SMALL_FONT_ID, top + height + 10, "Press OK to scan again");
+ renderer.drawCenteredText(SMALL_FONT_ID, top + height + 10, "Press Connect to scan again");
} else {
// Calculate how many networks we can display
constexpr int startY = 60;
From 78d6e5931c1e6412190e1f3ec271c7a7e6cd4d4f Mon Sep 17 00:00:00 2001
From: Jake Kenneally
Date: Tue, 3 Feb 2026 16:33:20 -0500
Subject: [PATCH 4/4] fix: Correct `debugging_monitor.py` script instructions
(#676)
## Summary
**What is the goal of this PR?**
- Minor correction to the `debugging_monitor.py` script instructions
**What changes are included?**
- `pyserial` should be installed, NOT `serial`, which is a [different
lib](https://pypi.org/project/serial/)
- Added macOS serial port
## Additional Context
- Just a minor docs update. I can confirm the debugging script is
working great on macOS
---
### AI Usage
While CrossPoint doesn't have restrictions on AI tools in contributing,
please be transparent about their usage as it
helps set the right context for reviewers.
Did you use AI tools to help write this code? _**< NO >**_
---
README.md | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 9efa6801..151c6293 100644
--- a/README.md
+++ b/README.md
@@ -102,13 +102,18 @@ After flashing the new features, it’s recommended to capture detailed logs fro
First, make sure all required Python packages are installed:
```python
-python3 -m pip install serial colorama matplotlib
+python3 -m pip install pyserial colorama matplotlib
```
after that run the script:
```sh
+# For Linux
+# This was tested on Debian and should work on most Linux systems.
python3 scripts/debugging_monitor.py
+
+# For macOS
+python3 scripts/debugging_monitor.py /dev/cu.usbmodem2101
```
-This was tested on Debian and should work on most Linux systems. Minor adjustments may be required for Windows or macOS.
+Minor adjustments may be required for Windows.
## Internals