P6NCM575TRHPINKUSXMPBET7YC4Q4CNDUQ22URZERY6BKAL7U5VAC
G5GPXXNREK7FS6IBFANUXU3LDXDFBZ2CS2GFL42DIT7RSZCBCAHAC
KHTFSYAUXAHB64ZLJB5X47OFZYW3O3RSZFJRBBV73WTXKU3S4YXAC
EHSDV6CTQRTUCXISCWCL32DDHLNENVUWOK6LL3B5NDW56QVYDNJQC
AJDJ3SWTKZTATEZKSYEL7HT2H6CBAXO52LCFBP6Q2X5RPXX3Z3IAC
2534RME66Q5DGMUO5DK3TVQBAJ46UX2M64VE3BYSPXI6ECEF2HHAC
GVX7YSQYURPWFSUWVUAORZJTQBJURWWNBNUGEZYFAUMX3X5LSACQC
FSQ7OI4M7DRTLNCLZMPVNMMOMRD2HHF3TGN2RTURPNIEHNLHA24QC
4IBBQBYGBZDCXQO5C7H6UTWT67YJUJ7R6FH6UNHX4QGXOO47UUBQC
KCUJIKQ6POLGKI26YHZWTD242B7JOSGI4VO4XBSKAU66ARM3EIBQC
AHABKD5VEK5RSTM3CME4XJAHCVTHYV2D2WAWUGSJ6PBUCUI7CB3AC
TWOCOTZPRAI2JQH6QY2ZBUZGYA53G7MCOSO64LBIO7OCVEHK7AGQC
M7UODV5HDRZKAS3BKGLNU5Z5HM4KZDM4QIB2S3E6S7NAWGJY3MJAC
OTIBCAUJ3KDQJLVDN3A536DLZGNRYMGJLORZVR3WLCGXGO6UGO6AC
VVGWHJBZY63JKJC4M67MYDTVRRI4D5NB2TDB7AXMKPWOXJZXPYZQC
FS2ITYYHBLFT66YUC3ENPFYI2HOYHOVEPQIN7NQR6KF5MEK4NKZAC
XSES5SXX3CAQ5QP5ZOSLQUNFMYADU6T5DBWHVZ26MLVQKGN2Y7UAC
Q4WRCUWDSTOHWEOYYKKAIQW24HS2J5T5FKXOE5EJUWXHJREUM2FQC
MD3W5IRAC6UQALQE4LJC52VQNDO3I3HXF3XE2XHDABXBYJBUVAXQC
WKJYU3EPP6SUJ4QKHCXEYNKPTWIVF6Z2GJT5B5VERJMNGBELDECAC
ZT6T2H7NXZYHEZA7OJTA24AXYIOWEDCN2IBGTGHCKXOB2N47XVYAC
UOGZZY3LDQMFV5225YHIOQLKY4443TBYFIA6AWB7TGUUZWRIHEYQC
4VUVVW6JTJU63US5YQPERLU7RREWDJCTGCKICLQVVASIAYQAO4ZQC
2DVVKKVA6PJ7VKYLGPQ22AXUB6ZWFMPWB445PRDZJDNLURUFDNDQC
EZHO4TSWIYYUE73S6XQWIEF3HA3H7MKCNJOT27NTWTVSPVS2SL5QC
D4FEFHQCSILZFQ5VLWNXAIRZNUMCDNGJSM4UJ6T6FDMMIWYRYILQC
QKKVI7UOAPUA6NKCDPM4BHPGDOQ5NHC66WSDB3WDDSRJHANNRB4AC
WHFOJBAEZOJX3AF4ZCMCUFELSBMKMBZ374WXJVHBMLE7T6D6OZ3QC
AM2DMSI5AW4WCCBSZIV23WUETPCDSKBGP542R5X2YSQRIBYBUHYAC
3EQAFUFNRXBPAE5PYP36NNWFE4EESGOBTMFY3UNQV2EPHHP3PLUQC
local stop_app_label = 'edit'
button(ui_state, stop_app_label, {x=5, y=Safe_height-10-Line_height-10,
w=5+App.width(stop_app_label)+5, h=5+Line_height+5,
bg=Menu_background,
icon = function(p)
App.color(Normal_color)
rect('line', p.x,p.y, p.w,p.h)
g.print(stop_app_label, p.x+5, p.y+5)
end,
onpress1 = stop_app,
})
It comes bundled with a few optional goodies:
* Support for tap-to-pan and pinch-to-zoom gestures over an infinite 2D
surface for arbitrary graphics and UI.
* A tiny widget library for quickly creating arbitrary UI elements.
[Here's an example of the kinds of things you can add to the global variable `widgets`.](https://akkartik.itch.io/carousel/devlog/665231/a-sprite-editor-in-100-lines-of-code)
* A typographic scale for scaling the font size of text in visually pleasing
increments.
In early release; please report issues, particularly with usability or
accessibility.
You can edit the app and UI right on your device. However, there are some
gotchas to be aware of when editing such apps on a phone:
In early release; please report issues, particularly with usability or
accessibility.
* If you upgrade LÖVE you lose all your local apps and their saved settings.
This includes code changes. It's hard to get code changes out due to mobile
restrictions. I can't come up with an alternative to copy-paste. This
imposes a strict limit on the number of changes I'm willing to make to a
large app on my phone.
* If you upgrade such apps after making local changes to them, you might see
strange errors. Local changes are written to an overlay directory, whereas
upgrades modify the app in place. The two locations create lots of
opportunity for conflicts to arise.
To mitigate this issue, such apps by default list local changes in the
output editor every time they run. That will hopefully act as a reminder.
There's also some helpers for deleting local changes in the 'scratch' page.
* If you upgrade LÖVE you lose all your local apps and their saved settings.
This includes code changes. It's hard to get code changes out due to mobile
restrictions. I can't come up with an alternative to copy-paste. This
imposes a strict limit on the number of changes I'm willing to make to a
large app on my phone.
* If you upgrade such apps after making local changes to them, you might see
strange errors. Local changes are written to an overlay directory, whereas
upgrades modify the app in place. The two locations create lots of
opportunity for conflicts to arise.
You can also modify the editing environment itself, or repurpose it for a
different app entirely, live as it runs. This requires running it on a
computer, but is much more reliable. Download [the driver app](https://git.sr.ht/~akkartik/driver.love).
Here's an example session showing the driver (left window) editing a different
app (right window containing yellow text):
Its immediate upstream is [Lua Carousel, a lightweight cross-platform
environment for creating little throwaway scripts on a computer or
phone](https://git.sr.ht/~akkartik/carousel.love). Updates to it can be
downloaded from the following mirrors:
* https://git.sr.ht/~akkartik/template-carousel-mobile
* https://tildegit.org/akkartik/template-carousel-mobile
* https://git.merveilles.town/akkartik/template-carousel-mobile
* https://nest.pijul.com/akkartik/template-carousel-mobile (using the Pijul version control system)