6 Commits
Author SHA1 Message Date
mrleo1nidandClaude Sonnet 5.5 83cc7fdd5c feat: converter reads the Phone library's register statement, named stores and generators
`init phone register` becomes a default (the group chat) plus a function of library calls that runs with
the other defaults of a new game (phone_register.py). `init/python [early|hide] in some.store` wraps its
code in an in_store node and `default some.store.name` may name a store; yield works as an expression
(generator functions are marked gen); `import x as y`, `transform -150 name(...)`, `init:` with if/else,
`config.special_namespaces` lines, `at` lists and tuples, transforms made by Python functions, `choice`
weights that are expressions, `__len__`/`__bool__`, and the whitelist for os, calendar, itertools,
pygame_sdl2 and the new runtime. The converter also records the size of every picture it converts
(`imageSizes`) so `renpy.image_size` answers without loading.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 22:39:16 +03:00
mrleo1nidandClaude Sonnet 5.5 e66160cffa feat: converter accepts the constructs of goodluke and SaintlyCorruption
`init -490 screen`, `import x as y` and `from m import A as B`, classes with @renpy.pure, pickle hooks
on classes, `*` items in tuples and lists, generator functions (yield statements; the player runs them
to the end), multi-line expressions that need brackets, Null() and Animation() images, images given as
expressions (`"path/{}.png".format(x)`, f-strings), window statements in init, `offset` in ATL, input
widgets with their values and the focus/confirm actions, `continue` and `break` in screens, `drag`
and DiamondBox-style `fixed` with cell_size, `getattr(...)()` calls, transforms called with arguments,
and the whitelist for the new runtime. JSON files of a game are shipped as data files. Also fixes
blocking_names failing on a call of a call during full conversion.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 17:28:13 +03:00
mrleo1nidandClaude Sonnet 5.5 6d78b8b847 feat: build profile for The Lewdest House; panoramas as GPU hints, live2d-only init branches, drag/at syntax
CI / frontend (push) Failing after 15s
CI / backend (push) Failing after 33s
The build (fingerprint of its scripts) skips third-party code written against Ren'Py's render API
(colour picker demo, Kinetic Text Tags, cps_preview) and waives its one missing test screen. Converter:
xpan/ypan/matrixtransform/matrixanchor are skipped like other GPU hints, `if renpy.has_live2d()` in an
init block keeps only its else branch, `crop(...)xpos` and `crop (1, 2, 3, 4)` parse, `drag` is a screen
container, `at icon["at"]` becomes a dynamic entry, and the whitelist gains Matrix, Move, absolute and
the no-op helpers. The game now passes the strict check and converts fully (3272 files, 288 MB).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 04:29:20 +03:00
mrleo1nidandClaude Sonnet 5.5 16ba20816c feat: File* save/load actions, hashlib/uuid, dict spread and small renpy helpers in the player
CI / frontend (push) Failing after 21s
CI / backend (push) Failing after 36s
Games with their own save screens work: FileAction/FileSave/FileLoad/FileDelete/FilePage*, FileLoadable,
FileTime, FileSaveName, FileJson and friends use browser slots (a slot has no screenshot). Added
renpy.has_image/has_screen/list_files/get_mouse_pos/log/jump_out_of_context/random.seed,
renpy.translation.translate_string, type/id/vars/Flatten/LiveComposite/Composite, bare defaultdict/
deepcopy, md5/sha256 (checked against test vectors), uuid4, time.monotonic, re.compile().fullmatch,
math.isfinite and `{**a, "k": v}`. The converter whitelists them and accepts the hashlib/uuid imports.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 04:02:22 +03:00
mrleo1nidandClaude Sonnet 5.5 6c10d06d90 feat: renpy.call_in_new_context("_hide_windows") becomes a click wait
CI / frontend (push) Failing after 20s
CI / backend (push) Failing after 38s
Ren'Py's own _hide_windows label hides the dialogue window until the player clicks. Games call it
directly between scenes, and one of them 531 times. Other labels stay unsupported.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 02:58:24 +03:00
mrleo1nid f9eb5c1212 feat: improve RenPy conversion and support MIST runtime
CI / frontend (push) Failing after 15s
CI / backend (push) Failing after 37s
2026-10-25 23:16:33 +03:00