Limerino

Limerino 1.1.2 — Landscape layouts, honest sending, and 7TV

Released · App Store build 329

What’s new in 1.1.2

Landscape is rebuilt around a chat layout you pick, every message you send says where it actually got to, and the composer can hold a line and post it again and again.

Landscape, your way. Turn the phone and chat has a layout of its own: Settings › Video › Chat layout, or the menu in the landscape top bar. Chat beside video, the default, gives chat its own column next to the picture; the divider drags to set the split, and the video always keeps its share of the screen. Chat over video floats chat above a full-width picture as small plates that hug the text, with the stream itself between the lines. One tap hides chat entirely in either layout, and your choice, your width and the hidden state all survive rotations and relaunches. The resize bar now responds exactly where it is drawn, scrolls chat when you drag it up or down, and VoiceOver can resize the panel and hear its width.

Sending that tells the truth. Your message appears the moment you send it rather than after Twitch answers, and the box is free for the next one straight away. Each message shows where it got to — on its way, accepted, failed, or held for review — with a refusal quoted in Twitch’s own words instead of quietly vanishing. A failed message keeps your words, so Retry sends it again and Discard hands the text back. Sending pulls the list down to your own line, and an opt-in note above the box tells you when a channel is followers-only, in slow mode, or emote-only before you try.

Hold Send, repeat a line. Type something and press and hold Send for about half a second: a ring charges, the line clicks into place, and every tap of Send posts it again. An X at the left of the box unlocks and clears in one motion, and switching channels or starting a reply unlocks too, keeping your text as an ordinary draft. The message-options menu carries an untimed Lock message row for anyone who cannot comfortably press and hold, and VoiceOver gets lock and unlock as actions on the Send button.

7TV, end to end. Link a 7TV account and manage emote sets for your own channel and any channel you edit: search the directory, add, rename, remove, and undo. Choose your name paint from a rebuilt wardrobe that opens instantly and previews each paint with your own name. Add an emote straight from the peek card in chat, search all of 7TV without leaving your message, and read a quiet line in chat when a channel’s emotes change. A 7TV emote link now renders as a card with the emote, its name and its artist.

Chat that knows people. The profile card reads identity, then history, then relationship, then actions, with an account-age caption and Report and Block in plain sight. A chatter with a localized display name shows both names, in Twitch’s own order. Long-pressing a message opens a compact platter instead of a screen-tall list, and moderators get AutoMod-held messages in chat with the flagged text quoted and Allow and Deny on the row.

Settings you can navigate. The rules-and-lists tail of Settings is now three sections named for what they do, search reaches dozens of new places, and About holds “How Limerino works”: what the app does, a gesture reference, and every slash command grouped by who can run it. Muted phrases get their own whole-word and match-case switches and now cover emotes and cheermotes. The Highlights inbox is one tap from the rules that fill it.

Also. Favorites in the emote picker. Message separators. Recent custom name colors. A typeface choice and named color palettes. Live viewer counts on channel rows. Asking Siri to watch a channel.

Plus three performance passes and a long run of repairs across chat, emotes, sign-in, video and accessibility, most of them reported by people using the app.

In more detail

Landscape, in detail. It arrived in two steps. The first put the video full-width with chat floating over it as a translucent panel: drag its inner edge to make it wider or narrower, hide it from the player controls when you want the picture alone, and it remembers your width and whether it was hidden across rotations, channel changes and relaunches. The second made the arrangement a choice, and made the default the one that never covers the picture. Chat beside video gives chat a column of its own, with a divider that sets the split and a floor under the video’s share of the screen. Chat over video keeps the floating panel and makes it genuinely transparent: each message carries its own small plate that hugs the text, and the space between lines is live video rather than an edge-to-edge dark band. Switching between the two is instant — chat keeps its place and a half-typed message survives the switch. Portrait is untouched by all of it.

The chat resize bar, rebuilt. Its invisible reach used to spill past the drawn edge into your chat rows, so a swipe meant for a message could start resizing the panel instead, and the far side of the bar had a dead strip that ignored you entirely. The area that responds is now exactly the bar you can see, and dragging up and down on it scrolls chat the way it does anywhere else in the panel. VoiceOver treats it as one labelled control that reads out its width, adjusts with a swipe, stops at the narrowest width instead of hiding the panel out from under you, and steps out of the way when the keyboard covers the space it belongs in. The mentions and overflow buttons moved into the landscape top bar, giving chat rows back the space they used to float over, and usernames, links, body text and the panel’s own edge were each checked against the hardest frame a stream can put behind them, on every theme and every step of the transparency slider.

Sending, in detail. Until now the app waited for Twitch to answer before putting your message on screen: a blink on a good connection, seconds on a bad one, and your message simply was not there yet. It appears immediately now and the wire catches up behind it, and the composer no longer freezes while a message is going out. A send that cannot get through fails fast with a clear error instead of hanging the box, and a failed send no longer consumes a rate-limit slot. One related repair: Twitch drops the reply thread when the parent message has been removed, so replies to timed-out or banned rows used to go out as plain messages. Reply is withheld there now, and if a message is removed while you have a reply armed, the banner clears and says why.

7TV, in detail. Connect a 7TV account in Settings and a consent page explains exactly what is shared before anything happens. That page also stopped promising a one-tap approval it could not keep: Twitch’s approval page honors a different sign-in than the video player does, and the app was reading the wrong one, so it now checks the credential Twitch actually honors and says up front when a sign-in will be needed. The app then lists every channel where you hold editor rights. Open one to search the directory, add emotes, rename them, remove them, and undo a removal while the receipt is still showing. Every screen says plainly why a control is unavailable — an expired session points at reconnecting, a revoked editor role says so, and a full set says it is full.

7TV, from inside chat. Tapping a 7TV emote opens the usual peek card, and where you hold editor rights for the channel you are watching the card offers “Add to” with the exact set named; a small confirmation shows the emote, the set, the channel and the name it will keep, and says so instead of sending a duplicate when the set already holds that emote under another name. The composer’s emote menu carries a door into the full public 7TV directory with your typed search carried along, and the strip under the search field names the set and the channel an add will land in, counts the slots in use, and lets you switch targets when you edit more than one channel. Without a connected account the directory is browse-only: search works, every cell explains itself, and a visible report control sits on each emote rather than hiding behind a long press.

Name paints, rebuilt around your wardrobe. Profile › Name paint opens a hero card previewing the paint you are wearing, your paints in two columns on collapsible shelves, a rule of swatches under each card drawing that paint’s true colors, and search docked at the bottom with an Animated filter beside it — and a search always outranks a folded shelf, so a paint you own can never hide from you. The wardrobe is kept on your device, so a cold launch shows it at once while it quietly re-checks with 7TV behind you, and your Twitch name color renders correctly in every preview. A change lands on 7TV itself, so it follows your name everywhere 7TV paints are drawn; a refused or failed change puts the previous paint back and says why, and a paint you own but cannot currently wear explains itself instead of failing silently.

Emotes that keep up with the channel. When a channel’s 7TV emotes change while you have it open, chat says so: a quiet system line names what was added, removed or renamed — up to five names, then a count — or one line when the channel swaps its whole active set, with the emote list refreshing on its own. Only changes that actually took effect are shown, and it lives under Settings › Emote providers › Show emote changes in chat, on by default. A 7tv.app emote link now renders an inline card with the emote, its name and its artist, and if the emote cannot be shown the link stays an ordinary link and opens the web rather than becoming a dead tap. A silently dead 7TV event socket is also detected and reconnected, so live emote updates cannot quietly stop for the rest of a long session.

Chat that knows people, in detail. The chatter card reads identity, then history, then relationship, then actions: Copy username, Highlight, Mute notifications and Videos & Clips move into a ••• menu, Report and Block stay as visible rows under Safety, Highlight and Mute are real toggles, and the hero gains an account-age caption. A chatter with a Korean, Japanese, Chinese, Arabic or other localized display name renders as both names in Twitch’s own order — in chat rows, in the reply strip, and to VoiceOver alike — with Settings › Chat display › Username style to choose one or both. Long-pressing a message used to raise a screen-tall list that could push its own Cancel out of reach for moderators; it is a compact platter now, opening at about half the screen with who said it and what they said up top, quick actions in a chip rail, then message and moderation groups. Moderators also see AutoMod-held messages right in chat, with the flagged text quoted, Allow and Deny on the row, and honest captions when the connection degrades or another moderator gets there first.

Settings you can navigate, in detail. The rules-and-lists tail of Settings is three sections named for what they do — What you see, What you send, Moderation — each row carrying a one-line caption and a count, in place of five single-purpose sections. The Rules screen is now “Blocked users & muted phrases”, so the row, the title bar and search finally say the same thing, and the whisper switch moved to Activity alerts beside the alert types it governs. The root screen regroups into collapsible sections with live readouts and gains a “Changed from default” review with per-row reset, chat look presets, and rule-entry search; the Mention alerts screen folds its followed-channels list, hundreds of rows for some people, into a collapsed, summarized, searchable group.

A guide that stays, and search that finds it. Under About, “How Limerino works” describes what the app does with rows that take you straight to the setting they describe, a gesture reference for chat, the header, the composer and lists, and every slash command grouped by who can run it. /help points at it. Search goes deeper too: roughly 28 new aliases reach inside Mention alerts, Activity alerts, Image uploads and the profile screens, a result for a dimmed control says what it needs instead of naming the wrong switch, and tapping the field before you type offers eight suggestions. The Highlights inbox carries a Custom highlights button straight to the rules that fill it, where the old trip was four steps through a long form.

Chat that says what it is doing. Opening a channel used to show one line — “Waiting for chat” — whether recent messages were still being fetched or the channel was genuinely quiet. There are two states now: a spinner over “Loading chat” while the fetch is running, and “No messages yet” once it has settled with nothing to show. The stream-info banner could also sit on “Checking…” long after chat was flowing, and two separate causes were found and closed: a timing window while the chat screen wires itself up, where an answer arriving in exactly that moment had nobody listening, and a cold-launch path where the status check started before sign-in had finished validating, failed quietly, then sat out a 60-second pause with nothing to tell it sign-in was done. Status answers now carry an ordering stamp, so a slow older answer can never overwrite a newer one, and with VoiceOver the moment a channel’s status first resolves is announced rather than only shown.

Muted phrases reach further. A muted term set to obscure used to catch only text — an emote spelling the same thing walked straight through. Emotes, emote stacks and cheermotes matching an obscured term now render as the same discreet pill your muted text gets, a masked emote is never fetched or animated, and VoiceOver reads the mask instead of the hidden content. Each phrase also has its own Whole word only and Match case switches now, so LIVE can mute exactly LIVE without taking alive with it.

The three performance passes. None of them was meant to be visible. The first two took the wins that were there to take: cold launch reads settings once, hydrates whispers and inboxes in parallel, and restores your channel tabs in one batch; chat scrolling proves a repeated frame unchanged from a version stamp instead of rescanning the whole buffer; blocked-user filtering probes a precomputed index instead of walking your whole list for every message; and the readability check that keeps name paints legible against every row background stops measuring the moment it has its answer. The third went narrower and stricter: each change shipped only because it measured faster while producing exactly the same output, and each is pinned by a test that compares the new code against a verbatim copy of the old. Two changes you may actually notice: emotes now appear per provider as each one answers, so a slow provider no longer holds back the rest and a failed one keeps what you already had and retries on its own when the network recovers; and animated emotes cost much less, because frames are reduced to the rate chat actually draws at before the images are built rather than after.

Smaller additions. Message separators draw a hairline rule between chat rows, the companion to alternating row backgrounds, off by default. A custom hex color Twitch accepts is kept under Recent custom colors in Profile › Chat color: six of them, newest first, each removable, with the fifteen named colors keeping their permanent swatches above. Touch and hold any emote in the picker to pin it, and favorites get their own section above Recently Used with their own rail chip. Settings › Appearance gains a typeface choice and named color palettes, every palette contrast-checked as it loads so one that would make text hard to read cannot be selected at all. Channel switcher rows show live viewer counts. And you can ask Siri to watch a channel by name; Spotlight offers it too.

A wave of smaller fixes, most from user reports.

  • A long badge run no longer draws a black bar: the “+N” chip for badges that do not fit was laid out with no room for its own label, and so was any badge whose image failed to load.
  • The message box grows again when you pick an emote from the suggestions, and scrolls once it reaches its cap, so a long line can no longer become unreachable.
  • Autocomplete leaves nothing behind: accepting a suggestion clears the whole predicted run, autocorrect’s tail included, and nothing the app inserts on its own ever touches text you typed.
  • Combined 7TV emotes no longer split into side-by-side emotes mid-session when a live set update reclassifies them.
  • Whispers render 7TV, BetterTTV and FrankerFaceZ emotes as artwork instead of codes.
  • Emote-only mode no longer floods chat when you reopen the app: Twitch attaches no identity or time to those lines, so every reconnect was stamping a fresh copy of each.
  • A failed history load says “Couldn’t load recent messages” instead of the confident “No messages yet”, and a channel’s first connection reads “Connecting…” rather than claiming a lost one.
  • An @mention that arrived while you were away no longer vanishes from the Mentions inbox.
  • Twitch emotes granted outside a channel’s sets — hype-train rewards among them — animate instead of painting a single frozen frame.
  • Signing out is quicker, and always clears the Twitch web session: it could hang on an unresponsive part of the system, and that hang skipped the step that removes the cookie.
  • Case-sensitive autocomplete is labelled with what it actually does, shown in the settings summary, findable by searching the words you would really use, and reported in diagnostics.
  • A Hebrew or Arabic display name keeps its colon on the correct side, in chat rows, /me lines and reply strips alike.
  • Reduce Motion no longer silently vetoes the in-app “Animate emotes and name colors” toggle, while interface motion still honors Reduce Motion everywhere.
  • Every on-black glass control in the video overlays sharpens its edge under Increase Contrast; seven of eleven previously did not.

iPad is still iPhone-scaled.