website-xp-phone 1.6.6-a → 1.6.6-b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/WEBSITE_STRUCTURE.md +228 -0
- package/contacts.json +4 -1
- package/opencode.json +20 -0
- package/package.json +4 -3
- package/pagerts.json +96 -0
- package/pages.json +6 -0
- package/public/blog/posts.json +42 -5
- package/public/checksums.txt +23 -22
- package/public/soundcloud.json +358 -286
- package/render.yaml +11 -0
- package/scripts/generate-soundcloud-json.mjs +5 -5
- package/scripts/mutable-assets.mjs +33 -2
- package/scripts/refresh-soundcloud.mjs +111 -9
- package/sections.json +1 -1
- package/src/App.tsx +36 -8
- package/src/components/MusicContent.tsx +5 -5
- package/src/lib/musicSchema.mjs +0 -2
- package/src/lib/musicSchema.ts +1 -1
- package/src/pages/PagertsPage.tsx +20 -0
- package/src/pages/WowPage.tsx +3 -3
- package/src/pages/index.ts +1 -0
- package/src/styles/main.css +9 -0
- package/src/utils/routingReducer.ts +3 -1
- package/src/windowing/Section.tsx +32 -1
- package/src/windowing/ShowPermalinkButton.tsx +1 -1
- package/src/windowing/provider.tsx +1 -1
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Website Structure Documentation
|
|
2
|
+
|
|
3
|
+
This document explains how the personal website is structured and how to add new pages.
|
|
4
|
+
|
|
5
|
+
## Architecture Overview
|
|
6
|
+
|
|
7
|
+
The website is a React + TypeScript single-page application built with Vite. It uses JSON-driven content for easy editing and follows a modular page-based architecture.
|
|
8
|
+
|
|
9
|
+
## Key Files and Directories
|
|
10
|
+
|
|
11
|
+
### Configuration Files
|
|
12
|
+
|
|
13
|
+
- `pages.json` - Master route configuration. Defines all available pages with their paths, menu labels, titles, and descriptions.
|
|
14
|
+
- `sections.json` - Content for the home page sections. Contains markdown-like content with headings, links, and nested structures.
|
|
15
|
+
- `addons.json` - Content for the addons page. Defines WoW addon configurations with download links and descriptions.
|
|
16
|
+
|
|
17
|
+
### Source Code
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
src/
|
|
21
|
+
├── App.tsx # Main application with routing logic and page switching
|
|
22
|
+
├── pages/
|
|
23
|
+
│ ├── index.ts # Page component exports
|
|
24
|
+
│ ├── HomePage.tsx # Home page component
|
|
25
|
+
│ ├── AddonsPage.tsx # Addons page component (and example of content-driven page)
|
|
26
|
+
│ ├── ContactPage.tsx # Contact page
|
|
27
|
+
│ ├── ResumePage.tsx # Resume page
|
|
28
|
+
│ ├── WowPage.tsx # WoW configs page
|
|
29
|
+
│ └── NotFoundPage.tsx # 404 page
|
|
30
|
+
├── components/
|
|
31
|
+
│ ├── Page.tsx # Page wrapper components (PageContent, PageWithAddons)
|
|
32
|
+
│ ├── MenuBar.tsx # Navigation menu
|
|
33
|
+
│ ├── Addon.tsx # Addon item component
|
|
34
|
+
│ ├── Section.tsx # Section content component (in windowing/)
|
|
35
|
+
│ └── ...
|
|
36
|
+
├── windowing/
|
|
37
|
+
│ ├── types.ts # TypeScript type definitions
|
|
38
|
+
│ ├── utils.ts # Content processing utilities
|
|
39
|
+
│ └── Section.tsx # Core section rendering
|
|
40
|
+
├── lib/
|
|
41
|
+
│ └── ... # Utility libraries
|
|
42
|
+
└── utils/
|
|
43
|
+
└── ... # React hooks and utilities
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Public Content
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
public/
|
|
50
|
+
├── blog/ # Blog posts (markdown files)
|
|
51
|
+
├── documents/ # Downloadable documents
|
|
52
|
+
└── images/ # Static images
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Adding a New Page
|
|
56
|
+
|
|
57
|
+
### Step 1: Create the Route Configuration
|
|
58
|
+
|
|
59
|
+
Add a new entry to `pages.json`:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"path": "/pagerts",
|
|
64
|
+
"menuLabel": "pagerts",
|
|
65
|
+
"title": "pagerts - Page Router",
|
|
66
|
+
"description": "A TypeScript page routing library by kine"
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Step 2: Create the Page Component
|
|
71
|
+
|
|
72
|
+
Create a new file `src/pages/PagertsPage.tsx` based on `AddonsPage.tsx` or `HomePage.tsx`:
|
|
73
|
+
|
|
74
|
+
**For content-driven pages (like home/addons):**
|
|
75
|
+
|
|
76
|
+
```tsx
|
|
77
|
+
import { useMemo } from "react";
|
|
78
|
+
import { PageContent } from "../components/Page";
|
|
79
|
+
import { processContent } from "../windowing/utils.ts";
|
|
80
|
+
import type { SectionProps } from "../windowing";
|
|
81
|
+
|
|
82
|
+
const PagertsPage = () => {
|
|
83
|
+
const { processed, metadata } = useMemo(
|
|
84
|
+
() => processContent(sections as SectionProps),
|
|
85
|
+
[],
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
return (
|
|
89
|
+
<main>
|
|
90
|
+
<PageContent sections={processed} pageMetadata={{ sections: metadata }} />
|
|
91
|
+
</main>
|
|
92
|
+
);
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export default PagertsPage;
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**For addon-style pages (like addons):**
|
|
99
|
+
|
|
100
|
+
```tsx
|
|
101
|
+
import { useMemo } from "react";
|
|
102
|
+
import { PageWithAddons } from "../components/Page";
|
|
103
|
+
import { processContent } from "../windowing/utils.ts";
|
|
104
|
+
import type { AddonProps } from "../components/Addon";
|
|
105
|
+
|
|
106
|
+
const PagertsPage = () => {
|
|
107
|
+
const { processed, metadata } = useMemo(
|
|
108
|
+
() => processContent(content as AddonProps),
|
|
109
|
+
[],
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
return (
|
|
113
|
+
<main>
|
|
114
|
+
<PageWithAddons
|
|
115
|
+
addons={processed as AddonProps}
|
|
116
|
+
pageMetadata={{ sections: metadata }}
|
|
117
|
+
/>
|
|
118
|
+
</main>
|
|
119
|
+
);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export default PagertsPage;
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Step 3: Export the Page Component
|
|
126
|
+
|
|
127
|
+
Update `src/pages/index.ts`:
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
export { default as PagertsPage } from "./PagertsPage";
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Step 4: Add the Route to App.tsx
|
|
134
|
+
|
|
135
|
+
Import and add the route in `src/App.tsx`:
|
|
136
|
+
|
|
137
|
+
```tsx
|
|
138
|
+
import {
|
|
139
|
+
// ... existing imports
|
|
140
|
+
PagertsPage,
|
|
141
|
+
} from "./pages";
|
|
142
|
+
|
|
143
|
+
// Add to the switch statement:
|
|
144
|
+
case "/pagerts":
|
|
145
|
+
content = <PagertsPage />;
|
|
146
|
+
break;
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Step 5: Create Content File
|
|
150
|
+
|
|
151
|
+
Create a JSON file (e.g., `pagerts.json`) with your content in the same format as `sections.json`:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"heading": "Welcome to pagerts",
|
|
156
|
+
"content": [
|
|
157
|
+
"pagerts is a simple page routing library",
|
|
158
|
+
{
|
|
159
|
+
"heading": "Features",
|
|
160
|
+
"content": [
|
|
161
|
+
"Type-safe routing",
|
|
162
|
+
"Nested routes support",
|
|
163
|
+
"Easy integration"
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Content Processing Pipeline
|
|
171
|
+
|
|
172
|
+
The website uses `processContent()` from `src/windowing/utils.ts` to:
|
|
173
|
+
|
|
174
|
+
1. Validate content links
|
|
175
|
+
2. Assign UUIDs to all content items
|
|
176
|
+
3. Generate stable tree-index paths for permalink anchors
|
|
177
|
+
|
|
178
|
+
## Page Types
|
|
179
|
+
|
|
180
|
+
| Page Type | Component Pattern | Use Case |
|
|
181
|
+
|-----------|-------------------|----------|
|
|
182
|
+
| `PageContent` | Section-based | Home page, blog posts |
|
|
183
|
+
| `PageWithAddons` | Addon-based | Addons page, Wow page |
|
|
184
|
+
| Direct component | Custom | Contact, Music, Sitemap |
|
|
185
|
+
|
|
186
|
+
## Key Dependencies
|
|
187
|
+
|
|
188
|
+
- **React**: UI components and state management
|
|
189
|
+
- **Vite**: Build tool and dev server
|
|
190
|
+
- **xp.css**: Nostalgic CSS framework
|
|
191
|
+
- **react-markdown**: Blog content rendering
|
|
192
|
+
|
|
193
|
+
## Deploying to Render.com
|
|
194
|
+
|
|
195
|
+
The website is deployed to Render.com as a static site. The `render.yaml` file configures the build and routing.
|
|
196
|
+
|
|
197
|
+
### Domain Configuration
|
|
198
|
+
|
|
199
|
+
To add a subdomain redirect (e.g., `pagerts.akinevz.com` → `akinevz.com/pagerts`):
|
|
200
|
+
|
|
201
|
+
1. **Add Custom Domain in Render Dashboard:**
|
|
202
|
+
- Go to your service → Settings → Custom Domains
|
|
203
|
+
- Add `pagerts.akinevz.com`
|
|
204
|
+
- Render will provide DNS verification records
|
|
205
|
+
|
|
206
|
+
2. **Configure DNS:**
|
|
207
|
+
- Add a CNAME record for `pagerts` pointing to your Render service domain
|
|
208
|
+
- Example: `pagerts.akinevz.com` → `alias.kirill-nevzorov.onrender.com`
|
|
209
|
+
|
|
210
|
+
3. **Path-based routing:**
|
|
211
|
+
- The website handles `/pagerts` route internally
|
|
212
|
+
- Visitors to `pagerts.akinevz.com` will load the homepage at `/`
|
|
213
|
+
- For specific redirects, configure via Render's domain aliases
|
|
214
|
+
|
|
215
|
+
### Current Routes
|
|
216
|
+
|
|
217
|
+
The render.yaml defines:
|
|
218
|
+
- `/404` → `/404.html` (static 404 page)
|
|
219
|
+
|
|
220
|
+
## Easter Egg: The `#feef69` Page
|
|
221
|
+
|
|
222
|
+
Navigate to `/#feef69` (note the hash) for a hidden easter egg:
|
|
223
|
+
|
|
224
|
+
- An empty page with background color `#FEEF69` (the same yellow as Clippy's border flash)
|
|
225
|
+
- Clippy remains visible if it was showing (it's the website's border flash color!)
|
|
226
|
+
- No menu bar - just pure yellow
|
|
227
|
+
|
|
228
|
+
This is a fun homage to the Clippy mascot that watches over the site.
|
package/contacts.json
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
"theme": "open",
|
|
4
4
|
"content": [
|
|
5
5
|
"[akinevz.com/resume](https://akinevz.com/resume)",
|
|
6
|
+
"[pagerts](https://akinevz.com/pagerts) - my CLI project",
|
|
7
|
+
"",
|
|
6
8
|
"[github.com/akinevz2](https://github.com/akinevz2)",
|
|
7
9
|
"[github.com/akinevz (archive)](https://github.com/akinevz)",
|
|
8
10
|
"[youtube.com/@akinevz](https://www.youtube.com/@akinevz)",
|
|
@@ -10,12 +12,13 @@
|
|
|
10
12
|
"[linkedin.com/in/akinevz](https://www.linkedin.com/in/akinevz/)",
|
|
11
13
|
"[instagram.com/akinevz2](https://www.instagram.com/akinevz2/)",
|
|
12
14
|
"[x.com/akinevz](https://x.com/akinevz)",
|
|
15
|
+
"",
|
|
13
16
|
"[akinevz@gmail.com](mailto:akinevz@gmail.com)",
|
|
14
17
|
"[akinevz@outlook.com](mailto:akinevz@outlook.com)",
|
|
15
18
|
"",
|
|
16
19
|
"",
|
|
17
20
|
{
|
|
18
|
-
"heading": "
|
|
21
|
+
"heading": "funny within",
|
|
19
22
|
"content": [
|
|
20
23
|
"click here to look at the [fuckingclippy](#fuckingclippy)"
|
|
21
24
|
]
|
package/opencode.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opencode.ai/config.json",
|
|
3
|
+
"model": "ollama/laguna-xs-2.1:safe",
|
|
4
|
+
"provider": {
|
|
5
|
+
"ollama": {
|
|
6
|
+
"npm": "@ai-sdk/openai-compatible",
|
|
7
|
+
"name": "Ollama (ws-rarebox)",
|
|
8
|
+
"options": {
|
|
9
|
+
"baseURL": "http://ws-rarebox:11434/v1"
|
|
10
|
+
},
|
|
11
|
+
"models": {
|
|
12
|
+
"laguna-xs-2.1:latest": {
|
|
13
|
+
"name": "Laguna XS 2.1",
|
|
14
|
+
"tool_call": true,
|
|
15
|
+
"options": {},
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "website-xp-phone",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.6b",
|
|
4
4
|
"license": "GPL v2",
|
|
5
5
|
"author": "Kirill <kine> Nevzorov <akinevz@outlook.com>",
|
|
6
6
|
"type": "module",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@eslint/js": "^10.0.1",
|
|
55
55
|
"@types/react": "^19.2.18",
|
|
56
|
-
"@types/react-dom": "^19.2.3"
|
|
56
|
+
"@types/react-dom": "^19.2.3",
|
|
57
|
+
"pagerts": "^1.5.9"
|
|
57
58
|
}
|
|
58
|
-
}
|
|
59
|
+
}
|
package/pagerts.json
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"heading": "pagerts - Webpage URL extractor",
|
|
3
|
+
"content": [
|
|
4
|
+
"pagerts is a secure, modern TypeScript CLI tool that transforms URLs into structured JSON objects, extracting all navigable items and resources from webpages.",
|
|
5
|
+
{
|
|
6
|
+
"heading": "Features",
|
|
7
|
+
"content": [
|
|
8
|
+
"🔒 **Security-First** - Built-in URL validation, rate limiting, and XSS protection",
|
|
9
|
+
"🚀 **Modern TypeScript** - Strict type checking and modern ES2022 syntax",
|
|
10
|
+
"⚡ **Fast** - Efficient parsing with LinkeDOM and concurrent request handling",
|
|
11
|
+
"🧪 **Well-Tested** - Comprehensive test coverage with Jest",
|
|
12
|
+
"📦 **Easy to Use** - Simple CLI interface with sensible defaults",
|
|
13
|
+
"🗂️ **Local File Support** - Parses local file paths and file:/// inputs",
|
|
14
|
+
"🧭 **Request Header Override** - Optional --user-agent flag for sites that behave differently by client"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"heading": "Installation",
|
|
19
|
+
"content": [
|
|
20
|
+
{
|
|
21
|
+
"heading": "Global Installation",
|
|
22
|
+
"content": [
|
|
23
|
+
"npm install -g pagerts",
|
|
24
|
+
"",
|
|
25
|
+
"pagerts ./page.html"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"heading": "Using npx (No Installation Required)",
|
|
30
|
+
"content": "npx pagerts ./page.html"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"heading": "Usage",
|
|
36
|
+
"content": [
|
|
37
|
+
{
|
|
38
|
+
"heading": "Extract from local HTML file",
|
|
39
|
+
"content": "pagerts ./page.html"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"heading": "Extract from local file URL",
|
|
43
|
+
"content": "pagerts file:///path/to/file.html"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"heading": "Fetch from remote URL",
|
|
47
|
+
"content": "pagerts fetch https://website.com"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"heading": "Override user-agent",
|
|
51
|
+
"content": "pagerts fetch --user-agent 'Mozilla/5.0...' https://example.com"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"heading": "Output",
|
|
57
|
+
"content": [
|
|
58
|
+
"The output is JSON containing:",
|
|
59
|
+
{
|
|
60
|
+
"heading": "title",
|
|
61
|
+
"content": "Page's title from <title> tag"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"heading": "url",
|
|
65
|
+
"content": "URL of the page"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"heading": "resources",
|
|
69
|
+
"content": "Array of resources (links, meta tags, embeds) with name and url fields"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"heading": "Links",
|
|
75
|
+
"theme": "open",
|
|
76
|
+
"content": [
|
|
77
|
+
{
|
|
78
|
+
"heading": "npm package",
|
|
79
|
+
"link": "https://www.npmjs.com/package/pagerts"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"heading": "GitHub repository",
|
|
83
|
+
"link": "https://github.com/akinevz2/pagerts"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"heading": "Source Code",
|
|
87
|
+
"link": "https://github.com/akinevz2/pagerts/blob/main/src/resource.ts"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"heading": "CHANGELOG",
|
|
91
|
+
"link": "https://github.com/akinevz2/pagerts/blob/main/CHANGELOG.md"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
}
|
package/pages.json
CHANGED
|
@@ -35,6 +35,12 @@
|
|
|
35
35
|
"title": "kind of work kine likes",
|
|
36
36
|
"description": "hire me!"
|
|
37
37
|
},
|
|
38
|
+
{
|
|
39
|
+
"path": "/pagerts",
|
|
40
|
+
"menuLabel": "pagerts",
|
|
41
|
+
"title": "pagerts - TypeScript Page Router",
|
|
42
|
+
"description": "A simple, type-safe page routing library for TypeScript"
|
|
43
|
+
},
|
|
38
44
|
{
|
|
39
45
|
"path": "/music",
|
|
40
46
|
"menuLabel": "music",
|
package/public/blog/posts.json
CHANGED
|
@@ -2,6 +2,42 @@
|
|
|
2
2
|
"theme": "open",
|
|
3
3
|
"heading": "kine's blog posts",
|
|
4
4
|
"content": [
|
|
5
|
+
{
|
|
6
|
+
"heading": "Lie Symmetries and the Heat-Mass Transport Homeomorphism",
|
|
7
|
+
"content": [
|
|
8
|
+
"Bridging Lie theory with statistical mechanics and thermodynamics allows us to model continuous symmetries in advanced transport phenomena.",
|
|
9
|
+
"This post breaks down the theoretical framework connecting topological homeomorphisms, particle kinetics, and geometric conservation laws.",
|
|
10
|
+
{
|
|
11
|
+
"heading": "1. Lie Groups and Continuous Symmetries",
|
|
12
|
+
"content": [
|
|
13
|
+
"Lie theory fundamentally explores continuous symmetries within physical systems.",
|
|
14
|
+
"In fluid dynamics and thermodynamics, researchers utilize **Lie point symmetries** to simplify systems of partial differential equations (PDEs).",
|
|
15
|
+
"If a particle or fluid medium treats heat distribution (thermal diffusion) and mass distribution (molecular diffusion) identically under a geometric transformation, a Lie group can map the solution of the heat equation directly onto the mass equation."
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"heading": "2. The Heat-Mass Transport Homeomorphism",
|
|
20
|
+
"content": [
|
|
21
|
+
"In classical transport phenomena, heat and mass transfer are governed by strikingly parallel mathematical laws:",
|
|
22
|
+
"* **Fourier's Law** for heat: `J_q = -k ∇T`",
|
|
23
|
+
"* **Fick's Law** for mass: `J_m = -D ∇c`",
|
|
24
|
+
"When a strict topological homeomorphism exists between them, the underlying state space allows you to deform the temperature field continuously into the concentration field without tearing or breaking the mathematical structure.",
|
|
25
|
+
"This is highly relevant in **coupled heat and mass transfer** (such as the Soret and Dufour effects), where temperature gradients drive mass flux, and concentration gradients simultaneously drive heat flux."
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"heading": "3. Connecting Back to Kinetic Energy",
|
|
30
|
+
"content": [
|
|
31
|
+
"Framing this through Lie theory anchors the system to fundamental geometric conservation laws.",
|
|
32
|
+
"According to **Noether's Theorem**, every differentiable symmetry of a physical system corresponds to a strict conservation law:",
|
|
33
|
+
"* **Time translation symmetry** yields the conservation of energy (which microscopic kinetic theory maps directly to temperature).",
|
|
34
|
+
"* **Spatial translation symmetry** yields the conservation of momentum (mass in motion).",
|
|
35
|
+
"Reconstructing the kinetic energy formula `1/2 m v²` through these principles highlights the symmetric foundation of how mass and velocity translate into thermal energy."
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"> Co-authored by akinevz & AI Assistant"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
5
41
|
{
|
|
6
42
|
"heading": "booger boogie intermission",
|
|
7
43
|
"content": "idle your mouse with me",
|
|
@@ -11,11 +47,16 @@
|
|
|
11
47
|
"blog operating normally! :D",
|
|
12
48
|
{
|
|
13
49
|
"heading": "Rueg Config published! (#world of warcraft, #addons)",
|
|
50
|
+
"theme": "open",
|
|
14
51
|
"content": [
|
|
15
52
|
"Packed up the full Rueg configuration into a distributable archive — addons, WeakAuras, and profiles in one drop.",
|
|
16
53
|
"Grab it from the [addons page](/addons) or click below.",
|
|
54
|
+
"I had a bad copy of the zip stuck in website cache:",
|
|
55
|
+
"If you downloaded an archive with 2 folders",
|
|
56
|
+
"Delete it, the correct dist.7z should have 3",
|
|
57
|
+
"You can skip copying WTF/ and just copy interface",
|
|
17
58
|
{
|
|
18
|
-
"heading": "Download",
|
|
59
|
+
"heading": "Big Download Button",
|
|
19
60
|
"link": "/dist.7z"
|
|
20
61
|
}
|
|
21
62
|
]
|
|
@@ -418,10 +459,6 @@
|
|
|
418
459
|
]
|
|
419
460
|
}
|
|
420
461
|
]
|
|
421
|
-
},
|
|
422
|
-
{
|
|
423
|
-
"heading": "first post (#meta, #blog, welcome to my website!)",
|
|
424
|
-
"content": "this is a placeholder blog post. i suddenly got motivation to start writing text again."
|
|
425
462
|
}
|
|
426
463
|
]
|
|
427
464
|
}
|
package/public/checksums.txt
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
ca314fd1590885727a6f0a56b0ab045120b9f7c3db2f76b36dd91c4ad400cf76 404.html
|
|
2
|
+
ca314fd1590885727a6f0a56b0ab045120b9f7c3db2f76b36dd91c4ad400cf76 404/index.html
|
|
3
3
|
7da83c3d559cadd8e46256230136893e2ce6fe70f03a41ef2d81181d744eadda 5.html
|
|
4
4
|
3b3034521c33c8fd32ae15b18e1758f4155160cf65241c2c282b407881d1f554 BAHNSCHRIFT.TTF
|
|
5
5
|
d70465bbbb7a22764551a2c9fde0cc7c617618fbb41da07661b71a3598e0a25a Beep.ogg
|
|
6
6
|
9d7f0ac3d83d26971f6a83441fb363fd03dad567a02dcd1fc043b15ae6768a13 Clippy.png
|
|
7
7
|
f0067c432a0fffdb4f6226177e3d8fc6b67058a7f24ec0a8ed7afc9c3371bd87 Layered Network Security Model for Home Networks (slides).pdf
|
|
8
8
|
acec8ef1b8db9f0526e7ed043c807e77784ded2cace20cee0ee66327ff129db6 Layered Network Security Model for Home Networks.pdf
|
|
9
|
-
c079b24147f64f850f3c10a52f971d77a3b7a248104005d4a8a3fb781f130849 RuegConfig.7z
|
|
10
9
|
f2090319a17b8426af1826047aa9fe316923998c3d8db162b70fdfbb7d73ed09 Smoll.png
|
|
11
10
|
da6292bf7acd20d8c4dd54bfd0f54605f9f2fda10f551bba15969dcbe9e14df2 TODO.pdf
|
|
12
11
|
fdbbad0b3d609ea589e355e0a53f25c12d1dbcfd32ccf22f0332ff67bec22664 Toiny.png
|
|
13
|
-
|
|
12
|
+
aa2c1c2e18a6cf4160412cb096fa251efe7cbb3cf337f22760f62807d82ded5c addons.html
|
|
14
13
|
417de6bb69b0e1cd69ce72a30cf85fca751fd267074822c7582110ba66c63487 addons/energy-swing.txt
|
|
15
|
-
|
|
14
|
+
aa2c1c2e18a6cf4160412cb096fa251efe7cbb3cf337f22760f62807d82ded5c addons/index.html
|
|
16
15
|
176aaac676a7e3fee2ea16bf0335d450e3ff370b33e2946e1ddbba19598601c9 addons/lego-yoda-death-readme.txt
|
|
17
16
|
8ba04990cf098dffbb0af10c36345455889b8bbbe40071a63e778203f0956c2f addons/lego-yoda-death.mp3
|
|
18
17
|
0e9faacb88a2db38b9762d108a31c4ad603abb9bf83d738b74984506a26549fa addons/mana-blast.txt
|
|
@@ -33,8 +32,8 @@ a49b6fb08f5c5e4d4828cf49e98b72692dc36888502f262041f1822f864fc20b addons/rueg-wa
|
|
|
33
32
|
93f4825028c263e69ca4560f45ff54415fccad38c10e37ea1eefef3ab0ff3f29 assets/PerfectDOSVGA437Win-BZfDqYRn.woff2
|
|
34
33
|
c71295b97f51c2f199b8f1a0ef3cc55fbe5dec6f78daee9098b4dbfe942931a8 assets/PerfectDOSVGA437Win-C4lD4zTj.woff
|
|
35
34
|
9e8db3fde46bba35d28f839d0c507a7407b7e78639a7d52a27e2bc148d29a5b2 assets/firebase-CpVmm8V0.js
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
99a523d9b1708c28bda6263a6125c2f9f61947127da936159cc90553e279bbb6 assets/index-B6fcJ3lr.css
|
|
36
|
+
3aa6021b1a6c4e3fd1ef9c677b88a240d02149adccb52b7d48e2e71dd6b601d6 assets/index-DxxMKnze.js
|
|
38
37
|
e122aa26fc9b7191c3af1b0fca8e780474c16240733b69286f9cd50efb447736 assets/markdown-Cj-Co3zP.js
|
|
39
38
|
0c69b2d91191bce88ce4ec0ad81b26f3dd106ea62eff080b30ce550f75438a6c assets/ms_sans_serif-C3pax6mQ.woff
|
|
40
39
|
917afdc85e0876f9086d34392ece168b5590c97e458e6e827dee47ce56684154 assets/ms_sans_serif-Du8rjN1q.woff2
|
|
@@ -47,7 +46,7 @@ e6253b060c25fa6449cb37bcac0bc40db932aa4f83502d53af54277f48d2718e assets/react-c
|
|
|
47
46
|
2ca1269006a1f8e93b6068060a2ad39852589d9151d0e422e93ed6569e61a8ac assets/xpcss-DnhuGufg.css
|
|
48
47
|
37eeb63788be9805d5ff1494d7e737c810d0ca98094ce2f3899b04534767618f avatar.jpg
|
|
49
48
|
465b5adb81e7c1ee040e1a9842d947aea2a9df4f5d153908438745d373e8f22c avatar.png
|
|
50
|
-
|
|
49
|
+
9ce07f940b03650eb47895e558692f4c22d65575fee5754886d1b97cb5c8f9d4 blog.html
|
|
51
50
|
57bc1a174b8e4b77b417c9f0f8841a17f40e8de9398e5c6901f997be0c1829dc blog/1st.md
|
|
52
51
|
59996c7883d75c6d9d2a3f8bebdd894df7f13d234ad8fbd488152c7354b05d3c blog/2nd.md
|
|
53
52
|
169fab54f1fb8596d3648dcc2c07fdc87012dca4048018d724dece997fa3033c blog/3rd.md
|
|
@@ -56,17 +55,17 @@ c798889828d3da966f7946d9c8a5814c4e3409d1d14dd5eaa4652b387cde0345 blog/5th.md
|
|
|
56
55
|
f9d3862eb88c58f2f788758cb0c9e7a5f1bd1989c4b4b9c9c5fa8a9430e19140 blog/7.md
|
|
57
56
|
237dc169931f8712f58fe1ad3a2ee626636b8e653e40f00a9d53ddd76cd3e1a6 blog/P5kKjYA.png
|
|
58
57
|
380fc0b2043ea9fdc006d99578a6e2e3bc85b0bdfaec53e0c2378fb431e068d8 blog/exhausted.txt
|
|
59
|
-
|
|
58
|
+
9ce07f940b03650eb47895e558692f4c22d65575fee5754886d1b97cb5c8f9d4 blog/index.html
|
|
60
59
|
9bde35b21fab1d72290d40f5d35233cec047e2abd3c9c8fc8c5b3261ea3d7229 blog/music-links.json
|
|
61
60
|
9b356b02e46d302dfcd1b54f10b7e584743e2852fe4f3cd2e76189d4ce60f519 blog/pizza.gif
|
|
62
|
-
|
|
61
|
+
e10434a6169b5f91bb20e2bc9b96b7933c284e7289f5c7f626abc9dd9b654410 blog/posts.json
|
|
63
62
|
d327f052d31ca0ed0154ccba9670eb139338e955f0eb6912b036cb3d4795edf6 blog/references/NA2000_03.pdf
|
|
64
63
|
006bc1b90067fcb72301755e5444664018ccfef3211a2a08c784bce23532842b blog/relevant.jpg
|
|
65
64
|
252795f5503587b6338a6c91e2b2f02640738532797bd98f60e29cdfc0677348 blog/soundcloud.json
|
|
66
65
|
1864ee7f96e2e53bc99bac537fc469004de22665f07a72abfc1535ce6d7bbc04 blog/wsl.1.md
|
|
67
66
|
7450b1ef49558a9476245635ba282913a3af31c1b1e5d72053dab225d7f04b6a blog/рунисч-глоссарий.md
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
1ec0da6ad062c9b8e0d289e25b00ed1e7df248a29bc068134050073ef07656ff contact.html
|
|
68
|
+
1ec0da6ad062c9b8e0d289e25b00ed1e7df248a29bc068134050073ef07656ff contact/index.html
|
|
70
69
|
812708d9776e7907534bda54e61169a56ee928923b53445691889d71ef213583 crunchy_kick.ogg
|
|
71
70
|
bb79532b74f54410660a90d90e8db3dfa447e083d2411133ad9fddc9ded7c949 dist.7z
|
|
72
71
|
9d78649ba6229bf35d63f277a95d3fc5e18ac11b948003244b4f6b8007b3b19f documents/Creating Good Code.mp4
|
|
@@ -93,21 +92,23 @@ bf87b6222b106d2ff310312bbe120033011233124d686ca01ca695565715e6ff images/kogg1.p
|
|
|
93
92
|
b3e19635a8088227b05bdb37e4ebf6d3e85c871b32249087bcf85e0108a43492 images/rueg1.png
|
|
94
93
|
ed9b21eea7cdec55954f9af6d00bc61608d027cf4e1bc6182090ad051913e224 images/rueg2.png
|
|
95
94
|
f56503d3d9ad906b5d5b4e1e2c9a9ef3206947959cbc1835b2f6681e5cb115f2 incorrect_responses.txt
|
|
96
|
-
|
|
95
|
+
16954a3db5a0747776fc896befa64af9c374c9f8b8f73326ef403eba03f1826c index.html
|
|
97
96
|
6cab264bc21a1f2abc344f27af3cde46d55f7e8aa4340f3cb3ed49e1e4ae63fa loading.css
|
|
98
97
|
825c84d88cba6ff7fdaa324946c134ab3161007d0a63a3c5906ff381c49b2f7e lol.jpg
|
|
99
98
|
2a1670273af4da1a966e557b6fbdce11c4e50e4488ddcfda465613871b52906b medium.png
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
0f9129ddb7dffa47f425a645607ce27a68659c7e88bf5fd6782739814735859f music.html
|
|
100
|
+
0f9129ddb7dffa47f425a645607ce27a68659c7e88bf5fd6782739814735859f music/index.html
|
|
101
|
+
eec5ce27c1ab462f6b9d0c51bc14edf26c98a9a6796a80b9dc78a78240abfa81 pagerts.html
|
|
102
|
+
eec5ce27c1ab462f6b9d0c51bc14edf26c98a9a6796a80b9dc78a78240abfa81 pagerts/index.html
|
|
102
103
|
65b55ce337610c955fa25b7a5982024fa2a5f336b996ec4b19bd96d863ba0803 resume.html
|
|
103
|
-
|
|
104
|
+
bccc9b6dd1d310e4b26b7667b6c45ca809c521726de9a2d828d456e3a6001579 resume/index.html
|
|
104
105
|
9e335bff121283bade7005bff78316104846ea5e99e7e2f594fac9fddf39c455 robots.txt
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
5adf569c2093ecadcd36be5cb0bbf6afe9cdc2fe8a8fa5fb810eec1bec862aaf sitemap.html
|
|
107
|
+
9bb7af3774b39735abdb6f47c8eb9380f7c8c3b4e9631120bc6f5ee706126b24 sitemap.xml
|
|
108
|
+
5adf569c2093ecadcd36be5cb0bbf6afe9cdc2fe8a8fa5fb810eec1bec862aaf sitemap/index.html
|
|
109
|
+
94dd2138baf37a864856f29b83a82fce06f0cc19f51a1e8ca0a583509040d940 soundcloud.json
|
|
109
110
|
fc6ff550d5c7fbd55537560ef0d5470bc68f74b2f41b6386d78b149e897b033c spinner.svg
|
|
110
111
|
e58ca0ef8466ec1d0b0a0e71c4c1f1b620a8d30285df4a8d9e1b243654f0cd6e tada.wav
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
89d21250a666951eba9b53ae3f2b17aa7448e629f5f424c731b08773ed6264ce wow.html
|
|
113
|
+
89d21250a666951eba9b53ae3f2b17aa7448e629f5f424c731b08773ed6264ce wow/index.html
|
|
113
114
|
da5cb674a690cb58ae78f63c2162ed18ee5daf7576d05c57930f000e9df48194 yooh.mp3
|