Skip to content

Commit 94c440c

Browse files
Merge branch 'main' into dependabot/github_actions/dtolnay/rust-toolchain-efa25f7f19611383d5b0ccf2d1c8914531636bf9
2 parents c455de5 + 9ce28dd commit 94c440c

9 files changed

Lines changed: 308 additions & 5 deletions

File tree

.github/workflows/codeql.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ jobs:
2929
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
3030

3131
- name: Initialize CodeQL
32-
uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v3.28.1
32+
uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v3.28.1
3333
with:
3434
languages: ${{ matrix.language }}
3535
build-mode: ${{ matrix.build-mode }}
3636

3737
- name: Perform CodeQL Analysis
38-
uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v3.28.1
38+
uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v3.28.1
3939
with:
4040
category: "/language:${{ matrix.language }}"

.github/workflows/quality.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
find . -type f -perm /111 -name "*.sh" | head -10 || true
1919
2020
- name: Check for secrets
21-
uses: trufflesecurity/trufflehog@ef6e76c3c4023279497fab4721ffa071a722fd05 # v3.92.4
21+
uses: trufflesecurity/trufflehog@7c0734f987ad0bb30ee8da210773b800ee2016d3 # v3.93.4
2222
with:
2323
path: ./
2424
base: ${{ github.event.pull_request.base.sha || github.event.before }}

.github/workflows/scorecard.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ jobs:
2727
results_format: sarif
2828

2929
- name: Upload results
30-
uses: github/codeql-action/upload-sarif@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v3.31.8
30+
uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v3.31.8
3131
with:
3232
sarif_file: results.sarif

.github/workflows/secret-scanner.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
fetch-depth: 0 # Full history for scanning
1919

2020
- name: TruffleHog Secret Scan
21-
uses: trufflesecurity/trufflehog@ef6e76c3c4023279497fab4721ffa071a722fd05 # v3
21+
uses: trufflesecurity/trufflehog@7c0734f987ad0bb30ee8da210773b800ee2016d3 # v3
2222
with:
2323
extra_args: --only-verified --fail
2424

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,8 @@ Usage
2525
Clone this repo:
2626

2727
git clone git@gitlab.com\:hyperpolymath/scripts.git
28+
29+
30+
## Architecture
31+
32+
See [TOPOLOGY.md](TOPOLOGY.md) for a visual architecture map and completion dashboard.

TOPOLOGY.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<!-- SPDX-License-Identifier: PMPL-1.0-or-later -->
2+
<!-- TOPOLOGY.md — Project architecture map and completion dashboard -->
3+
<!-- Last updated: 2026-02-19 -->
4+
5+
# Hyperpolymath Scripts — Project Topology
6+
7+
## System Architecture
8+
9+
```
10+
┌─────────────────────────────────────────┐
11+
│ OPERATOR / ADMIN │
12+
│ (CLI / Cron / Justfile) │
13+
└───────────────────┬─────────────────────┘
14+
│ Execute
15+
16+
┌─────────────────────────────────────────┐
17+
│ AUTOMATION HUB LAYER │
18+
│ │
19+
│ ┌───────────┐ ┌───────────────────┐ │
20+
│ │ System │ │ Git & Repo │ │
21+
│ │ Tuning │ │ Orchestration │ │
22+
│ └─────┬─────┘ └────────┬──────────┘ │
23+
│ │ │ │
24+
│ ┌─────▼─────┐ ┌────────▼──────────┐ │
25+
│ │ Language │ │ Cluster Ops │ │
26+
│ │ Bootstrap │ │ (Kinoite) │ │
27+
│ └─────┬─────┘ └────────┬──────────┘ │
28+
└────────│─────────────────│──────────────┘
29+
│ │
30+
▼ ▼
31+
┌─────────────────────────────────────────┐
32+
│ TARGET SUBSTRATES │
33+
│ ┌───────────┐ ┌───────────┐ ┌───────┐│
34+
│ │ Work- │ │ Git │ │ Cloud ││
35+
│ │ station │ │ Forges │ │ Nodes ││
36+
│ └───────────┘ └───────────┘ └───────┘│
37+
└─────────────────────────────────────────┘
38+
39+
┌─────────────────────────────────────────┐
40+
│ REPO INFRASTRUCTURE │
41+
│ Justfile Automation .machine_readable/ │
42+
│ Multi-Forge Hub 0-AI-MANIFEST.a2ml │
43+
└─────────────────────────────────────────┘
44+
```
45+
46+
## Completion Dashboard
47+
48+
```
49+
COMPONENT STATUS NOTES
50+
───────────────────────────────── ────────────────── ─────────────────────────────────
51+
SYSTEM & REPO SCRIPTS
52+
sync-repos-parallel.sh ██████████ 100% Mass sync stable
53+
restructure-repos.jl ██████████ 100% Julia consolidation verified
54+
system-optimize.sh ████████░░ 80% Kinoite tuning active
55+
langstrap.sh ██████░░░░ 60% Multi-language setup refining
56+
57+
KINOITE & CLUSTER
58+
enhance-kinoite.sh ██████████ 100% Post-install tweaks stable
59+
setup-kinoite-dev ████████░░ 80% Dev container hooks active
60+
k-check / k-intune ██████░░░░ 60% Validation rituals expanding
61+
62+
REPO INFRASTRUCTURE
63+
Justfile Automation ██████████ 100% Standard build/sync tasks
64+
.machine_readable/ ██████████ 100% STATE tracking active
65+
0-AI-MANIFEST.a2ml ██████████ 100% AI entry point verified
66+
67+
─────────────────────────────────────────────────────────────────────────────
68+
OVERALL: ████████░░ ~80% Tooling suite stable & active
69+
```
70+
71+
## Key Dependencies
72+
73+
```
74+
Justfile Target ───► Bash / Julia ─────► System Command ───► Result State
75+
│ │ │ │
76+
▼ ▼ ▼ ▼
77+
Sync Script ───► Git Binary ───────► Remote Forge ──────► Mirrored
78+
```
79+
80+
## Update Protocol
81+
82+
This file is maintained by both humans and AI agents. When updating:
83+
84+
1. **After completing a component**: Change its bar and percentage
85+
2. **After adding a component**: Add a new row in the appropriate section
86+
3. **After architectural changes**: Update the ASCII diagram
87+
4. **Date**: Update the `Last updated` comment at the top of this file
88+
89+
Progress bars use: `` (filled) and `` (empty), 10 characters wide.
90+
Percentages: 0%, 10%, 20%, ... 100% (in 10% increments).

generate_bookmarks_html.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import datetime
2+
3+
themes = {
4+
"Tech & Programming": ["github", "programming", "docker", "server", "code", "dev", "tech", "node", "python", "rust", "npm", "stack", "api", "web", "cloud", "aws", "google", "microsoft", "apple", "app", "software"],
5+
"Linux & OS": ["fedora", "linux", "ubuntu", "debian", "kernel", "cli", "shell", "bash", "terminal", "desktop", "os", "system", "config"],
6+
"News & Finance": ["news", "breaking", "msn", "trump", "politics", "economy", "market", "finance", "bank", "money", "stock", "crypto", "bitcoin", "business", "invest", "trading"],
7+
"Psychology & Growth": ["psychology", "mental", "self", "growth", "happiness", "manipulation", "relationships", "advice", "life", "wellness", "mindset", "success", "productivity"],
8+
"Art, Culture & Design": ["art", "artist", "design", "museum", "culture", "style", "creative", "photo", "music", "history", "philosophy", "books", "writing"],
9+
"Lifestyle & Health": ["food", "cooking", "recipe", "health", "fitness", "yoga", "travel", "holiday", "home", "garden", "shopping", "amazon", "buy", "deal"],
10+
"Education & Career": ["learn", "course", "study", "university", "school", "job", "career", "resume", "cv", "interview", "skills", "training"],
11+
"Media & Social": ["youtube", "video", "tv", "movie", "entertainment", "facebook", "twitter", "x.com", "instagram", "reddit", "watch", "podcast"]
12+
}
13+
14+
def categorize(line):
15+
line_lower = line.lower()
16+
for theme, keywords in themes.items():
17+
if any(keyword in line_lower for keyword in keywords):
18+
return theme
19+
return "Uncategorized"
20+
21+
all_bookmarks = {}
22+
23+
try:
24+
with open("/tmp/firefox_bookmarks.txt", "r") as f:
25+
for line in f:
26+
theme = categorize(line)
27+
all_bookmarks.setdefault(theme, []).append(line.strip())
28+
29+
with open("/tmp/edge_bookmarks.txt", "r") as f:
30+
for line in f:
31+
theme = categorize(line)
32+
all_bookmarks.setdefault(theme, []).append(line.strip())
33+
34+
html_path = "/var/mnt/eclipse/repos/organized_bookmarks.html"
35+
with open(html_path, "w") as f:
36+
f.write('<!DOCTYPE NETSCAPE-Bookmark-file-1>\n')
37+
f.write('<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">\n')
38+
f.write('<TITLE>Bookmarks</TITLE>\n')
39+
f.write('<H1>Bookmarks</H1>\n')
40+
f.write('<DL><p>\n')
41+
42+
sorted_themes = sorted([t for t in all_bookmarks.keys() if t != "Uncategorized"]) + ["Uncategorized"]
43+
44+
for theme in sorted_themes:
45+
if theme in all_bookmarks:
46+
f.write(f' <DT><H3>{theme}</H3>\n')
47+
f.write(' <DL><p>\n')
48+
unique_items = sorted(list(set(all_bookmarks[theme])))
49+
for item in unique_items:
50+
parts = item.split("|")
51+
if len(parts) == 2:
52+
name, url = parts[0], parts[1]
53+
name = name.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;").replace('"', "&quot;")
54+
f.write(f' <DT><A HREF="{url}">{name}</A>\n')
55+
f.write(' </DL><p>\n')
56+
57+
f.write('</DL><p>\n')
58+
59+
print(f"Success: {html_path} generated.")
60+
except Exception as e:
61+
print(f"Error: {e}")

organize_bookmarks.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import sys
2+
3+
# More comprehensive themes
4+
themes = {
5+
"Tech & Programming": ["github", "programming", "docker", "server", "code", "dev", "tech", "node", "python", "rust", "npm", "stack", "api", "web", "cloud", "aws", "google", "microsoft", "apple", "app", "software"],
6+
"Linux & OS": ["fedora", "linux", "ubuntu", "debian", "kernel", "cli", "shell", "bash", "terminal", "desktop", "os", "system", "config"],
7+
"News & Finance": ["news", "breaking", "msn", "trump", "politics", "economy", "market", "finance", "bank", "money", "stock", "crypto", "bitcoin", "business", "invest", "trading"],
8+
"Psychology & Growth": ["psychology", "mental", "self", "growth", "happiness", "manipulation", "relationships", "advice", "life", "wellness", "mindset", "success", "productivity"],
9+
"Art, Culture & Design": ["art", "artist", "design", "museum", "culture", "style", "creative", "photo", "music", "history", "philosophy", "books", "writing"],
10+
"Lifestyle & Health": ["food", "cooking", "recipe", "health", "fitness", "yoga", "travel", "holiday", "home", "garden", "shopping", "amazon", "buy", "deal"],
11+
"Education & Career": ["learn", "course", "study", "university", "school", "job", "career", "resume", "cv", "interview", "skills", "training"],
12+
"Media & Social": ["youtube", "video", "tv", "movie", "entertainment", "facebook", "twitter", "x.com", "instagram", "reddit", "watch", "podcast"]
13+
}
14+
15+
def categorize(line):
16+
line_lower = line.lower()
17+
for theme, keywords in themes.items():
18+
if any(keyword in line_lower for keyword in keywords):
19+
return theme
20+
return "Uncategorized"
21+
22+
all_bookmarks = {}
23+
24+
try:
25+
with open("/tmp/firefox_bookmarks.txt", "r") as f:
26+
for line in f:
27+
theme = categorize(line)
28+
all_bookmarks.setdefault(theme, []).append(line.strip())
29+
30+
with open("/tmp/edge_bookmarks.txt", "r") as f:
31+
for line in f:
32+
theme = categorize(line)
33+
all_bookmarks.setdefault(theme, []).append(line.strip())
34+
35+
with open("/var/mnt/eclipse/repos/organized_bookmarks.md", "w") as f:
36+
f.write("# Refined Organized Bookmarks\n\n")
37+
sorted_themes = sorted([t for t in all_bookmarks.keys() if t != "Uncategorized"]) + ["Uncategorized"]
38+
for theme in sorted_themes:
39+
if theme in all_bookmarks:
40+
f.write(f"## {theme}\n")
41+
unique_items = sorted(list(set(all_bookmarks[theme])))
42+
for item in unique_items:
43+
parts = item.split("|")
44+
if len(parts) == 2:
45+
f.write(f"- [{parts[0]}]({parts[1]})\n")
46+
else:
47+
f.write(f"- {item}\n")
48+
f.write("\n")
49+
print("Success: Refined organized_bookmarks.md generated.")
50+
except Exception as e:
51+
print(f"Error: {e}")

organize_edge_bookmarks.py

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import json
2+
import datetime
3+
import uuid
4+
5+
def unix_timestamp(dt):
6+
# Windows/Chrome timestamp (microseconds since Jan 1, 1601)
7+
return int((dt - datetime.datetime(1601, 1, 1)).total_seconds() * 1000000)
8+
9+
themes = {
10+
"Tech & Programming": ["github", "programming", "docker", "server", "code", "dev", "tech", "node", "python", "rust", "npm", "stack", "api", "web", "cloud", "aws", "google", "microsoft", "apple", "app", "software"],
11+
"Linux & OS": ["fedora", "linux", "ubuntu", "debian", "kernel", "cli", "shell", "bash", "terminal", "desktop", "os", "system", "config"],
12+
"News & Finance": ["news", "breaking", "msn", "trump", "politics", "economy", "market", "finance", "bank", "money", "stock", "crypto", "bitcoin", "business", "invest", "trading"],
13+
"Psychology & Growth": ["psychology", "mental", "self", "growth", "happiness", "manipulation", "relationships", "advice", "life", "wellness", "mindset", "success", "productivity"],
14+
"Art, Culture & Design": ["art", "artist", "design", "museum", "culture", "style", "creative", "photo", "music", "history", "philosophy", "books", "writing"],
15+
"Lifestyle & Health": ["food", "cooking", "recipe", "health", "fitness", "yoga", "travel", "holiday", "home", "garden", "shopping", "amazon", "buy", "deal"],
16+
"Education & Career": ["learn", "course", "study", "university", "school", "job", "career", "resume", "cv", "interview", "skills", "training"],
17+
"Media & Social": ["youtube", "video", "tv", "movie", "entertainment", "facebook", "twitter", "x.com", "instagram", "reddit", "watch", "podcast"]
18+
}
19+
20+
def categorize(line):
21+
line_lower = line.lower()
22+
for theme, keywords in themes.items():
23+
if any(keyword in line_lower for keyword in keywords):
24+
return theme
25+
return "Uncategorized"
26+
27+
all_bookmarks = {}
28+
29+
try:
30+
with open("/tmp/firefox_bookmarks.txt", "r") as f:
31+
for line in f:
32+
theme = categorize(line)
33+
all_bookmarks.setdefault(theme, []).append(line.strip())
34+
35+
with open("/tmp/edge_bookmarks.txt", "r") as f:
36+
for line in f:
37+
theme = categorize(line)
38+
all_bookmarks.setdefault(theme, []).append(line.strip())
39+
40+
new_roots = {
41+
"bookmark_bar": {
42+
"children": [],
43+
"date_added": str(unix_timestamp(datetime.datetime.now())),
44+
"date_last_used": "0",
45+
"guid": str(uuid.uuid4()),
46+
"id": "1",
47+
"name": "Favorites Bar",
48+
"type": "folder"
49+
},
50+
"other": { "children": [], "date_added": "0", "date_last_used": "0", "guid": str(uuid.uuid4()), "id": "2", "name": "Other Favorites", "type": "folder" },
51+
"synced": { "children": [], "date_added": "0", "date_last_used": "0", "guid": str(uuid.uuid4()), "id": "3", "name": "Mobile Favorites", "type": "folder" }
52+
}
53+
54+
current_id = 4
55+
sorted_themes = sorted([t for t in all_bookmarks.keys() if t != "Uncategorized"]) + ["Uncategorized"]
56+
57+
for theme in sorted_themes:
58+
if theme in all_bookmarks:
59+
unique_items = sorted(list(set(all_bookmarks[theme])))
60+
folder = {
61+
"date_added": str(unix_timestamp(datetime.datetime.now())),
62+
"date_last_used": "0",
63+
"guid": str(uuid.uuid4()),
64+
"id": str(current_id),
65+
"name": theme,
66+
"type": "folder",
67+
"children": []
68+
}
69+
current_id += 1
70+
for item in unique_items:
71+
parts = item.split("|")
72+
if len(parts) == 2:
73+
folder["children"].append({
74+
"date_added": str(unix_timestamp(datetime.datetime.now())),
75+
"date_last_used": "0",
76+
"guid": str(uuid.uuid4()),
77+
"id": str(current_id),
78+
"name": parts[0],
79+
"type": "url",
80+
"url": parts[1]
81+
})
82+
current_id += 1
83+
new_roots["bookmark_bar"]["children"].append(folder)
84+
85+
output = {
86+
"checksum": "", # Edge should re-calc
87+
"roots": new_roots,
88+
"version": 1
89+
}
90+
91+
with open("/home/hyper/.var/app/com.microsoft.EdgeDev/config/microsoft-edge-dev/Default/Bookmarks", "w") as f:
92+
json.dump(output, f, indent=3)
93+
94+
print("Success: Edge Bookmarks file overwritten.")
95+
except Exception as e:
96+
print(f"Error: {e}")

0 commit comments

Comments
 (0)