HTML test site: https://www.tutorialrepublic.com/codelab.php
validator.w3.org/#validate_by_input
htmledit.squarefree.com
Cheatsheet: https://pbs.twimg.com/media/FDTBjF5XEAkI6ZZ?format=jpg&name=large
BlueGriffon (WYSIWYG Editor that doesn't break CSS)
https://www.duplichecker.com/domain-age-checker.php
[0HTML examples Backup: GDRIVE:/HTML/00_HTML ]
===================
https://ry3yr.github.io/OSTR/release/other/Computerstuff/Commands/CSS_Examples.txt
*html-unicodecharas *brk-nz *html-knowledge
*host-website *java-scriptz
HTML2SRC
---------------------
Text to HTML Converter with Styling Options
Text to HTML Converter with Styling Options
Paste your styled content (like text from Word or Google Docs) into the box below. Use the checkboxes to select which styling elements to keep in the output HTML, then click "Convert".
Paste Your Styled Content
Keep in Output:
Quick Actions:
Note: When "Keep Only Selected Elements" is checked, only the elements you've selected will be kept in the output. All other text and elements will be removed.
Generated HTML Code
MMD Photostudio and Poser (extension to SampleWebMMD)
----------------------------
photostudio.html
--
PMX + VPD Viewer
Loading models...
PMX + VPD Viewer
Touch models to move them, empty space to rotate/camera
Mode: Model Control
No bone selected
Mobile Gestures Guide
Touch Model + Drag: Move model
Touch Empty Space + Drag: Rotate model (Model Mode) / Orbit camera (Camera Mode)
Two Finger Drag: Pan camera
Pinch: Zoom camera
Double Tap Bone: Select bone (Bone Mode)
Long Press + Drag Bone: Move bone (Bone Mode)
Stored Poses
Head & Neck
Arms & Hands
Legs & Feet
Spine
👆 Touch model to move, empty space to rotate
Controls Guide
Mobile Touch Controls
Touch Model + Drag: Move model
Touch Empty Space + Drag: Rotate model (Model Mode) / Orbit camera (Camera Mode)
Two Finger Drag: Pan camera
Pinch: Zoom camera
Double Tap Bone: Select bone (Bone Mode)
Long Press + Drag Bone: Move bone (Bone Mode)
Control Modes
Model Mode - Move and rotate models
Camera Mode - Control camera view
Bone Mode - Edit individual bone positions
Bone Editing (Bone Mode Only)
Tap Bone - Select bone
Long Press + Drag - Move selected bone
Two Finger Rotate - Rotate selected bone
Stored Poses
Reload Pose 1 - Re-fetch and apply stor1 to Model 1
Reload Pose 2 - Re-fetch and apply stor2 to Model 2
Reload Both - Re-fetch and apply both poses
State Management
Generate State URL - Create URL with current scene state (camera position, model positions)
Text Box - Copy the generated URL manually to share your scene
Download HTML
eKF insurance color (eScooter SegWay etc)
----------------------
E-Scooter Registration Plate Color
Current Insurance Sticker
Current Color:
Valid for:
Test Sticker Color (Red, Green, Blue)
(Select the color of the sticker)
Next Color:
from
Fedi find latest posts (excluding boosts)
------------
Profile to post id resolve
Enter a Fediverse account (either @username@instance.com or full URL like https://woof.tech/@dr_muesli) Fediverse Post Viewer
Load Website from zip (VirtEnv + Zip FS + ServiceWorker) (complex9)
--------------------------------------------------------
V4 (which works off Palapa (offline) Litespeed, but not GH Pages (use V3 there): https://web.archive.org/web/*/https://ry3yr.github.io/zipfs-sw-worker.zip
==zipfs-sw-worker.html==
ZIP-FS Demo
ZIP-FS Demo Logs
Loading logs...\n
Open Root (/root)
==zipfs-sw.js==
/* zipfs-sw.js */
importScripts('https://cdn.jsdelivr.net/npm/jszip@3.10.1/dist/jszip.min.js');
const ZIP_URL = 'https://ry3yr.github.io/alceawis.de.zip';
const files = new Map();
/* Promise that resolves when the ZIP has finished loading */
let zipReadyResolve;
const zipReadyPromise = new Promise(res => { zipReadyResolve = res; });
function swLog(...args) {
const msg = '[ZIPFS SW] ' + args.join(' ');
console.log(msg);
self.clients.matchAll().then(clients =>
clients.forEach(c => c.postMessage({ type: 'SW_LOG', text: msg }))
);
}
self.addEventListener('install', () => {
swLog('Installing…');
self.skipWaiting();
});
self.addEventListener('activate', event => {
swLog('Activating → downloading ZIP…');
event.waitUntil(
(async () => {
const r = await fetch(ZIP_URL, { mode: 'cors' });
swLog('ZIP fetch status:', r.status);
if (!r.ok) throw new Error('ZIP fetch failed');
const buf = await r.arrayBuffer();
swLog('Unzipping…');
const zip = await JSZip.loadAsync(buf);
let count = 0;
for (const entry of Object.values(zip.files)) {
if (entry.dir) continue;
const path = '/' + entry.name.split('/').slice(1).join('/');
const content = await entry.async('uint8array');
files.set(path, content);
swLog('→', path, `(${content.length} bytes)`);
count++;
}
swLog('Unzip done –', count, 'files');
zipReadyResolve();
await self.clients.claim();
})().catch(err => swLog('ZIP load failed:', err))
);
});
self.addEventListener('fetch', event => {
const url = new URL(event.request.url);
/* 1️⃣ Let cross‑origin requests go to the network untouched */
if (url.origin !== self.location.origin) return;
/* 2️⃣ Friendly URLs: “/”, “/root”, “/home” → “/index.html” */
let path = url.pathname;
if (path === '/' || path === '/root' || path === '/home') path = '/index.html';
event.respondWith(
(async () => {
/* Wait until the ZIP is ready */
await zipReadyPromise;
const file = files.get(path);
if (file) {
swLog('Serving', path, 'from ZIP');
return new Response(file, { headers: { 'Content-Type': guessType(path) } });
}
/* 3️⃣ Same‑origin file not in ZIP → fall back to network */
swLog('Not in ZIP, fetching from network:', path);
try {
return await fetch(event.request);
} catch (err) {
swLog('Network fetch failed:', err);
return new Response('