Commit 4afc7d7
Claude/fix spin website html a ol iy (#135)
* fix: rewrite GitHub Pages site to display properly with dynamic OSINT detective humor
The site at thumpersecure.github.io/Spin was showing the README.md
rendered by Jekyll instead of the OSINT toolkit HTML. Root causes:
- No index.html at repo root (Pages served README as fallback)
- No .nojekyll file to prevent Jekyll processing
Changes:
- Add .nojekyll at root and docs/ to bypass Jekyll
- Add index.html, style.css, app.js at repo root so Pages serves them
- Completely rewrite all three files with cleaner, well-structured code
- Add animated loading screen with investigator boot sequence
- Add rotating OSINT detective jokes system (24 jokes)
- Add scrolling intel brief ticker with 20 OSINT tips
- Add periodic "Field Note" tip popups
- Add rotating header taglines and footer jokes
- Add case number generator and session ID
- Add classified stamp, scanline overlay, gradient animations
- Add investigation status panel with OPSEC level meter
- Preserve all existing OSINT tools (phone, email, username, domain,
entity extractor, hivemind, bookmarks)
- Sync all files to docs/ folder as well
https://claude.ai/code/session_01LJNJws3Tyq7jFNGVAYBszq
* fix: add GitHub Actions workflow to deploy static site to Pages
GitHub Pages was configured to use GitHub Actions as the deployment
source, which triggers a default Jekyll build that renders README.md
as the site index, completely ignoring our index.html. The .nojekyll
file only works in "Deploy from a branch" mode, not Actions mode.
This adds a custom pages.yml workflow that uses actions/deploy-pages
to explicitly deploy the docs/ folder as a static site, bypassing
Jekyll entirely. The workflow triggers on pushes to main and can
also be manually dispatched.
https://claude.ai/code/session_01LJNJws3Tyq7jFNGVAYBszq
* fix: add Jekyll config and front matter to force proper HTML rendering
GitHub Pages is running Jekyll regardless of .nojekyll, rendering
README.md as the index page with a theme layout. This commit:
- Adds `layout: null` front matter to index.html so Jekyll outputs
our HTML as-is without wrapping it in a theme layout
- Adds _config.yml with `theme: null` to disable any Jekyll theme
- Excludes README.md and other non-website files from Jekyll build
- Adds pages.yml workflow for GitHub Actions deployment as fallback
This covers both deployment modes:
- "Deploy from branch": _config.yml + front matter handle Jekyll
- "GitHub Actions": pages.yml workflow deploys docs/ as static site
https://claude.ai/code/session_01LJNJws3Tyq7jFNGVAYBszq
* Remove Jekyll front matter that renders as visible text
Since GitHub Pages is now set to "Deploy from branch" with .nojekyll,
Jekyll is bypassed and the front matter (layout: null, permalink) was
showing as literal text at the top of the page.
https://claude.ai/code/session_01LJNJws3Tyq7jFNGVAYBszq
* Fix XSS vulnerabilities, bugs, and optimize web toolkit
Security fixes:
- Add escapeAttr() for safe HTML attribute escaping (quotes)
- Fix escapeJs() to handle newlines, tabs, and </script> sequences
- Escape entity sources in renderEntityTable() to prevent import XSS
- Escape entity IDs in delete button onclick handlers
- Escape item.type in extractor save button onclick
- Use escapeAttr() for domain Visit link href attribute
Bug fixes:
- Fix toast race condition: clear previous timeout on rapid calls
- Reuse DOM element in escapeHtml() instead of creating new one per call
Optimizations:
- Add debounce (200ms) to entity search and bookmark search inputs
- Make header background semi-transparent so backdrop-filter blur works
- Add -webkit-backdrop-filter for Safari support
Improvements:
- Expand entity extractor domain TLD regex from ~10 to 40+ TLDs
- Add bc1 (SegWit/Bech32) Bitcoin address detection
https://claude.ai/code/session_01LJNJws3Tyq7jFNGVAYBszq
* Add PWA support for iOS Home Screen experience
- Web App Manifest (manifest.json) with standalone display mode
- Service worker (sw.js) for offline caching with stale-while-revalidate
- SVG app icon with Spin branding (purple gradient + green status dot)
- Apple meta tags: web-app-capable, status-bar-style, app-title
- Dynamic apple-touch-icon generation via canvas (180x180 PNG)
- iOS install banner with Safari/Chrome/Firefox-specific instructions
- Auto-shows after 4s on iOS Safari (not in standalone mode)
- Dismissable, remembers dismissal for 7 days
- Standalone mode CSS:
- Safe area insets for notch/Dynamic Island on all fixed elements
- Overscroll prevention (no bounce/pull-to-refresh)
- Tap highlight removal on interactive elements
- Text selection re-enabled on content areas
- Desktop App link hidden in standalone (already using app)
- viewport-fit=cover for edge-to-edge rendering
- -webkit-backdrop-filter prefix for Safari
https://claude.ai/code/session_01LJNJws3Tyq7jFNGVAYBszq
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 4a27767 commit 4afc7d7
12 files changed
Lines changed: 1000 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1054 | 1054 | | |
1055 | 1055 | | |
1056 | 1056 | | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
| 1069 | + | |
| 1070 | + | |
| 1071 | + | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + | |
| 1094 | + | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
| 1125 | + | |
| 1126 | + | |
| 1127 | + | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
| 1131 | + | |
| 1132 | + | |
| 1133 | + | |
| 1134 | + | |
| 1135 | + | |
| 1136 | + | |
| 1137 | + | |
| 1138 | + | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
| 1183 | + | |
| 1184 | + | |
| 1185 | + | |
| 1186 | + | |
| 1187 | + | |
1057 | 1188 | | |
1058 | 1189 | | |
1059 | 1190 | | |
1060 | 1191 | | |
1061 | 1192 | | |
| 1193 | + | |
| 1194 | + | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
| 1198 | + | |
1062 | 1199 | | |
1063 | 1200 | | |
1064 | 1201 | | |
| |||
1124 | 1261 | | |
1125 | 1262 | | |
1126 | 1263 | | |
| 1264 | + | |
| 1265 | + | |
| 1266 | + | |
1127 | 1267 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1054 | 1054 | | |
1055 | 1055 | | |
1056 | 1056 | | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
| 1069 | + | |
| 1070 | + | |
| 1071 | + | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + | |
| 1094 | + | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
| 1125 | + | |
| 1126 | + | |
| 1127 | + | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
| 1131 | + | |
| 1132 | + | |
| 1133 | + | |
| 1134 | + | |
| 1135 | + | |
| 1136 | + | |
| 1137 | + | |
| 1138 | + | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
| 1183 | + | |
| 1184 | + | |
| 1185 | + | |
| 1186 | + | |
| 1187 | + | |
1057 | 1188 | | |
1058 | 1189 | | |
1059 | 1190 | | |
1060 | 1191 | | |
1061 | 1192 | | |
| 1193 | + | |
| 1194 | + | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
| 1198 | + | |
1062 | 1199 | | |
1063 | 1200 | | |
1064 | 1201 | | |
| |||
1124 | 1261 | | |
1125 | 1262 | | |
1126 | 1263 | | |
| 1264 | + | |
| 1265 | + | |
| 1266 | + | |
1127 | 1267 | | |
Loading
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
12 | 20 | | |
13 | | - | |
14 | 21 | | |
15 | 22 | | |
16 | 23 | | |
| |||
410 | 417 | | |
411 | 418 | | |
412 | 419 | | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
413 | 433 | | |
414 | 434 | | |
415 | 435 | | |
0 commit comments