Patch up to use a published patched meshcore-decoder and add a test script for different node versions

This commit is contained in:
Jack Kingsman
2026-03-08 18:35:58 -07:00
parent 9673b25ab3
commit 77523c1b15
4 changed files with 55 additions and 7 deletions

View File

@@ -6,7 +6,6 @@ ARG COMMIT_HASH=unknown
WORKDIR /build
COPY frontend/package.json frontend/.npmrc ./
COPY frontend/lib/meshcore-decoder ./lib/meshcore-decoder
RUN npm install
COPY frontend/ ./

View File

@@ -12,9 +12,9 @@ Keep it aligned with `frontend/src` source code.
- Tailwind utility classes + local CSS (`index.css`, `styles.css`)
- Sonner (toasts)
- Leaflet / react-leaflet (map)
- Vendored `@michaelhart/meshcore-decoder` in `frontend/lib/meshcore-decoder` (local file dependency for multibyte-support build)
- `@michaelhart/meshcore-decoder` installed via npm alias to `meshcore-decoder-multibyte-patch`
- `meshcore-hashtag-cracker` + `nosleep.js` (channel cracker)
- `@michaelhart/meshcore-decoder` pinned to the multibyte-aware `jkingsman/meshcore-decoder-multibyte` fork
- Multibyte-aware decoder build published as `meshcore-decoder-multibyte-patch`
## Frontend Map
@@ -141,8 +141,6 @@ frontend/src/
├── useWebSocket.dispatch.test.ts
└── useWebSocket.lifecycle.test.ts
frontend/lib/
└── meshcore-decoder/ # Vendored local decoder package used by app + hashtag cracker
```
## Architecture Notes

View File

@@ -17,7 +17,7 @@
"dependencies": {
"@codemirror/lang-python": "^6.2.1",
"@codemirror/theme-one-dark": "^6.1.3",
"@michaelhart/meshcore-decoder": "file:./lib/meshcore-decoder",
"@michaelhart/meshcore-decoder": "npm:meshcore-decoder-multibyte-patch@0.2.7",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-label": "^2.1.8",
@@ -67,7 +67,7 @@
},
"overrides": {
"meshcore-hashtag-cracker": {
"@michaelhart/meshcore-decoder": "file:./lib/meshcore-decoder"
"@michaelhart/meshcore-decoder": "npm:meshcore-decoder-multibyte-patch@0.2.7"
}
}
}

51
scripts/docker_ci.sh Normal file
View File

@@ -0,0 +1,51 @@
#!/usr/bin/env bash
set -euo pipefail
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
NODE_VERSIONS=("20" "22" "24")
NPM_VERSIONS=("9" "10")
echo -e "${YELLOW}=== Frontend Docker CI Matrix ===${NC}"
echo -e "${BLUE}Repo:${NC} $SCRIPT_DIR"
echo
run_combo() {
local node_version="$1"
local npm_version="$2"
local image="node:${node_version}-slim"
echo -e "${YELLOW}=== Node ${node_version} / npm ${npm_version} ===${NC}"
docker run --rm \
-v "$SCRIPT_DIR:/src:ro" \
-w /tmp \
"$image" \
bash -lc "
set -euo pipefail
cp -a /src/frontend ./frontend
cd frontend
npm i -g npm@${npm_version}
echo 'Using Node:' \$(node -v)
echo 'Using npm:' \$(npm -v)
npm install
npm run build
"
echo -e "${GREEN}Passed:${NC} Node ${node_version} / npm ${npm_version}"
echo
}
for node_version in "${NODE_VERSIONS[@]}"; do
for npm_version in "${NPM_VERSIONS[@]}"; do
run_combo "$node_version" "$npm_version"
done
done
echo -e "${GREEN}=== Docker CI matrix passed ===${NC}"