<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/">
  <author>
    <name>Mario Lurig</name>
    <uri>https://trmnl.com</uri>
  </author>
  <author>
    <name>Ryan Kulp</name>
    <uri>https://trmnl.com</uri>
  </author>
  <category term="trmnl"
    label="TRMNL"/>
  <generator uri="https://trmnl.com"
    version="0.0.0">TRMNL</generator>
  <icon>https://trmnl.com/favicon.ico</icon>
  <id>https://trmnl.com/blog</id>
  <link href="https://trmnl.com/blog"
    rel="alternate"
    type="text/html"
    title="TRMNL: Blog (web)"/>
  <link href="https://trmnl.com/feeds/blog.xml"
    rel="self"
    type="application/atom+xml"
    title="TRMNL: Blog (feed)"/>
  <logo>https://trmnl.com/images/brand/icons/icon--brand.png</logo>
  <rights>Copyright 2026</rights>
  <subtitle>The latest site news and information.</subtitle>
  <title>TRMNL: Blog</title>
  <updated>2026-04-21T00:00:00+00:00</updated>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h2&gt;&lt;a href=&quot;https://trmnl.com/recipes/250879&quot;&gt;Today: Beautiful Date &amp;amp; Countdown&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Community member med created the &lt;a href=&quot;https://trmnl.com/recipes/250879&quot;&gt;Today: Beautiful Date &amp;amp; Countdown&lt;/a&gt; plugin; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;installing a date plugin on a TRMNL is almost a rite of passage. it’s one of the first things people reach for when they set up the device. if you’re going to look at something every single day, it makes sense today&#39;s date should be there. on a more personal level, i build because i&#39;m obsessed with UX. i can’t not refine things. so taking one of the most common, simplest plugins possible and rethinking it through a design-first lens felt great :) a date is a tiny problem, but it’s also a perfect opportunity for my obsession to bring value to the people.&lt;/p&gt;&lt;h3&gt;Why were you the person to make it?&lt;/h3&gt;&lt;p&gt;you have my obsession to thank (or blame) for that.i can&#39;t look at something every day and not want to have it just &lt;i&gt;&lt;em&gt;perfect&lt;/em&gt;&lt;/i&gt;, especially when it&#39;s simple. simplest things are the most dangerous sometimes; they&#39;re very easy to accept as good enough.&lt;/p&gt;&lt;h3&gt;&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;Were you inspired by any other recipes or plugin creators?&lt;/mark&gt;&lt;/h3&gt;&lt;p&gt;since this was my first plugin, i spent a lot of time looking at what was already out there. there are some really solid recipes and a lot of creative approaches. i didn’t want to reinvent the wheel, i just wanted to reinterpret it through my own design lens.after building it, i joined the discord and was honestly impressed by the level of talent and experimentation happening in the community. great job guys.&lt;/p&gt;&lt;h3&gt;What was your process for creating the plugin?&lt;/h3&gt;&lt;p&gt;my process for most things creative is to sit down and figure out in an extensive way what problem(s) am i trying to solve and what would be the ideal solution. real life then comes into play and you try to keep and minimize the delta between the ideal scenario and the actual implementation to a minimum. in this example, a big notion for me was context. more than seeing the date, i wanted to get a deeper level of understanding of the context with just one glance.&lt;/p&gt;&lt;h3&gt;What, if any, challenges did you face while creating it?&lt;/h3&gt;&lt;p&gt;it was honestly pretty straightforward thanks to the awesome &lt;a href=&quot;https://github.com/usetrmnl/trmnlp&quot;&gt;trmnlp&lt;/a&gt; tool. having live preview during development and being able to quickly switch between device sizes and settings removed almost all the friction from the process.when you have a clear idea of what you’re trying to build, having tooling that stays out of the way makes all the difference. it made the whole experience super pleasant from start to finish.&lt;/p&gt;&lt;h3&gt;Did you learn anything you want to apply to future recipes?&lt;/h3&gt;&lt;p&gt;the most important thing i&#39;ve taken from this plugin is the dark mode dotted-matrix aesthetic that i’ve already started incorporating into my other plugins. i now have a daily unix tip, weather glance, and a world map “been there” dashboard; all matching this same visual language. i think it fits the trmnl purpose incredibly well. the high contrast works beautifully on e-ink, the dotted grid feels native to the device, and the whole control-panel vibe matches the audience using it. it’s glanceable, structured, and low noise.and yes… i am absolutely crazed about it right now :)&lt;/p&gt;&lt;h3&gt;What is your favorite plugin that someone else created and why?&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://trmnl.com/recipes/152705&quot;&gt;paperboy&lt;/a&gt; is the prime example of a &lt;i&gt;&lt;em&gt;perfect&lt;/em&gt;&lt;/i&gt; plugin for me. super cool idea, extremely clear signal, zero fluff. it does one thing and does it properly. big props to the author. the design probably looks effortless now, but i’m sure it took serious iteration to get to that level of clarity.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-today-beautiful-date-countdown</id>
    <link href="https://trmnl.com/blog/featured-plugin-today-beautiful-date-countdown"/>
    <published>2026-04-21T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin - Today: Beautiful Date &amp; Countdown</title>
    <updated>2026-04-21T00:00:00+00:00</updated>
    <dc:date>2026-04-21T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;p&gt;Creating a plugin is an exciting way to use our &lt;a href=&quot;https://help.trmnl.com/en/articles/12410549-developer-edition-features&quot;&gt;Developer Edition&lt;/a&gt; license to bring your low-distraction dashboard to life with the content you want to see. Let&#39;s cover a few ways to get started; pick the one that fits you best.&lt;/p&gt;&lt;h2&gt;The Copycat&lt;/h2&gt;&lt;p&gt;You see a great idea, you aim to take it. Great! The spirit of TRMNL&#39;s open source core is to share our value with others, building a community on a foundation of generosity. Hundreds of authors have crafted a plugin, honed it, and published it as a &lt;i&gt;&lt;em&gt;recipe&lt;/em&gt;&lt;/i&gt; for others to &lt;b&gt;&lt;strong&gt;install&lt;/strong&gt;&lt;/b&gt; or &lt;b&gt;&lt;strong&gt;fork&lt;/strong&gt;&lt;/b&gt;. Here&#39;s a quick way to understand the difference:&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTcwMzU5MDM_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--01f584d882007c05c41710676840d48e6d3b5ed5&quot; content-type=&quot;image/png&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMzU5MDMsInB1ciI6ImJsb2JfaWQifX0=--70ad55ccb5d0fe8fc0ee187dd93e4b47f58779fd/image.png&quot; filename=&quot;image.png&quot; filesize=&quot;2101&quot; width=&quot;300&quot; height=&quot;69&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Preview, Install, or Fork Buttons&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--png&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMzU5MDMsInB1ciI6ImJsb2JfaWQifX0=--70ad55ccb5d0fe8fc0ee187dd93e4b47f58779fd/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--a1b29f018116e3f4abd0440beb02228a54f47dd1/image.png&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Preview, Install, or Fork Buttons
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;Install:&lt;/strong&gt;&lt;/b&gt; Use the plugin in your account, with customizations designed by the author, and maintain a link between your copy and the original recipe, so that any updates made to the original &lt;i&gt;&lt;em&gt;recipe&lt;/em&gt;&lt;/i&gt; will automatically be applied to your installation. This is similar to how apps in a mobile app store function.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;Fork:&lt;/strong&gt;&lt;/b&gt; Make a copy of the plugin, but with the ability&lt;i&gt;&lt;em&gt; to see exactly how it was made and have the ability to &lt;/em&gt;&lt;/i&gt;&lt;i&gt;&lt;b&gt;&lt;strong&gt;change anything&lt;/strong&gt;&lt;/b&gt;&lt;/i&gt;&lt;i&gt;&lt;em&gt;, including the markup code that lays out the look and functionality of the plugin.&lt;/em&gt;&lt;/i&gt; The link to the original recipe is severed. &lt;b&gt;&lt;strong&gt;This is the copycat way.&lt;/strong&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And don&#39;t think you need to copy a plugin with similar content. You may just love the way the content is laid out and can imagine &lt;i&gt;&lt;em&gt;your data&lt;/em&gt;&lt;/i&gt; in that same format. Don&#39;t like it after forking? Click &lt;i&gt;&lt;em&gt;Remove Plugin&lt;/em&gt;&lt;/i&gt; and go hunt down another one. Of course, if you&#39;d rather get a robot to help you...&lt;/p&gt;&lt;h2&gt;The AI Builder&lt;/h2&gt;&lt;p&gt;Oh, you thought you could escape AI&#39;s ever-presence in the conversation?&lt;/p&gt;&lt;p&gt;Actually, you can, just scroll-down to the next section.&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;em&gt;But&lt;/em&gt;&lt;/i&gt;... if you are intrigued, then let me introduce to our &lt;a href=&quot;https://help.trmnl.com/en/articles/14130438-ai-agent&quot;&gt;AI Builder&lt;/a&gt;, a collection of tools, prompts, and a dusting of hubris that takes a one-sentence request and $1 or two and turns it into a plugin that makes you go, &quot;wow.&quot;&lt;/p&gt;&lt;p&gt;As mentioned in our &lt;a href=&quot;https://help.trmnl.com/en/articles/14130438-ai-agent&quot;&gt;helpful AI agent guide&lt;/a&gt;, once you opt-in to using the tool and get your API key assigned (so OpenRouter can track your usage and charge you), you can start creating a brand new private plugin, &lt;i&gt;&lt;em&gt;save&lt;/em&gt;&lt;/i&gt; your settings (e.g. name of the plugin), then head into &lt;i&gt;&lt;em&gt;edit markup&lt;/em&gt;&lt;/i&gt;. Once there, the shiny new &lt;b&gt;&lt;strong&gt;Agent&lt;/strong&gt;&lt;/b&gt; tab will be available.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTcwMzY0NzY_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--f07ec35d4e5ada68d08d4f6258d5c86179f482ca&quot; content-type=&quot;image/png&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMzY0NzYsInB1ciI6ImJsb2JfaWQifX0=--a7f1453dba153e51774e30f4de6c4e7225a91bc9/image.png&quot; filename=&quot;image.png&quot; filesize=&quot;7687&quot; width=&quot;911&quot; height=&quot;71&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Edit Markup header with Agent highlighted&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--png&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMzY0NzYsInB1ciI6ImJsb2JfaWQifX0=--a7f1453dba153e51774e30f4de6c4e7225a91bc9/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--a1b29f018116e3f4abd0440beb02228a54f47dd1/image.png&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Edit Markup header with Agent highlighted
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;Now, while it is ever evolving, it really shines in its ability to give you a great first draft of a plugin, even if you don&#39;t know where your data is coming from or exactly what you want it to look like. Just remember, there&#39;s a reason we recommend Claude&#39;s AI models; less expensive models can do an good job with additional guidance, but you&#39;re building your &lt;b&gt;&lt;strong&gt;first plugin&lt;/strong&gt;&lt;/b&gt;, so may be worth leaning on the model to do a lot of the heavy lifting.&lt;/p&gt;&lt;p&gt;If you prefer to keep the human completely in the loop, have you considered some light reading?&lt;/p&gt;&lt;h2&gt;The Bookworm&lt;/h2&gt;&lt;p&gt;You want some documentation. Pages of clear guidance and examples, because &lt;b&gt;&lt;strong&gt;you need to understand it&lt;/strong&gt;&lt;/b&gt;, and you know you&#39;re on the looooooong road to being a multi-recipe publishing, thought-leadin&#39;, creator fund earning &lt;a href=&quot;https://trmnl.com/experts&quot;&gt;TRMNL Expert&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;We built our &lt;a href=&quot;https://trmnl.com/framework&quot;&gt;&lt;b&gt;&lt;strong&gt;Framework&lt;/strong&gt;&lt;/b&gt;&lt;/a&gt; with two core intentions: Create a design language for reliable and innovative rendering on an ePaper display, and give any developer, even the lapsed ones, &lt;i&gt;&lt;em&gt;superpowers.&lt;/em&gt;&lt;/i&gt; Like &lt;code&gt;mobile-first&lt;/code&gt; design lead frontend developers through the mobile/desktop swap, our &lt;code&gt;framework-first&lt;/code&gt; ethos can be interpreted as, &quot;Design with Framework and Liquid first, then fallback to custom CSS and Javascript if you reach a limitation.&quot;&lt;/p&gt;&lt;p&gt;So dive into the &lt;a href=&quot;https://trmnl.com/framework/docs/v3&quot;&gt;docs&lt;/a&gt; or the &lt;a href=&quot;https://trmnl.com/framework/examples?version=v3&quot;&gt;examples&lt;/a&gt;, consume it all, and get building! Remenber that we also use Liquid and even have &lt;a href=&quot;https://help.trmnl.com/en/articles/10347358-custom-plugin-filters&quot;&gt;custom filters&lt;/a&gt; available.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;Framework &lt;/strong&gt;&lt;/b&gt;&lt;a href=&quot;https://trmnl.com/framework/docs/v2/v2_overview&quot;&gt;&lt;b&gt;&lt;strong&gt;v2&lt;/strong&gt;&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;strong&gt;: &lt;/strong&gt;&lt;/b&gt;Added responsive classes for larger displays and higher bit depths (more grays), redesigned our built-in javascript functionality for clamping, and expanded size variations across elements and components.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;Framework &lt;/strong&gt;&lt;/b&gt;&lt;a href=&quot;https://trmnl.com/framework/docs/v3/v3_overview&quot;&gt;&lt;b&gt;&lt;strong&gt;v3&lt;/strong&gt;&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;strong&gt;:&lt;/strong&gt;&lt;/b&gt; Added color through variants, hues, and new utilities, supporting colors beyond black and white.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Of course, maybe you would rather have your docs in more of a just-in-time fashion...&lt;/p&gt;&lt;h2&gt;The Maker&lt;/h2&gt;&lt;p&gt;You just need a &lt;i&gt;&lt;em&gt;process&lt;/em&gt;&lt;/i&gt; to get started, and a reference point for how to do the specific thing you want to do right now. You want to get started.&lt;/p&gt;&lt;p&gt;So you jump on our &lt;a href=&quot;https://help.trmnl.com/en/articles/9510536-private-plugins&quot;&gt;private plugins&lt;/a&gt; tutorial, you load the Framework docs in another tab, and you find an open API you can query without any authentication and get to work understanding by doing. Here&#39;s a simple set of guidelines to help you get comfortable:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Set your plugin to &lt;b&gt;&lt;strong&gt;polling&lt;/strong&gt;&lt;/b&gt;, save, then &lt;i&gt;&lt;em&gt;force refresh&lt;/em&gt;&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;After a few seconds, click &lt;i&gt;&lt;em&gt;edit markup&lt;/em&gt;&lt;/i&gt; and scroll down to make sure data is populating in &lt;b&gt;&lt;strong&gt;My Variables&lt;/strong&gt;&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Build in the FULL view; the other views will be derivative of the full view so it&#39;s a great place to lock-in before you start migrating. This includes sticking all your Liquid logic (&lt;a href=&quot;https://help.trmnl.com/en/articles/10671186-liquid-101&quot;&gt;tutorial&lt;/a&gt; and &lt;a href=&quot;https://help.trmnl.com/en/articles/10693981-advanced-liquid&quot;&gt;advanced tutorial&lt;/a&gt;) in the FULL view, for now. In the future, to keep the code &lt;a href=&quot;https://trmnl.com/blog/private-plugin-shared-markup&quot;&gt;DRY&lt;/a&gt; [Don&#39;t Repeat Yourself], you can move the logic to the Shared tab. &lt;i&gt;&lt;b&gt;&lt;strong&gt;All views process Shared content prior to their own&lt;/strong&gt;&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Start with a basic template:&lt;/li&gt;&lt;/ul&gt;&lt;pre data-language=&quot;html&quot;&gt;&amp;lt;div class=&quot;layout&quot;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;div class=&quot;column&quot;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;!-- Show some data here --&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br&gt;&amp;lt;/div&amp;gt;&lt;br&gt;&amp;lt;div class=&quot;title_bar&quot;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;img class=&quot;image&quot; src=&quot;/images/plugins/trmnl--render.svg&quot;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;span class=&quot;title&quot;&amp;gt;Title Bar with Instance&amp;lt;/span&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;span class=&quot;instance&quot;&amp;gt;Production&amp;lt;/span&amp;gt;&lt;br&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;If the data source is an array of objects, then make a quick iteration:&lt;/li&gt;&lt;/ul&gt;&lt;pre data-language=&quot;js&quot;&gt;{% for thing in yourVariableName %}&lt;br&gt;&amp;nbsp; {{ thing.id }}&lt;br&gt;{% endfor %}&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Look over the data provided from your API and take notes about features you need to include, such as &lt;a href=&quot;https://help.trmnl.com/en/articles/10513740-custom-plugin-form-builder&quot;&gt;Form Field&lt;/a&gt; customization (&lt;a href=&quot;https://usetrmnl.github.io/trmnl-form-builder/&quot;&gt;visual editor&lt;/a&gt;), highlighting data, and &lt;a href=&quot;https://help.trmnl.com/en/articles/10693981-advanced-liquid?q=liquid#h_9e85ea209b&quot;&gt;date transformations&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Make some early layout decisions for the data. Will it be a grid, a list of items, columns (smart columns?), flex... (&lt;a href=&quot;https://trmnl.com/framework/docs/v3/layout&quot;&gt;Framework docs&lt;/a&gt;). &lt;b&gt;&lt;strong&gt;This can change later&lt;/strong&gt;&lt;/b&gt;, and the easiest way to know it should change is to &lt;i&gt;&lt;b&gt;&lt;strong&gt;build something and hate it&lt;/strong&gt;&lt;/b&gt;&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You&#39;re building in small pieces, then likely tearing away large chunks. You don&#39;t care, because you are &lt;b&gt;&lt;strong&gt;learning&lt;/strong&gt;&lt;/b&gt; and &lt;b&gt;&lt;strong&gt;having fun&lt;/strong&gt;&lt;/b&gt;.&lt;/p&gt;&lt;h2&gt;Final Thoughts&lt;/h2&gt;&lt;p&gt;There is no wrong way to make a plugin...&lt;i&gt;&lt;em&gt; except to use custom css to lay everything out like you&#39;re working on your first website in 1998.&lt;/em&gt;&lt;/i&gt; Ignoring this advice is possible, but will lead to frustrations later. The learning curve is not steep nor is it high, but ignoring it is ignoring an &lt;b&gt;&lt;strong&gt;opportunity to learn&lt;/strong&gt;&lt;/b&gt;, which should never be squandered.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/making-great-plugin-first-time</id>
    <link href="https://trmnl.com/blog/making-great-plugin-first-time"/>
    <published>2026-04-20T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Making a Great Plugin the First Time</title>
    <updated>2026-04-20T00:00:00+00:00</updated>
    <dc:date>2026-04-20T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Ryan Kulp</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;p&gt;We &lt;a href=&quot;https://usetrmnl.com/blog/introducing-trmnl-x&quot;&gt;introduced X&lt;/a&gt; on July 30, 2025. Below are live updates since launch.&lt;/p&gt;&lt;h3&gt;When will I receive my TRMNL X?&lt;/h3&gt;&lt;p&gt;We began assembly + fulfillment on March 18 from our USA warehouse.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;Live in USA, Canada, Mexico, or Australia?&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Your TRMNL will ship from our USA warehouse. This location is currently fulfilling &quot;single battery&quot; orders only, as we are waiting for strong magnets to arrive which can support mounting double-battery devices to metal surfaces.* To receive your device sooner it may be possible to change your color or downgrade to a single battery version. Email trmnl@trmnl.com to arrange.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;Live in Europe, Asia, Africa, South America, etc?&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Your TRMNL will ship from our Berlin warehouse. Due to issues with Customs and theft from suppliers, this warehouse has only received 1x case color (Clear) and does not have magnets strong enough to support devices mounted to metal surfaces (e.g. refrigerators).* To receive your device sooner it may be possible to change your color or downgrade to a single battery version. Email niklas@trmnl.com to arrange.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;Strong (N52 grade) magnet arrival?&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;New magnets were shipped to our warehouses in March and they are pending Customs approval. As founder of TRMNL I guarantee we will scale fulfillment to 100s of devices per day once we have the missing components described above.&lt;/p&gt;&lt;p&gt;*For more details about magnet issues see the &quot;March&quot; and &quot;April&quot; sections at the bottom of this post.&lt;/p&gt;&lt;h3&gt;Tech Specs&lt;/h3&gt;&lt;p&gt;Highlights below, or see everything &lt;a href=&quot;https://trmnl.com/products/x/spec-sheet&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;10.3&quot; 1872x1404 EPD resolution with 16 shades of gray&lt;/li&gt;&lt;li&gt;Dust and basic waterproofing with a hacker-friendly enclosure&lt;/li&gt;&lt;li&gt;ESP32-S3 with 16MB of flash and 8MB of PSRAM as a core processor with fallback 2.4GHz WiFi&lt;/li&gt;&lt;li&gt;5GHz WiFi support via ESP32-C5 as a modem (external antenna)&lt;/li&gt;&lt;li&gt;Support up to 2x 6000mAh 3.8V LiPo batteries with automatic detection&lt;/li&gt;&lt;li&gt;Battery gas gauge from TI for battery SOC/SOH/capacity tracking&lt;/li&gt;&lt;li&gt;Bosch accelerometer for portrait/landscape orientation&lt;/li&gt;&lt;li&gt;Gesture touch-bar based on Azotech IC&lt;/li&gt;&lt;li&gt;Magnetic pogo pin-based mount for charging and accessories (Coming 2026)&lt;/li&gt;&lt;li&gt;OTG support with 5V 2A output&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Dimensions&lt;/h3&gt;&lt;p&gt;These values may change as we scale production. last updated December 15, 2025.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY2MzIxMjU_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--afd8df5339ded2d0dbc6f0a9c022b8a90db3d452&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY2MzIxMjUsInB1ciI6ImJsb2JfaWQifX0=--4fe9bcea7ce6f5b07810b792a3e4769bd9b3ec05/TRMNL-X-dimensions-2025-12-15.jpg&quot; filename=&quot;TRMNL-X-dimensions-2025-12-15.jpg&quot; filesize=&quot;40897&quot; width=&quot;1278&quot; height=&quot;832&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;X enclosure dimensions (mm)&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY2MzIxMjUsInB1ciI6ImJsb2JfaWQifX0=--4fe9bcea7ce6f5b07810b792a3e4769bd9b3ec05/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/TRMNL-X-dimensions-2025-12-15.jpg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        X enclosure dimensions (mm)
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;Weight (device only, no attachments)&lt;/p&gt;&lt;p&gt;1 battery - 362 grams&lt;br&gt;2 batteries - 448 grams&lt;/p&gt;&lt;h3&gt;&lt;b&gt;&lt;strong&gt;August 2025&lt;/strong&gt;&lt;/b&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Multiple boards and controllers support touch gestures, battery charging, and 5ghz WiFi&lt;/li&gt;&lt;li&gt;The circular area interfaces with a waterproof &quot;puck&quot; shaped charging connector, and several test points on the motherboard&#39;s bottom will let us build a QA jig for our warehouse&lt;/li&gt;&lt;li&gt;Prior to release we&#39;ll prototypes to your favorite creators for first-look reviews&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;September 2025&lt;/h3&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY0Njk4MDc_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--e65fee844581cfc51ea6b1464022c1afb0ca026c&quot; content-type=&quot;image/png&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY0Njk4MDcsInB1ciI6ImJsb2JfaWQifX0=--3848d7bc1ccc9b3f6dbae3f418cdc08223198ba7/trmnl-x-board-preview.png&quot; filename=&quot;trmnl-x-board-preview.png&quot; filesize=&quot;187997&quot; width=&quot;2636&quot; height=&quot;2066&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;PCB preview&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--png&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY0Njk4MDcsInB1ciI6ImJsb2JfaWQifX0=--3848d7bc1ccc9b3f6dbae3f418cdc08223198ba7/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--a1b29f018116e3f4abd0440beb02228a54f47dd1/trmnl-x-board-preview.png&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        PCB preview
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;ol&gt;&lt;li&gt;We ordered 50x more prototypes with stronger magnets so devices can attach directly to a surface (e.g. refrigerator) without&amp;nbsp;&lt;a href=&quot;https://github.com/usetrmnl/mounts&quot;&gt;mounts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Dual band WiFi will be powered by the ESP32-C5 and we&#39;ve benchmarked faster speeds + better range with custom modem firmware&lt;/li&gt;&lt;li&gt;Orders with the Battery Upgrade (or Clarity Kit) will now enjoy 10,000mAh versus the announced 7,000mAh variant&lt;/li&gt;&lt;li&gt;Our &quot;charging puck&quot; (name TBD) now has a universal connector for kickstands and other peripheral accessories that will debut in 2026&lt;/li&gt;&lt;li&gt;The same firmware that runs all OG + BYOD devices has&amp;nbsp;&lt;a href=&quot;https://github.com/usetrmnl/trmnl-firmware/tree/trmnl_x_alpha&quot;&gt;been extended&lt;/a&gt;&amp;nbsp;and is already running my own X prototype, &lt;a href=&quot;https://x.com/useTRMNL/status/1979637211412017281&quot;&gt;preview here&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;October 2025&lt;/h3&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY0ODQyMzM_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--a5a50e0b90ef76e5acdf6beea3f046c57655527b&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY0ODQyMzMsInB1ciI6ImJsb2JfaWQifX0=--11ea7b6379735e1dea6bf5387f6192ba4adb2b2b/TRMNL-X-robin-williams-test.jpeg&quot; filename=&quot;TRMNL-X-robin-williams-test.jpeg&quot; filesize=&quot;265844&quot; width=&quot;960&quot; height=&quot;1280&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Grayscale testing with a GOAT&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY0ODQyMzMsInB1ciI6ImJsb2JfaWQifX0=--11ea7b6379735e1dea6bf5387f6192ba4adb2b2b/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/TRMNL-X-robin-williams-test.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Grayscale testing with a GOAT
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;ol&gt;&lt;li&gt;The first batch of screens arrived at our USA warehouse, more en route to our &lt;a href=&quot;https://usetrmnl.com/blog/slashing-postage-rates-again&quot;&gt;Berlin warehouse&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Gesture bar + charging pucks are in small batch production&lt;/li&gt;&lt;li&gt;Received and approved packaging samples. Model X packaging will be more premium and protective than OG packaging.&lt;/li&gt;&lt;li&gt;Consolidating WiFi antennas (2.4 + 5gh) to a single component&lt;/li&gt;&lt;li&gt;Added 3 angle options (degrees) to the kickstand&lt;/li&gt;&lt;li&gt;[Work in progress] battery options may grow another 20% to 6000/12000mAh variants pending more testing&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;November 2025&lt;/h3&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY1MTg1ODA_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--d8a89686dba4f4b04bc16dcb136c95eab525f0bd&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTg1ODAsInB1ciI6ImJsb2JfaWQifX0=--c1477124c066c9bfa66b9ccd6f09cb176c30b9d9/TRMNL-X-assembly.jpeg&quot; filename=&quot;TRMNL-X-assembly.jpeg&quot; filesize=&quot;296326&quot; width=&quot;1280&quot; height=&quot;960&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Full assembly (3D printed parts, not final)&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTg1ODAsInB1ciI6ImJsb2JfaWQifX0=--c1477124c066c9bfa66b9ccd6f09cb176c30b9d9/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/TRMNL-X-assembly.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Full assembly (3D printed parts, not final)
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY1MTc0OTY_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--824732486c8578547d16075875d06a33df483cc4&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTc0OTYsInB1ciI6ImJsb2JfaWQifX0=--74089f2a8c4c8b2d415181e16336639c0fca35f4/TRMNL-X-prototype-back.jpeg&quot; filename=&quot;TRMNL-X-prototype-back.jpeg&quot; filesize=&quot;173771&quot; width=&quot;1280&quot; height=&quot;674&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Fully functional prototype (3D printed case, non-branded silicone pads)&quot;&gt;&lt;/action-text-attachment&gt;&lt;/p&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTc0OTYsInB1ciI6ImJsb2JfaWQifX0=--74089f2a8c4c8b2d415181e16336639c0fca35f4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/TRMNL-X-prototype-back.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Fully functional prototype (3D printed case, non-branded silicone pads)
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY1MTc0OTc_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--3cf5cb7b951505b570349e23af70950eec7fd0cd&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTc0OTcsInB1ciI6ImJsb2JfaWQifX0=--aaf5c4631331eaf1ee4fbc0f8b97cab4cdc71593/TRMNL-X-prototype-front.jpeg&quot; filename=&quot;TRMNL-X-prototype-front.jpeg&quot; filesize=&quot;238857&quot; width=&quot;1280&quot; height=&quot;960&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Prototype running latest (public) firmware release&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTc0OTcsInB1ciI6ImJsb2JfaWQifX0=--aaf5c4631331eaf1ee4fbc0f8b97cab4cdc71593/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/TRMNL-X-prototype-front.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Prototype running latest (public) firmware release
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Added extra reset buttons to S3 and C5 MCUs for hacker friendliness, board design is final&lt;/li&gt;&lt;li&gt;Batteries are in production and we can confirm the improved 6k / 12kmAh sizing (announced size: 5k / 7k)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Enclosure injection molds are in production, purchase order placed for thousands of cases in different colors&lt;/li&gt;&lt;li&gt;Magnet deliveries from Chinese factories have been delayed due to recent&amp;nbsp;&lt;a href=&quot;https://www.cnbc.com/2025/11/10/china-suspends-some-critical-mineral-export-curbs-to-the-us-as-trade-truce-takes-hold.html&quot;&gt;Critical Mineral Export Bans&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;December 2025&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Battery production complete, shipping to our warehouses next week&lt;/li&gt;&lt;li&gt;EC licenses underway at testing facilities&lt;/li&gt;&lt;li&gt;Packaging in mass production&lt;/li&gt;&lt;li&gt;Magnets in mass production&lt;/li&gt;&lt;li&gt;[New] OTG functionality - power other devices from your TRMNL&#39;s charging puck&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;January 2026&lt;/h3&gt;&lt;p&gt;From my desk to yours, a &lt;a href=&quot;https://www.youtube.com/watch?v=LNcoAZJP3hk&quot;&gt;video update&lt;/a&gt;.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY3NTYyNDE_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--ff980753fe59bd5c1d900042c94b672cb7df22bd&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY3NTYyNDEsInB1ciI6ImJsb2JfaWQifX0=--4a9e8b1d8020df4a822132b47790326a0e899297/trmnl-x-fulfillment-update-jan-2026.jpg&quot; filename=&quot;trmnl-x-fulfillment-update-jan-2026.jpg&quot; filesize=&quot;102241&quot; width=&quot;1280&quot; height=&quot;720&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY3NTYyNDEsInB1ciI6ImJsb2JfaWQifX0=--4a9e8b1d8020df4a822132b47790326a0e899297/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/trmnl-x-fulfillment-update-jan-2026.jpg&quot;&gt;

&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;h3&gt;February 2026&lt;/h3&gt;&lt;p&gt;From our warehouse to your desk, a &lt;a href=&quot;https://www.youtube.com/watch?v=hiUiWCy93kg&quot;&gt;video update&lt;/a&gt;.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4MDMzNzA_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--552e5837128e6639a6a9fcb2642fef5ad103b626&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4MDMzNzAsInB1ciI6ImJsb2JfaWQifX0=--8d3563708b4c2953b5f4e0585a21d05396a8fbe9/model-x-fulfillment-update-2.jpeg&quot; filename=&quot;model-x-fulfillment-update-2.jpeg&quot; filesize=&quot;227933&quot; width=&quot;1280&quot; height=&quot;720&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4MDMzNzAsInB1ciI6ImJsb2JfaWQifX0=--8d3563708b4c2953b5f4e0585a21d05396a8fbe9/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/model-x-fulfillment-update-2.jpeg&quot;&gt;

&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;h3&gt;March 2026&lt;/h3&gt;&lt;p&gt;From my desk to yours, a &lt;a href=&quot;https://www.youtube.com/watch?v=TVSFlB5-ldk&quot;&gt;video update&lt;/a&gt;.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY5MDQ5NjM_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--871782b71aa9639d525d2c027127dc00c01ca445&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY5MDQ5NjMsInB1ciI6ImJsb2JfaWQifX0=--e75e94298c78b2288a20d9f90d48226ddd589d1f/trmnl-x-now-shipping-video-update.jpg&quot; filename=&quot;trmnl-x-now-shipping-video-update.jpg&quot; filesize=&quot;184157&quot; width=&quot;1280&quot; height=&quot;720&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY5MDQ5NjMsInB1ciI6ImJsb2JfaWQifX0=--e75e94298c78b2288a20d9f90d48226ddd589d1f/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/trmnl-x-now-shipping-video-update.jpg&quot;&gt;

&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;If you prefer not to watch the video, in summary we&#39;re shipping single-battery devices only from our USA warehouse because our magnet supplier ripped us off and sent thousands of weak magnets, following multiple sample shipments with the correct (strong) magnets.&lt;/p&gt;&lt;p&gt;As of Wednesday, March 18:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Berlin warehouse has all 3 types of PCBs&lt;/li&gt;&lt;li&gt;Berlin warehouse should receive device enclosures in 1-2 weeks&lt;/li&gt;&lt;li&gt;USA warehouse has everything and has begun assembly + fulfillment&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To check your place in the queue go here:&lt;br&gt;&lt;a href=&quot;https://trmnl.com/order-tracker&quot;&gt;https://trmnl.com/order-tracker&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you already have a TRMNL, install the Order Tracker plugin to stay up to date:&lt;br&gt;&lt;a href=&quot;https://trmnl.com/recipes/260817&quot;&gt;https://trmnl.com/recipes/260817&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;How can I estimate the time it will take to receive mine?&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Devices will be shipped in the order they were purchased and we intend to scale to 100s of fulfillments per day, as we have done for past releases and back-in-stock periods.&lt;/p&gt;&lt;p&gt;Our 2x warehouses have trained 15+ individuals to flash, assemble, and ship devices. We do not outsource to 3rd party logistics companies. You can learn more about our end to end philosophy and technology &lt;a href=&quot;https://trmnl.com/blog/in-house-fulfillment&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://trmnl.com/blog/logistics-tech&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;April 2026&lt;/h3&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTcwMzQ3NzA_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--67bc3d1334c8268ecdb70e1f782f074bf1d264b6&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMzQ3NzAsInB1ciI6ImJsb2JfaWQifX0=--4cfe457627cf9aeecbf3fd623d1ecbe4ccb149ab/trmnl-x-magnet-performance.jpeg&quot; filename=&quot;trmnl-x-magnet-performance.jpeg&quot; filesize=&quot;122001&quot; width=&quot;1280&quot; height=&quot;720&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMzQ3NzAsInB1ciI6ImJsb2JfaWQifX0=--4cfe457627cf9aeecbf3fd623d1ecbe4ccb149ab/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/trmnl-x-magnet-performance.jpeg&quot;&gt;

&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;See a live demonstration of strong, N52 grade magnets on various refrigerator surfaces in &lt;a href=&quot;https://youtu.be/_0_XQ63_Hf0&quot;&gt;this video update&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/model-x-progress</id>
    <link href="https://trmnl.com/blog/model-x-progress"/>
    <published>2026-04-17T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Model X Progress Report</title>
    <updated>2026-04-17T00:00:00+00:00</updated>
    <dc:date>2026-04-17T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Ryan Kulp</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;p&gt;businesses want portals, consumers prefer apps. it took us a couple years but today i&#39;m proud to announce our new iOS app, TRMNL Companion, built by team member Liz.&lt;/p&gt;&lt;p&gt;Companion is not a mobile version of the web interface, it&#39;s a tool belt for Apple power users.&lt;/p&gt;&lt;h3&gt;get the app&lt;/h3&gt;&lt;p&gt;download Companion on your iPhone or iPad:&lt;br&gt;&lt;a href=&quot;https://apps.apple.com/us/app/trmnl-companion/id6752111280&quot;&gt;https://apps.apple.com/us/app/trmnl-companion/id6752111280&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;what Companion does&lt;/h3&gt;&lt;p&gt;Companion offers a new way to build plugins, tapping into data sources that were previously inaccessible.&lt;/p&gt;&lt;p&gt;let&#39;s start with a few quick wins: Calendars, Apple Health, Apple Home, and Reminders.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;Calendars&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;combine calendars without sharing permissions or ICS links. Companion lets you merge unlimited calendars natively through EventKit.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTcwMTcyMzA_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--8896a0caa6f837a9dd2beef508a5dcc2400aa7d3&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMTcyMzAsInB1ciI6ImJsb2JfaWQifX0=--d7da7ab0238a734c53e2971ebee806b35269f0ea/trmnl-companion-calendar-sync.jpg&quot; filename=&quot;trmnl-companion-calendar-sync.jpg&quot; filesize=&quot;59799&quot; width=&quot;792&quot; height=&quot;768&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Calendar Sync&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMTcyMzAsInB1ciI6ImJsb2JfaWQifX0=--d7da7ab0238a734c53e2971ebee806b35269f0ea/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/trmnl-companion-calendar-sync.jpg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Calendar Sync
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;Apple data&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;want to build custom plugins with activity from Apple Health, sensors from Apple Home, or tasks from Apple Reminders? just create a private plugin (&quot;Webhook&quot; strategy), then point to it inside Companion.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTcwMTQ0OTg_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--53e1b0155bbffc36201613e68d149e8eafb1136b&quot; content-type=&quot;image/png&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMTQ0OTgsInB1ciI6ImJsb2JfaWQifX0=--79c1c25a3c7f71eef50069fd9a55e76c3e55aa11/trmnl-companion-apple-data-sync.png&quot; filename=&quot;trmnl-companion-apple-data-sync.png&quot; filesize=&quot;166832&quot; width=&quot;1200&quot; height=&quot;833&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Apple Data Sync&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--png&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMTQ0OTgsInB1ciI6ImJsb2JfaWQifX0=--79c1c25a3c7f71eef50069fd9a55e76c3e55aa11/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--a1b29f018116e3f4abd0440beb02228a54f47dd1/trmnl-companion-apple-data-sync.png&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Apple Data Sync
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;TRMNL will automatically push data to the plugin editor where you can design beautiful markup with &lt;a href=&quot;https://trmnl.com/framework&quot;&gt;Framework&lt;/a&gt; for a secure, private, personalized Apple dashboard.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;Shortcuts&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;with a simple drag and drop interface inside any Apple product (phone, laptop, iPad) you may now access previously walled garden data from other apps (native or 3rd party) and use it in TRMNL plugins.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTcwMTQ1NDU_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--2957f0c617bd8d37e11ae58a39519f988a4bc600&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMTQ1NDUsInB1ciI6ImJsb2JfaWQifX0=--ee500c3b136a51c6c8dbf3ee12b1e50f31666d57/IMG_6658.jpg&quot; filename=&quot;IMG_6658.jpg&quot; filesize=&quot;143925&quot; width=&quot;1170&quot; height=&quot;1167&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;TRMNL Shortcut&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMTQ1NDUsInB1ciI6ImJsb2JfaWQifX0=--ee500c3b136a51c6c8dbf3ee12b1e50f31666d57/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/IMG_6658.jpg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        TRMNL Shortcut
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;create a Shortcut, add whatever triggers or data sources you want, then use &quot;Send Data to Plugin&quot; to bring it to life on your ePaper display.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTcwMTcyMTk_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--5a5b62a80566cba56e630b86f9d490f029387aac&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMTcyMTksInB1ciI6ImJsb2JfaWQifX0=--4676fa6c66c1ae307d87443c3cf262602144573f/trmnl-companion-shortcut-send-data-example.jpeg&quot; filename=&quot;trmnl-companion-shortcut-send-data-example.jpeg&quot; filesize=&quot;44433&quot; width=&quot;640&quot; height=&quot;614&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMTcyMTksInB1ciI6ImJsb2JfaWQifX0=--4676fa6c66c1ae307d87443c3cf262602144573f/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/trmnl-companion-shortcut-send-data-example.jpeg&quot;&gt;

&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;for even more control, set up a Shortcut Automation to expand the triggers which cause new data to be sent to TRMNL.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTcwMTcyMTU_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--c9586b985a8061113622c94d3252cc2c72eef6f7&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMTcyMTUsInB1ciI6ImJsb2JfaWQifX0=--46165f31694c356184d7b06c4b3b78553e215910/trmnl-note-board-recipe.jpeg&quot; filename=&quot;trmnl-note-board-recipe.jpeg&quot; filesize=&quot;49273&quot; width=&quot;640&quot; height=&quot;436&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Note Board by Mark Hopper&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMTcyMTUsInB1ciI6ImJsb2JfaWQifX0=--46165f31694c356184d7b06c4b3b78553e215910/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/trmnl-note-board-recipe.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Note Board by Mark Hopper
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;get started quickly with Mark Hopper&#39;s &lt;a href=&quot;https://trmnl.com/recipes/96659&quot;&gt;Note Board&lt;/a&gt; Recipe.&lt;/p&gt;&lt;h3&gt;what Companion does not do (yet)&lt;/h3&gt;&lt;p&gt;Companion does not let you manage Playlists, update your Account, or change Device settings. there is no dashboard or ability to browse community Recipes.&lt;/p&gt;&lt;p&gt;this may be possible in the future, but for now we&#39;re focused on what we do best: turning disparate data into dashboards that are calm, aesthetic, and useful.&lt;/p&gt;&lt;p&gt;read &lt;a href=&quot;https://help.trmnl.com/en/articles/12294875-trmnl-companion-for-ios&quot;&gt;the help guide&lt;/a&gt; for more details about each feature.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/companion-ios-app</id>
    <link href="https://trmnl.com/blog/companion-ios-app"/>
    <published>2026-04-13T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Introducing Companion for iOS</title>
    <updated>2026-04-13T00:00:00+00:00</updated>
    <dc:date>2026-04-13T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h2&gt;&lt;a href=&quot;https://trmnl.com/recipes/241645&quot;&gt;Trending Recipes&lt;/a&gt; Plugin&lt;/h2&gt;&lt;p&gt;Community member ExcuseMe&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt; (Discord: &lt;/mark&gt;&lt;code&gt;ExcuseMe&lt;/code&gt;) created the &lt;a href=&quot;https://trmnl.com/recipes/241645&quot;&gt;Trending Recipes&lt;/a&gt; plugin; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;As someone who has published a couple of recipes, I found myself checking installs and forks more than once a day whenever I&#39;d put something new out there. &lt;b&gt;&lt;strong&gt;It&#39;s always exciting to see whether your idea, and your execution of it, resonates enough to earn a spot on someone&#39;s screen. &lt;/strong&gt;&lt;/b&gt;But there was no easy way to see that momentum at a glance: which recipes are gaining traction right now, and how does mine compare? I wanted that feedback loop right on my TRMNL, not buried in a browser tab.&lt;/p&gt;&lt;h3&gt;Why were you the person to make it?&lt;/h3&gt;&lt;p&gt;I already had experience building a simple backend with a database for TRMNL recipes, and this plugin couldn&#39;t exist without one since it needs to take hourly snapshots to calculate deltas over time. But more than the technical side, I think it came down to scratching my own itch. I wanted a better way to track how my published recipes are doing while also keeping an eye on what the rest of the community is building. Once I realized nobody else was surfacing that kind of trending data, it felt like the obvious next thing to build.&lt;/p&gt;&lt;h3&gt;&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;How did you balance look vs functionality?&lt;/mark&gt;&lt;/h3&gt;&lt;p&gt;At the start, the data was clear: mainly the current connections and how they changed over the last x hours or days. It became harder to balance once the plugin started extracting statistics that weren&#39;t available before, like trending ranks, overall connection rankings, and user-level stats. Had this been just a private recipe, more numbers would have made it onto the screen because their meaning was obvious to me. But you can&#39;t expect that from a regular user. You also can&#39;t explain every number with just a little icon in front of it, and even if you could, that would look messy in a repeating section.&lt;/p&gt;&lt;h3&gt;What was your process for creating the plugin?&lt;/h3&gt;&lt;p&gt;It started with a small Python server in a Docker container that fetches all the public recipe data on a regular schedule, plus an endpoint to serve that data to a TRMNL recipe. AI is especially useful for these early steps to get a minimal viable product going, since the goal is to find out as soon as possible whether a recipe idea is even worth the time. From there, I build a simple version of the recipe using TRMNL&#39;s framework styling, just displaying the rough data to get a feel for whether it&#39;s on the right track. This one borrows from my &lt;a href=&quot;https://trmnl.com/recipes/189338&quot;&gt;Network Devices&lt;/a&gt; recipe: Columns with the overflow functionality to fill any screen with items, leaving little unused space; especially great when larger screen devices. After that it&#39;s refining. Add something, refine again; until you&#39;re happy enough to publish.&lt;/p&gt;&lt;h3&gt;Did you learn anything that you want to apply to other recipes you create(d)?&lt;/h3&gt;&lt;p&gt;One thing worth sharing is an SVG filter I picked up from &lt;code&gt;L #1385&lt;/code&gt;, something I didn&#39;t even know was possible. Recipe icons are user-uploaded and can be full-color, which can render as muddy gray on a 1-bit or 2-bit screen. This hidden SVG filter converts colors to grayscale and snaps them to discrete levels, keeping icons crisp on e-ink:&lt;/p&gt;&lt;pre data-language=&quot;html&quot;&gt;&amp;lt;svg width=&quot;0&quot; height=&quot;0&quot; style=&quot;position: absolute&quot;&amp;gt;&lt;br&gt;    &amp;lt;defs&amp;gt;&lt;br&gt;        &amp;lt;filter id=&quot;binarize&quot;&amp;gt;&lt;br&gt;            &amp;lt;feColorMatrix&lt;br&gt;                type=&quot;matrix&quot;&lt;br&gt;                values=&quot;0.0722 0.7152 0.2126 0 00.0722 0.7152 0.2126 0 00.0722 0.7152 0.2126 0 00 0 0 1 0&quot;&lt;br&gt;            /&amp;gt;&lt;br&gt;            &amp;lt;feComponentTransfer&amp;gt;&lt;br&gt;                &amp;lt;feFuncR type=&quot;discrete&quot; tableValues=&quot;0 0.25 0.75 1&quot; /&amp;gt;&lt;br&gt;                &amp;lt;feFuncG type=&quot;discrete&quot; tableValues=&quot;0 0.25 0.75 1&quot; /&amp;gt;&lt;br&gt;                &amp;lt;feFuncB type=&quot;discrete&quot; tableValues=&quot;0 0.25 0.75 1&quot; /&amp;gt;&lt;br&gt;            &amp;lt;/feComponentTransfer&amp;gt;&lt;br&gt;        &amp;lt;/filter&amp;gt;&lt;br&gt;    &amp;lt;/defs&amp;gt;&lt;br&gt;&amp;lt;/svg&amp;gt;&lt;/pre&gt;&lt;p&gt;Then apply it conditionally with CSS so it only kicks in on e-ink screens:&lt;/p&gt;&lt;p&gt;&lt;code&gt;.screen--1bit .binarize, .screen--2bit .binarize {filter: url(#binarize);}&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Any element with the &quot;binarize&quot; class gets its colors crunched down to 4 levels on the device, but renders normally in the preview.&lt;/p&gt;&lt;h3&gt;Is there a tip you would give to a new developer?&lt;/h3&gt;&lt;p&gt;Use a main template so you don&#39;t have to duplicate your code in each view for maintainability. What works well for me is to start by designing the full view of the recipe, then strip down the data as the views get smaller, or maybe change the layout between horizontal and vertical depending on the view. One of the best ways to achieve that is defining a template in your &lt;b&gt;&lt;strong&gt;shared.liquid&lt;/strong&gt;&lt;/b&gt; and calling render from each view. For example, in the full view of this plugin I just have this code:&lt;/p&gt;&lt;pre data-language=&quot;css&quot;&gt;{% render &quot;main&quot;, trmnl:trmnl, recipes:recipes, user_recipes:user_recipes, user_stats:user_stats, global_stats:global_stats, timeframe:timeframe, columns:3, compact: false%}&lt;/pre&gt;&lt;p&gt;All the data is passed as arguments (including the global &lt;i&gt;&lt;em&gt;{{trmnl}}&lt;/em&gt;&lt;/i&gt; variable), along with view-specific parameters.The columns argument defines the maximum columns per view, and the compact flag decides whether I need to limit the text inside the title bar.&lt;/p&gt;&lt;h3&gt;What is your favorite plugin that someone else created and why?&lt;/h3&gt;&lt;p&gt;Having recently set up a home media server, at the moment I would say it&#39;s &lt;a href=&quot;https://trmnl.com/recipes/190336&quot;&gt;Servarr Dashboard&lt;/a&gt;. A mashup combines &lt;i&gt;&lt;em&gt;Radarr&lt;/em&gt;&lt;/i&gt; and &lt;i&gt;&lt;em&gt;Sonarr&lt;/em&gt;&lt;/i&gt; into a single status report that&#39;s also useful for the rest of the family.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-trending-recipes</id>
    <link href="https://trmnl.com/blog/featured-plugin-trending-recipes"/>
    <published>2026-04-07T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Trending Recipes</title>
    <updated>2026-04-07T00:00:00+00:00</updated>
    <dc:date>2026-04-07T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Ryan Kulp</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;p&gt;for more context see the &lt;a href=&quot;https://trmnl.com/blog/creator-fund&quot;&gt;Creator Fund announcement&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;our 5th payout rewards community contributions between March 10, 2026 and April 5, 2026.&lt;/p&gt;&lt;h2&gt;source of funds&lt;/h2&gt;&lt;p&gt;each payout period, a portion of developer-specific revenue goes directly to creators.&lt;/p&gt;&lt;figure class=&quot;lexxy-content__table-wrapper&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;source&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;/th&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;revenue&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;/th&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;share&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;/th&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;amount&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;Stripe&lt;/p&gt;&lt;p&gt;Developer Edition&lt;br&gt;TRMNL+&lt;/p&gt;&lt;p&gt;Shopify&lt;/p&gt;&lt;p&gt;Developer Edition&lt;br&gt;Clarity Kit (X)&lt;br&gt;Clarity Kit (OG)&lt;br&gt;BYOD&lt;/p&gt;&lt;/th&gt;&lt;td&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;$3,420&lt;br&gt;$490&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;$931.84&lt;br&gt;&lt;mark style=&quot;background-color:var(--highlight-bg-1);&quot;&gt;$115,874.50&lt;/mark&gt;&lt;br&gt;$19,717.98&lt;br&gt;$24,325.24&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;15%&lt;br&gt;80%&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;15%&lt;br&gt;&lt;mark style=&quot;background-color:var(--highlight-bg-1);&quot;&gt;15%&lt;/mark&gt;&lt;br&gt;10%&lt;br&gt;10%&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;$513&lt;br&gt;$392&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;$139.78&lt;br&gt;&lt;mark style=&quot;background-color:var(--highlight-bg-1);&quot;&gt;$17,381.18&lt;/mark&gt;&lt;br&gt;$1,971.80&lt;br&gt;$2,432.52&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;/th&gt;&lt;td&gt;&lt;p&gt;$164,759.56&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;mark style=&quot;background-color:var(--highlight-bg-7);&quot;&gt;$22,830.28&lt;/mark&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;note that&amp;nbsp;&lt;i&gt;&lt;em&gt;Clarity Kit (X)&lt;/em&gt;&lt;/i&gt;&amp;nbsp;sales were combined with all previous &lt;i&gt;&lt;em&gt;Clarity Kit (X)&lt;/em&gt;&lt;/i&gt; sales in celebration of Model X fulfillment which began on March 18. these additional funds are allocated to Plugin Authors only.&lt;/p&gt;&lt;h2&gt;by the numbers&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;total payout: $22,830.28&lt;/li&gt;&lt;li&gt;plugin author share: $21,195.54 (70% of base total, plus accrued Clarity Kit (X))&lt;/li&gt;&lt;li&gt;strategic contributors share: $1,634.73 (30% of base total)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;plugin author&lt;/strong&gt;&lt;/b&gt;&amp;nbsp;earnouts are calculated automatically by a collection of factors including a plugin&#39;s age (on live playlists), presence (by % dominance on playlists), and impressions (times displayed on device), relative to all other community plugins. there is a minimum threshold of 50 total connections (installs + forks) to qualify for monthly payouts. see the algorithm in action &lt;a href=&quot;https://www.youtube.com/watch?v=FJA_tOYcMbI&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;strategic contributors&lt;/strong&gt;&lt;/b&gt;&amp;nbsp;are those who contribute to&amp;nbsp;&lt;a href=&quot;https://github.com/usetrmnl&quot;&gt;TRMNL open source projects&lt;/a&gt;. these earnouts are calculated with a mix of automation + human touch. relative to the funding available, below are allocations by category:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Firmware, 18%&lt;/li&gt;&lt;li&gt;3D Models, 6%&lt;/li&gt;&lt;li&gt;BYOS, 46%&lt;/li&gt;&lt;li&gt;Localizations, 7%&lt;/li&gt;&lt;li&gt;BYOD, 23%&lt;/li&gt;&lt;li&gt;Documentation/Resources, 0%&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;note that these allocations change monthly based on contributions by category.&lt;/p&gt;&lt;h2&gt;algorithm?&lt;/h2&gt;&lt;p&gt;over time the above weights, revenue share percentages, and minimum thresholds may change. reporting will become more transparent. our goal is an open sourced algorithm and self-service calculations with daily (or faster) resolution.&lt;/p&gt;&lt;p&gt;candid feedback is welcome, email&amp;nbsp;&lt;a href=&quot;mailto:team@trmnl.com&quot;&gt;team@trmnl.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/creator-fund-03-2026</id>
    <link href="https://trmnl.com/blog/creator-fund-03-2026"/>
    <published>2026-04-06T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Creator Fund - March 2026</title>
    <updated>2026-04-06T00:00:00+00:00</updated>
    <dc:date>2026-04-06T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h2&gt;&lt;a href=&quot;https://trmnl.com/recipes/200956&quot;&gt;Awair&lt;/a&gt; Plugin&lt;/h2&gt;&lt;p&gt;Community member Bryant created the &lt;a href=&quot;https://trmnl.com/recipes/200956&quot;&gt;Awair&lt;/a&gt; plugin; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;I have air quality monitors spread out throughout the home. A smartphone app is great for something that should control a device. If I want something to display status across an array of devices, TRMNL is a great platform for that.&lt;/p&gt;&lt;h3&gt;Why were you the person to make it?&lt;/h3&gt;&lt;p&gt;This is probably most useful for people who have several Air Quality monitors and for folks who are a bit over-interested in their indoor air quality. I met this criteria.&lt;/p&gt;&lt;h3&gt;&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;How did you balance look vs functionality?&lt;/mark&gt;&lt;/h3&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;This needed to be glanceable.&lt;/strong&gt;&lt;/b&gt; I don&#39;t want to have to calculate whether or not certain values were within an acceptable range when I glance at the screen. So I wanted a way to show many values across multiple sensors and easily show whether or not they are in an expected or acceptable range.&lt;/p&gt;&lt;h3&gt;What, if any, challenges did you face while creating it?&lt;/h3&gt;&lt;p&gt;ChatGPT was great for getting the wiring all hooked up between the TRMNL and the data providers. I had to iterate on my own to make sure that the UX on the layout was actually intuitive and glanceable.&lt;/p&gt;&lt;h3&gt;&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;Is there a tip you would give to a new plugin developer?&lt;/mark&gt;&lt;/h3&gt;&lt;p&gt;There isn&#39;t a single obvious way to approach each visualization. You just have to iterate through it multiple times.&lt;/p&gt;&lt;h3&gt;What could be improved by TRMNL?&lt;/h3&gt;&lt;p&gt;Like I said, creating and editing these plugins takes a lot of iteration. You want to see how it generally looks, you want to see how it looks on the actual devices. I would love to see improvements in the process and workflow for allowing for a development workflow that assists in making that painless.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-awair</id>
    <link href="https://trmnl.com/blog/featured-plugin-awair"/>
    <published>2026-03-31T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Awair</title>
    <updated>2026-03-31T00:00:00+00:00</updated>
    <dc:date>2026-03-31T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h3&gt;&lt;a href=&quot;https://trmnl.com/recipes/236317&quot;&gt;Paul&#39;s Recipe recipe&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Community member Paul &lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;(Discord: &lt;/mark&gt;&lt;code&gt;DD_DE&lt;/code&gt;) created &lt;a href=&quot;https://trmnl.com/recipes/236317&quot;&gt;Paul&#39;s Recipe recipe&lt;/a&gt;; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;We&#39;ve had a party coming up and I decided to serve the drinks for the guests. So I needed a menu and list of recipes. Instead of printing it out, just to find a blatant typo, I decided to make use of my TRMNLs. First I searched the plugins and recipes and while I &lt;a href=&quot;https://trmnl.com/recipes/135480&quot;&gt;found one&lt;/a&gt; it didn&#39;t fit all my drinks and also was quite hard to read in the dim party environment. So I made my own. I first made the menu, which I then refined for the recipes. After a successful party, I improved my plugin a bit further, adding proper form fields and custom scaling. I hope you enjoy.&lt;/p&gt;&lt;h3&gt;How did you balance looks vs functionality?&lt;/h3&gt;&lt;p&gt;In my first iteration, looks were definitely more important than functionality. But in preparation to release it, I&#39;ve expanded the functionality a lot, while keeping the design very similar.&lt;/p&gt;&lt;h3&gt;What was your process for creating the plugin?&lt;/h3&gt;&lt;p&gt;My development principals are to avoid using AI as much as I can. This is because I&#39;d need as much time understanding the AI code as it would take me to write it myself. In addition, I feel like I can learn more by scouring the documentation or other plugins that by asking the AI.&lt;/p&gt;&lt;h3&gt;What, if any, challenges did you face while creating it?&lt;/h3&gt;&lt;p&gt;I&#39;ve struggled a bit with the liquid syntax, since it&#39;s been a while since my last plugin and I usually don&#39;t use it. But over time I got better again and reworked my clunky code from the beginnings , if needed. Oh and I nearly bricked my plugin while adding form fields, so that was fun.&lt;/p&gt;&lt;h3&gt;Is there a tip you would give to a new plugin developer?&lt;/h3&gt;&lt;p&gt;Probably to just start coding, use whatever tool you want, but understand what the code does. It doesn&#39;t matter if you&#39;re code is clunky, finish it and then rework it if you think you know better techniques.&lt;/p&gt;&lt;h3&gt;What is your favorite plugin that someone else created and why?&lt;/h3&gt;&lt;p&gt;I think it might be the &quot;&lt;a href=&quot;https://trmnl.com/recipes/28722&quot;&gt;useless fact&lt;/a&gt;&quot; plugin&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;.&lt;/mark&gt;&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-pauls-recipe</id>
    <link href="https://trmnl.com/blog/featured-plugin-pauls-recipe"/>
    <published>2026-03-24T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Paul&#39;s Recipe recipe</title>
    <updated>2026-03-24T00:00:00+00:00</updated>
    <dc:date>2026-03-24T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h2&gt;&lt;a href=&quot;https://trmnl.com/recipes/122776&quot;&gt;Hardcover - Reading Buddy&lt;/a&gt; Plugin&lt;/h2&gt;&lt;p&gt;Community member Sumalyo Datta&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt; (Discord: &lt;/mark&gt;&lt;code&gt;sumalyo&lt;/code&gt;) created the &lt;a href=&quot;https://trmnl.com/recipes/122776&quot;&gt;Hardcover - Reading Buddy&lt;/a&gt; plugin; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;I thought that I would be quite cool to see my (and other people&#39;s) reading progress on the TRMNL. Also it would give me the perfect dose of motivation to finish my book.&lt;/p&gt;&lt;h3&gt;How did you balance look vs functionality?&lt;/h3&gt;&lt;p&gt;I tried to keep it minimalistic. The idea of mashups looked quite interesting and I leveraged the idea of making my views appropriate for various sizes. As Book Club members would most likely combine various iterations of this plugin to track their buddies, I worked on a design that gave it a clean yet gamified look. I also worked on implementing a progress bar that would look clean.&lt;/p&gt;&lt;h3&gt;What was your process for creating the plugin?&lt;/h3&gt;&lt;p&gt;I used the service &lt;a href=&quot;https://hardcover.app/&quot;&gt;Hardcover.app&lt;/a&gt; that provided a nice clean API to retrieve user progress information.&lt;/p&gt;&lt;h3&gt;What, if any, challenges did you face while creating it?&lt;/h3&gt;&lt;p&gt;The design of the single page view which had to adjust based on the number of books the user was currently reading was quite challenging to design.&lt;/p&gt;&lt;h3&gt;If I were to make this from scratch today, what would I have changed?&lt;/h3&gt;&lt;p&gt;I made this plugin a long while ago when &lt;a href=&quot;https://trmnl.com/framework/docs/enhancement_guide&quot;&gt;FrameworkV2&lt;/a&gt; was not quite mature. Today I look a the cool features that the team have added for developers and I think I could incorporate some of that in this.&lt;/p&gt;&lt;h3&gt;What is your favorite plugin that someone else created and why?&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://trmnl.com/recipes/?search=Movie+Title+Screens&amp;amp;sort-by=newest&quot;&gt;&lt;i&gt;&lt;em&gt;Movie Title Screens&lt;/em&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;em&gt; - Just so so cool!!&lt;/em&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-hardcover-reading-buddy</id>
    <link href="https://trmnl.com/blog/featured-plugin-hardcover-reading-buddy"/>
    <published>2026-03-17T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Hardcover - Reading Buddy</title>
    <updated>2026-03-17T00:00:00+00:00</updated>
    <dc:date>2026-03-17T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h2&gt;&lt;a href=&quot;https://usetrmnl.com/recipes/27251&quot;&gt;Who&#39;s That Pokémon?&lt;/a&gt; Plugin&lt;/h2&gt;&lt;p&gt;Community member Sriniketh&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt; (Discord: &lt;/mark&gt;&lt;code&gt;amelogenin&lt;/code&gt;) created the &lt;a href=&quot;https://usetrmnl.com/recipes/27251&quot;&gt;Who&#39;s That Pokémon?&lt;/a&gt; plugin; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;I was an early adopter and was so excited to receive my TRMNL that I started thinking about what I&#39;d want to see on it every day. When I dove into the docs to learn how to build plugins, I needed a fun dataset to work with, and that&#39;s when I thought of Pokémon. I grew up watching the show, and one thing that always stuck with me was the &quot;Who&#39;s That Pokémon?&quot; segment during commercial breaks. They&#39;d show a Pokémon&#39;s silhouette and challenge viewers to guess who it was. I wanted to recreate that little moment of nostalgia: glancing at my TRMNL and seeing a random Pokémon each day, just like the show used to do.&lt;/p&gt;&lt;h3&gt;Why were you the person to make it?&lt;/h3&gt;&lt;p&gt;Honestly, anyone could have made this. &lt;b&gt;&lt;strong&gt;I thought it would be fun to learn the platform by building something that&#39;s inherently fun to me.&lt;/strong&gt;&lt;/b&gt; As a developer, I also wanted to be thoughtful about the technical details. I initially used a webhook, but switched to polling since the data only changes once a day and it meant zero configuration for users. That ease of setup made it a natural fit for a recipe. It was a good excuse to tinker and learn how TRMNL plugins work end to end.&lt;/p&gt;&lt;h3&gt;&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;Were you inspired by any other recipes or plugin creators?&lt;/mark&gt;&lt;/h3&gt;&lt;p&gt;Absolutely. The community and Discord were a huge inspiration. I saw so many creative plugins that displayed something unique each day: &lt;a href=&quot;https://trmnl.com/integrations/mondrian&quot;&gt;Piet Mondrian&lt;/a&gt; generative art, Marvel character of the day, &lt;a href=&quot;https://trmnl.com/recipes/27184&quot;&gt;Calvin and Hobbes&lt;/a&gt;. That format of &quot;one delightful thing per day&quot; really resonated with me and made me think about what my version of that could be. I built this for fun and didn&#39;t anticipate so many people relating to it. It has way more installs than I could have imagined and was even featured in the TRMNL X video. Fun fact: the random selection has surfaced &lt;i&gt;&lt;em&gt;Gumshoos&lt;/em&gt;&lt;/i&gt; four times now, making it the unofficial mascot of the plugin!&lt;/p&gt;&lt;h3&gt;How did you balance look vs functionality?&lt;/h3&gt;&lt;p&gt;I wanted it to be simple but give me some extra details beyond just the name so I could improve my Pokémon knowledge. The image had to be front and center, so when the plugin is used as part of a mashup, details like abilities disappear but the image stays. That was a deliberate tradeoff.&lt;/p&gt;&lt;h3&gt;Did you learn anything that you want to apply to future or past recipes?&lt;/h3&gt;&lt;p&gt;Keep the infrastructure simple. A GitHub Action that runs once a day and commits a JSON file is about as low maintenance as it gets.&lt;/p&gt;&lt;h3&gt;What, if any, challenges did you face while creating it?&lt;/h3&gt;&lt;p&gt;I&#39;m one of those who has searched &quot;how to center a div&quot; far too many times. So I spent quite a bit of time getting the UI to scale well across mashups without the image getting cut off. It was a lot of trial and error, but that&#39;s part of the fun.&lt;/p&gt;&lt;h3&gt;What part of the TRMNL Framework, Liquid filters, or other documentation was most helpful?&lt;/h3&gt;&lt;p&gt;I was impressed by how much tooling was already in place when I developed the plugin. I didn&#39;t even have my device yet, but I could use tools like &lt;a href=&quot;https://github.com/usetrmnl/trmnlp&quot;&gt;trmnlp&lt;/a&gt; to get started with plugin development. The &lt;a href=&quot;https://docs.trmnl.com/go/how-it-works&quot;&gt;docs&lt;/a&gt; were well put together and helped me understand the finer details, including how refresh intervals affect battery life. That kind of context made it easier to make informed decisions about how the plugin should work.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-whos-that-pokemon</id>
    <link href="https://trmnl.com/blog/featured-plugin-whos-that-pokemon"/>
    <published>2026-03-10T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Who&#39;s That Pokémon?</title>
    <updated>2026-03-10T00:00:00+00:00</updated>
    <dc:date>2026-03-10T00:00:00+00:00</dc:date>
  </entry>
  <dc:date>2026-04-21T00:00:00+00:00</dc:date>
</feed>