move docs to docs/ folder, merge architecture files, update references

This commit is contained in:
2026-01-19 09:02:11 +01:00
parent 1b34b0e974
commit 010e11cf6b
68 changed files with 1741 additions and 1350 deletions

Binary file not shown.

View File

@@ -0,0 +1,195 @@
-- Sandbox Test App
-- Tests: timers, JSON, crypto, storage
local results = {}
local function log(msg)
table.insert(results, os.date("%H:%M:%S") .. " " .. msg)
local el = document:GetElementById("results")
if el then
el.inner_rml = table.concat(results, "\n")
end
end
local function setStatus(id, status, success)
local el = document:GetElementById(id)
if el then
if success then
el.inner_rml = "" .. status
else
el.inner_rml = "" .. status
end
end
end
-- Timer test
function testTimer()
setStatus("timer-status", "Running...", true)
log("Starting timer test...")
local count = 0
local timerId = nil
timerId = setInterval(function()
count = count + 1
log("Timer tick: " .. count)
if count >= 3 then
clearInterval(timerId)
setStatus("timer-status", "Passed (3 ticks)", true)
log("Timer test complete!")
end
end, 1000)
log("Timer started with ID: " .. tostring(timerId))
end
-- JSON test
function testJSON()
log("Starting JSON test...")
local success = true
local msg = ""
-- Test encode
local data = {
name = "test",
value = 42,
nested = { a = 1, b = 2 }
}
local encoded = json.encode(data)
if encoded then
log("Encoded: " .. encoded)
else
success = false
msg = "encode failed"
end
-- Test decode
if success then
local decoded = json.decode(encoded)
if decoded and decoded.name == "test" and decoded.value == 42 then
log("Decoded successfully, name=" .. decoded.name)
else
success = false
msg = "decode failed"
end
end
if success then
setStatus("json-status", "Passed", true)
log("JSON test complete!")
else
setStatus("json-status", "Failed: " .. msg, false)
end
end
-- Crypto test
function testCrypto()
log("Starting crypto test...")
local success = true
local msg = ""
-- Test random bytes
local bytes = crypto.randomBytes(16)
if bytes and #bytes == 16 then
log("Random bytes (hex): " .. bytes:gsub(".", function(c)
return string.format("%02x", c:byte())
end))
else
success = false
msg = "randomBytes failed"
end
-- Test SHA256
if success then
local hash = crypto.sha256("hello world")
if hash then
log("SHA256: " .. hash:sub(1, 32) .. "...")
else
success = false
msg = "sha256 failed"
end
end
-- Test HMAC
if success then
local hmac = crypto.hmac("sha256", "secret", "message")
if hmac then
log("HMAC: " .. hmac:sub(1, 32) .. "...")
else
success = false
msg = "hmac failed"
end
end
if success then
setStatus("crypto-status", "Passed", true)
log("Crypto test complete!")
else
setStatus("crypto-status", "Failed: " .. msg, false)
end
end
-- Storage test
function testStorage()
log("Starting storage test...")
local success = true
local msg = ""
-- Test write
local writeOk = fs.write("test.txt", "Hello from sandbox!")
if writeOk then
log("Write successful")
else
success = false
msg = "write failed"
end
-- Test read
if success then
local content = fs.read("test.txt")
if content == "Hello from sandbox!" then
log("Read successful: " .. content)
else
success = false
msg = "read mismatch"
end
end
-- Test list
if success then
local files = fs.list("/")
if files then
log("Files in root: " .. #files)
for _, f in ipairs(files) do
log(" - " .. f)
end
end
end
-- Test delete
if success then
local deleteOk = fs.delete("test.txt")
if deleteOk then
log("Delete successful")
else
success = false
msg = "delete failed"
end
end
if success then
setStatus("storage-status", "Passed", true)
log("Storage test complete!")
else
setStatus("storage-status", "Failed: " .. msg, false)
end
end
-- Initialize
log("Sandbox Test App loaded")
log("Lua version: " .. (_VERSION or "unknown"))

View File

@@ -0,0 +1,46 @@
<rml>
<head>
<title>Sandbox Test</title>
<link type="text/rcss" href="styles.rcss"/>
<script src="app.lua"></script>
</head>
<body>
<div class="app-bar">
<div class="app-bar-nav btn-icon" onclick="goBack()">
<span class="icon">←</span>
</div>
<div class="app-bar-title">Sandbox Test</div>
</div>
<div class="content">
<div class="card">
<div class="card-title">Timer Test</div>
<div id="timer-status">Not started</div>
<button onclick="testTimer()">Start Timer</button>
</div>
<div class="card">
<div class="card-title">JSON Test</div>
<div id="json-status">Not tested</div>
<button onclick="testJSON()">Test JSON</button>
</div>
<div class="card">
<div class="card-title">Crypto Test</div>
<div id="crypto-status">Not tested</div>
<button onclick="testCrypto()">Test Crypto</button>
</div>
<div class="card">
<div class="card-title">Storage Test</div>
<div id="storage-status">Not tested</div>
<button onclick="testStorage()">Test Storage</button>
</div>
<div class="card">
<div class="card-title">Results</div>
<div id="results">Click buttons above to run tests</div>
</div>
</div>
</body>
</rml>

View File

@@ -0,0 +1,18 @@
{
"id": "com.mosis.sandbox-test",
"name": "Sandbox Test",
"version": "1.0.0",
"version_code": 1,
"entry": "main.rml",
"icon": "icon.tga",
"description": "Tests sandbox APIs: timers, storage, JSON, crypto",
"developer": {
"name": "Mosis Team",
"email": "dev@mosis.dev"
},
"permissions": [
"storage",
"network"
],
"min_api_version": 1
}

View File

@@ -0,0 +1,85 @@
body {
font-family: LatoLatin;
font-size: 16dp;
background-color: #121212;
color: #ffffff;
}
.app-bar {
display: flex;
flex-direction: row;
align-items: center;
height: 56dp;
background-color: #1e1e1e;
padding: 0 8dp;
}
.app-bar-nav {
width: 40dp;
height: 40dp;
display: flex;
align-items: center;
justify-content: center;
border-radius: 20dp;
}
.app-bar-nav:hover {
background-color: #333333;
}
.icon {
font-size: 24dp;
}
.app-bar-title {
font-size: 20dp;
font-weight: bold;
margin-left: 16dp;
}
.content {
padding: 16dp;
}
.card {
background-color: #1e1e1e;
border-radius: 12dp;
padding: 16dp;
margin-bottom: 12dp;
}
.card-title {
font-size: 18dp;
font-weight: bold;
margin-bottom: 8dp;
color: #bb86fc;
}
button {
background-color: #bb86fc;
color: #000000;
border: none;
border-radius: 8dp;
padding: 12dp 24dp;
font-size: 14dp;
font-weight: bold;
margin-top: 8dp;
}
button:hover {
background-color: #cf9fff;
}
button:active {
background-color: #9a67ea;
}
#results {
font-family: monospace;
font-size: 12dp;
background-color: #0d0d0d;
padding: 12dp;
border-radius: 8dp;
white-space: pre-wrap;
color: #00ff00;
}

21
test-apps/package.bat Normal file
View File

@@ -0,0 +1,21 @@
@echo off
REM Package test apps as .mosis files
setlocal enabledelayedexpansion
for /d %%d in (*) do (
if exist "%%d\manifest.json" (
echo Packaging %%d...
cd %%d
if exist "..\%%d.mosis" del "..\%%d.mosis"
tar -a -cf "..\%%d.mosis" *
cd ..
echo Created %%d.mosis
)
)
echo.
echo Done! Package files:
dir /b *.mosis 2>nul
endlocal