diff --git a/.gitignore b/.gitignore
index 49df1cc..0a9e218 100644
--- a/.gitignore
+++ b/.gitignore
@@ -63,3 +63,6 @@ QUICKSTART_STARTUP_SCRIPT.md
# OS files
.DS_Store
Thumbs.db
+
+# Robust
+.git/
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 077dee3..f544bc6 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,4 +1,12 @@
repos:
+ - repo: local
+ hooks:
+ - id: shredguard-check
+ name: shredguard check
+ entry: shredguard check
+ language: system
+ types: [text]
+
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.10
hooks:
diff --git a/README.md b/README.md
index d3318b2..2cbaaed 100644
--- a/README.md
+++ b/README.md
@@ -3,17 +3,37 @@
-
-
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
> [!IMPORTANT]
@@ -27,6 +47,7 @@
## Project Structure
+
```
src/voxkit/
├── gui/ # PyQt6 interface (pages, components, workers)
diff --git a/pyproject.toml b/pyproject.toml
index 536b08e..fe5d70d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -44,6 +44,7 @@ dev = [
"types-PyYAML>=6.0.0",
"genbadge[coverage]>=1.1.3",
"invoke>=2.2.0",
+ "shred-guard>=1.1.0",
]
docs = [
"pdoc>=16.0.0",
@@ -204,3 +205,13 @@ where = ["src"]
[tool.uv.sources]
alignment-comparison-plots = { git = "https://github.com/WISCLab/alignment-comparison-plots" }
+
+[tool.shredguard]
+
+[[tool.shredguard.patterns]]
+regex = "\\b\\d{10}\\b|\\b\\d{3}[-.\\s]?\\d{3}[-.\\s]?\\d{4}\\b"
+description = "Phone numbers (10 digits)"
+
+[[tool.shredguard.patterns]]
+regex = "\\d{3,5}_[MF]_+"
+description = "Patient ID"
diff --git a/uv.lock b/uv.lock
index 35f12a1..c71caec 100644
--- a/uv.lock
+++ b/uv.lock
@@ -2995,6 +2995,7 @@ dev = [
{ name = "pytest-cov" },
{ name = "pytest-qt" },
{ name = "ruff" },
+ { name = "shred-guard" },
{ name = "types-pyyaml" },
]
docs = [
@@ -3035,6 +3036,7 @@ dev = [
{ name = "pytest-cov", specifier = ">=7.0.0" },
{ name = "pytest-qt", specifier = ">=4.4.0" },
{ name = "ruff", specifier = ">=0.14.0" },
+ { name = "shred-guard", specifier = ">=1.1.0" },
{ name = "types-pyyaml", specifier = ">=6.0.0" },
]
docs = [{ name = "pdoc", specifier = ">=16.0.0" }]
@@ -3724,6 +3726,19 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" },
]
+[[package]]
+name = "shred-guard"
+version = "1.1.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "click" },
+ { name = "pathspec" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/bb/e7/ed7dc67ec3fb503a1f8a75f768c56c0011c8dfc35314dd014bbc97db1104/shred_guard-1.1.0.tar.gz", hash = "sha256:ef618030f7275e566ae51f071a470620656a3c6aeb48ed81d09be3d9a34cae66", size = 795302, upload-time = "2026-03-13T22:02:26.682Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/78/ce/26aeb40edea3f8dcbad3ba41aec82e07943fe7f3bf84a74b966fbeae0f48/shred_guard-1.1.0-py3-none-any.whl", hash = "sha256:1b4a10b335fc13ed800d2f26720373f3a4a1875985d4d889fc9e7fdc5c9b8351", size = 24311, upload-time = "2026-03-13T22:02:25.55Z" },
+]
+
[[package]]
name = "six"
version = "1.17.0"