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 2Dsurface 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 pleasingincrements.
In early release; please report issues, particularly with usability oraccessibility.
You can edit the app and UI right on your device. However, there are somegotchas to be aware of when editing such apps on a phone:In early release; please report issues, particularly with usability oraccessibility.* 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 mobilerestrictions. I can't come up with an alternative to copy-paste. Thisimposes a strict limit on the number of changes I'm willing to make to alarge app on my phone.* If you upgrade such apps after making local changes to them, you might seestrange errors. Local changes are written to an overlay directory, whereasupgrades modify the app in place. The two locations create lots ofopportunity for conflicts to arise.To mitigate this issue, such apps by default list local changes in theoutput 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 mobilerestrictions. I can't come up with an alternative to copy-paste. Thisimposes a strict limit on the number of changes I'm willing to make to alarge app on my phone.* If you upgrade such apps after making local changes to them, you might seestrange errors. Local changes are written to an overlay directory, whereasupgrades modify the app in place. The two locations create lots ofopportunity for conflicts to arise.
You can also modify the editing environment itself, or repurpose it for adifferent app entirely, live as it runs. This requires running it on acomputer, 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 differentapp (right window containing yellow text):
Its immediate upstream is [Lua Carousel, a lightweight cross-platformenvironment for creating little throwaway scripts on a computer orphone](https://git.sr.ht/~akkartik/carousel.love). Updates to it can bedownloaded 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)