Skip to content

Releases: mrlima4095/OpenTTY-J2ME

OpenTTY 1.18 - Deep Dream

Choose a tag to compare

@mrlima4095 mrlima4095 released this 25 Jan 18:25

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 sendsig with a table {pid=[pid],signal=[signal]}

🌙 Lua

  • Added new library base64
  • Added new function string.getpattern(s)

OpenTTY 1.17.1

OpenTTY 1.17.1 Pre-release
Pre-release

Choose a tag to compare

@mrlima4095 mrlima4095 released this 13 Jan 21:02

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 push library
  • 🏷️ 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

Choose a tag to compare

@mrlima4095 mrlima4095 released this 01 Jan 22:24

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 yang when needed

📁 Restructured Filesystem

  • New, optimized directory tree
  • User startup script migrated to Lua (/home/.initrc)
  • Updated /etc/fstab format
  • Files in /tmp/ are automatically removed when closing the MIDlet

🔒 Enhanced Security

  • Fixed vulnerability in accessing the process owner field via Lua
  • Refined access control:
    • Super-user can write to /bin/, /etc/, and /lib/
    • MIDlet login optimized for user prompt

🛠️ 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

  • require now searches for modules in /lib/ in addition to the current directory
  • io.read and io.write require explicit use of /dev/stdin and /dev/stdout
  • random(max) moved to math.random()
  • os.execute sends commands directly to the shell
  • socket.peer and socket.device return IP and Port

🎯 New Language Features

  • ✅ Support for methods using the : operator
  • Metatables (minimal support)
  • break token working in while and repeat loops
  • ✅ New standard java library 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 terminal
  • sh - Main shell
  • yang - Package manager
  • curl - HTTP/WebSocket client

🛠️ Utilities

  • rm - Removes files/directories
  • touch - Creates/clears files
  • kill - Terminates processes
  • nano - Text editor

📥 Installable Packages (via yang)

🔧 Development

  • sdk - Complete Lua SDK
  • jdb - OpenTTY debugger
  • expr - Lua expression evaluator
  • nano - File editor

🌐 Network and Internet

  • ping - Connectivity test
  • wget - File download
  • pastebin - Pastebin client
  • shprxy - WebProxy server
  • nc - Interactive Connection

📊 System and Monitoring

  • htop - Memory/process panel
  • sync - Update checker
  • autogc - Automatic garbage collector
  • hash - Gets file hashCode

🎨 Entertainment and Effects

  • cmatrix - Matrix effect
  • sed - String editor
  • find, grep - Advanced search
  • head - Partial viewer

💡 Important Notes

🚨 Breaking Changes

  1. X Apps removed (Screen, List, Quest, Canvas) - Use Lua Graphics API
  2. Java commands eliminated - Migrate to Lua solutions
  3. MIDlet startup message now comes from /etc/motd
  4. MIDlet initialized by /etc/init - Errors here cause a crash

🔄 Migration

  • Lua is now the official language for OpenTTY development
  • Lua services with --deamon argument accessible via arg[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

  1. Migrate your scripts to the new Lua API
  2. Install necessary packages via yang install
  3. Explore the new graphics library for visual interfaces
  4. Enjoy the enhanced performance of the Lua runtime

OpenTTY 1.16.1

OpenTTY 1.16.1 Pre-release
Pre-release

Choose a tag to compare

@mrlima4095 mrlima4095 released this 20 Sep 17:20

OpenTTY Java Edition 1.16.1
Copyright (C) 2025 - Mr. Lima

[ Updates ]

  • X Server 0.6.4
  • Added support for canvas.fullscreen if it value is true toggle Canvas to Full Screen mode
  • Audio API added support to play .midi files
  • Lua added support for arg table with args parsed in script calling
  • Lua added support for repeat until [expr] loops
  • Lua added default library socket with network interfaces
  • Lua added default library graphics with Graphics API
  • Lua io library added new function close(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.require to check MIDlet dependencies, if false run api.error
  • Removed Command server
  • Removed file /java/etc/index.html
  • Removed default environment key RESPONSE
  • Command x11 item remove all personalized itens from default screen
  • New Package WebProxy
  • Background Thread implemented at MIDletControl
  • Command mmspt when read arguments, set it as Thread priority, if argument is priority show 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 Runtime
  • canvas: without X11 Canvas Service

OpenTTY 1.16 LTS - Absurd Anvil

Choose a tag to compare

@mrlima4095 mrlima4095 released this 31 Aug 19:02

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 command
  • passwd [password]: Change password
  • sudo [command]: Run command with superuser permissions
  • su [user]: Switch user (root/ you)
  • stty [max]: Set max char range that can be wrote at stdout
  • catch [command]: run command ignoring exceptions (always exit with code: 0)
  • lua [file]: run a Lua script.

[ Updates ]

  • Fixed a bug in nc that Back button doesn't closes the connection
  • MIDlet login ask for a password
  • Command logout when you are root return to your user
  • Improved exceptions messages
  • New case condition user to compare user name
  • Command return invalid code payload changed to 2
  • Command server reading port from command-line, if not args are given usages the default port from environment key
  • Runners exec and execute stop running if command exit code is different of 0 (error)
  • Command false returns 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 cat without args prints nano content
  • X Server updated to 0.6.3
  • API @.reload clears shell functions
  • Command chmod default IP Address to open socket set 1.1.1.1:53, if key $REPO is found use it.
  • Fixed chmod * granting permission null as last permission node
  • Command ls read argument to render directory content
  • MIDlet shell reading multiple args in some tools
  • Shell scripts can be called with sh [file]
  • Command nc button Show info changed to View info
  • Command prscan new button Save Logs to load recognized ports in nano
  • New X11 command unset to remove a saved screen
  • Command who show where IP Addresses is connected
  • Service bind and server process ID changed to it respective port
  • Added support for new key process.exit that is triggered when process process.name is killed
  • Load script /java/etc/initd.sh run with super-user permissions
  • New X11 Screen edit
  • When X11 stops, it drops all saved screens
  • Command gauge removed, usage x11 gauge
  • Class OpenTTY$HTopViewer moved to MIDletControl
  • Command query now linked with an PID to stop the activities
  • Command ls hide 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 hide hide 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, prscan and gobuster ask 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 top and trace merged
  • New ITEM's attribute item.style
  • New Yang package cmatrix indexed (wrote in Lua)

[ Notes ]

  • If you are logged as root command logout and exit will 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 bind can 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 Process
  • export: 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].

Lua Manual

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

Choose a tag to compare

@mrlima4095 mrlima4095 released this 12 Jul 18:29

OpenTTY Java Edition 1.15
Copyright (C) 2025 - Mr. Lima

[ Commands ]

  • audio [options] [file]: Audio Manager
  • return [code: int]: Return with code
  • eval [command]: Print returned code of command

[ Updates ]

  • Improved help message
  • Replaced PATCH by Version code-name
  • Inverted usage of commands dir and ls
  • 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 1.14.4 Pre-release
Pre-release

Choose a tag to compare

@mrlima4095 mrlima4095 released this 20 Jun 19:16

OpenTTY Java Edition 1.14.4
Copyright (C) 2025 - Mr. Lima

[ Commands ]

  • diff [file] [file]: Print differences between FILEs
  • wc [options] [file]: Print counting of words lines and bytes of FILE
  • who: 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/gobuster and /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 1.14.3 Pre-release
Pre-release

Choose a tag to compare

@mrlima4095 mrlima4095 released this 19 Jun 00:07

OpenTTY Java Edition 1.14.3
Copyright (C) 2025 - Mr. Lima

[ Commands ]

  • expr (expression): run math expressions
  • mv [origin] [new]: move a RMS file
  • uuid: generate random uuid
  • man [page]: Read manual pages
  • mkdir [dir]: create a new directory

[ Updates ]

  • Removed commands forget, cls and rnano
  • 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.label that charges label of send button
  • Quest new attribute quest.content that 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 mkdir only create directories in Device Storage

OpenTTY 1.14.2

OpenTTY 1.14.2 Pre-release
Pre-release

Choose a tag to compare

@mrlima4095 mrlima4095 released this 07 Jun 15:44

OpenTTY Java Edition 1.14.2
Copyright (C) 2025 - Mr. Lima

[ Commands ]

  • view [raw]: Start a HTML Viewer window direct from argument
  • conf [file]: Parse JSON to INI format
  • pong [ip:port]: Ping in a socket address
  • time [command]: Meter time of process in current Thread (ms)
  • pushd [path]: Add current directory to stack and charge to path
  • popd: Return to last directory in stack
  • head [file]: Read first 10 lines of file
  • tail [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 1.14.1 Pre-release
Pre-release

Choose a tag to compare

@mrlima4095 mrlima4095 released this 09 May 10:45

OpenTTY Java Edition 1.14.1
Copyright (C) 2025 - Mr. Lima

[ Commands ]

  • read [key] [file]: Read file and parse it content to key
  • getopt [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, key and !key
  • Added new Package Back Previous