Yes. Here are the next three full English canonical docs in copy/save form.
They consolidate the core rules already established in your handoff materials and uploaded docs, especially the free-form UTF-8 playlist premise, the config/startup architecture, the multilingual documentation model, and the long-form handoff philosophy.
/_docs/en/requirements_en.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>MyAnythingList Requirements — English</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
:root{
--bg:#091120;
--panel:#0d172d;
--panel2:rgba(255,255,255,.04);
--border:rgba(255,255,255,.12);
--text:#eef4ff;
--muted:#c6d6f5;
--accent:#8de9ff;
--accent2:#ffe082;
--codebg:rgba(255,255,255,.08);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.72}
body{padding:24px}
.wrap{max-width:1100px;margin:0 auto}
.nav{margin-bottom:18px;font-size:.96rem}
.nav a{color:var(--accent);text-decoration:none;margin-right:16px;white-space:nowrap}
.nav a:hover{text-decoration:underline}
.card{background:var(--panel);border:1px solid var(--border);border-radius:18px;padding:20px 22px;margin:16px 0}
h1,h2,h3{margin-top:0}
h1{font-size:2rem;margin-bottom:10px}
h2{font-size:1.3rem;margin-bottom:10px}
h3{font-size:1.03rem;margin-bottom:8px;color:var(--accent2)}
p{margin:0 0 12px}
ul,ol{margin:8px 0 12px 22px}
li{margin:7px 0}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.callout{background:rgba(141,233,255,.09);border-left:4px solid var(--accent);border-radius:12px;padding:13px 15px;margin:12px 0}
.small{font-size:.95rem;color:var(--muted)}
code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
code{background:var(--codebg);padding:2px 6px;border-radius:6px}
pre{background:var(--codebg);padding:12px 14px;border-radius:12px;overflow:auto}
table{width:100%;border-collapse:collapse;margin:12px 0}
th,td{border:1px solid var(--border);padding:10px 12px;text-align:left;vertical-align:top}
th{background:rgba(255,255,255,.05)}
</style>
</head>
<body>
<div class="wrap">
<div class="nav">
<a href="./index_en.html">English Docs Index</a>
<a href="../index-docs.html">Choose Language</a>
<a href="./">Browse This Folder</a>
<a href="../">Browse Docs Root</a>
</div>
<div class="card">
<h1>Requirements</h1>
<p><code>requirements_en.html</code></p>
<p>
This document defines the canonical behavioral requirements for the MyAnythingList and
MyAnythingGrid system. It is intended to be detailed enough that a future human or AI
contributor can reconstruct the system without relying on chat history, private notes,
or undocumented assumptions.
</p>
<div class="callout">
<p>
If any statement in future drafts conflicts with a newer confirmed requirement,
the conflicting statement must be removed or rewritten. The goal is a living
specification that supports lossless insertion of new information without
preserving contradictions.
</p>
</div>
</div>
<div class="card">
<h2>1. Core Non-Negotiable Premise</h2>
<p>
MyAnythingList converts <strong>any UTF-8 free-form text document</strong> into a valid URL playlist
by extracting recognized URLs wherever they appear in the text.
</p>
<ul>
<li>It does <strong>not</strong> require one URL per line.</li>
<li>It does <strong>not</strong> require rigid playlist syntax.</li>
<li>It may process ordinary notes, essays, outlines, transcripts, logs, multilingual prose, and mixed documents.</li>
<li>It must support left-to-right and right-to-left writing systems.</li>
<li>It must support any language that can be represented in UTF-8 text.</li>
</ul>
<div class="callout">
<p>
This free-form parsing model is a foundational invariant of the project and must
never be silently regressed into a stricter “one URL per line” design.
</p>
</div>
</div>
<div class="card">
<h2>2. URL Extraction Requirements</h2>
<p>
The parser scans input text and extracts valid URLs in order of discovery.
That order defines the playlist order unless later behavior explicitly changes it.
</p>
<ul>
<li>URLs may appear anywhere in a document.</li>
<li>URLs may appear inside sentences, paragraphs, bullet lists, or mixed notes.</li>
<li>URLs may be repeated; duplicate handling may be documented later but must never alter discovery order silently.</li>
<li>Anchor text, descriptive text, and surrounding prose are permitted and expected.</li>
<li>Very long URLs must still be handled as valid playlist items.</li>
</ul>
<pre>Example:
Today's research and media notes:
Watch this:
https://youtube.com/watch?v=ABC123
Then compare with:
https://example.org/article
Reminder: translate this later.</pre>
</div>
<div class="card">
<h2>3. Comment and Command Rules</h2>
<h3>3.1 Comment Rule</h3>
<p>
Lines beginning with <code>#</code> are treated as comments and ignored by default.
</p>
<h3>3.2 Command Rule</h3>
<p>
A comment line may also contain a recognized command using the form:
</p>
<pre>#_CommandName(...)</pre>
<p>
These commands are not ordinary comments. They are part of the playlist language and
must be parsed intentionally.
</p>
<h3>3.3 Command Context Rule</h3>
<p>
Unless the command explicitly defines standalone content, a command applies to the
<strong>most recent URL above it</strong>.
</p>
<pre>https://example.com/page-a
#_ReplaceThumbnailWithImage("https://example.com/image-a.jpg")
https://example.com/page-b
#_ReplaceThumbnailWithImage("https://example.com/image-b.jpg")</pre>
</div>
<div class="card">
<h2>4. Supported and Planned Command Behavior</h2>
<h3>4.1 Replace Thumbnail With Image</h3>
<pre>#_ReplaceThumbnailWithImage("https://example.com/image.jpg")</pre>
<ul>
<li>Applies to the most recent URL above the command.</li>
<li>Overrides platform-derived thumbnail behavior for that tile.</li>
<li>Must not become GET-driven or exported object-driven state by default.</li>
<li>Belongs to the playlist document itself.</li>
</ul>
<h3>4.2 Load Image</h3>
<pre>#_LoadImage("https://example.com/image.jpg")</pre>
<ul>
<li>Creates a URL-less image presentation panel in the grid.</li>
<li>The image URL is itself the content source.</li>
<li>The QR code, when shown, points to that image URL.</li>
<li>Useful for informational, decorative, instructional, and kiosk panels.</li>
</ul>
<h3>4.3 Load Image Show Links</h3>
<pre>#_LoadImageShowLinks("https://example.com/image.jpg")</pre>
<ul>
<li>Creates an image presentation panel.</li>
<li>Preserves visible URL and QR affordances.</li>
<li>Suitable for image-based panels that remain visibly linkable.</li>
</ul>
<h3>4.4 Load Image Hide Links</h3>
<pre>#_LoadImageHideLinks("https://example.com/image.jpg")</pre>
<ul>
<li>Creates an image presentation panel with hidden link affordances.</li>
<li>Useful for signage, FYI panels, explanatory inserts, and non-clickable informational tiles.</li>
<li>Should remain documented as intentionally different from normal URL-backed tiles.</li>
</ul>
</div>
<div class="card">
<h2>5. Thumbnail Requirements</h2>
<p>Tiles may obtain thumbnails from several sources.</p>
<table>
<thead>
<tr>
<th>Priority</th>
<th>Thumbnail Source</th>
<th>Requirement</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Command-defined thumbnail</td>
<td>Highest priority when explicitly set by playlist command.</td>
</tr>
<tr>
<td>2</td>
<td>Uploaded thumbnail</td>
<td>Applies to the intended tile only and must target the true thumbnail layer.</td>
</tr>
<tr>
<td>3</td>
<td>Platform-derived thumbnail</td>
<td>Used when available from services such as YouTube.</td>
</tr>
<tr>
<td>4</td>
<td>Generic fallback</td>
<td>Used when no specific image exists.</td>
</tr>
</tbody>
</table>
<ul>
<li>QR code graphics must never be mistaken for thumbnails.</li>
<li>Uploaded thumbnails must not disappear essential overlays unless a command explicitly requests hidden links.</li>
<li>Thumbnail overrides are part of the content design system, not accidental UI hacks.</li>
</ul>
</div>
<div class="card">
<h2>6. QR Code Requirements</h2>
<ul>
<li>QR codes are overlays, not thumbnails.</li>
<li>QR visibility is controlled by startup/config/UI state.</li>
<li>QR position and size must respect startup parameters and startup binding at first render.</li>
<li>QR state must be correct on startup, not only after later UI interaction.</li>
<li>QR codes must not stretch, replace, or contaminate thumbnail images.</li>
<li>When image-only commands create panels, QR behavior must remain explicitly defined.</li>
</ul>
</div>
<div class="card">
<h2>7. Tile Layering Requirements</h2>
<p>The visual stack of a normal tile should remain logically separated.</p>
<pre>Thumbnail or image layer
→ QR overlay
→ type pill
→ URL text / footer metadata</pre>
<ul>
<li>Thumbnail uploads must stay behind type pill and URL footer when those are enabled.</li>
<li>Command-driven thumbnails must not overwrite QR rendering.</li>
<li>URL-art fallback tiles must still support overlays correctly.</li>
</ul>
</div>
<div class="card">
<h2>8. Control Interface Startup Requirements</h2>
<p>
Runtime startup behavior is determined through the startup configuration object and
compatible GET variables.
</p>
<p>Important variables include:</p>
<ul>
<li><code>ShowControls</code></li>
<li><code>ShowGear</code></li>
<li><code>AutoHideGear</code></li>
<li><code>ShowQR</code></li>
<li><code>ShowTypes</code></li>
<li><code>ShowURLs</code></li>
<li><code>ShowHeaderText</code></li>
<li><code>ShowFooterText</code></li>
</ul>
<table>
<thead>
<tr>
<th>ShowControls</th>
<th>ShowGear</th>
<th>AutoHideGear</th>
<th>Required Result</th>
</tr>
</thead>
<tbody>
<tr>
<td>true</td>
<td>true</td>
<td>false</td>
<td>Controls visible on startup. Gear visible because it is the way to close the controls.</td>
</tr>
<tr>
<td>false</td>
<td>true</td>
<td>true</td>
<td>Controls hidden on startup. Gear available and may auto-hide until needed.</td>
</tr>
<tr>
<td>false</td>
<td>true</td>
<td>false</td>
<td>Controls hidden on startup. Gear visible and persistent.</td>
</tr>
<tr>
<td>false</td>
<td>false</td>
<td>any</td>
<td>No visible control entry point. State can only be changed by source or GET parameters.</td>
</tr>
</tbody>
</table>
<ul>
<li>The gear hotzone must not block large portions of nearby buttons.</li>
<li>The gear must remain visible when controls are visible, because it serves as the close affordance.</li>
<li>Auto-hide behavior must never incorrectly hide the gear while controls are actively shown.</li>
</ul>
</div>
<div class="card">
<h2>9. Startup Configuration Requirements</h2>
<p>
The startup architecture separates runtime/state values from branding/template values.
</p>
<ul>
<li><code>window.MyAnythingListConfig</code> contains real startup/runtime values and URL-mirror values.</li>
<li><code>PageTitle</code>, <code>HeaderText</code>, <code>FooterText</code>, <code>ProjectSourceURL</code>, and <code>BUILD_FILE</code> are separate top-level startup variables.</li>
<li>Branding/template text does not belong in recreate-state URLs or exported state objects.</li>
<li>Browser title should be set from <code>PageTitle</code> so the same file can remain <code>index.html</code> in generic deployments.</li>
<li>Generic builds must not contain hard-coded branding for specific downstream deployments unless intentionally edited for that deployment.</li>
</ul>
</div>
<div class="card">
<h2>10. Playlist Editor Requirements</h2>
<ul>
<li>The editor must permit loading local text files.</li>
<li>The editor must permit loading remote playlist URLs when CORS allows it.</li>
<li>The editor must preserve ordinary free-form text behavior and not falsely imply one-URL-per-line restrictions.</li>
<li>The editor should describe commands accurately and avoid misleading syntax hints.</li>
<li>The editor must rebuild the wall from edited text.</li>
<li>The editor must support thumbnail upload behavior without corrupting tile overlays.</li>
<li>Remote-source labels should not falsely imply success when remote loading has failed.</li>
</ul>
</div>
<div class="card">
<h2>11. Remote Playlist Loading Requirements</h2>
<ul>
<li>Remote playlists must load through public HTTP or HTTPS when CORS is correctly configured.</li>
<li>Remote loading should use straightforward cross-origin-safe requests such as <code>mode:"cors"</code> and <code>credentials:"omit"</code> when appropriate.</li>
<li>Failure modes must be honest and visible.</li>
<li>Successful loading must update source labels only after actual success.</li>
<li>Local-file mode and hosted mode should be handled carefully, since browser behavior differs.</li>
</ul>
</div>
<div class="card">
<h2>12. Output, Export, and Print Requirements</h2>
<ul>
<li>The system must support configurable output resolutions for thumbnail export and print workflows.</li>
<li>Print/card/postcard style outputs are part of the intended use cases.</li>
<li>Download format choices should remain readable, explicit, and predictable.</li>
<li>Output-resolution lists should be presented in a logical and stable order.</li>
</ul>
</div>
<div class="card">
<h2>13. Documentation Requirements</h2>
<ul>
<li>The documentation set must be sufficient to onboard future humans and AI systems.</li>
<li>Each major English document must be long-form, logically structured, and translation-ready.</li>
<li>Core rules must be repeated across multiple docs where necessary so they are not easily missed.</li>
<li>The documentation should eliminate dependence on private chat history for core system understanding.</li>
<li>Historical chat logs may exist for human insight, but they are not the canonical spec.</li>
</ul>
<div class="callout">
<p>
The canonical English documents are intended to become the stable source for translation
into the most-used world languages and should therefore prioritize clarity and completeness
over brevity.
</p>
</div>
</div>
<div class="card">
<h2>14. Deployment and Hosting Requirements</h2>
<ul>
<li>The system must remain usable on static hosting.</li>
<li>Apache, S3, and CDN-style hosting are first-class targets.</li>
<li>Folder browsing and generated indexes are part of the transparency model.</li>
<li>Where possible, static generation should be preferred over request-time CPU overhead.</li>
<li>Authoring/mastering and public serving may be separated into different hosting layers.</li>
</ul>
</div>
<div class="card">
<h2>15. Final Requirement</h2>
<p>
MyAnythingList must remain a flexible, transparent, multilingual, human-friendly system
for turning ordinary text into useful media navigation surfaces. Any future development
that quietly narrows this flexibility should be treated as a regression unless that change
has been explicitly justified and documented.
</p>
</div>
</div>
</body>
</html>
/_docs/en/vision_en.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>MyAnythingList Vision — English</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
:root{
--bg:#0a1124;
--panel:#081224;
--border:rgba(255,255,255,.12);
--text:#eef4ff;
--muted:#c6d6f5;
--accent:#8de9ff;
--accent2:#ffe082;
--codebg:rgba(255,255,255,.08);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.72}
body{padding:24px}
.wrap{max-width:1100px;margin:0 auto}
.nav{margin-bottom:18px;font-size:.96rem}
.nav a{color:var(--accent);text-decoration:none;margin-right:16px;white-space:nowrap}
.nav a:hover{text-decoration:underline}
.card{background:var(--panel);border:1px solid var(--border);border-radius:18px;padding:20px 22px;margin:16px 0}
h1,h2,h3{margin-top:0}
h1{font-size:2rem}
h2{font-size:1.28rem}
p{margin:0 0 12px}
ul{margin:8px 0 12px 22px}
li{margin:7px 0}
.callout{background:rgba(141,233,255,.09);border-left:4px solid var(--accent);border-radius:12px;padding:13px 15px;margin:12px 0}
code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:var(--codebg);padding:2px 6px;border-radius:6px}
.small{font-size:.95rem;color:var(--muted)}
</style>
</head>
<body>
<div class="wrap">
<div class="nav">
<a href="./index_en.html">English Docs Index</a>
<a href="../index-docs.html">Choose Language</a>
<a href="./">Browse This Folder</a>
<a href="../">Browse Docs Root</a>
</div>
<div class="card">
<h1>Vision</h1>
<p><code>vision_en.html</code></p>
<p>
MyAnythingList exists to make rich media navigation simpler, more open, more humane,
and more globally understandable. It is not merely a playlist viewer. It is an effort
to turn ordinary text, ordinary links, and ordinary static hosting into a flexible,
multilingual media environment that people can understand and control.
</p>
</div>
<div class="card">
<h2>1. Start with human reality, not machine rigidity</h2>
<p>
Most people do not naturally think in rigid machine syntax. They write notes. They save
links in documents. They collect fragments of ideas in ordinary text. They annotate,
translate, explain, and improvise.
</p>
<p>
MyAnythingList is built around that reality. Instead of requiring users to format a
playlist in a strict one-URL-per-line machine style, the system works with the way
humans actually write. A free-form UTF-8 text document can become a playlist.
</p>
<div class="callout">
<p>
The vision is not to force people to learn a machine language first. The vision is to let
ordinary human writing become a media interface.
</p>
</div>
</div>
<div class="card">
<h2>2. Make text more powerful without making it less human</h2>
<p>
Plain text is durable, searchable, portable, and culturally universal. It survives across
systems, decades, and tools. MyAnythingList extends the power of plain text without turning
it into an opaque proprietary format.
</p>
<ul>
<li>A note can become a playlist.</li>
<li>A reading list can become a video wall.</li>
<li>A classroom handout can become an interactive media surface.</li>
<li>A kiosk message can become a navigable visual homepage.</li>
</ul>
<p>
The system tries to preserve the advantages of simple text while adding visual presentation,
QR codes, thumbnails, and optional commands.
</p>
</div>
<div class="card">
<h2>3. Design for multilingual humanity from the beginning</h2>
<p>
English may be the initial source language for documentation, but the intended audience is
not English-only. The system is meant to be translated, understood, and used across languages
and cultures.
</p>
<p>
This is why the documentation structure is multilingual by design and why free-form UTF-8
parsing is a core requirement. People should not be excluded because they write in a different
script, culture, or linguistic tradition.
</p>
<div class="callout">
<p>
The long-term goal is a documentation and media system that can be read by ordinary people,
advanced developers, and patient AI systems in many languages without losing clarity.
</p>
</div>
</div>
<div class="card">
<h2>4. Favor open inspection over hidden magic</h2>
<p>
The project values transparency. Files should be browsable. Folder structures should make
sense. State should be understandable. Static hosting should be possible. A person should be
able to inspect what is happening rather than trust invisible server logic.
</p>
<ul>
<li>Folder browsing is treated as a feature.</li>
<li>Static generation is preferred where reasonable.</li>
<li>Documentation is designed for public inspection and mirroring.</li>
<li>The system should remain understandable even when deployed cheaply.</li>
</ul>
</div>
<div class="card">
<h2>5. Build media tools that ordinary people can actually use</h2>
<p>
The project aims to lower the barrier between having some URLs and having a usable media
interface. Many people can already gather links, notes, research references, and tutorial
materials. Fewer people can turn them into an interactive, visual, multilingual wall.
</p>
<p>
MyAnythingList tries to close that gap using the simplest possible ingredients:
</p>
<ul>
<li>plain text</li>
<li>static HTML and JavaScript</li>
<li>optional thumbnails</li>
<li>optional commands</li>
<li>portable hosting</li>
</ul>
</div>
<div class="card">
<h2>6. Enable richer public communication without heavyweight infrastructure</h2>
<p>
A person should be able to create a meaningful media page, kiosk, classroom interface,
or visual homepage without building a giant database-backed application first.
</p>
<p>
This is why static hosting matters. This is why generated folder indexes matter. This is
why S3-style object hosting matters. The public web should still allow simple publishing,
not only platform-dependent publishing.
</p>
</div>
<div class="card">
<h2>7. Welcome AI as a collaborator, but keep the system legible</h2>
<p>
The project openly acknowledges that AI systems can help generate, translate, summarize,
curate, and document. But the answer is not to hide everything behind AI. The answer is
to make the system more legible so AI and humans can both work with it.
</p>
<p>
The documentation therefore aims to become a complete handoff layer. Future AI sessions
should not need private memory of old conversations if the docs are doing their job.
</p>
</div>
<div class="card">
<h2>8. Create tools for homes, schools, studios, kiosks, and experiments</h2>
<p>
The intended use cases are broad:
</p>
<ul>
<li>home media dashboards</li>
<li>digital signage and kiosk displays</li>
<li>art and media walls</li>
<li>classroom resource boards</li>
<li>documentation portals</li>
<li>instructional visual panels</li>
<li>curated research and reading environments</li>
</ul>
<p>
This breadth is part of the point. The system should not be trapped in one narrow vertical.
</p>
</div>
<div class="card">
<h2>9. Preserve the right to stay simple</h2>
<p>
Many systems become harder to understand as they grow. This project should instead grow
by adding power while preserving simplicity of concept.
</p>
<ul>
<li>text remains text</li>
<li>commands remain visible</li>
<li>state remains inspectable</li>
<li>hosting remains portable</li>
<li>documentation remains public and thorough</li>
</ul>
</div>
<div class="card">
<h2>10. Long-term vision</h2>
<p>
The long-term vision is a globally understandable, multilingual, openly documented media
navigation ecosystem that can be mirrored, translated, extended, and self-hosted widely.
</p>
<div class="callout">
<p>
A future user should be able to start with a simple text document, add URLs and a few
commands, host it cheaply, and produce something useful, informative, beautiful, or
instructive without surrendering control to opaque platforms.
</p>
</div>
<p class="small">
This document is intentionally philosophical. The binding behavioral truth of the system
lives in <code>requirements_en.html</code>, while the technical implementation model lives
in <code>architecture_en.html</code>.
</p>
</div>
</div>
</body>
</html>
/_docs/en/architecture_en.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>MyAnythingList Architecture — English</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
:root{
--bg:#091120;
--panel:#0d172d;
--border:rgba(255,255,255,.12);
--text:#eef4ff;
--muted:#c6d6f5;
--accent:#8de9ff;
--accent2:#ffe082;
--codebg:rgba(255,255,255,.08);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.72}
body{padding:24px}
.wrap{max-width:1100px;margin:0 auto}
.nav{margin-bottom:18px;font-size:.96rem}
.nav a{color:var(--accent);text-decoration:none;margin-right:16px;white-space:nowrap}
.nav a:hover{text-decoration:underline}
.card{background:var(--panel);border:1px solid var(--border);border-radius:18px;padding:20px 22px;margin:16px 0}
h1,h2,h3{margin-top:0}
h1{font-size:2rem}
h2{font-size:1.28rem}
h3{font-size:1.03rem;color:var(--accent2)}
p{margin:0 0 12px}
ul,ol{margin:8px 0 12px 22px}
li{margin:7px 0}
.callout{background:rgba(141,233,255,.09);border-left:4px solid var(--accent);border-radius:12px;padding:13px 15px;margin:12px 0}
code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
code{background:var(--codebg);padding:2px 6px;border-radius:6px}
pre{background:var(--codebg);padding:12px 14px;border-radius:12px;overflow:auto}
.small{font-size:.95rem;color:var(--muted)}
</style>
</head>
<body>
<div class="wrap">
<div class="nav">
<a href="./index_en.html">English Docs Index</a>
<a href="../index-docs.html">Choose Language</a>
<a href="./">Browse This Folder</a>
<a href="../">Browse Docs Root</a>
</div>
<div class="card">
<h1>Architecture</h1>
<p><code>architecture_en.html</code></p>
<p>
This document describes how the MyAnythingList system is built internally. It explains
the startup model, parsing model, rendering model, state model, and deployment model.
It is the technical companion to the behavioral truth defined in <code>requirements_en.html</code>.
</p>
</div>
<div class="card">
<h2>1. High-Level System Model</h2>
<p>
The system can be understood as a sequence of transformations:
</p>
<pre>free-form UTF-8 text
→ URL discovery
→ comment / command parsing
→ tile model construction
→ thumbnail and QR resolution
→ grid rendering
→ interactive control state</pre>
<p>
The user does not need to learn a rigid playlist syntax first. The architecture exists
to extract useful structure from ordinary text.
</p>
</div>
<div class="card">
<h2>2. Startup Architecture</h2>
<p>
The top of the main application file follows a standardized architecture.
</p>
<pre><meta charset="UTF-8" />
<title>generic fallback title</title>
<!-- Build: ... -->
<!-- Source files: ... -->
window.MyAnythingListConfig = { ... };
const BUILD_FILE = "...";
const ProjectSourceURL = "...";
const PageTitle = "...";
const HeaderText = `...`;
const FooterText = `...`;</pre>
<ul>
<li><code>window.MyAnythingListConfig</code> contains real startup/runtime values and URL-mirrored values.</li>
<li>Branding/template strings are kept outside the config object.</li>
<li>Header/footer visibility toggles remain runtime config values.</li>
<li>Actual header/footer text is injected separately.</li>
<li>Page title should be set from a startup variable so the same file can remain reusable.</li>
</ul>
</div>
<div class="card">
<h2>3. Configuration and State Model</h2>
<p>
The runtime state model includes both startup defaults and current UI state.
</p>
<h3>Examples of state variables</h3>
<ul>
<li><code>GRID</code></li>
<li><code>QR_X</code>, <code>QR_Y</code>, <code>QR_SIZE</code></li>
<li><code>ShowQR</code>, <code>ShowTypes</code>, <code>ShowURLs</code></li>
<li><code>ShowHeaderText</code>, <code>ShowFooterText</code></li>
<li><code>ShowControls</code>, <code>ShowGear</code>, <code>AutoHideGear</code></li>
<li><code>Output_Resolution</code>, <code>Download_Format</code></li>
</ul>
<p>
GET variables may mirror supported startup values, but branding/template content should
remain outside exported state objects where appropriate.
</p>
</div>
<div class="card">
<h2>4. URL and Command Parsing Pipeline</h2>
<p>The parsing system has multiple layers:</p>
<ol>
<li>Read raw UTF-8 text.</li>
<li>Split into manageable textual units while preserving discovery order.</li>
<li>Detect valid URLs anywhere in the text.</li>
<li>Recognize comment lines beginning with <code>#</code>.</li>
<li>Recognize command lines beginning with <code>#_</code>.</li>
<li>Attach contextual commands to the most recent URL above them, unless the command creates standalone content.</li>
<li>Build a normalized internal tile list.</li>
</ol>
<div class="callout">
<p>
The architecture is deliberately more flexible than a line-oriented parser. The parser
is a text interpreter, not merely a one-line tokenizer.
</p>
</div>
</div>
<div class="card">
<h2>5. Command Interpreter Architecture</h2>
<p>
The command interpreter is a second semantic layer on top of comment parsing.
It must support contextual augmentation of playlist items and, where needed,
standalone non-URL panels.
</p>
<h3>Current and planned command categories</h3>
<ul>
<li>Thumbnail replacement commands</li>
<li>Image-only panel commands</li>
<li>Future panel-behavior or presentation commands</li>
</ul>
<p>
Commands should remain readable in plain text and must not require hidden binary metadata.
</p>
</div>
<div class="card">
<h2>6. Tile Model Architecture</h2>
<p>
Each discovered item becomes a tile model with content, presentation, and overlay metadata.
</p>
<h3>A tile may include:</h3>
<ul>
<li>primary URL or image source</li>
<li>resolved media type</li>
<li>thumbnail source</li>
<li>QR target URL</li>
<li>type pill visibility state</li>
<li>URL line visibility state</li>
<li>clickability or informational-only status</li>
</ul>
</div>
<div class="card">
<h2>7. Thumbnail Resolution Architecture</h2>
<p>
The thumbnail resolver determines what image to show for a tile.
</p>
<pre>command-defined thumbnail
→ uploaded thumbnail
→ platform-derived thumbnail
→ generic fallback</pre>
<ul>
<li>YouTube and similar platforms may provide default thumbnails.</li>
<li>Playlist commands may override those thumbnails.</li>
<li>User-uploaded thumbnails must target the true tile image layer.</li>
<li>QR image elements must never be confused with thumbnail image elements.</li>
</ul>
</div>
<div class="card">
<h2>8. QR Architecture</h2>
<p>
QR generation is an overlay subsystem.
</p>
<ul>
<li>It is driven by the tile’s link target.</li>
<li>It has separate position and size parameters.</li>
<li>It must bind correctly at startup, not only after subsequent UI changes.</li>
<li>It must remain visually and logically separate from the thumbnail layer.</li>
</ul>
<p>
In image-only panel modes, the QR target may still point to the image URL unless the
command semantics explicitly suppress link affordances.
</p>
</div>
<div class="card">
<h2>9. Rendering Architecture</h2>
<p>The rendering layer transforms tile models into grid panels.</p>
<pre>tile model
→ tile container
→ thumbnail or image layer
→ QR overlay
→ footer overlays
→ click / info affordances</pre>
<ul>
<li>The grid must remain legible across multiple aspect and resolution modes.</li>
<li>Footer overlays such as type pill and URL line must stay above the base image layer unless intentionally suppressed.</li>
<li>Image-only commands must still fit within the same rendering architecture.</li>
</ul>
</div>
<div class="card">
<h2>10. Control Panel and Gear Architecture</h2>
<p>
The control panel and gear are not separate unrelated features. They are part of a single
recoverable control-state architecture.
</p>
<ul>
<li>The gear is the entry/exit affordance for hidden controls.</li>
<li>When controls are visible, the gear remains visible because it is the close affordance.</li>
<li>Auto-hide logic applies to the gear only when controls are hidden and the gear is configured to exist.</li>
<li>The gear hotzone must not obstruct normal button use in the control row.</li>
</ul>
</div>
<div class="card">
<h2>11. Editor Architecture</h2>
<p>
The playlist editor is an in-browser editing environment for the raw text source.
</p>
<ul>
<li>It must preserve ordinary free-form text use.</li>
<li>It must avoid misleading instructions that falsely narrow the parser model.</li>
<li>It must allow remote loading when CORS permits it.</li>
<li>It must support local file loading and save/rebuild behavior.</li>
<li>It should act as a direct textual authoring surface, not an opaque form builder.</li>
</ul>
</div>
<div class="card">
<h2>12. Output and Export Architecture</h2>
<p>
Output generation is a secondary pipeline layered on top of tile rendering.
</p>
<ul>
<li>Thumbnail exports use configurable output resolutions.</li>
<li>Print-oriented targets such as cards and postcards are first-class use cases.</li>
<li>State export should remain readable, compact where appropriate, and explicit where necessary.</li>
<li>Large raw playlist text should not be forced into every exported state representation.</li>
</ul>
</div>
<div class="card">
<h2>13. Documentation Architecture</h2>
<p>
The documentation tree is part of the project architecture, not an afterthought.
</p>
<pre>/_docs/
index-docs.html
/en/
index_en.html
requirements_en.html
architecture_en.html
system_en.html
developer_en.html
vision_en.html</pre>
<ul>
<li>The docs are meant to be browsable, inspectable, and mirror-friendly.</li>
<li>Language folders are the stable translation structure.</li>
<li>English acts as the canonical source language for translation.</li>
<li>Docs should be rich enough to replace dependence on old chat sessions.</li>
</ul>
</div>
<div class="card">
<h2>14. Hosting Architecture</h2>
<p>
The system is intentionally designed to support static or mostly static deployment.
</p>
<pre>authoring / mastering environment
→ generated files
→ static hosting (Apache, S3, CDN)
→ public consumption</pre>
<ul>
<li>A VPS may be used for mastering, generation, and automation.</li>
<li>Public delivery may move to S3 + CDN style serving.</li>
<li>Generated folder indexes can replace server-side directory-listing dependence where appropriate.</li>
<li>Static delivery reduces request-time CPU overhead and improves scalability.</li>
</ul>
</div>
<div class="card">
<h2>15. Build and Archive Architecture</h2>
<p>
Dated build archives may exist under daily build folders and are useful for transparency,
testing, and human historical review.
</p>
<ul>
<li>Daily builds belong inside dated archive folders.</li>
<li>Historical chat logs may be kept as HTML archives.</li>
<li>These historical materials are not the canonical spec.</li>
<li>The canonical spec belongs in the documentation tree.</li>
</ul>
</div>
<div class="card">
<h2>16. Architectural Principle</h2>
<div class="callout">
<p>
The architecture of MyAnythingList is designed to preserve human-readable text,
visual usefulness, static deployability, and future maintainability at the same time.
Its strength is not just what it renders, but how understandable the whole pipeline remains.
</p>
</div>
<p class="small">
For binding functional truth, read <code>requirements_en.html</code>. For philosophical
purpose, read <code>vision_en.html</code>.
</p>
</div>
</div>
</body>
</html>
If the session survives one more turn, the next one to do tonight is system_en.html.