Releases: mrlima4095/OpenTTY-J2ME
Release list
OpenTTY 1.18 - Deep Dream
OpenTTY Java Edition 1.18
Copyright (C) 2026 - Mr. Lima
🐛 Bug Fix
- Fixed user name on scopes after switching user with
su
🔧 General
- Process structure improvements
- Recovery menu reading list select button to open tool
- Changed kill kernel request to
sendsigwith a table{pid=[pid],signal=[signal]}
🌙 Lua
- Added new library
base64 - Added new function
string.getpattern(s)
OpenTTY 1.17.1
OpenTTY Java Edition 1.17.1
Copyright (C) 2026 - Mr. Lima
🧠 ELF
- 🎮 Added support for FPU controller
- ➕ Added support for more operations
- 🔧 Added support for accessing program arguments
- 📞 Added support for syscalls:
execve,mkdir,rmdir,stat,fstat,ioctl,clone,getpriority,setpriority,lseek,getdents,dup,dup2,unlink,socket,connect,send,recv,bind,listen,accept,shutdown,setsockopt,getsockopt,sendto,recvfrom,getsockname,getpeername,signal,sigaction,setjmp,longjmp,gettid,nanosleep,pipe,select,pool,fsync - 🐛 New debug mode — enable with
curl -s 1 debug true - 📦 ELF symbols manager
🐛 Bug Fixes
- 🔧 Fixed a bug with invalid caching
📁 FileSystem
- 📂 Added
/proc/support
🦎 Lua
- 📚 Added
pushlibrary - 🏷️ Added support for labels
- 📁 Added function
os.mkdir()
🖥️ General
- 🐛 Added debug mode
- ⌨️ Input char changing:
$for normal user,#for root - 📁 Scopes can change root directory
- 🚑 Added recovery menu
- 💥 Improved Kernel Panic screen
- 👥 Added support for multi-user sessions
💻 Commands
- ⏱️ Added command
time
📦 Packages
- ✅ Default — All features
- 🪶 Lite — No ELF emulator and no LuaCanvas
OpenTTY 1.17 - Fear Fog
OpenTTY Java Edition 1.17
Copyright (C) 2026 - Mr. Lima
OpenTTY is now fully controlled by Lua! The shell and commands are provided by Lua scripts and binaries in the /bin/ directory.
🚀 Key Changes
🏗️ Revolutionized Architecture
- Source code reorganized into specialized modules:
OpenTTY.java(Main Class)Lua.java(Lua Runtime)ELF.java(ARM 32-bit Emulator)
- Removed support for native applications - Lua is now the primary language
- X Server is no longer native - Install via
yangwhen needed
📁 Restructured Filesystem
- New, optimized directory tree
- User startup script migrated to Lua (
/home/.initrc) - Updated
/etc/fstabformat - Files in
/tmp/are automatically removed when closing the MIDlet
🔒 Enhanced Security
- Fixed vulnerability in accessing the process
ownerfield via Lua - Refined access control:
- Super-user can write to
/bin/,/etc/, and/lib/ - MIDlet login optimized for user prompt
- Super-user can write to
🛠️ New Lua API
✨ New Functions
os.getcwd() -- Gets current directory
os.getuid() -- Returns current user ID
string.uuid() -- Generates unique UUID
graphics.render(file) -- Loads images (new Image type)🔄 Enhanced Functions
requirenow searches for modules in/lib/in addition to the current directoryio.readandio.writerequire explicit use of/dev/stdinand/dev/stdoutrandom(max)moved tomath.random()os.executesends commands directly to the shellsocket.peerandsocket.devicereturn IP and Port
🎯 New Language Features
- ✅ Support for methods using the
:operator - ✅ Metatables (minimal support)
- ✅
breaktoken working inwhileandrepeatloops - ✅ New standard
javalibrary for direct JVM access
💻 Native Shell Commands
🔧 System Management
| Command | Description |
|---|---|
exec [commands...] |
Executes multiple commands |
builtin [command...] |
Executes commands ignoring aliases |
bg [command...] |
Executes command in another thread |
gc |
Runs garbage collector |
ps |
Lists active processes |
su [password] |
Switches between root/user |
exit |
Exits OpenTTY |
📊 System Information
| Command | Description |
|---|---|
whoami |
Current username |
id |
ID of logged-in user |
uname |
System information |
hostname |
Manages machine name |
date |
Current date and time |
🗂️ Navigation and Files
| Command | Description |
|---|---|
pwd |
Current directory |
cd [path] |
Changes directory |
ls |
Lists files |
cat [file] |
Displays content |
open [uri] |
Opens URI via device API |
⚙️ Configuration and Environment
| Command | Description |
|---|---|
env [key] |
Variable value |
set [key]=[value] |
Defines variable |
alias [name]=<expression> |
Creates shortcuts |
title |
Changes screen title |
🎮 Interface and Utilities
| Command | Description |
|---|---|
xterm |
Main screen |
warn [title] [message] |
Custom alert |
clear |
Clears terminal |
echo [message] |
Displays text |
📦 Included Programs (/bin/)
🎯 Essentials
lua- Interactive Lua terminalsh- Main shellyang- Package managercurl- HTTP/WebSocket client
🛠️ Utilities
rm- Removes files/directoriestouch- Creates/clears fileskill- Terminates processesnano- Text editor
📥 Installable Packages (via yang)
🔧 Development
sdk- Complete Lua SDKjdb- OpenTTY debuggerexpr- Lua expression evaluatornano- File editor
🌐 Network and Internet
ping- Connectivity testwget- File downloadpastebin- Pastebin clientshprxy- WebProxy servernc- Interactive Connection
📊 System and Monitoring
htop- Memory/process panelsync- Update checkerautogc- Automatic garbage collectorhash- Gets file hashCode
🎨 Entertainment and Effects
cmatrix- Matrix effectsed- String editorfind,grep- Advanced searchhead- Partial viewer
💡 Important Notes
🚨 Breaking Changes
- X Apps removed (Screen, List, Quest, Canvas) - Use Lua Graphics API
- Java commands eliminated - Migrate to Lua solutions
- MIDlet startup message now comes from
/etc/motd - MIDlet initialized by
/etc/init- Errors here cause a crash
🔄 Migration
- Lua is now the official language for OpenTTY development
- Lua services with
--deamonargument accessible viaarg[1] - On devices with limited memory: disable cache and Lua resources
curl -s 1 cache off
🏆 Highlights
- ✅ Font Generator improved
- ✅ Standard library expanded and optimized
📈 Next Steps
- Migrate your scripts to the new Lua API
- Install necessary packages via
yang install - Explore the new
graphicslibrary for visual interfaces - Enjoy the enhanced performance of the Lua runtime
OpenTTY 1.16.1
OpenTTY Java Edition 1.16.1
Copyright (C) 2025 - Mr. Lima
[ Updates ]
- X Server 0.6.4
- Added support for
canvas.fullscreenif it value istruetoggle Canvas to Full Screen mode - Audio API added support to play .midi files
- Lua added support for
argtable with args parsed in script calling - Lua added support for
repeat until [expr]loops - Lua added default library
socketwith network interfaces - Lua added default library
graphicswith Graphics API - Lua
iolibrary added new functionclose(stream)to close interfaces - Lua removed bug that pcall recognizes string function name to call
- Classes MIDletControl and Connect have been merged
- New Package field
api.requireto check MIDlet dependencies, if false runapi.error - Removed Command
server - Removed file
/java/etc/index.html - Removed default environment key RESPONSE
- Command
x11 itemremove all personalized itens from default screen - New Package WebProxy
- Background Thread implemented at
MIDletControl - Command
mmsptwhen read arguments, set it as Thread priority, if argument ispriorityshow current priority of current Thread
[ API Nodes ]
Use to check if current MIDlet have external implementations, got error if their is missing to package:
lua: without Lua Runtimecanvas: without X11 Canvas Service
OpenTTY 1.16 LTS - Absurd Anvil
OpenTTY Java Edition 1.16
Copyright (C) 2025 - Mr. Lima
LTS Edition
End of support scheduled for April 2026
[ Commands ]
which [command]: Find source of commandpasswd [password]: Change passwordsudo [command]: Run command with superuser permissionssu [user]: Switch user (root/ you)stty [max]: Set max char range that can be wrote at stdoutcatch [command]: run command ignoring exceptions (always exit with code: 0)lua [file]: run a Lua script.
[ Updates ]
- Fixed a bug in
ncthat Back button doesn't closes the connection - MIDlet login ask for a password
- Command
logoutwhen you are root return to your user - Improved exceptions messages
- New case condition user to compare user name
- Command
returninvalid code payload changed to 2 - Command
serverreading port from command-line, if not args are given usages the default port from environment key - Runners
execandexecutestop running if command exit code is different of 0 (error) - Command
falsereturns code 255 - Fixed a bug in Forge enhanced application generation
- When MIDlet is paused it triggers function
pauseApp()if it is found - Fixed history duplicated appending bug
- !! can read args and set it as prefix for last command
- FIRE button in X11 lists run user button
- Command
catwithout args prints nano content - X Server updated to 0.6.3
- API @.reload clears shell functions
- Command
chmoddefault IP Address to open socket set 1.1.1.1:53, if key$REPOis found use it. - Fixed
chmod *granting permissionnullas last permission node - Command
lsread argument to render directory content - MIDlet shell reading multiple args in some tools
- Shell scripts can be called with
sh [file] - Command
ncbutton Show info changed to View info - Command
prscannew button Save Logs to load recognized ports in nano - New X11 command
unsetto remove a saved screen - Command
whoshow where IP Addresses is connected - Service
bindandserverprocess ID changed to it respective port - Added support for new key
process.exitthat is triggered when processprocess.nameis killed - Load script
/java/etc/initd.shrun with super-user permissions - New X11 Screen edit
- When X11 stops, it drops all saved screens
- Command
gaugeremoved, usagex11 gauge - Class
OpenTTY$HTopViewermoved toMIDletControl - Command
querynow linked with an PID to stop the activities - Command
lshide files that has prefix . in all filesystems - Audio codec can play audio files from JAR Package.
- Nano Editor and History Threads joined into Main Thread
- File Explorer Window title changed to current path
- Command
title hidehide MIDlet Main Window title - Player Object non referred in globals, traced by Process
- X11 Support symbolic links loading and saving by Virtual Process PID
- Command
nc,prscanandgobusterask if you want keep thread alive before close window - File Explorer don't using icons anymore
- MIDlet Suite can adapt loading for emulations if found an environment key called as J2EMU
- Commands
topandtracemerged - New ITEM's attribute item.style
- New Yang package cmatrix indexed (wrote in Lua)
[ Notes ]
- If you are logged as root command
logoutandexitwill return you to normal user. - All jobs started with super user permissions and it sub-process get the permissions.
- Remote shells interfaces cannot be loaded with super user permissions by default.
- X11 Screens couldn't be called with
sudo. - After you change max stdout size, remote interfaces like
bindcan be directly damaged by stdout redirect. - OpenTTY and Lua don't have native support for regex patterns
- JAuth2 is deprecated, feature MIDlet.Lock will be added in future updates
[ X11 Virtual Screens ]
Usage: x11 [ option ] [PID]
import: load a screen referred into Virtual Processexport: save current screen in a Virtual Process
[ J2ME Loader Settings ]
You can enable the compatibility mode of OpenTTY to J2ME Loader with command export J2EMU, read below the changes enabled with this key:
- Fire button in List Screens dont works;
- In File Explorer when you jump directory it rebuild screen
- Title of File Explorer is Main Window title, not current working path
[ Lua J2ME ]
OpenTTY now have a Mini VM of Lua programming language, you can run lua scripts with command lua [filename].
Some libraries and features isn't available yet. You can download most Lua libraries in Yang or with SmartME SDK.
Not implemented:
- Basic types (strings, numbers, boolean, tables, nil)
- Meta tables support
- Advanced IO library
- Functions and normal tables creation
- Error Handling
- Coroutines and methods (: token works like a normal .)
- until & repeat looping extructure
- require([file]) & load([string]) to include other files
- require caching in
package.loaded - Global and local scopes
[ Specials ]
- This release contains a special secret command of 5k of commits in this repository.
OpenTTY 1.15 - Hidden Void
OpenTTY Java Edition 1.15
Copyright (C) 2025 - Mr. Lima
[ Commands ]
audio [options] [file]: Audio Managerreturn [code: int]: Return with codeeval [command]: Print returned code of command
[ Updates ]
- Improved help message
- Replaced PATCH by Version code-name
- Inverted usage of commands
dirandls - Chain runners stopping when command return a bad exit code
- Package MOD's stop if it running fail
- New Package API matching tools - support for key
api.match
[ Notes ]
- A new LTS release is coming, 1.16 will bring a big update package.
- 1 Year of 1.0 release
- I will make OpenTTY full documentation for Packages creation
[ API Matching tools ]
exact-prefix: Look for prefix, (ex. this API is 1.15 it'll accept 1.15.x too) Default.exact-full: Look for exact API, (ex. this API is 1.15 it'll reject 1.15.x and 1.16 and others).minimum: Look for middle API number, (ex. this API is _1.15 it'll accept all after 1.15.x, like 1.16 and newer).maximum: Look for main API number, (ex. this API is 1.x it'll accept all newer until 2.0).
[ Specials ]
- This release contains a special secret command of OpenTTY 1 year birthday.
OpenTTY 1.14.4
OpenTTY Java Edition 1.14.4
Copyright (C) 2025 - Mr. Lima
[ Commands ]
diff [file] [file]: Print differences between FILEswc [options] [file]: Print counting of words lines and bytes of FILEwho: Print all connected session
[ Updates ]
- Locked process PID changing
- GoBuster logging all found statuses
- GoBuster accepting in format
gobuster [domain] [word-list file] - Removed assets
/java/etc/gobusterand/java/etc/headers - Monitor htop using
System.gc()to trigger the Garbage Collector - Title Memory Status at Monitor now is the label of StringItem not in body
- Improved Command
uname
OpenTTY 1.14.3
OpenTTY Java Edition 1.14.3
Copyright (C) 2025 - Mr. Lima
[ Commands ]
expr (expression): run math expressionsmv [origin] [new]: move a RMS fileuuid: generate random uuidman [page]: Read manual pagesmkdir [dir]: create a new directory
[ Updates ]
- Removed commands
forget,clsandrnano - Removed Device File Explorer
- File Explorer save status alerted by a Ticker
- Using
install /mnt/[path]to write nano content in a file at Device Storage - MIDlet start path charged to /home/
- Updated X Server 0.6.2
- Updated JBuntu to 1.3.2
- Canvas new attribute
canvas.mouse.img - Canvas new attribute
canvas.mouse.color - Quest new attribute
quest.cmd.labelthat charges label of send button - Quest new attribute
quest.contentthat set the default quest text in input - Canvas title not in window format anymore
- New asset /java/bin/cursor.png
- MIDlet-Proxy redirecting for
https://opentty.xyz/proxy.php?
[ Notes ]
- To clear history you can use
clear history - Command
mkdironly create directories in Device Storage
OpenTTY 1.14.2
OpenTTY Java Edition 1.14.2
Copyright (C) 2025 - Mr. Lima
[ Commands ]
view [raw]: Start a HTML Viewer window direct from argumentconf [file]: Parse JSON to INI formatpong [ip:port]: Ping in a socket addresstime [command]: Meter time of process in current Thread (ms)pushd [path]: Add current directory to stack and charge to pathpopd: Return to last directory in stackhead [file]: Read first 10 lines of filetail [file]: Read last 10 lines of file
[ Updates ]
- Added new Package BoxME
- Yang updated to 1.4
- Better resources message
- Arguments clear pattern " when argument starts and ends with it
- JSON and other parsers required inform file (not considering nano by default anymore)
- Command ls now show RMS files.
- Assets can be viewed together in directory
- RMS files path setted in /home
- /java/etc/fstab now contain file tree
- Removed file /java/resources.txt
- New if number operators ==, !=, > & >= and < & <=
[ Notes ]
- OpenTTY Server default IP is my VPS with a session of it
OpenTTY 1.14.1
OpenTTY Java Edition 1.14.1
Copyright (C) 2025 - Mr. Lima
[ Commands ]
read [key] [file]: Read file and parse it content to keygetopt [args]: Remove command and return arguments
[ Updates ]
- Better labels in Settings
- Settings using back to return to previous screen
- New case checkers
screen,!screen,alias,!alias,keyand!key - Added new Package Back Previous