Repository navigation
runcode v1.3.0 — file manager, zip import/export, editor fixes
Phase 2 of the roadmap: a real file manager for projects, zip import/export, and four new MCP
tools. Testing it on device also turned up a crash and several layout bugs that were already
in the app; those are fixed here too.
File manager
Editor → folder icon. It shows the whole project, not just source/, so whatever a
script writes into data/ is visible.
- Create files and folders (
utils/helpers.pycreates the folder too), rename, move to
another folder, delete — with a confirmation that says how many files a folder holds.
source/,data/,config/,logs/,cache/andbackups/are the project layout and
cannot be renamed or deleted; their contents can. - Renaming or moving the entry point takes the project with it — rename
main.pyand Run
still works. ⋮ → Set as entry point picks another file. - Import files here copies files in from the phone; an existing file is never
overwritten (scores.csv→scores (1).csv). Save a copy to phone gets any file back
out, including databases a script produced. - Binary files and files over 512 KB no longer open in the editor as garbage; the app says
what they are and how to get them out.
Import and export whole projects
⋮ → Export project (.zip) writes code, data and settings. Projects → import icon
brings it back as a new project — verified byte-identical after export → delete → import.
Any other zip works too: a GitHub "Download ZIP" is unwrapped from its top folder, macOS
junk is skipped, and the entry point is detected (main.py, bot.py, app.py, … or
index.html for a website).
Imports are defensive: an archive entry that tries to write outside the project is refused
(tested with ../../../shared_prefs/…; nothing was written), expansion is capped at 512 MB,
and imported projects never start on boot until you turn that on. Exports never contain
secrets — a secret variable is written only as its ${SEC_...} reference.
MCP
Sixteen tools now. New: create_directory, rename_path (rename or move; the entry point
follows), delete_path, and set_entry_point. read_file refuses binary and oversized
files with their size instead of returning mojibake, and list_files covers the whole project
with folders marked by a trailing /.
Edits made over the bridge appear in the app straight away: the tree refreshes, and a file
open in the editor reloads unless you have unsaved changes in it.
Fixed
- Crash when opening a file. Opening a file that added a second tab could crash the app
withIndexOutOfBoundsException: Material3's default tab indicator can recompose with the
new tab index before the new tab is measured. This may be the crash reported earlier. - Line numbers didn't scroll. The numbers stayed put while the code scrolled under them.
The editor now keeps its own scroll position and draws each number at the line's baseline;
long lines wrap and get one number, and the view follows the cursor while you type. - Unsaved edits were lost when switching or closing a tab. They are saved now.
- "New file" with an existing name wiped that file. It now refuses.
- A long project name pushed Run off the editor toolbar; project cards hid their
edit / backup / delete buttons on phone-width screens; the Home New button wrapped
to "Ne / w". - Every path now goes through one containment check that requires a separator, so a sibling
directory sharing a prefix can no longer slip past it.
Install
Signed with the same key as v1.2.0 (certificate SHA-256 9e9e346c…810568), so it installs
over it. versionName is now 1.3.0 — earlier releases all still reported 1.0.0.
minSdk 26, ABIs arm64-v8a and x86_64. Licensed MIT; third-party notices in
THIRD_PARTY_LICENSES.md.