From 7e2f96d2dc44a06a42f0c7715cae66435949a4f4 Mon Sep 17 00:00:00 2001 From: haikdc Date: Sat, 13 Jun 2026 08:07:07 -0700 Subject: [PATCH] [haik]: stop ignoring .vscode/ and add tasks.json with background linter watcher that runs on folder open; pin backend venv creation to python3.13; bump electron from 1.2.77 to 1.2.82; remove stale peer-dependency markers across electron and frontend lockfiles --- .gitignore | 1 - .vscode/tasks.json | 42 +++++++++++++++++++++++++++++ backend/run.sh | 2 +- electron/package-lock.json | 8 ++---- frontend/package-lock.json | 19 +------------ push.sh | 55 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 101 insertions(+), 26 deletions(-) create mode 100644 .vscode/tasks.json create mode 100644 push.sh diff --git a/.gitignore b/.gitignore index 52c37dce..11ccb59c 100644 --- a/.gitignore +++ b/.gitignore @@ -66,7 +66,6 @@ htmlcov/ # Editor noise — per-developer, never useful in repo .idea/ -.vscode/ *.swp *~ .envrc diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..3959860a --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "linter: watch", + "type": "shell", + "command": "${workspaceFolder}/backend/.venv/bin/python", + "args": [ + "${workspaceFolder}/linter/lint.py", + "--watch", + "--root", + "${workspaceFolder}" + ], + "isBackground": true, + "runOptions": { + "runOn": "folderOpen" + }, + "presentation": { + "reveal": "never", + "panel": "dedicated", + "close": true + }, + "problemMatcher": { + "owner": "openswarm-linter", + "fileLocation": ["relative", "${workspaceFolder}"], + "background": { + "activeOnStart": true, + "beginsPattern": "^structural: checking\\.\\.\\.$", + "endsPattern": "^import-cycles: done\\." + }, + "pattern": { + "regexp": "^(.+):(\\d+):(\\d+):\\s+(error|warning):\\s+(.+)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + } + } + ] +} diff --git a/backend/run.sh b/backend/run.sh index b62bdc31..65be43ad 100755 --- a/backend/run.sh +++ b/backend/run.sh @@ -28,7 +28,7 @@ trap cleanup EXIT INT TERM VENV_DIR="$BACKEND_DIR_ABSPATH/.venv" if [[ ! -d "$VENV_DIR" ]]; then echo "Creating virtual environment..." - python3 -m venv "$VENV_DIR" + python3.13 -m venv "$VENV_DIR" fi source "$VENV_DIR/bin/activate" diff --git a/electron/package-lock.json b/electron/package-lock.json index 96e0bad9..78b57482 100644 --- a/electron/package-lock.json +++ b/electron/package-lock.json @@ -1,12 +1,12 @@ { "name": "openswarm", - "version": "1.2.77", + "version": "1.2.82", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "openswarm", - "version": "1.2.77", + "version": "1.2.82", "hasInstallScript": true, "dependencies": { "electron-updater": "6.8.3", @@ -567,7 +567,6 @@ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1435,7 +1434,6 @@ "integrity": "sha512-glMJgnTreo8CFINujtAhCgN96QAqApDMZ8Vl1r8f0QT8QprvC1UCltV4CcWj20YoIyLZx6IUskaJZ0NV8fokcg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "app-builder-lib": "26.8.1", "builder-util": "26.8.1", @@ -1584,7 +1582,6 @@ "integrity": "sha512-o288fIdgPLHA76eDrFADHPoo7VyGkDCYbLV1GzndaMSAVBoZrGvM9m2IehdcVMzdAZJ2eV9bgyissQXHv5tGzA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "app-builder-lib": "26.8.1", "builder-util": "26.8.1", @@ -2888,7 +2885,6 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 8e97f035..92d511d7 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -84,7 +84,6 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1965,7 +1964,6 @@ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -2009,7 +2007,6 @@ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -2245,7 +2242,6 @@ "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.10.tgz", "integrity": "sha512-cHvGOk2ZEfbQt3LnGe0ZKd/ETs9gsUpkW66DCO+GSjMZhpdKU4XsuIr7zJ/B/2XaN8ihxuzHfYAR4zPtCN4RYg==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.6", "@mui/core-downloads-tracker": "^7.3.10", @@ -3378,7 +3374,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz", "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==", "license": "MIT", - "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" @@ -3775,7 +3770,6 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3815,7 +3809,6 @@ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -4144,7 +4137,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -8192,7 +8184,6 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -8249,7 +8240,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -8468,7 +8458,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -8481,7 +8470,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -8528,7 +8516,6 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "license": "MIT", - "peer": true, "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" @@ -8667,8 +8654,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/redux-thunk": { "version": "3.1.0", @@ -8980,7 +8966,6 @@ "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.1.5", @@ -10084,7 +10069,6 @@ "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -10133,7 +10117,6 @@ "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^2.1.1", diff --git a/push.sh b/push.sh new file mode 100644 index 00000000..271ab0c1 --- /dev/null +++ b/push.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +set -euo pipefail + +# --- Args --- +if [ $# -ne 2 ]; then + echo -e "\033[1;31mError: exactly 2 arguments required\033[0m" + echo -e "\033[0;90mUsage: bash push.sh Name \"commit message\"\033[0m" + exit 1 +fi + +NAME="$1" +MESSAGE="$2" + +# --- Helpers --- +banner() { + local msg="$1" + local len=${#msg} + local border=$(printf '═%.0s' $(seq 1 $((len + 4)))) + echo "" + echo -e "\033[1;36m╔${border}╗\033[0m" + echo -e "\033[1;36m║ \033[1;33m${msg}\033[1;36m ║\033[0m" + echo -e "\033[1;36m╚${border}╝\033[0m" + echo "" +} + +gate() { + local prompt="${1:?gate requires a prompt argument}" + while true; do + read -rp $'\033[1;35m► '"${prompt}"$' [Y/n] \033[0m' yn + case "${yn:-Y}" in + [Yy]*) return 0 ;; + [Nn]*) echo -e "\033[1;31m✗ Aborted.\033[0m"; exit 1 ;; + *) echo "Please answer y or n." ;; + esac + done +} + +# --- Workflow --- +banner "git status" +git status +gate "Stage all changes?" + +banner "git add ." +git add . +git status +gate "Commit these changes?" + +banner "git commit -m \"[${NAME}]: ${MESSAGE}\"" +git commit -m "[${NAME}]: ${MESSAGE}" +gate "Push to remote?" + +banner "git push" +git push + +banner "All changes pushed successfully ✓" \ No newline at end of file