BlowTorch 2

com.resurrection.blowtorch2
by Zapstore _@zapstore.dev

BlowTorch 2 — a versatile mobile MUD client

Republished from GitHub / F-Droid by the Zapstore main account.

The good BlowTorch client is back! Now more stable, with more functions. This app connects you to a MUD: a multiplayer text game over telnet. Add a host and port, connect, and you are in. If you don't know where to look for MUDs, try these sites: [MudStats](https://www.mudstats.com/) [MudVerse](https://www.mudverse.com/) [The Mud Connector](https://www.mudconnect.com/) Menus, settings, and Help are in English. Daily play needs little of the toolkit; when you want more, open Help in the app or the [user guide on GitHub](https://github.com/Taracair/BlowTorch2/blob/main/docs/user-manual.md). Everyday play (some options might need to be turned on): • On-screen buttons that send commands • Suggestions from the text on the screen • Stay connected with the screen off; the notification shows how long you have been on • Growable input bar, search in scrollback, two-finger copy • ANSI colours, optional session log, in-app Help When you want more: • Eight-way swipe, hold, and accordion (MORE) on a button; swap a set with a loadset • Telnet plus GMCP, MCP, MXP, MSDP, MSSP, MCCP, MTTS; ANSI, 256-colour, truecolour, OSC 8 links • Triggers, aliases, timers, and Lua plugins • Extra text windows, a chat drawer, tappable words • HP bars, rings, and countdowns • Mapper (experimental), speedwalks, per-world settings • A trigger or timer can read a line aloud No ads, no analytics, no BlowTorch cloud account. Connects only to hosts you add. The F-Droid build does not contact GitHub on start. Lua plugins run with the app's privileges, so only load ones you trust. "All files access" is optional — settings, backups, and logs can live in /BlowTorch/. You can refuse it and still play; import and export use the system file picker. [Details](https://github.com/Taracair/BlowTorch2/blob/main/docs/FDROID_README.md) Original BlowTorch: Daniel Block / Offset Null Entertainment (MIT). Unofficial fork and continuation. Back up your settings before upgrading. [Source, issues, and suggestions](https://github.com/Taracair/BlowTorch2)

First release: Sep 11, 2026, 7 total releases.

Most recent release: Oct 25, 2026.

Repo

Appears in 0 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Oct 25, 2026 2.4.9
    ## New Features - **Hold a recent-command chip to read the whole command.** The bar still cuts each chip at the saved length. Holding one shows the full text above it, on the same rounded plate as a tappable-word menu. Slide onto the next chip and the preview follows. Lift sends that command. A second finger anywhere else dismisses the preview and sends nothing. A short tap still sends. - **`.icon set LOOK marks/sword`** changes that button's picture. `.icon set LOOK sword.png` uses a file by name from the folder you pick with `.icon folder` (Options → Button → Icon folder). A slash and an image extension is a file in a subfolder: `.icon set LOOK portrait/knight.png`. `.icon list files` shows those subfolders. A slash without an image extension is still a built-in set. A tile with no words is `.icon set b12`; `b12` is the grey id beside Name on Advanced. `.icon set LOOK held wards/lock` is the picture under your finger, and `held darken` darkens the main picture instead. `.icon set LOOK flip relics/mask` is the picture after a flip; `flip same` keeps the main one. `.icon set LOOK off` clears the main picture. `.icon list` names the built-in pictures. - **Button opacity and label opacity are separate.** Label opacity is under Label on Advanced, including when several buttons are selected. A button that already faded everything together keeps that fade on the pad and the icon; the words use the label colour's transparency until you set Label opacity. - **`.login` and `.password`** send the login or password stored for this world in the launcher (long-press the world → Edit). No argument is the first account; a number or the account's label picks another. An alias can be `signin` → `.login;.wait 2s;.password`. `connect .login .password` sends both in one line, and the window shows the password as asterisks. The password is not written to the session log, and aliases do not rewrite it. `.accounts` lists number, label, and login. Passwords are never printed. - **`.wait 5s silent` and `.widget set mob 30 100 silent`** hide the confirmation line. Errors still print. `.widget create` is the same as add, and a bar that is already there is kept. - **The mapper can build the map from game text** on worlds without GMCP. Options → Mapper → Capture Room ID Regex: a matching line opens a room, the title and exits regexes fill it, and it is mapped the same way as a GMCP room. In the exits regex, a group named `exits` is the list, and an optional group named `move` is the way the server says you came. A room reached by `up` goes on the floor above, and `down` on the floor below, in the same cell when it is free; the floor is created if there is none. `.map capture preview` says whether that id regex matched, is empty, or is invalid. When the id is not in the last 20 lines, it says why: the id the mapper did catch (the line is gagged or scrolled away), or the lines just before an exits line with no room id open. It explains only the latest of those. Its last line is the room the map stored (id, title, exits, the way you came), or that the room was not put on the map (Room Sync policy Follow). Help → Mapper starts with which of the three ways fits your world (GMCP, room ids in the text, Record). Leave Record off: the id lines draw the map on their own. - **`.map shift east`** (Edit) moves every room on this floor east of where you stand one cell east, so a free column opens next to you on a map that does not fit the grid. Other floors stay put. `west`, `north`, `south` and diagonals work the same; `.map shift south 2` moves two cells; `.map undo` puts them back. Rooms with a locked position move too, and the message says how many. - **`.map route drawbridge`** sends `drawbridge` and tells the mapper it is a move: when a new room id arrives within 4 seconds, the two rooms are linked by it. For worlds whose room text names no move for special exits. Nothing is drawn if you do not get through. It needs its own line (not `n;.map route drawbridge`), and any other command sent before the next room cancels it. Aliases do not run on it again, so an alias or button `drawbridge` → `.map route drawbridge` is fine. - **`.simulate <text>`** feeds text in as if the game sent it: triggers, gauges and the mapper react, and nothing is sent to the MUD. `\n` starts a new line, e.g. `.simulate @roomid a1\n@dir north, south`. `.note` only prints; triggers do not see it. Write `;;` for a `;` in the text; it needs a connection (the offline tutorial counts) and says so when there is none.
    More…
    - **`.walk` is a speedwalk of any commands, without direction letters.** Every step is a count and the command as written, and the command ends at the next digit: `.walk 1ne1sw2e3nw` sends `ne;sw;e;e;nw;nw;nw` and `.walk 1nw1climb vine2s` sends `nw;climb vine;s;s`. `.walk back` walks that string in reverse. The way back is the Reverse on that command's Speedwalk Directions row, otherwise the compass opposite, otherwise the command as written, so `.walk back 1nw1climb vine2s` sends `n;n;climb vine;se`. `<climb vine|down>` before the path names a way back on the spot: `.walk back <climb vine|down> 1nw1climb vine2s` sends `n;n;down;se`. `.run` and `.rev` are unchanged. - **`.map room <id>` lets a trigger or a Lua script name the room you are in,** for worlds whose text has no id line a regex can read. Put `.map room $1` in a trigger's Send action, or call `SendToServer(".map room " .. id)` from Lua. The room is placed by the move you typed, found again by that id, and linked like an id line. Exits and a title can follow: `.map room $1 | north,south | Temple Square`. The id is everything before the first `|`, so it may contain spaces. No Capture Room ID Regex is needed. Use this or a Capture Room ID Regex, one of them: each takes the move you typed, so a second one has no move left. The trigger has to fire in every room. If the mapper is off, or the id is empty, it says so once. ## Fixed - **Game text sits in the gaps between buttons.** `.avoidbuttons between` (Options → Window → Text → Avoid buttons → Flow) puts letters in the left strip and in each gap, and does not run them off the right edge when buttons sit on both sides. What does not fit on that row is dropped. If the line does not fit beside the buttons, `.width` over 100 widens the canvas and you drag sideways. - **`.widget remove mob` when that bar is already gone** prints `No widget mob to remove.` and is not an error, so a death trigger can drop it every time. `silent` hides that line too. - **Mapping from game text no longer points you at Record.** Turning Record on while Capture Room ID Regex is set says it is not needed and how to turn it off, and Record by Default says so once in the game window. On your first map, *How do you want to map?* offers *Room ids in the game text*, which switches to Edit and leaves Record off. **Name** works with text mapping and no longer asks for Record. The Record by Default, Level-Up/Down and Capture Room ID Regex descriptions say the same. Record also draws a room for a move that failed (a wall, a guard). To link rooms only where you walked, turn off Create missing exit neighbors (Options → Mapper → Configure Room Sync…). - **When a new room cannot go where you walked,** the mapper says so in the game window: which way you went, from where, what is in the way, and that `.map shift` on its own (Edit) moves the rooms beyond one cell and puts the new room in the gap. It works until the next new room is drawn. - **Deleting a server from the launcher asks you to type its name first,** so one stray tap in the long-press menu no longer removes it. Delete stays off until the name matches. A trailing space is ignored, and the keyboard does not offer suggestions in that box. - **The map's Nav, Floors, Edit, Map and View menus fill the map window,** so they grow and shrink with it. In a small window the labels shrink to fit their slice, so the Edit menu's labels no longer overlap. - **In Gesture mode, an empty direction no longer scrolls until you turn it on.** *A direction with no command scrolls with that finger* stays off (⋮ → Gesture mode, or Options → Gestures). In Two fingers, an empty direction then scrolls with the finger that moved. - **Browse mode drew new rooms** from GMCP and from room ids in the game text, although Browse is meant to be view-only. In Browse the marker now follows you through rooms already on the map and nothing on the map changes; a room that is not on the map yet is not drawn, and the game window says once: "the map is in Browse mode, so new rooms are not drawn. Switch to Edit to draw." The "How do you want to map?" GMCP choice now switches to Edit, like the other choices. Browse/Edit is not saved, so GMCP players switch to Edit once per session. - **With Keep Last on, the command you just sent kept showing word suggestions** (the ghost and the panel) as if you were still typing it. Suggestions now wait until you change the line. - **The map marker jumped back when you walked quickly through rooms already on the map.** With Follow on, typing `e` eight times moved the marker eight rooms at once; then the first room line from the game pulled it back to the first room and the following ones walked it forward again. Rooms the game sends for steps the marker already took no longer move it. If a move fails halfway and the game goes quiet for 4 seconds, the marker goes back to the last room the game confirmed. - **The map kept a guessed (dashed) link** even after you walked that exit and ended up somewhere else: going east from West wall into Main Hall left the dashed east link pointing at Gatehouse, the room that happened to be east on the map, and Main Hall got no link. When the game names the move (the `move` group in the exits regex) or you used `.map route`, walking an exit now replaces a dashed link with a solid one to where you really arrived. A move you only typed does not (a failed move and then a flee would re-aim a correct link), and a link someone already walked is never replaced. With Record on, this also closes the loop back into a room you already knew, which used to be lost. - **A GMCP room with no `z`, reached by `up` or `down`, was drawn on the same floor as a special exit.** `up` now goes to the floor above and `down` to the floor below, in the same cell when it is free, and the floor is created if there is none. - **`.map capture preview` and `.map capture apply` were matching the oldest lines in the scrollback.** They now use the newest 20. The room id and exits come from the newest match in that window, and the title comes from the lines after that id, so the room you just left is not shown in place of the one you are in. Name reads the newest 40. - **The map's Capture dialog wrote "(bad title regex)" as the room name** when the title regex was invalid and you pressed Done. It now only shows that message. Done also uses the regexes as they are in the boxes now, not the last Preview, and says "Nothing matched; nothing applied" and stays open instead of claiming it applied. - **`.map capture apply` could write the previous room's name** onto the room you are in, wrote a preview from before your last move, and overwrote a locked title. It now reads the lines again, takes the title from the newest room, and keeps a locked title. - **`.map capture preview`, `.map capture apply`, and Name said "no match" on lines that were on screen:** the scrollback keeps colour and timestamp codes at the start of each game line, so a regex starting with `^` never matched. Those codes are now removed before matching. - **Walking through an exit that already led to a room with no id now fills that room.** It used to stack a second room on it, unlinked. The same applies when GMCP sends a room without exit destination ids. ## Notes - versionCode **269** / versionName **2.4.9**
  • Oct 16, 2026 2.4.8
    ## New Features - **Custom icons as buttons.** Edit a button and open Advanced. Tap the icon tile. The picture replaces the colored pad. The sets along the top are Marks, Signals, Relics, Wards, Embers, and Voyage. Choose image file uses a PNG, JPEG, or SVG from the phone. Magenta, and a transparent PNG, leave the game showing through. While held is the picture under your finger. Darken keeps the same picture, darker. When flipped is the picture after a flip. Same icon keeps the main picture. Show label off hides the words when a picture actually drew. A file over 2 MB is refused. While you aim a swipe, the held picture and the flip picture stay off. The direction arrow is the only extra mark. - **Button labels can use their own font.** Options → Button sets the font, bold or italic, and where the words sit, for every button that does not pick its own. On one button, Advanced → Change opens that list. Choose font file uses a .ttf or .otf. Bold on a file stays that file. A label that starts with {font:bold} uses that face for this label only. The braces are not shown. The Label and Flip label boxes use that font, so you can see the character while you type it. - **Avoidbuttons per button.** Game text avoids this button starts off. Turn it on, press Done, and leave the button screen. That button is a hole even when Text avoids on-screen buttons is off. Game text draws under this button is the other way: text paints through that one button even when the window switch is on. The two cannot both be on. Letters and Words are the same choice as .avoidbuttons letters and .avoidbuttons words. Extra margin adds pixels around that hole, on top of .avoidbuttons margin. - **One Opacity for the whole button.** On Advanced, drag Opacity. It fades the colored pad, the icon, and the label together. The colour picker sets the colour only. Until you drag Opacity, each colour keeps the transparency it already had. Select several buttons and one drag fades all of them. Until that drag, each button keeps its own. - **See the game while you edit buttons.** In the gear, Background opacity fades the dark veil. Lower it and the game text shows through. - **Change a setting directly from search results (under Options -> Search).** Type a word in Options search and tap the hit. The row still flashes. A checkbox or a number on that hit changes there. You do not have to open the page. ## Fixed
    More…
    - **Text around a button.** A small slide no longer leaves a blank character on the left, and the next letter no longer slides under the button. - **A gag on several lines.** A trigger that hides a block of lines no longer prints an error into the game window. The whole block is removed. Send to window forwards those lines in the order they arrived. - **Triggers in one burst.** Lines that arrive together run from the top. On each line, the order number still decides which trigger runs. A line lower in the text no longer fires before a line above it. - **Copy and a fast flick.** One finger held down, the other flicked quickly, no longer opens the copy widget. A short two-finger tap still copies. - **A keepalive from the server.** It no longer shows up as a broken character at the start of the next line. Evennia based muds produced such errors. - **Colour after a replace.** A colour on words that a replace already changed paints the letters that are there. A longer replacement no longer cuts the line and paints the old text. - **Better font list.** Now it looks better. Yeah simple as that. ## Notes - If you want accordion button to have the new/custom icon, you have to pin it by selecting first button as the main button, and the second button as "Pin to" in the grid menu. That way you can pin any button and create the "Accordion" feature, just in a different way. - Text that sits behind a button on the right, and text between two buttons, is still swallowed by avoid-buttons. That is planned to change. - A command to change a button's icon is planned as well. Perhaps in the next release. - versionCode **268** / versionName **2.4.8**
  • Oct 8, 2026 2.4.7
    ## New Features - **Send the last command.** `.last` sends the newest thing you typed. `.2last` sends the one before it, `.3last` the one before that. You sent `north`, then `look`, then `inventory`: `.last` sends `inventory`. The word `.last` never goes to the game, so the next `.last` sends `inventory` again. `.last input` puts that line in the bar and waits, so you can change it before Send. - **Recent commands, three ways.** `.lastlist` opens a window of this world's commands, newest first. Tap a row and it is sent. `.lastfloat` shows the same commands as chips over the game, as see-through as suggestion chips. Drag the grip to move them. `.lastfloat off` hides them. `.lastfloat 5` is how many chips. `.lastfloat length 12` is how many characters of each. `.lastbar 5` is a strip just above the input, with the 5 newest. It is off until you turn it on. Each world keeps its own list. Leave and come back, and the window is still where you left it. - **The unfinished line stays with the world.** You are typing `k gob` on one world, switch to another, and type `look` there. Come back and `k gob` is in the bar again, cursor included. Sending on one world does not clear the other. - **Suggestions in a window, and the first chip on the right.** `.suggest where list` opens a window, one suggestion per row. A tap puts that word in the bar and does not send it. `.suggest order right` puts chip 1 on the right. You type `gri` and the strip shows `2 grip`, then `1 grizzled`. - **A close miss names the real command.** `.triger` does not go to the game. The window says you meant `.trigger`. `.help triger` says the same. - **Pick a word, then edit the line.** `.pick insert` with `get ` in the bar and a tap on `iron` leaves `get iron ` in the bar. Nothing is sent until Send. `.pick hold insert` stays on, so the next tap adds the next word: `get iron ` then `helmet` becomes `get iron helmet `. - **A trigger from the words you selected.** Two fingers on the game text, then **New trigger** on the magnifier. The editor opens with that phrase already in the pattern, as a literal, so `$` and `.` stay characters. Nothing is saved until Done. - **Options are pages.** Window opens into Text, Layout, Links, and Input bar. Sound, Panes, Protocols, and Files are their own pages. Search still jumps to the row and flashes it. Saved settings keep their old names. - **A command by itself says what it is doing.** `.map record` prints whether recording is on. It does not flip. `.map record on` turns it on. `.editpanel` and `.fullscreen` work the same way. `.togglefullscreen` still flips, so an old button keeps working. `.chat close` closes chat and leaves it closed. A word the client does not know stays on the phone.
    More…
    - **The same windows.** Help and session logs fill the screen. Mapper, GMCP, MCP, extra windows, and gauges use the same dark window as the rest. **Close** leaves. **Done** saves. - **A quieter map.** View → Minimal hides the title bar, the tools bar, and the corner handle. The map keeps the opacity you set. A two-finger tap on the map brings them back. - **The same command, with a pause.** `#5/1s north` sends `north` five times, one second apart. `#5 north` is still all five at once. `.wait stop` cancels the copies that have not gone out yet. ## Fixed - **Heatmap brightness.** The button you use most is the brightest. One you have used 300 times stays dimmer than one you have used 500 times. The yellow count has a thin black edge, so you can read it on a bright tile. - **Suggestions sit a space away.** You type `k grzld` and see `k grzld [grizzled]`, with a space before the dimmed word. Suggestions on the same line are separated by a space. - **Scrolling while gestures are on.** A direction you left empty scrolls the text after the hold, and sends nothing. Two fingers can scroll even when one finger moves faster than the other. - **New trigger is the same button.** On the copy magnifier, New trigger is the same round button as Copy, swap, and close. - **`.help last` names the bar.** It says `.lastbar 5` is how many chips, and `.lastbar length 12` is how many characters of each. The Order control says First on the left, not 1. ## Notes - versionCode **267** / versionName **2.4.7**
  • Oct 3, 2026 2.4.6
    ## New Features - **Long words can be divided** in the input bar for clearer reading long input text. The input bar can break a long word with a hyphen. `.hyphen on`, or Options → Input → Hyphenate long words? Type `supercalifragilisticexpialidocious` twice. The first fits. The second shows `super-` at the end of the line and the rest underneath. A long word still breaks when the whole word would fit on the next line, if a piece fits on this line. The game receives both words whole, with no hyphen. Copy, history and suggestions keep the whole word. Off by default. It needs the input bar to grow (`.wrap`). `.hyphen lang en` is the default. `.hyphen lang phone` follows the phone when rules for that language are built in, and English otherwise. `.hyphen full on` (Options → Input → Hyphenate more often?) allows 2 letters before the hyphen. Off, the piece has to be at least 5 letters. A password line does not break. The break stays in the width already left of Edit and Send. - **Button heatmap.** `.heatmap` shows which buttons you actually use in this world. Type `.heatmap` and every tile is the same white, brighter where you have used it more. `.heatmap off` hides that. Counting continues in the background. `.heatmap reset` forgets this world's counts. - **Sensors** Options → Device → Sensors. A reading that already has a command gets the same power button as a trigger. The button at the top, or `.sensor all off`, silences every reading in this world. Other worlds are unchanged. - **My shakes - record your own shake gestures.** Records a movement by repeating it. Both strokes are drawn on one screen, and a slider sets how close a later shake must be. In this world, Use my shakes greys left, right, up and down, and letter patterns stay quiet. The shape stays on the phone. After you name it slash, `.sensor slash look` sends look. - **Shake directions.** Left, right, up and down use the same hardness as shake. `.sensor pat:lr look` sends look after a left shake and then a right one. The letters are l, r, u and d, from two to eight. The trigger stores `!pat:lr`. A phone without linear acceleration still only fires shake. - **Copy magnifier.** It has its own size and zoom. Open it with two fingers on the game text. Copy, swap and close sit on the rim of the disc. A slow drag follows your finger. A flick moves further. Set it with `.copy loupe size` and `.copy loupe zoom`, or Options → Window → Copy loupe. That is separate from `.pick loupe`. If `.width` is over 100, drag the magnifier to the edge to pan the wide canvas. - **Strip accents.** `.unaccent on`, or Options → Input → Strip accents when sending. You type `usiądź przy stole` and the game receives `usiadz przy stole`. Local echo shows the folded form. The input bar still shows what you typed. Off by default. - **Text around buttons.** `.avoidbuttons on`, or Options → Window → Text avoids on-screen buttons. Game text goes around the grid pad and floating buttons instead of drawing under them. Off by default. ASCII maps may (and WILL) break. `.avoidbuttons letters` breaks one character at a time and is the default. `.avoidbuttons words` keeps a whole word on one side of a button. Options → Window → Avoid-buttons break. - **Jump after send.** After you send a line, the window jumps to the newest text. That is already on and has been on default, but now you can turn it off. `.jumpsend off`, or Options → Window → Jump to the live edge when you send, leaves the scroll where it is. Incoming text near the live edge still snaps there.
    More…
    - **Gauge and the keyboard.** `.widget ime hp pin` keeps that gauge visible and stops it rising with the keyboard. Use the gauge's own id in place of hp. - **Next word.** After a space, the suggestion can be the word that last followed the one you just finished. You type `cave` and a space, and the client offers `troll`. This is on by default. `.suggest next off`, or Options → Input → Suggestions → Suggest the next word, turns it off. A name you are still typing still offers the whole phrase. - **Mark between suggestions.** `.suggest split on` draws a short mark between the dimmed suggestions on the same line, so two words stay apart. Off, they sit next to each other with a space and no mark. The little numbers stay. The ghost has to be on. Options → Input → Suggestions → Where they appear → Also split suggestions. Off by default. - **Two panes - split the main window in half.** `.split 40` shows the same game text in two panes that scroll on their own. The left or top pane gets that percent. `.split horizontal` or `.split h` is left and right 50%/50%. `.split vertical` or `.split v` is top and bottom 50%/50%. `.split off` is one pane again. This lasts for the session. Buttons stay on the primary pane. - **Notification stack.** Options → Service → Notification stack. One stack puts the connection, alerts and chat in one shade group. Separate bars gives each its own. With several worlds open, the world you are in decides. A trigger set to Spawn new stays on its own bar either way. - **Edit strip in landscape.** `.editrows on`, or Options → Window → Edit strip: two rows in landscape. Portrait stays one full-width row. Off by default. - **Room name.** While the mapper is recording, Nav → Name, or `.map name`, sets the room name from recent lines. It does not run on every step. - **Gestures on the main game window.** `.gesture` shows what is on. The default is `.gesture mode classic`. One finger scrolls, two fingers copy. `.gesture mode 1` sends a command on a one-finger swipe. `.gesture mode 2` sends a command on a two-finger swipe, and a short tap can still copy. `.gesture mode both` does both. `.gesture edit` sets the direction commands. Options → Input → Global gestures. Each choice in the picker has a one-line description under it. `.gesture show on` puts a label near the top-right. It names the mode, and in One finger and Both it also names the scrolling choice. Off by default, under Show the current mode. The choice is saved with the world. Leaving the world does not turn the label back on. - **Timer time left.** `.timer duration heal 50s` adds 50 seconds without changing the stored length. `2m` and `1h` work the same way. `.timer duration heal -50s` subtracts, and the time left does not go below 0. A bare number, `.timer duration heal 30`, sets the length and restarts from full. `.timer info heal` and `.timer duration heal` print the status in the game window. - **Group label.** More → Clear group label (keeps triggers) or (keeps timers) takes the name off without deleting the entries. All and (default) are not labels. Choosing them clears nothing and deletes nothing. - **Timer and window conditions.** A trigger or timer can wait on another timer, and on whether this window is in front. In the editor, Conditions. The other timer can need to exist, be running, or have time left below or above a number of seconds. The recent-apps list counts as not in front. ## Fixed - **Suggestion ghost.** Ghost suggestions no longer draw an arrow, and the first one sits against the text instead of after a gap. The little numbers stay. - **Suggestion tap.** Tapping a suggested word in the input bar no longer crashes. - **Where suggestions sit.** A suggestion sits on the rest of the current line. It wraps down only when that line is full, and the input bar stays above the keyboard. - **Colour sample.** The colour sample in the trigger editor stays put while the palette scrolls. - **Empty shake.** Done with no actions left deletes that existing shake trigger. - **Mapper note.** A mapper note of more than one line keeps its line breaks. - **Saving a gauge.** Saving a gauge does not restart a timer that is already running. - **Keyboard.** The keyboard stays open when a settings reload did not change the input bar. - **Menu button.** The ⋮ button follows the input bar when padding moves the bar and the bar's height does not change. ## Others - **Standard keyboard.** A new world starts with Standard keyboard input (IME fix) on, under Options → Input. A profile that never saved that option loads as on too. Turning it off is what gets saved. - **Command list.** `.help` lists every command. `.help word` shows the forms for names that contain that word. ⋮ → Help and the Starter Tutorial describe the same commands. - **Guide on GitHub.** The guide on GitHub has a contents list, and each chapter folds. The Help screen in the app shows the same text without that list. ## Notes - versionCode **266** / versionName **2.4.6**
  • Sep 16, 2026 2.4.5
  • Sep 14, 2026 2.4.4
  • Sep 11, 2026 2.4.3