Repository navigation
v1.0.2
Right-to-left layout
Set Locale = 'ar' and the whole interface mirrors, the way an Arabic iPhone reads. There is
no switch to find: the layout follows the language, so Arabic, Farsi, Hebrew and Urdu all get it
and every other language is untouched.
- The home screen reads right to left. The first app sits top right, pages advance the other
way, and unread badges move to the icon's top-left corner. - The status bar flips, battery and signal to the left, clock to the right.
- Lists, navigation and gestures mirror together. Icons sit on the right with the label beside
them, disclosure chevrons point left, pages slide in from the correct side, and swipes reverse
so back is still the direction it looks. - Text keeps its own direction. An English name inside an Arabic screen still reads left to
right instead of scrambling, and numbers keep their order inside translated sentences.
Some things deliberately do not mirror, which is what iOS and Android both do: maps and route
overlays, game boards, media scrubbers and their transport buttons, clock faces, dial keypads,
card and phone numbers, the calculator and the camera viewfinder. Mirroring those would move a
control away from the thing it acts on.
ForceLeftToRight in configs/config.lua pins the screen left-to-right even under Arabic, for a
server that would rather keep the old layout.
Foldable prop
v1.0.1 gave the phone a hinge on screen. It now has one in the world too.
- The prop folds in hand, with the shut and open models swapping as the hinge moves.
- The fold state is remembered, so a phone put away open comes back open.
- The animation was rebuilt around a spring rather than a fixed curve, with depth lighting
across the seam. The gap between the halves, the corner windows outside the frame, the shift
when contents settled and the clock leaking through mid-swing are all gone. - Servers without the fold models keep working. A missing model falls back to the plain phone
prop instead of breaking the hold. FoldPropPrefix,FoldOpenSuffix,FoldPlainShutProp,FoldPlainOpenProp,FoldPropOffset
andFoldOpenPropOffsetinconfigs/phone.luacover naming, offsets, and keeping the plain
prop for either state.
Security
- Racing checkpoints are validated server-side. The finish only checked the stored index, so a
modified client could report the final checkpoint and settle a run it never drove, taking the
prize money, the MMR and the track record with it. Every gate must now arrive in sequence, after
the green light, with the player's server-side position matching the gate their client reported.
Thanks to @LouayeG for finding and fixing this one.
Fixes
- Face Unlock refuses a covered face. The scan was animation only and never asked the game
anything, so a mask, bandana or hood unlocked the phone regardless. It now fails and falls back
to the passcode, keeping whatever you were opening.MaskBlocksFaceUnlockin
configs/lockscreen.luaturns the check off. - Migrated photos can be shared again. Photos imported from another phone were written without
the trust flag, so they showed in the gallery but were refused everywhere else: attaching one to
a post, a message or a profile picture dropped it with no error. Imports are written trusted now,
and a one-time repair fixes rows from earlier imports. - Live location stops when the phone does. A shared location kept moving after the sharer lost
or put away their phone. People sharing without a phone to hand now read as Currently
unavailable instead of showing a stale position. - op-garages is detected properly. Its stored state is inverted relative to the others, which
had every garaged vehicle showing as impounded.
Apps
- Stocks ships disabled. There are outstanding issues with it, so it is off in
configs/apps.luauntil they are fixed. Turn it back on there if you are already running it.
Localisation
- Arabic added. The catalog is community-contributed and still being refined, so corrections
are welcome.