From a6bb17ef1e283260c0553c3b3dfc1e9104739ac9 Mon Sep 17 00:00:00 2001 From: DaInfLoop Date: Sun, 28 Jun 2026 18:33:25 +0100 Subject: [PATCH 1/3] feat: add related scripts section shows all scripts that have the same "owner" on script view --- generate.py | 24 ++++++++++++++++++++++-- script.py | 5 +++-- templates/script_page.html | 16 ++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/generate.py b/generate.py index fcffd651..4430794d 100755 --- a/generate.py +++ b/generate.py @@ -134,6 +134,16 @@ def generate(game: str): index = process_scripts(data, decompiled_dir_ch) + related = {} + + for section in index.sections.values(): + if section.name == "Scripts": continue + + for entries in section.entries.values(): + names = [entry.name for entry in entries] + for entry in entries: + related[entry.name] = names + logger.info(f"['{chapter}'] Rendering index...") write_index(index, data, output_dir_ch) @@ -141,7 +151,7 @@ def generate(game: str): logger.info(f"['{chapter}'] Rendering scripts' pages...") for script in tqdm(index.text.keys(), disable=None): - rendered = render_script(script, index.text, data) + rendered = render_script(script, index.text, data, related.get(script, [])) write_script(rendered, script, output_dir_ch) @@ -157,6 +167,16 @@ def generate(game: str): index = process_scripts(data, decompiled_dir) + related = {} + + for section in index.sections.values(): + if section.name == "Scripts": continue + + for entries in section.entries.values(): + rel_entries = [entry for entry in entries] + for entry in entries: + related[entry.name] = rel_entries + logger.info('Rendering index...') write_index(index, data, output_dir) @@ -164,7 +184,7 @@ def generate(game: str): logger.info("Rendering scripts' pages...") for script in tqdm(index.text.keys(), disable=None): - rendered = render_script(script, index.text, data) + rendered = render_script(script, index.text, data, related.get(script, [])) write_script(rendered, script, output_dir) diff --git a/script.py b/script.py index 72e11094..e337afd3 100755 --- a/script.py +++ b/script.py @@ -306,7 +306,7 @@ def process_line( def render_script( - script_name: str, text: Dict[str, List[str]], data: Data + script_name: str, text: Dict[str, List[str]], data: Data, related_scripts: Optional[List[str]] = [] ) -> str: lines = [ process_line(line, script_name, text, data) @@ -320,9 +320,10 @@ def render_script( script_name=script_name, raw_url=f'/raw{chapter_segment}/{script_name}.txt', lines=lines, + related_scripts=related_scripts, game=data.get_game_name(), links=data.get_game_links(), - footer=data.get_game_footer(), + footer=data.get_game_footer() ) diff --git a/templates/script_page.html b/templates/script_page.html index d33efeaa..0e3eda64 100644 --- a/templates/script_page.html +++ b/templates/script_page.html @@ -13,6 +13,22 @@

{{ game }} script viewer

← back to main script listing

{{ script_name }}

+ + {% if related_scripts is defined and related_scripts|length > 0 %} +
+ related scripts: + {% for script in related_scripts %} + {% if (script.prefix + script.suffix) == script_name %} + {{ script.suffix }} + {% else %} + {{ script.suffix }} + {% endif %} + {% if not loop.last %} • {% endif %} + {% endfor %} +
+
+ {% endif %} + (view raw script w/o annotations or w/e) From 05db24fd32bfde187d067090ba20e53016b6fae6 Mon Sep 17 00:00:00 2001 From: DaInfLoop Date: Sun, 28 Jun 2026 18:38:26 +0100 Subject: [PATCH 2/3] chore: fix linting issue damn you intellisense for not telling me i forgot to import `Optional` --- script.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script.py b/script.py index e337afd3..78bc8cfc 100755 --- a/script.py +++ b/script.py @@ -5,7 +5,7 @@ import re import sys from pathlib import Path -from typing import Dict, List +from typing import Dict, List, Optional from jinja2 import Environment, FileSystemLoader, select_autoescape From cc1316f21010bdf3dd215b727b306bed8c1864fa Mon Sep 17 00:00:00 2001 From: DaInfLoop Date: Sun, 28 Jun 2026 18:42:46 +0100 Subject: [PATCH 3/3] chore: fix other linting issues --- generate.py | 22 +++++++++++++++----- script.py | 5 ++++- static/main.css | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 6 deletions(-) diff --git a/generate.py b/generate.py index 4430794d..3e098fe2 100755 --- a/generate.py +++ b/generate.py @@ -137,12 +137,13 @@ def generate(game: str): related = {} for section in index.sections.values(): - if section.name == "Scripts": continue + if section.name == 'Scripts': + continue for entries in section.entries.values(): names = [entry.name for entry in entries] for entry in entries: - related[entry.name] = names + related[entry.name] = names logger.info(f"['{chapter}'] Rendering index...") @@ -151,7 +152,12 @@ def generate(game: str): logger.info(f"['{chapter}'] Rendering scripts' pages...") for script in tqdm(index.text.keys(), disable=None): - rendered = render_script(script, index.text, data, related.get(script, [])) + rendered = render_script( + script, + index.text, + data, + related.get(script, []) + ) write_script(rendered, script, output_dir_ch) @@ -170,7 +176,8 @@ def generate(game: str): related = {} for section in index.sections.values(): - if section.name == "Scripts": continue + if section.name == 'Scripts': + continue for entries in section.entries.values(): rel_entries = [entry for entry in entries] @@ -184,7 +191,12 @@ def generate(game: str): logger.info("Rendering scripts' pages...") for script in tqdm(index.text.keys(), disable=None): - rendered = render_script(script, index.text, data, related.get(script, [])) + rendered = render_script( + script, + index.text, + data, + related.get(script, []) + ) write_script(rendered, script, output_dir) diff --git a/script.py b/script.py index 78bc8cfc..bb620910 100755 --- a/script.py +++ b/script.py @@ -306,7 +306,10 @@ def process_line( def render_script( - script_name: str, text: Dict[str, List[str]], data: Data, related_scripts: Optional[List[str]] = [] + script_name: str, + text: Dict[str, List[str]], + data: Data, + related_scripts: Optional[List[str]] = [] ) -> str: lines = [ process_line(line, script_name, text, data) diff --git a/static/main.css b/static/main.css index e69c9cc1..c8c6979e 100644 --- a/static/main.css +++ b/static/main.css @@ -49,6 +49,59 @@ --function-box-background-color: rgba(30, 50, 30, 0.9); } +@media (prefers-color-scheme: light) { + :root { + --background: #111; + --secondary-background: #080808; + --text-color: #CCC; + --link-color: #8AD; + --link-hover-color: #ADF; + --border-color: #999; + --junk-text-color: #999; + + --selected-line-background-color: #333; + --lang-var-text-color: #c7d; + --lang-var-background-color: black; + --lang-var-border-color: #836; + --lang-text-text-color: #fbe; + --lang-text-background-color: black; + --lang-text-border-color: #969; + --wait-background-color: #555; + --wait-text-color: #fff; + --delay-background-color: #111; + --delay-text-color: #666; + --delay-collapsed-text-color: #aaa; + --close-background-color: #844; + --close-text-color: #fff; + --face-background-color: #252; + --face-text-color: #8c8; + --arg-background-color: #707; + --arg-text-color: #fff; + --arg-collapsed-text-color: #aaa; + --flag-not-found-text-color: #ec6; + --flag-found-text-color: #fd8; + --flag-found-background-color: black; + --flag-description-text-color: #ca4; + --room-text-color: #8f8; + --room-background-color: black; + --room-description-text-color: #494; + --alarm-link-text-color: #faa; + --alarm-link-text-color--hover: white; + --alarm-link-underline-color: #a66; + --alarm-box-border-color: #888; + --alarm-box-background-color: #222; + --alarm-connection-line-color: #444; + --alarm-background-color--hover: #400; + --alarm-border-color--hover: #f88; + --function-link-text-color: #8f8; + --function-link-underline-color: #292; + --function-link-background-color--hover: #272; + --function-link-text-color--hover: white; + --function-box-border-color: #8f8; + --function-box-background-color: rgba(30, 50, 30, 0.9); + } +} + html, body { width: 100%; height: 100%;