{"data":[{"id":501111,"user_id":47701,"name":"WedgieTracker","description":"Live NBA wedgie count and pace","published_at":"2026-10-23T05:20:57.023Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/ng6t60z5ykt8qpanq9cf5d4j1vu5","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/8g0hiknjw9o2jbozygf0xfywt7oj","author_bio":{"keyname":"about","name":"About This Plugin","field_type":"author_bio","category":"sports,entertainment","description":"WedgieTracker counts every time an NBA basketball gets stuck between the rim and the backboard. This plugin brings the count to your TRMNL with the current season total against the all-time record, the projected pace for the season, the days since the last wedgie, and the three latest wedgies with the player, the teams and the play. The data comes straight from wedgietracker.com and refreshes on its own, so there is nothing to set up. Install it and wait for the next ball to get stuck.","learn_more_url":"https://www.wedgietracker.com","github_url":"https://github.com/WedgieTracker/wedgietracker","email_address":"help@zokeggltd.com"},"custom_fields":[{"keyname":"about","name":"About This Plugin","field_type":"author_bio","category":"sports,entertainment","description":"WedgieTracker counts every time an NBA basketball gets stuck between the rim and the backboard. This plugin brings the count to your TRMNL with the current season total against the all-time record, the projected pace for the season, the days since the last wedgie, and the three latest wedgies with the player, the teams and the play. The data comes straight from wedgietracker.com and refreshes on its own, so there is nothing to set up. Install it and wait for the next ball to get stuck.","learn_more_url":"https://www.wedgietracker.com","github_url":"https://github.com/WedgieTracker/wedgietracker","email_address":"help@zokeggltd.com"}],"stats":{"installs":0,"forks":0}},{"id":496422,"user_id":18167,"name":"Capricious Constellations","description":"Consider cool constellations","published_at":"2026-10-22T20:56:57.806Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/57arklpw3xoenyhzgac5fz1qzw4x","icon_content_type":"image/png","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/b73igbg2axe3xmklw3tq870wyj7q","author_bio":{"keyname":"constellations","name":"Capricious Constellations","category":"images,nature","field_type":"author_bio","description":"If you have ever looked up at the night sky and wondered what constellation those stars make, then this plugin is for you! One of 88 different named constellations will be displayed, including fan favorites Gemini, Ursa Major and Orion. Keep looking up!","email_address":"workfarmlabs@gmail.com"},"custom_fields":[{"keyname":"constellations","name":"Capricious Constellations","category":"images,nature","field_type":"author_bio","description":"If you have ever looked up at the night sky and wondered what constellation those stars make, then this plugin is for you! One of 88 different named constellations will be displayed, including fan favorites Gemini, Ursa Major and Orion. Keep looking up!","email_address":"workfarmlabs@gmail.com"}],"stats":{"installs":6,"forks":0}},{"id":507499,"user_id":6458,"name":"Wikimedia Commons Picture of the Day","description":"Daily Commons photo with its story","published_at":"2026-10-16T14:49:22.324Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/cg2uwki018py9c5zxfj8xolcej26","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/r4nmyzwf66fneecfwd3seav3lzbu","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","description":"Shows the Wikimedia Commons Picture of the Day with its caption on your TRMNL. Choose today's picture, the last ten days (in turn or at random), the same date in earlier years, or any day since 2004; the caption language follows your TRMNL account language.\u003cbr /\u003ePictures are credited to Wikimedia Commons; each file has its own licence on its Commons page.","category":"nature,art","github_url":"https://github.com/ExcuseMi/trmnl-wikimedia-potd-plugin","learn_more_url":"https://commons.wikimedia.org/wiki/Commons:Picture_of_the_day"},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","description":"Shows the Wikimedia Commons Picture of the Day with its caption on your TRMNL. Choose today's picture, the last ten days (in turn or at random), the same date in earlier years, or any day since 2004; the caption language follows your TRMNL account language.\u003cbr /\u003ePictures are credited to Wikimedia Commons; each file has its own licence on its Commons page.","category":"nature,art","github_url":"https://github.com/ExcuseMi/trmnl-wikimedia-potd-plugin","learn_more_url":"https://commons.wikimedia.org/wiki/Commons:Picture_of_the_day"},{"keyname":"mode","field_type":"select","name":"Which pictures","default":"today","help_text":"\u003cb\u003eToday\u003c/b\u003e: the newest picture.\u003cbr /\u003e\u003cb\u003eLast 10 days, in turn\u003c/b\u003e: the recent ones, the next at each refresh.\u003cbr /\u003e\u003cb\u003eLast 10 days, random\u003c/b\u003e: one of the recent ones.\u003cbr /\u003e\u003cb\u003eOn this day\u003c/b\u003e: this date in an earlier year, a new year at each refresh.\u003cbr /\u003e\u003cb\u003eArchive\u003c/b\u003e: a random day since 2004.","options":[{"Today":"today"},{"Last 10 days, in turn":"rotate"},{"Last 10 days, random":"random"},{"On this day":"on_this_day"},{"Archive (since 2004)":"archive"}]},{"keyname":"picture_fit","field_type":"select","name":"Picture fit","default":"contain","help_text":"\u003cb\u003eWhole picture\u003c/b\u003e: nothing is cut off, empty space may remain.\u003cbr /\u003e\u003cb\u003eFill the area\u003c/b\u003e: the picture covers its area, the edges are cropped. On trmnl.com the crop follows the picture's subject (faces first, otherwise the main subject).","options":[{"Whole picture":"contain"},{"Fill the area":"cover"}]},{"keyname":"language","field_type":"select","name":"Language","default":"auto","optional":true,"help_text":"The language of the title and description.\u003cbr /\u003e\u003cb\u003eAccount language\u003c/b\u003e: the language of your TRMNL account.\u003cbr /\u003eA language without a text for a picture falls back to English.","options":[{"Account language":"auto"},{"English":"en"},{"Nederlands":"nl"},{"Deutsch":"de"},{"Français":"fr"},{"Español":"es"},{"Italiano":"it"},{"Português":"pt"},{"Polski":"pl"},{"日本語":"ja"},{"Русский":"ru"},{"Svenska":"sv"},{"Čeština":"cs"}]},{"keyname":"show_description","field_type":"boolean","name":"Show title and description","default":"true","optional":true,"help_text":"\u003cb\u003eOn\u003c/b\u003e: the title and the story of the picture, from the Commons caption, else from Wikipedia.\u003cbr /\u003e\u003cb\u003eOff\u003c/b\u003e: only the picture, with a small credit in a corner."},{"keyname":"show_title_bar","field_type":"boolean","name":"Show title bar","default":"true","optional":true,"help_text":"\u003cb\u003eOn\u003c/b\u003e: the bar at the bottom with the icon, the name and the day of the picture.\u003cbr /\u003e\u003cb\u003eOff\u003c/b\u003e: the picture and text get that room; the day moves next to the credit."}],"stats":{"installs":25,"forks":0}},{"id":500572,"user_id":28246,"name":"Weather Curve","description":"Temperature curve \u0026 rain, 7 days","published_at":"2026-10-16T14:46:00.543Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/wqdh7v2tvisqag2z3kgctoii97qz","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/ysfahy7w6upkbt7nsddqfsvktcgw","author_bio":{"keyname":"about","field_type":"author_bio","name":"About This Plugin","category":"environment,life","github_url":"https://github.com/samumatic/trmnl-weather-curve","description":"Shows a 7-day forecast as one temperature curve for daily highs and lows, with a weather icon per day and the chance of rain along the bottom. Today and tomorrow are shown on the left. Available in German or English, in °C or °F, with an optional UV index.\u003cbr\u003e\u003cbr\u003eIn Europe the forecast comes from the \u003ca href=\"https://www.dwd.de\" class=\"underline\" target=\"_blank\"\u003eDeutscher Wetterdienst (DWD)\u003c/a\u003e via \u003ca href=\"https://brightsky.dev\" class=\"underline\" target=\"_blank\"\u003eBright Sky\u003c/a\u003e, elsewhere from \u003ca href=\"https://open-meteo.com/\" class=\"underline\" target=\"_blank\"\u003eOpen-Meteo\u003c/a\u003e. No account or API key needed.\u003cbr\u003e\u003cbr\u003eData: DWD (CC BY 4.0) via Bright Sky, and \u003ca href=\"https://open-meteo.com/\" class=\"underline\" target=\"_blank\"\u003eWeather data by Open-Meteo.com\u003c/a\u003e (CC BY 4.0). Not affiliated with the DWD or Open-Meteo.\u003cbr\u003e\u003cbr\u003eSource code, feedback and bug reports: \u003ca href=\"https://github.com/samumatic/trmnl-weather-curve\" class=\"underline\" target=\"_blank\"\u003eGitHub\u003c/a\u003e"},"custom_fields":[{"keyname":"about","field_type":"author_bio","name":"About This Plugin","category":"environment,life","github_url":"https://github.com/samumatic/trmnl-weather-curve","description":"Shows a 7-day forecast as one temperature curve for daily highs and lows, with a weather icon per day and the chance of rain along the bottom. Today and tomorrow are shown on the left. Available in German or English, in °C or °F, with an optional UV index.\u003cbr\u003e\u003cbr\u003eIn Europe the forecast comes from the \u003ca href=\"https://www.dwd.de\" class=\"underline\" target=\"_blank\"\u003eDeutscher Wetterdienst (DWD)\u003c/a\u003e via \u003ca href=\"https://brightsky.dev\" class=\"underline\" target=\"_blank\"\u003eBright Sky\u003c/a\u003e, elsewhere from \u003ca href=\"https://open-meteo.com/\" class=\"underline\" target=\"_blank\"\u003eOpen-Meteo\u003c/a\u003e. No account or API key needed.\u003cbr\u003e\u003cbr\u003eData: DWD (CC BY 4.0) via Bright Sky, and \u003ca href=\"https://open-meteo.com/\" class=\"underline\" target=\"_blank\"\u003eWeather data by Open-Meteo.com\u003c/a\u003e (CC BY 4.0). Not affiliated with the DWD or Open-Meteo.\u003cbr\u003e\u003cbr\u003eSource code, feedback and bug reports: \u003ca href=\"https://github.com/samumatic/trmnl-weather-curve\" class=\"underline\" target=\"_blank\"\u003eGitHub\u003c/a\u003e"},{"keyname":"lat_lon","field_type":"lat_lon","name":"Location","description":"Search for a city or postal code, or enter coordinates as \"lat,lon\".","description-de":"Ort oder Postleitzahl suchen, oder Koordinaten als \"lat,lon\" eingeben.","default":"52.5200,13.4050"},{"keyname":"location_name","field_type":"string","name":"Location name","description":"Shown as the title, for example your city. Open-Meteo sends no place name, so set one here. Left empty, the title shows the nearest DWD station (Europe only).","description-de":"Wird als Titel angezeigt, zum Beispiel deine Stadt. Open-Meteo liefert keinen Ortsnamen, also trag hier einen ein. Leer gelassen zeigt der Titel die nächste DWD-Station (nur in Europa).","placeholder":"New York","optional":true},{"keyname":"language","field_type":"select","name":"Language","description":"Auto follows the language of your TRMNL account.","description-de":"Auto folgt der Sprache deines TRMNL-Kontos.","options":[{"Auto":"auto"},{"Deutsch":"de"},{"English":"en"}],"default":"auto"},{"keyname":"units","field_type":"select","name":"Temperature unit","description":"Fahrenheit also switches the clock to 12-hour time.","description-de":"Fahrenheit stellt auch die Uhrzeit auf 12 Stunden um.","options":[{"Celsius":"celsius"},{"Fahrenheit":"fahrenheit"}],"default":"celsius"},{"keyname":"show_uv","field_type":"boolean","name":"UV index","description":"Shows today's UV index next to high, low and rain. In Europe this adds one small request to Open-Meteo.","description-de":"Zeigt den UV-Index von heute neben Hoch, Tief und Regen. In Europa kommt dafür eine kleine Anfrage an Open-Meteo dazu.","default":false},{"keyname":"data_source","field_type":"select","name":"Data source","description":"Auto uses the DWD in Europe and Open-Meteo everywhere else. The DWD has no rain forecast for most stations outside Europe.","description-de":"Auto nutzt in Europa den DWD und sonst Open-Meteo. Außerhalb Europas hat der DWD für die meisten Stationen keine Regenvorhersage.","options":[{"Auto":"auto"},{"DWD":"dwd"},{"Open-Meteo":"open-meteo"}],"default":"auto"}],"stats":{"installs":91,"forks":0}},{"id":501494,"user_id":23360,"name":"Christmas Countdown","description":"Get in the Christmas spirit!","published_at":"2026-10-16T14:45:15.666Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/91yewu5h33s7mc3n1m06f3cha0ja","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/zxdtg5gjjj4kvv1cix4qm6rytsya","author_bio":{"keyname":"author_bio","name":"About this plugin","field_type":"author_bio","description":"A cozy dot-art countdown to Christmas. Every day a new winter scene, more snow as Christmas nears, and from 1 December a tree that gets one ornament a day. Works on OG, X and color screens, in 12 languages.","email_address":"trmnl@achtnegen.nl","category":"entertainment"},"custom_fields":[{"keyname":"author_bio","name":"About this plugin","field_type":"author_bio","description":"A cozy dot-art countdown to Christmas. Every day a new winter scene, more snow as Christmas nears, and from 1 December a tree that gets one ornament a day. Works on OG, X and color screens, in 12 languages.","email_address":"trmnl@achtnegen.nl","category":"entertainment"},{"keyname":"language","field_type":"select","name":"Language","description":"Auto follows your TRMNL account language.","options":["Auto","English","Nederlands","Deutsch","Français","Español","Italiano","Português","Svenska","Dansk","Norsk","Polski","Suomi"],"default":"Auto"},{"keyname":"mode","field_type":"select","name":"Scene","description":"Combined: a new scene every day, then from 1 December a tree that gets one ornament per day. Growing tree: the tree grows all season. Daily scene: a different scene every day.","options":["Combined","Growing tree","Daily scene"],"default":"Combined"},{"keyname":"counter","field_type":"select","name":"Count","description":"Count days, or sleeps (nights).","options":["Days","Sleeps"],"default":"Days"},{"keyname":"colors","field_type":"select","name":"Colors","description":"Auto uses color on color screens and gray tones on 16-shade screens. Off keeps everything black.","options":["Auto","Off"],"default":"Auto"}],"stats":{"installs":21,"forks":0}},{"id":490708,"user_id":45813,"name":"Black Excellence Daily","description":"Daily wisdom from Black history","published_at":"2026-10-16T14:36:53.752Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/7b9wn8hv7zoc14l74tmb5r0mccmz","icon_content_type":"image/png","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/8smyjf9ig4h3ccsfi9xxtryx60p4","author_bio":{"keyname":"about","name":"About This Plugin","field_type":"author_bio","description":"Black Excellence Daily brings a new historical figure to your TRMNL every morning, with a quote in their own words and a short biography. The collection spans 366 figures, one for every day of the year, from the Civil Rights Movement to science, sports, music, literature, politics, and business, across the United states and Afrcian diaspora.\u003cbr\u003e\u003cbr\u003eFigures change daily at midnight in your time zone. When a figure had more than one quote, the display rotates through them over the course of the day, so each glance can bring new inspiration. Illustrations inspired by each figure\u0026#39;s life are added pending.\u003cbr\u003e\u003cbr\u003eIt works in full screen and in every mashup size. No account or setup is requird: install it and it runs.\u003cbr\u003e\u003cbr\u003eFigures come form the Black Excellence Daily Perpetual Calendar \u0026amp; Journal. Learn more at BlackExcellenceDaily.com."},"custom_fields":[{"keyname":"about","name":"About This Plugin","field_type":"author_bio","description":"Black Excellence Daily brings a new historical figure to your TRMNL every morning, with a quote in their own words and a short biography. The collection spans 366 figures, one for every day of the year, from the Civil Rights Movement to science, sports, music, literature, politics, and business, across the United states and Afrcian diaspora.\u003cbr\u003e\u003cbr\u003eFigures change daily at midnight in your time zone. When a figure had more than one quote, the display rotates through them over the course of the day, so each glance can bring new inspiration. Illustrations inspired by each figure\u0026#39;s life are added pending.\u003cbr\u003e\u003cbr\u003eIt works in full screen and in every mashup size. No account or setup is requird: install it and it runs.\u003cbr\u003e\u003cbr\u003eFigures come form the Black Excellence Daily Perpetual Calendar \u0026amp; Journal. Learn more at BlackExcellenceDaily.com."}],"stats":{"installs":4,"forks":0}},{"id":500496,"user_id":40325,"name":"Trmnl-creator-stats","description":"Showing your plugin author stats","published_at":"2026-10-16T06:44:55.880Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/55tccuwb8y31330haufuqnwt9hb8","icon_content_type":"image/png","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/k3awc42ghpchpe1lqoj3rzidjziq","author_bio":{"keyname":"about","name":"About This Plugin","field_type":"author_bio","category":"kpi,programming","description":"Track your own TRMNL recipes on your TRMNL: total connections (installs + forks), your rank among all recipe creators and how it moved this week, a 30-day curve, new connections per day, and every recipe's progress toward its next milestone, including the 50 connections of the Creator Fund.\u003cbr\u003e\u003cbr\u003e\nThree displays: Overview, My recipes (one card per recipe with its screenshot, showing your top 8 on OG and top 9 on X) and All recipes (a compact list of every recipe you published).\u003cbr\u003e\u003cbr\u003e\nData comes from the \u003ca href=\"https://nbbou81000.github.io/trmnl-leaderboard/\"\u003eTRMNL Creator Leaderboard\u003c/a\u003e and refreshes every hour. Available in English, French, German and Spanish, in every layout, on TRMNL OG and TRMNL X.","github_url":"https://github.com/nbbou81000/trmnl-creator-stats","learn_more_url":"https://nbbou81000.github.io/trmnl-leaderboard/"},"custom_fields":[{"keyname":"about","name":"About This Plugin","field_type":"author_bio","category":"kpi,programming","description":"Track your own TRMNL recipes on your TRMNL: total connections (installs + forks), your rank among all recipe creators and how it moved this week, a 30-day curve, new connections per day, and every recipe's progress toward its next milestone, including the 50 connections of the Creator Fund.\u003cbr\u003e\u003cbr\u003e\nThree displays: Overview, My recipes (one card per recipe with its screenshot, showing your top 8 on OG and top 9 on X) and All recipes (a compact list of every recipe you published).\u003cbr\u003e\u003cbr\u003e\nData comes from the \u003ca href=\"https://nbbou81000.github.io/trmnl-leaderboard/\"\u003eTRMNL Creator Leaderboard\u003c/a\u003e and refreshes every hour. Available in English, French, German and Spanish, in every layout, on TRMNL OG and TRMNL X.","github_url":"https://github.com/nbbou81000/trmnl-creator-stats","learn_more_url":"https://nbbou81000.github.io/trmnl-leaderboard/"},{"keyname":"recipe_id","field_type":"string","name":"One of your recipe IDs","description":"The number at the end of the link to any of your public recipes, for example 375844 for trmnl.com/recipes/375844. Any one of your recipes works; the plugin shows all of them.","placeholder":"375844","default":"375844"},{"keyname":"mode","field_type":"select","name":"Display","description":"Overview of your account; one card per recipe with its screenshot, 15-day curve and next milestone; or a compact list of every recipe with its connections and weekly gain.","options":[{"Overview":"overview"},{"My recipes":"recipes"},{"All recipes (compact)":"all"}],"default":"overview"},{"keyname":"language","field_type":"select","name":"Language","options":[{"English":"en"},{"Français":"fr"},{"Deutsch":"de"},{"Español":"es"}],"default":"en"}],"stats":{"installs":7,"forks":1}},{"id":457157,"user_id":40672,"name":"Demotivational Quotes Calendar","description":"A daily dose of demotivation","published_at":"2026-10-16T06:35:35.690Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/nitg59wh9k9gcbi8pirg4kpj50pb","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/ieswf1xz6r3kzziz5vc6qhzg6uvt","author_bio":{"keyname":"about","field_type":"author_bio","name":"About This Plugin","description":"Demotivational Quotes Calendar - A daily dose of demotivation","category":"entertainment","email_address":"xtrmnlx@gmail.com"},"custom_fields":[{"keyname":"about","field_type":"author_bio","name":"About This Plugin","description":"Demotivational Quotes Calendar - A daily dose of demotivation","category":"entertainment","email_address":"xtrmnlx@gmail.com"}],"stats":{"installs":19,"forks":0}},{"id":500950,"user_id":6458,"name":"Paprika Meal Plan","description":"Your meal plan, list or calendar","published_at":"2026-10-16T06:23:45.654Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/pykntez885kf3pw96wz8ufa52s4p","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/fjdtik9ppe0vypf1w00gwre2xx3y","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","description":"Shows your Paprika Recipe Manager meal plan.","github_url":"https://github.com/ExcuseMi/trmnl-paprika-plugin","category":"life,personal","help_text":"Unofficial. Not affiliated with Hindsight Labs (Paprika)."},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","description":"Shows your Paprika Recipe Manager meal plan.","github_url":"https://github.com/ExcuseMi/trmnl-paprika-plugin","category":"life,personal","help_text":"Unofficial. Not affiliated with Hindsight Labs (Paprika)."},{"keyname":"paprika_email","field_type":"string","name":"Paprika Email","description":"The email of your Paprika account. Leave it empty to see the plugin with demo data.","placeholder":"you@example.com","optional":true},{"keyname":"paprika_password","field_type":"password","name":"Paprika Password","description":"Your Paprika account password. Needed because Paprika offers no tokens for third parties.","optional":true},{"keyname":"layout","field_type":"select","name":"Layout","description":"\u003cstrong\u003eList\u003c/strong\u003e shows today large and the other days as rows beside it. \u003cstrong\u003eCalendar\u003c/strong\u003e shows the weeks that hold a meal as a grid, up to four on the full layout and two on the wide half, on a large screen in landscape (TRMNL X); smaller or upright screens and the narrow layouts show the list.","default":"list","options":[{"List":"list"},{"Calendar":"calendar"}],"optional":true},{"keyname":"week_start","field_type":"select","name":"First Day","description":"Where the plan starts. \u003cstrong\u003eToday\u003c/strong\u003e hides past days. Smaller layouts always start at today. The calendar starts its weeks on this day, on Monday with Today.","default":"today","options":[{"Today":"today"},{"Monday":"monday"},{"Sunday":"sunday"},{"Saturday":"saturday"}],"optional":true},{"keyname":"days","field_type":"select","name":"Days","description":"How many days of the meal plan to fetch","default":"7","options":["1","2","3","5","7","10","14"],"optional":true},{"keyname":"show_qr_code","field_type":"boolean","name":"Show QR Code","description":"A QR code on the full layout that opens the web page (source link) of today's dinner recipe. Not shown when that recipe has no source link, or when the link is too long for a code that can be scanned at that size.","default":"true","optional":true}],"stats":{"installs":0,"forks":0}},{"id":500937,"user_id":6458,"name":"Paprika Groceries \u0026 Pantry","description":"Grocery list or pantry, by aisle","published_at":"2026-10-16T06:17:02.069Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/q96slr66ehk6xurleb3x27lxn09o","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/c9xq9a4ca7x4idl2cglkeomnnjyq","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","description":"Shows your Paprika Recipe Manager grocery list by aisle, or your pantry, what is in stock by aisle or what expires soonest.","github_url":"https://github.com/ExcuseMi/trmnl-paprika-plugin","category":"life,personal","help_text":"Unofficial. Not affiliated with Hindsight Labs (Paprika)."},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","description":"Shows your Paprika Recipe Manager grocery list by aisle, or your pantry, what is in stock by aisle or what expires soonest.","github_url":"https://github.com/ExcuseMi/trmnl-paprika-plugin","category":"life,personal","help_text":"Unofficial. Not affiliated with Hindsight Labs (Paprika)."},{"keyname":"paprika_email","field_type":"string","name":"Paprika Email","description":"The email of your Paprika account. Leave it empty to see the plugin with demo data.","placeholder":"you@example.com","optional":true},{"keyname":"paprika_password","field_type":"password","name":"Paprika Password","description":"Your Paprika account password. Needed because Paprika offers no tokens for third parties.","optional":true},{"keyname":"show","field_type":"select","name":"Show","description":"\u003cstrong\u003eGrocery list\u003c/strong\u003e lists what is left to buy, by aisle.\u003cbr\u003e \u003cstrong\u003ePantry: in stock\u003c/strong\u003e lists everything in stock by aisle. \u003cbr\u003e\u003cstrong\u003ePantry: expiring first\u003c/strong\u003e lists only items with an expiration date, soonest first.","default":"groceries","options":[{"Grocery list":"groceries"},{"Pantry: in stock":"stock"},{"Pantry: expiring first":"expiring"}],"optional":true}],"stats":{"installs":0,"forks":0}},{"id":500871,"user_id":6458,"name":"Paprika Recipe","description":"Tonight's or a random recipe","published_at":"2026-10-16T06:12:58.585Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/2lxn5ijja6gqs7hz58bs6833o8c7","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/p59qk5c101sdmg0x7yemx5ah3y2o","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","description":"Shows a recipe from your Paprika Recipe Manager, tonight's planned recipe or a random one, with ingredients and directions.","github_url":"https://github.com/ExcuseMi/trmnl-paprika-plugin","category":"life,personal","help_text":"Unofficial. Not affiliated with Hindsight Labs (Paprika)."},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","description":"Shows a recipe from your Paprika Recipe Manager, tonight's planned recipe or a random one, with ingredients and directions.","github_url":"https://github.com/ExcuseMi/trmnl-paprika-plugin","category":"life,personal","help_text":"Unofficial. Not affiliated with Hindsight Labs (Paprika)."},{"keyname":"paprika_email","field_type":"string","name":"Paprika Email","description":"The email of your Paprika account. Leave it empty to see the plugin with demo data.","placeholder":"you@example.com","optional":true},{"keyname":"paprika_password","field_type":"password","name":"Paprika Password","description":"Your Paprika account password. Needed because Paprika offers no tokens for third parties.","optional":true},{"keyname":"show","field_type":"select","name":"Show","description":"\u003cstrong\u003eTonight's recipe\u003c/strong\u003e is today's planned dinner (else today's next planned meal with a recipe, else the next planned recipe). \u003cstrong\u003eRandom recipe\u003c/strong\u003e is another recipe from your collection at every refresh.","default":"tonight","options":[{"Tonight's recipe":"tonight"},{"Random recipe":"random"}],"optional":true},{"keyname":"category","field_type":"string","name":"Recipe Category","description":"Only for Random recipe. Pick the recipe from this Paprika category (the name as in Paprika). Empty means all recipes.","placeholder":"Dinner","optional":true},{"keyname":"show_qr_code","field_type":"boolean","name":"Show QR Code","description":"A QR code on the full layout that opens the recipe's web page (its source link). Not shown when the recipe has no source link.","default":"true","optional":true},{"keyname":"show_photo","field_type":"boolean","name":"Show Photo","description":"Show the recipe photo next to the name, on the full layout and the quadrant. On by default.","default":"true","optional":true}],"stats":{"installs":3,"forks":0}},{"id":62668,"user_id":4887,"name":"MeteoSwiss Charts","description":"MeteoSwiss detailed charts","published_at":"2026-10-16T06:07:39.856Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/phmqhq25rg8a8x53b6ue320up9yz","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/3wq7hlpudns9ykgg522hynru1pu8","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","category":"environment,life","description":"Detailed MeteoSwiss forecast charts for a Swiss location. All layouts are supported, the quadrant shows temperature and precipitation only. Weather data provided by MeteoSwiss.","github_url":"https://github.com/beeb/trmnl-meteoswiss","learn_more_url":"https://www.meteoswiss.admin.ch/"},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","category":"environment,life","description":"Detailed MeteoSwiss forecast charts for a Swiss location. All layouts are supported, the quadrant shows temperature and precipitation only. Weather data provided by MeteoSwiss.","github_url":"https://github.com/beeb/trmnl-meteoswiss","learn_more_url":"https://www.meteoswiss.admin.ch/"},{"keyname":"plz","field_type":"number","name":"Postal code","description":"Swiss postal code (PLZ) of the location, e.g. 1003","default":1003,"min":1000,"max":9999},{"keyname":"location_name","field_type":"string","name":"Location name","description":"Name shown in the title bar, it is not looked up so keep it in line with the postal code","default":"Lausanne"}],"stats":{"installs":6,"forks":0}},{"id":507657,"user_id":18974,"name":"Calendar Cards","description":"Yesterday, today \u0026 tomorrow","published_at":"2026-10-16T05:31:28.537Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/rfhriht6cdddcyzvnm5v8441b9o5","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/5gsmy9l44fhjcn75vytg8h3imr8h","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","category":"calendar,life","description":"A quiet desk calendar for your TRMNL. Three tear-off cards show yesterday, today, and tomorrow, with today's card front and center. Dates follow your TRMNL account time zone. \u003cbr\u003e\u003cbr\u003e\u003ca href=\"https://ko-fi.com/solarmax\" target=\"_blank\"\u003eSupport this and my other projects\u003c/a\u003e","email_address":"dev@photic.zone","learn_more_url":"https://ko-fi.com/solarmax"},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","category":"calendar,life","description":"A quiet desk calendar for your TRMNL. Three tear-off cards show yesterday, today, and tomorrow, with today's card front and center. Dates follow your TRMNL account time zone. \u003cbr\u003e\u003cbr\u003e\u003ca href=\"https://ko-fi.com/solarmax\" target=\"_blank\"\u003eSupport this and my other projects\u003c/a\u003e","email_address":"dev@photic.zone","learn_more_url":"https://ko-fi.com/solarmax"}],"stats":{"installs":6,"forks":1}},{"id":496375,"user_id":5716,"name":"Baby Growth","description":"Daily baby size and due countdown","published_at":"2026-10-16T00:34:04.549Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/emacqex91v9b8yuw34atps31fm9w","icon_content_type":"image/png","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/r3svki6rxaz2va86yz2c8eglxyiv","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","category":"life,personal","description":"Baby Growth turns a due date into a glanceable daily update for a TRMNL display. It shows the days remaining, pregnancy week and trimester, estimated length and weight, a progress bar, and an illustrated everyday object representing the baby's approximate size. Four layouts support full, half-horizontal, half-vertical, and quadrant screens. All calculations run in Liquid using a 280-day pregnancy timeline; the plugin does not call a server or external data API. The size illustrations are loaded from GitHub (raw.githubusercontent.com), so they may be missing if GitHub is unreachable. Size estimates are general averages for fun and are not medical advice. Configure a due date and optional parent's name, then add the plugin to your playlist. Questions or issues? Visit \u003ca href=\"https://github.com/alexjkay/trmnl-baby-growth-plugin\" class=\"underline\"\u003eGitHub\u003c/a\u003e.","github_url":"https://github.com/alexjkay/trmnl-baby-growth-plugin"},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","category":"life,personal","description":"Baby Growth turns a due date into a glanceable daily update for a TRMNL display. It shows the days remaining, pregnancy week and trimester, estimated length and weight, a progress bar, and an illustrated everyday object representing the baby's approximate size. Four layouts support full, half-horizontal, half-vertical, and quadrant screens. All calculations run in Liquid using a 280-day pregnancy timeline; the plugin does not call a server or external data API. The size illustrations are loaded from GitHub (raw.githubusercontent.com), so they may be missing if GitHub is unreachable. Size estimates are general averages for fun and are not medical advice. Configure a due date and optional parent's name, then add the plugin to your playlist. Questions or issues? Visit \u003ca href=\"https://github.com/alexjkay/trmnl-baby-growth-plugin\" class=\"underline\"\u003eGitHub\u003c/a\u003e.","github_url":"https://github.com/alexjkay/trmnl-baby-growth-plugin"},{"keyname":"due_date","field_type":"date","name":"Due date","description":"Choose your baby's due date."},{"keyname":"person_name","field_type":"string","name":"Parent's name","description":"Enter the name of the parent. Leave blank to use Baby Growth.","placeholder":"Name"}],"stats":{"installs":4,"forks":0}},{"id":498631,"user_id":6533,"name":"Visited Japanese Prefectures","description":"Map past Japan visits. Recent trips","published_at":"2026-10-16T00:10:13.610Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/lhfbu0vszhfezo2v5pd3fhxkgaad","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/lkmrk85zxfy5s855ohmbmn78s7ri","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"Visited Japanese prefectures","description":"Keep track of the prefectures you have visited. Shading deepens with recent visits.\n(Contact @albert7617 on TRMNL Discord if experiencing issue)\n","category":"life,travel","github_url":"https://github.com/albert7617/trmnl-visited-japanese-prefectures"},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"Visited Japanese prefectures","description":"Keep track of the prefectures you have visited. Shading deepens with recent visits.\n(Contact @albert7617 on TRMNL Discord if experiencing issue)\n","category":"life,travel","github_url":"https://github.com/albert7617/trmnl-visited-japanese-prefectures"},{"keyname":"show_darker_as_more_recent","field_type":"boolean","name":"Show darker shades for more recent visits","description":"When enabled, map colors display darker tones for more recent visit dates and lighter tones for older visits.","default":"true"},{"keyname":"visited_jp_01","field_type":"boolean","name":"北海道 (Hokkaidô)","description":"北海道 (Hokkaidô) visited","group":"北海道地方 (Hokkaidō)","conditional_validation":[{"when":false,"hidden":["visited_jp_01_date"]}]},{"keyname":"visited_jp_01_date","field_type":"date","name":"Visited 北海道 (Hokkaidô) Visited on [Date]","description":"Visited 北海道 (Hokkaidô) on date — darker shades indicate more recent visits.","group":"北海道地方 (Hokkaidō)","optional":true},{"keyname":"visited_jp_02","field_type":"boolean","name":"青森県 (Aomori)","description":"青森県 (Aomori) visited","group":"東北地方 (Tōhoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_02_date"]}]},{"keyname":"visited_jp_02_date","field_type":"date","name":"Visited 青森県 (Aomori) Visited on [Date]","description":"Visited 青森県 (Aomori) on date — darker shades indicate more recent visits.","group":"東北地方 (Tōhoku)","optional":true},{"keyname":"visited_jp_03","field_type":"boolean","name":"岩手県 (Iwate)","description":"岩手県 (Iwate) visited","group":"東北地方 (Tōhoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_03_date"]}]},{"keyname":"visited_jp_03_date","field_type":"date","name":"Visited 岩手県 (Iwate) Visited on [Date]","description":"Visited 岩手県 (Iwate) on date — darker shades indicate more recent visits.","group":"東北地方 (Tōhoku)","optional":true},{"keyname":"visited_jp_04","field_type":"boolean","name":"宮城県 (Miyagi)","description":"宮城県 (Miyagi) visited","group":"東北地方 (Tōhoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_04_date"]}]},{"keyname":"visited_jp_04_date","field_type":"date","name":"Visited 宮城県 (Miyagi) Visited on [Date]","description":"Visited 宮城県 (Miyagi) on date — darker shades indicate more recent visits.","group":"東北地方 (Tōhoku)","optional":true},{"keyname":"visited_jp_05","field_type":"boolean","name":"秋田県 (Akita)","description":"秋田県 (Akita) visited","group":"東北地方 (Tōhoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_05_date"]}]},{"keyname":"visited_jp_05_date","field_type":"date","name":"Visited 秋田県 (Akita) Visited on [Date]","description":"Visited 秋田県 (Akita) on date — darker shades indicate more recent visits.","group":"東北地方 (Tōhoku)","optional":true},{"keyname":"visited_jp_06","field_type":"boolean","name":"山形県 (Yamagata)","description":"山形県 (Yamagata) visited","group":"東北地方 (Tōhoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_06_date"]}]},{"keyname":"visited_jp_06_date","field_type":"date","name":"Visited 山形県 (Yamagata) Visited on [Date]","description":"Visited 山形県 (Yamagata) on date — darker shades indicate more recent visits.","group":"東北地方 (Tōhoku)","optional":true},{"keyname":"visited_jp_07","field_type":"boolean","name":"福島県 (Hukusima)","description":"福島県 (Hukusima) visited","group":"東北地方 (Tōhoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_07_date"]}]},{"keyname":"visited_jp_07_date","field_type":"date","name":"Visited 福島県 (Hukusima) Visited on [Date]","description":"Visited 福島県 (Hukusima) on date — darker shades indicate more recent visits.","group":"東北地方 (Tōhoku)","optional":true},{"keyname":"visited_jp_08","field_type":"boolean","name":"茨城県 (Ibaraki)","description":"茨城県 (Ibaraki) visited","group":"関東地方 (Kantō)","conditional_validation":[{"when":false,"hidden":["visited_jp_08_date"]}]},{"keyname":"visited_jp_08_date","field_type":"date","name":"Visited 茨城県 (Ibaraki) Visited on [Date]","description":"Visited 茨城県 (Ibaraki) on date — darker shades indicate more recent visits.","group":"関東地方 (Kantō)","optional":true},{"keyname":"visited_jp_09","field_type":"boolean","name":"栃木県 (Totigi)","description":"栃木県 (Totigi) visited","group":"関東地方 (Kantō)","conditional_validation":[{"when":false,"hidden":["visited_jp_09_date"]}]},{"keyname":"visited_jp_09_date","field_type":"date","name":"Visited 栃木県 (Totigi) Visited on [Date]","description":"Visited 栃木県 (Totigi) on date — darker shades indicate more recent visits.","group":"関東地方 (Kantō)","optional":true},{"keyname":"visited_jp_10","field_type":"boolean","name":"群馬県 (Gunma)","description":"群馬県 (Gunma) visited","group":"関東地方 (Kantō)","conditional_validation":[{"when":false,"hidden":["visited_jp_10_date"]}]},{"keyname":"visited_jp_10_date","field_type":"date","name":"Visited 群馬県 (Gunma) Visited on [Date]","description":"Visited 群馬県 (Gunma) on date — darker shades indicate more recent visits.","group":"関東地方 (Kantō)","optional":true},{"keyname":"visited_jp_11","field_type":"boolean","name":"埼玉県 (Saitama)","description":"埼玉県 (Saitama) visited","group":"関東地方 (Kantō)","conditional_validation":[{"when":false,"hidden":["visited_jp_11_date"]}]},{"keyname":"visited_jp_11_date","field_type":"date","name":"Visited 埼玉県 (Saitama) Visited on [Date]","description":"Visited 埼玉県 (Saitama) on date — darker shades indicate more recent visits.","group":"関東地方 (Kantō)","optional":true},{"keyname":"visited_jp_12","field_type":"boolean","name":"千葉県 (Tiba)","description":"千葉県 (Tiba) visited","group":"関東地方 (Kantō)","conditional_validation":[{"when":false,"hidden":["visited_jp_12_date"]}]},{"keyname":"visited_jp_12_date","field_type":"date","name":"Visited 千葉県 (Tiba) Visited on [Date]","description":"Visited 千葉県 (Tiba) on date — darker shades indicate more recent visits.","group":"関東地方 (Kantō)","optional":true},{"keyname":"visited_jp_13","field_type":"boolean","name":"東京都 (Tôkyô)","description":"東京都 (Tôkyô) visited","group":"関東地方 (Kantō)","conditional_validation":[{"when":false,"hidden":["visited_jp_13_date"]}]},{"keyname":"visited_jp_13_date","field_type":"date","name":"Visited 東京都 (Tôkyô) Visited on [Date]","description":"Visited 東京都 (Tôkyô) on date — darker shades indicate more recent visits.","group":"関東地方 (Kantō)","optional":true},{"keyname":"visited_jp_14","field_type":"boolean","name":"神奈川県 (Kanagawa)","description":"神奈川県 (Kanagawa) visited","group":"関東地方 (Kantō)","conditional_validation":[{"when":false,"hidden":["visited_jp_14_date"]}]},{"keyname":"visited_jp_14_date","field_type":"date","name":"Visited 神奈川県 (Kanagawa) Visited on [Date]","description":"Visited 神奈川県 (Kanagawa) on date — darker shades indicate more recent visits.","group":"関東地方 (Kantō)","optional":true},{"keyname":"visited_jp_15","field_type":"boolean","name":"新潟県 (Niigata)","description":"新潟県 (Niigata) visited","group":"中部地方 (Chūbu)","conditional_validation":[{"when":false,"hidden":["visited_jp_15_date"]}]},{"keyname":"visited_jp_15_date","field_type":"date","name":"Visited 新潟県 (Niigata) Visited on [Date]","description":"Visited 新潟県 (Niigata) on date — darker shades indicate more recent visits.","group":"中部地方 (Chūbu)","optional":true},{"keyname":"visited_jp_16","field_type":"boolean","name":"富山県 (Toyama)","description":"富山県 (Toyama) visited","group":"中部地方 (Chūbu)","conditional_validation":[{"when":false,"hidden":["visited_jp_16_date"]}]},{"keyname":"visited_jp_16_date","field_type":"date","name":"Visited 富山県 (Toyama) Visited on [Date]","description":"Visited 富山県 (Toyama) on date — darker shades indicate more recent visits.","group":"中部地方 (Chūbu)","optional":true},{"keyname":"visited_jp_17","field_type":"boolean","name":"石川県 (Isikawa)","description":"石川県 (Isikawa) visited","group":"中部地方 (Chūbu)","conditional_validation":[{"when":false,"hidden":["visited_jp_17_date"]}]},{"keyname":"visited_jp_17_date","field_type":"date","name":"Visited 石川県 (Isikawa) Visited on [Date]","description":"Visited 石川県 (Isikawa) on date — darker shades indicate more recent visits.","group":"中部地方 (Chūbu)","optional":true},{"keyname":"visited_jp_18","field_type":"boolean","name":"福井県 (Hukui)","description":"福井県 (Hukui) visited","group":"中部地方 (Chūbu)","conditional_validation":[{"when":false,"hidden":["visited_jp_18_date"]}]},{"keyname":"visited_jp_18_date","field_type":"date","name":"Visited 福井県 (Hukui) Visited on [Date]","description":"Visited 福井県 (Hukui) on date — darker shades indicate more recent visits.","group":"中部地方 (Chūbu)","optional":true},{"keyname":"visited_jp_19","field_type":"boolean","name":"山梨県 (Yamanasi)","description":"山梨県 (Yamanasi) visited","group":"中部地方 (Chūbu)","conditional_validation":[{"when":false,"hidden":["visited_jp_19_date"]}]},{"keyname":"visited_jp_19_date","field_type":"date","name":"Visited 山梨県 (Yamanasi) Visited on [Date]","description":"Visited 山梨県 (Yamanasi) on date — darker shades indicate more recent visits.","group":"中部地方 (Chūbu)","optional":true},{"keyname":"visited_jp_20","field_type":"boolean","name":"長野県 (Nagano)","description":"長野県 (Nagano) visited","group":"中部地方 (Chūbu)","conditional_validation":[{"when":false,"hidden":["visited_jp_20_date"]}]},{"keyname":"visited_jp_20_date","field_type":"date","name":"Visited 長野県 (Nagano) Visited on [Date]","description":"Visited 長野県 (Nagano) on date — darker shades indicate more recent visits.","group":"中部地方 (Chūbu)","optional":true},{"keyname":"visited_jp_21","field_type":"boolean","name":"岐阜県 (Gihu)","description":"岐阜県 (Gihu) visited","group":"中部地方 (Chūbu)","conditional_validation":[{"when":false,"hidden":["visited_jp_21_date"]}]},{"keyname":"visited_jp_21_date","field_type":"date","name":"Visited 岐阜県 (Gihu) Visited on [Date]","description":"Visited 岐阜県 (Gihu) on date — darker shades indicate more recent visits.","group":"中部地方 (Chūbu)","optional":true},{"keyname":"visited_jp_22","field_type":"boolean","name":"静岡県 (Sizuoka)","description":"静岡県 (Sizuoka) visited","group":"中部地方 (Chūbu)","conditional_validation":[{"when":false,"hidden":["visited_jp_22_date"]}]},{"keyname":"visited_jp_22_date","field_type":"date","name":"Visited 静岡県 (Sizuoka) Visited on [Date]","description":"Visited 静岡県 (Sizuoka) on date — darker shades indicate more recent visits.","group":"中部地方 (Chūbu)","optional":true},{"keyname":"visited_jp_23","field_type":"boolean","name":"愛知県 (Aiti)","description":"愛知県 (Aiti) visited","group":"中部地方 (Chūbu)","conditional_validation":[{"when":false,"hidden":["visited_jp_23_date"]}]},{"keyname":"visited_jp_23_date","field_type":"date","name":"Visited 愛知県 (Aiti) Visited on [Date]","description":"Visited 愛知県 (Aiti) on date — darker shades indicate more recent visits.","group":"中部地方 (Chūbu)","optional":true},{"keyname":"visited_jp_24","field_type":"boolean","name":"三重県 (Mie)","description":"三重県 (Mie) visited","group":"中部地方 (Chūbu)","conditional_validation":[{"when":false,"hidden":["visited_jp_24_date"]}]},{"keyname":"visited_jp_24_date","field_type":"date","name":"Visited 三重県 (Mie) Visited on [Date]","description":"Visited 三重県 (Mie) on date — darker shades indicate more recent visits.","group":"中部地方 (Chūbu)","optional":true},{"keyname":"visited_jp_25","field_type":"boolean","name":"滋賀県 (Siga)","description":"滋賀県 (Siga) visited","group":"関西地方 (Kansai)","conditional_validation":[{"when":false,"hidden":["visited_jp_25_date"]}]},{"keyname":"visited_jp_25_date","field_type":"date","name":"Visited 滋賀県 (Siga) Visited on [Date]","description":"Visited 滋賀県 (Siga) on date — darker shades indicate more recent visits.","group":"関西地方 (Kansai)","optional":true},{"keyname":"visited_jp_26","field_type":"boolean","name":"京都府 (Kyôto)","description":"京都府 (Kyôto) visited","group":"関西地方 (Kansai)","conditional_validation":[{"when":false,"hidden":["visited_jp_26_date"]}]},{"keyname":"visited_jp_26_date","field_type":"date","name":"Visited 京都府 (Kyôto) Visited on [Date]","description":"Visited 京都府 (Kyôto) on date — darker shades indicate more recent visits.","group":"関西地方 (Kansai)","optional":true},{"keyname":"visited_jp_27","field_type":"boolean","name":"大阪府 (Ôsaka)","description":"大阪府 (Ôsaka) visited","group":"関西地方 (Kansai)","conditional_validation":[{"when":false,"hidden":["visited_jp_27_date"]}]},{"keyname":"visited_jp_27_date","field_type":"date","name":"Visited 大阪府 (Ôsaka) Visited on [Date]","description":"Visited 大阪府 (Ôsaka) on date — darker shades indicate more recent visits.","group":"関西地方 (Kansai)","optional":true},{"keyname":"visited_jp_28","field_type":"boolean","name":"兵庫県 (Hyôgo)","description":"兵庫県 (Hyôgo) visited","group":"関西地方 (Kansai)","conditional_validation":[{"when":false,"hidden":["visited_jp_28_date"]}]},{"keyname":"visited_jp_28_date","field_type":"date","name":"Visited 兵庫県 (Hyôgo) Visited on [Date]","description":"Visited 兵庫県 (Hyôgo) on date — darker shades indicate more recent visits.","group":"関西地方 (Kansai)","optional":true},{"keyname":"visited_jp_29","field_type":"boolean","name":"奈良県 (Nara)","description":"奈良県 (Nara) visited","group":"関西地方 (Kansai)","conditional_validation":[{"when":false,"hidden":["visited_jp_29_date"]}]},{"keyname":"visited_jp_29_date","field_type":"date","name":"Visited 奈良県 (Nara) Visited on [Date]","description":"Visited 奈良県 (Nara) on date — darker shades indicate more recent visits.","group":"関西地方 (Kansai)","optional":true},{"keyname":"visited_jp_30","field_type":"boolean","name":"和歌山県 (Wakayama)","description":"和歌山県 (Wakayama) visited","group":"関西地方 (Kansai)","conditional_validation":[{"when":false,"hidden":["visited_jp_30_date"]}]},{"keyname":"visited_jp_30_date","field_type":"date","name":"Visited 和歌山県 (Wakayama) Visited on [Date]","description":"Visited 和歌山県 (Wakayama) on date — darker shades indicate more recent visits.","group":"関西地方 (Kansai)","optional":true},{"keyname":"visited_jp_31","field_type":"boolean","name":"鳥取県 (Tottori)","description":"鳥取県 (Tottori) visited","group":"中国地方 (Chūgoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_31_date"]}]},{"keyname":"visited_jp_31_date","field_type":"date","name":"Visited 鳥取県 (Tottori) Visited on [Date]","description":"Visited 鳥取県 (Tottori) on date — darker shades indicate more recent visits.","group":"中国地方 (Chūgoku)","optional":true},{"keyname":"visited_jp_32","field_type":"boolean","name":"島根県 (Simane)","description":"島根県 (Simane) visited","group":"中国地方 (Chūgoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_32_date"]}]},{"keyname":"visited_jp_32_date","field_type":"date","name":"Visited 島根県 (Simane) Visited on [Date]","description":"Visited 島根県 (Simane) on date — darker shades indicate more recent visits.","group":"中国地方 (Chūgoku)","optional":true},{"keyname":"visited_jp_33","field_type":"boolean","name":"岡山県 (Okayama)","description":"岡山県 (Okayama) visited","group":"中国地方 (Chūgoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_33_date"]}]},{"keyname":"visited_jp_33_date","field_type":"date","name":"Visited 岡山県 (Okayama) Visited on [Date]","description":"Visited 岡山県 (Okayama) on date — darker shades indicate more recent visits.","group":"中国地方 (Chūgoku)","optional":true},{"keyname":"visited_jp_34","field_type":"boolean","name":"広島県 (Hirosima)","description":"広島県 (Hirosima) visited","group":"中国地方 (Chūgoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_34_date"]}]},{"keyname":"visited_jp_34_date","field_type":"date","name":"Visited 広島県 (Hirosima) Visited on [Date]","description":"Visited 広島県 (Hirosima) on date — darker shades indicate more recent visits.","group":"中国地方 (Chūgoku)","optional":true},{"keyname":"visited_jp_35","field_type":"boolean","name":"山口県 (Yamaguti)","description":"山口県 (Yamaguti) visited","group":"中国地方 (Chūgoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_35_date"]}]},{"keyname":"visited_jp_35_date","field_type":"date","name":"Visited 山口県 (Yamaguti) Visited on [Date]","description":"Visited 山口県 (Yamaguti) on date — darker shades indicate more recent visits.","group":"中国地方 (Chūgoku)","optional":true},{"keyname":"visited_jp_36","field_type":"boolean","name":"徳島県 (Tokusima)","description":"徳島県 (Tokusima) visited","group":"四国地方 (Shikoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_36_date"]}]},{"keyname":"visited_jp_36_date","field_type":"date","name":"Visited 徳島県 (Tokusima) Visited on [Date]","description":"Visited 徳島県 (Tokusima) on date — darker shades indicate more recent visits.","group":"四国地方 (Shikoku)","optional":true},{"keyname":"visited_jp_37","field_type":"boolean","name":"香川県 (Kagawa)","description":"香川県 (Kagawa) visited","group":"四国地方 (Shikoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_37_date"]}]},{"keyname":"visited_jp_37_date","field_type":"date","name":"Visited 香川県 (Kagawa) Visited on [Date]","description":"Visited 香川県 (Kagawa) on date — darker shades indicate more recent visits.","group":"四国地方 (Shikoku)","optional":true},{"keyname":"visited_jp_38","field_type":"boolean","name":"愛媛県 (Ehime)","description":"愛媛県 (Ehime) visited","group":"四国地方 (Shikoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_38_date"]}]},{"keyname":"visited_jp_38_date","field_type":"date","name":"Visited 愛媛県 (Ehime) Visited on [Date]","description":"Visited 愛媛県 (Ehime) on date — darker shades indicate more recent visits.","group":"四国地方 (Shikoku)","optional":true},{"keyname":"visited_jp_39","field_type":"boolean","name":"高知県 (Kôti)","description":"高知県 (Kôti) visited","group":"四国地方 (Shikoku)","conditional_validation":[{"when":false,"hidden":["visited_jp_39_date"]}]},{"keyname":"visited_jp_39_date","field_type":"date","name":"Visited 高知県 (Kôti) Visited on [Date]","description":"Visited 高知県 (Kôti) on date — darker shades indicate more recent visits.","group":"四国地方 (Shikoku)","optional":true},{"keyname":"visited_jp_40","field_type":"boolean","name":"福岡県 (Hukuoka)","description":"福岡県 (Hukuoka) visited","group":"九州地方 (Kyūshū)","conditional_validation":[{"when":false,"hidden":["visited_jp_40_date"]}]},{"keyname":"visited_jp_40_date","field_type":"date","name":"Visited 福岡県 (Hukuoka) Visited on [Date]","description":"Visited 福岡県 (Hukuoka) on date — darker shades indicate more recent visits.","group":"九州地方 (Kyūshū)","optional":true},{"keyname":"visited_jp_41","field_type":"boolean","name":"佐賀県 (Saga)","description":"佐賀県 (Saga) visited","group":"九州地方 (Kyūshū)","conditional_validation":[{"when":false,"hidden":["visited_jp_41_date"]}]},{"keyname":"visited_jp_41_date","field_type":"date","name":"Visited 佐賀県 (Saga) Visited on [Date]","description":"Visited 佐賀県 (Saga) on date — darker shades indicate more recent visits.","group":"九州地方 (Kyūshū)","optional":true},{"keyname":"visited_jp_42","field_type":"boolean","name":"長崎県 (Nagasaki)","description":"長崎県 (Nagasaki) visited","group":"九州地方 (Kyūshū)","conditional_validation":[{"when":false,"hidden":["visited_jp_42_date"]}]},{"keyname":"visited_jp_42_date","field_type":"date","name":"Visited 長崎県 (Nagasaki) Visited on [Date]","description":"Visited 長崎県 (Nagasaki) on date — darker shades indicate more recent visits.","group":"九州地方 (Kyūshū)","optional":true},{"keyname":"visited_jp_43","field_type":"boolean","name":"熊本県 (Kumamoto)","description":"熊本県 (Kumamoto) visited","group":"九州地方 (Kyūshū)","conditional_validation":[{"when":false,"hidden":["visited_jp_43_date"]}]},{"keyname":"visited_jp_43_date","field_type":"date","name":"Visited 熊本県 (Kumamoto) Visited on [Date]","description":"Visited 熊本県 (Kumamoto) on date — darker shades indicate more recent visits.","group":"九州地方 (Kyūshū)","optional":true},{"keyname":"visited_jp_44","field_type":"boolean","name":"大分県 (Ôita)","description":"大分県 (Ôita) visited","group":"九州地方 (Kyūshū)","conditional_validation":[{"when":false,"hidden":["visited_jp_44_date"]}]},{"keyname":"visited_jp_44_date","field_type":"date","name":"Visited 大分県 (Ôita) Visited on [Date]","description":"Visited 大分県 (Ôita) on date — darker shades indicate more recent visits.","group":"九州地方 (Kyūshū)","optional":true},{"keyname":"visited_jp_45","field_type":"boolean","name":"宮崎県 (Miyazaki)","description":"宮崎県 (Miyazaki) visited","group":"九州地方 (Kyūshū)","conditional_validation":[{"when":false,"hidden":["visited_jp_45_date"]}]},{"keyname":"visited_jp_45_date","field_type":"date","name":"Visited 宮崎県 (Miyazaki) Visited on [Date]","description":"Visited 宮崎県 (Miyazaki) on date — darker shades indicate more recent visits.","group":"九州地方 (Kyūshū)","optional":true},{"keyname":"visited_jp_46","field_type":"boolean","name":"鹿児島県 (Kagosima)","description":"鹿児島県 (Kagosima) visited","group":"九州地方 (Kyūshū)","conditional_validation":[{"when":false,"hidden":["visited_jp_46_date"]}]},{"keyname":"visited_jp_46_date","field_type":"date","name":"Visited 鹿児島県 (Kagosima) Visited on [Date]","description":"Visited 鹿児島県 (Kagosima) on date — darker shades indicate more recent visits.","group":"九州地方 (Kyūshū)","optional":true},{"keyname":"visited_jp_47","field_type":"boolean","name":"沖縄県 (Okinawa)","description":"沖縄県 (Okinawa) visited","group":"九州地方 (Kyūshū)","conditional_validation":[{"when":false,"hidden":["visited_jp_47_date"]}]},{"keyname":"visited_jp_47_date","field_type":"date","name":"Visited 沖縄県 (Okinawa) Visited on [Date]","description":"Visited 沖縄県 (Okinawa) on date — darker shades indicate more recent visits.","group":"九州地方 (Kyūshū)","optional":true}],"stats":{"installs":1,"forks":0}},{"id":492875,"user_id":29875,"name":"Daily Workout Planner","description":"Skip the planning. Just train.","published_at":"2026-10-16T00:01:46.416Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/ym6k2cw0h6h7qxo4r18195d89fsz","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/m9h2j9w35fva1cz5ijti5a1ot9iy","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About this plugin","category":"life,sports","description":"Skip the planning. Get a fresh workout every day, on your e-ink screen. Pick your routine and your gear (gym, home or bodyweight), then scan the QR for form videos. Each plan is AI-composed (exercises, sets/reps, a muscle-focus diagram) and avoids repeating what your display showed in the last 7 days. Exercise data from Free Exercise DB (public domain) and wger.de (CC-BY-SA 4). Questions, bugs, or feature requests? Open an issue on GitHub or reach out by email.\u003cbr/\u003eSource and docs live in the repo linked below.\u003cbr/\u003e\u003cbr/\u003e\u003cstrong\u003eHealth notice: General fitness information, not medical advice. See a doctor if you have a condition or an injury, and stop if you feel pain or dizziness.\u003c/strong\u003e","github_url":"https://github.com/pradeepbbl/trmnl_plugins","email_address":"pradeepbbl@gmail.com"},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About this plugin","category":"life,sports","description":"Skip the planning. Get a fresh workout every day, on your e-ink screen. Pick your routine and your gear (gym, home or bodyweight), then scan the QR for form videos. Each plan is AI-composed (exercises, sets/reps, a muscle-focus diagram) and avoids repeating what your display showed in the last 7 days. Exercise data from Free Exercise DB (public domain) and wger.de (CC-BY-SA 4). Questions, bugs, or feature requests? Open an issue on GitHub or reach out by email.\u003cbr/\u003eSource and docs live in the repo linked below.\u003cbr/\u003e\u003cbr/\u003e\u003cstrong\u003eHealth notice: General fitness information, not medical advice. See a doctor if you have a condition or an injury, and stop if you feel pain or dizziness.\u003c/strong\u003e","github_url":"https://github.com/pradeepbbl/trmnl_plugins","email_address":"pradeepbbl@gmail.com"},{"keyname":"schedule","field_type":"select","name":"Schedule","description":"Which workout to show each day; rest days show light mobility.","default":"ppl3","options":[{"Push / Pull / Legs, 3 days (Mon push, Wed pull, Fri legs)":"ppl3"},{"Push / Pull / Legs + Core, 4 days (Mon push, Tue pull, Thu legs, Fri core)":"ppl4"},{"Push / Pull / Legs, 6 days (Mon-Sat, Sunday off)":"ppl6"},{"Full body, 3 days (Mon, Wed, Fri)":"full3"},{"Custom week":"custom"}],"conditional_validation":[{"when":"ppl3","hidden":["week"]},{"when":"ppl4","hidden":["week"]},{"when":"ppl6","hidden":["week"]},{"when":"full3","hidden":["week"]},{"when":"custom","required":["week"],"visible":["week"]}]},{"keyname":"week","field_type":"string","name":"Week plan","description":"Seven entries, Monday to Sunday, separated by commas. Use push, pull, legs, full_body, core, burn, stretch, or rest.","optional":true,"placeholder":"push,pull,legs,rest,push,pull,rest"},{"keyname":"equipment","field_type":"select","name":"Equipment","description":"What you're training with. A home setup shows a second field below for exactly what you have.","default":"gym","options":[{"Gym (full equipment)":"gym"},{"Home":"home"},{"Bodyweight only":"bodyweight"}],"conditional_validation":[{"when":"home","required":["home_kit"],"visible":["home_kit","pullup_bar"]},{"when":"bodyweight","visible":["pullup_bar"]},{"when":"gym","hidden":["pullup_bar"]}]},{"keyname":"home_kit","field_type":"select","name":"Home equipment","description":"Exactly what you have at home.","optional":true,"default":"full","options":[{"Dumbbells only":"dumbbells"},{"Dumbbells + barbell + bench + kettlebell":"full"}]},{"keyname":"pullup_bar","field_type":"boolean","name":"I have a pull-up bar","description":"Adds pull-ups, hanging raises and dips. Not needed at the gym, which has one.","optional":true,"default":false},{"keyname":"health_disclaimer","field_type":"select","name":"Health disclaimer","description":"\u003cstrong\u003eGeneral fitness information, not medical advice. See a doctor if you have a condition or an injury, and stop if you feel pain or dizziness.\u003c/strong\u003e Choose \"I understand and accept\" to continue.","default":"","options":[{"Please accept to continue":""},{"I understand and accept":"accepted"}]}],"stats":{"installs":6,"forks":0}},{"id":500528,"user_id":4757,"name":"Fasting Window","description":"Live intermittent fasting countdown","published_at":"2026-10-15T23:24:30.642Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/wugi7klbgqud8fl37etttkiyrqqq","icon_content_type":"image/png","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/4fk34ddkx8on16pdu4v2ch9kmv9y","author_bio":{"keyname":"about","name":"About This Plugin","field_type":"author_bio","category":"life,personal","email_address":"shriram@pm.me","github_url":"https://github.com/sd416/","description":"Fasting Window shows exactly where you are in your fast: a live countdown to when you can eat, a 24-hour strip of your eating window, and the stage your body is likely in, from fed to fat-burning. Pick a standard plan (12:12, 14:10, 16:8, 18:6, 20:4, OMAD, 5:2, alternate-day, 24h or 36h) or make your own: any eating window, a fast of any length on any days, your own low-calorie days, or a weekly schedule you write yourself. Get a healthy way to break each fast, take a break for holidays, and optionally enter your weight to see a safe daily and weekly fat-loss target. It needs no account, no API key and no server. General wellbeing information only, not medical advice."},"custom_fields":[{"keyname":"about","name":"About This Plugin","field_type":"author_bio","category":"life,personal","email_address":"shriram@pm.me","github_url":"https://github.com/sd416/","description":"Fasting Window shows exactly where you are in your fast: a live countdown to when you can eat, a 24-hour strip of your eating window, and the stage your body is likely in, from fed to fat-burning. Pick a standard plan (12:12, 14:10, 16:8, 18:6, 20:4, OMAD, 5:2, alternate-day, 24h or 36h) or make your own: any eating window, a fast of any length on any days, your own low-calorie days, or a weekly schedule you write yourself. Get a healthy way to break each fast, take a break for holidays, and optionally enter your weight to see a safe daily and weekly fat-loss target. It needs no account, no API key and no server. General wellbeing information only, not medical advice."},{"keyname":"protocol","field_type":"select","name":"Fasting plan","group":"Plan","description":"Your fasting pattern. The first ten are standard plans: 16:8 means fast 16 hours, then eat within 8. The custom options at the end let you set your own times, fast length, low-calorie days, or a full weekly schedule.","help_text":"Not sure? Start with 12:12 or 14:10 and move to 16:8 once it feels easy.","default":"16_8","options":[{"16:8 (most popular)":"16_8"},{"12:12 (beginner)":"12_12"},{"14:10 (gentle)":"14_10"},{"18:6 (advanced)":"18_6"},{"20:4 (warrior)":"20_4"},{"OMAD (one meal a day, 23:1)":"omad"},{"5:2 (two low-calorie days a week)":"5_2"},{"Alternate-day (every other day low-calorie)":"adf"},{"24-hour fast (once or twice a week)":"24h"},{"36-hour fast (once a week)":"36h"},{"Custom eating window (pick the times)":"custom_daily"},{"Custom fast (pick the length and days)":"custom_fast"},{"Custom low-calorie days (pick the days)":"custom_low"},{"Custom weekly schedule (write your own)":"custom"}],"conditional_validation":[{"when":"16_8","visible":["eat_start"]},{"when":"12_12","visible":["eat_start"]},{"when":"14_10","visible":["eat_start"]},{"when":"18_6","visible":["eat_start"]},{"when":"20_4","visible":["eat_start"]},{"when":"omad","visible":["eat_start"]},{"when":"5_2","visible":["day_a","day_b","low_kcal"]},{"when":"adf","visible":["adf_anchor","low_kcal"]},{"when":"24h","visible":["fast_start","day_a","day_b"]},{"when":"36h","visible":["fast_start","day_a"]},{"when":"custom_daily","visible":["eat_start","eat_end"]},{"when":"custom_fast","visible":["fast_start","fast_hours","fast_days"]},{"when":"custom_low","visible":["low_days","low_kcal"]},{"when":"custom","visible":["schedule"]}]},{"keyname":"eat_start","field_type":"time","name":"Eating window opens at","group":"Plan","description":"When you have your first meal of the day. For a standard plan, the eating window closes automatically after the hours in the plan (for 16:8, 8 hours later).","help_text":"Example: 12:00 with 16:8 means you eat from 12:00 to 20:00 and fast the rest of the day.","default":"12:00","optional":true},{"keyname":"eat_end","field_type":"time","name":"Eating window closes at","group":"Plan","description":"When you finish your last meal of the day. Together with the time above, this sets your eating window.","help_text":"Example: 10:00 to 18:00 is a 16:8 window. A window can run past midnight, like 18:00 to 02:00.","default":"20:00","optional":true},{"keyname":"fast_start","field_type":"time","name":"Fast starts at","group":"Plan","description":"The time you stop eating to begin a long fast, usually after your evening meal.","help_text":"Example: 20:00 starts the fast at 8 PM on each fasting day.","default":"20:00","optional":true},{"keyname":"fast_hours","field_type":"number","name":"Fast length (hours)","group":"Plan","description":"How long each fast lasts, in whole hours, from 12 to 168 (7 days).","help_text":"Common choices: 24, 36, 42 or 48. Talk to a doctor before fasting longer than a day.","min":12,"max":168,"step":1,"default":24,"placeholder":"24","optional":true},{"keyname":"fast_days","field_type":"select","name":"Days a fast starts","group":"Plan","description":"The weekdays a fast starts on, at the time above. Pick one or more.","help_text":"Example: Wednesday and Saturday with 42 hours means two fasts a week, each ending two days later at midday.","multiple":true,"default":["1"],"optional":true,"options":[{"Sunday":"0"},{"Monday":"1"},{"Tuesday":"2"},{"Wednesday":"3"},{"Thursday":"4"},{"Friday":"5"},{"Saturday":"6"}]},{"keyname":"day_a","field_type":"select","name":"Fasting day","group":"Plan","description":"The weekday of your fast or low-calorie day.","help_text":"5:2 commonly uses Monday and Thursday. A 24 or 36-hour fast starts on this day at the time above.","default":"1","optional":true,"options":[{"Sunday":"0"},{"Monday":"1"},{"Tuesday":"2"},{"Wednesday":"3"},{"Thursday":"4"},{"Friday":"5"},{"Saturday":"6"}]},{"keyname":"day_b","field_type":"select","name":"Second fasting day","group":"Plan","description":"An optional second fasting or low-calorie day each week.","help_text":"For 5:2, leave a normal day between the two. Automatic picks the day three days after the first.","default":"-1","optional":true,"options":[{"Automatic or none":"-1"},{"Sunday":"0"},{"Monday":"1"},{"Tuesday":"2"},{"Wednesday":"3"},{"Thursday":"4"},{"Friday":"5"},{"Saturday":"6"}]},{"keyname":"adf_anchor","field_type":"date","name":"A low-calorie day","group":"Plan","description":"Any date that is, or was, one of your low-calorie days. Every second day from it is a low-calorie day.","help_text":"Example: pick today if today is a low-calorie day, or yesterday if tomorrow is.","default":"today","optional":true},{"keyname":"low_days","field_type":"select","name":"Low-calorie days","group":"Plan","description":"The weekdays you eat little. Pick one or more. The other days are normal eating days.","help_text":"Leave a normal day between low-calorie days if you can. 2 days is the usual 5:2.","multiple":true,"default":["1","4"],"optional":true,"options":[{"Sunday":"0"},{"Monday":"1"},{"Tuesday":"2"},{"Wednesday":"3"},{"Thursday":"4"},{"Friday":"5"},{"Saturday":"6"}]},{"keyname":"low_kcal","field_type":"number","name":"Calorie limit on low-calorie days","group":"Plan","description":"How many calories you allow yourself on a low-calorie day.","help_text":"Leave empty for the usual 500 kcal (600 for men). Use 0 for a water-only day.","min":0,"max":2000,"step":50,"placeholder":"500","optional":true},{"keyname":"schedule","field_type":"text","name":"Your weekly schedule","group":"Plan","description":"Set your eating windows for each day. Enter one rule per line.","help_text":"Use daily or days such as mon-fri, then eating times (12:00-20:00). Separate meal windows with spaces. Times can cross midnight. off = no eating; free = no fasting. Unlisted days have no fasting. Later rules replace earlier rules.","rows":6,"placeholder":"daily 12:00-20:00\nsat 10:00-14:00 18:00-21:00\nsun off","optional":true},{"keyname":"pause_until","field_type":"date","name":"Take a break until","group":"Break","description":"Pause your plan for holidays, travel or illness. The screen shows you are on a break and counts down to the day your plan starts again.","help_text":"Pick the last day of the break: the plan starts again the day after. Clear it when you are not on a break.","optional":true},{"keyname":"title","field_type":"string","name":"Title","group":"Display","description":"The name shown in the title bar at the bottom of the screen.","help_text":"Leave empty for Fasting Window. Up to 30 characters, for example Ramadan or My fast.","placeholder":"Fasting Window","maxlength":30,"optional":true},{"keyname":"show_tips","field_type":"boolean","name":"Show tips","group":"Display","description":"Yes shows a short tip for the moment (what to drink, how to break your fast, what to eat), a new one on every refresh.","help_text":"Tips appear in the full and half vertical layouts.","default":true,"options":[true,false]},{"keyname":"clock","field_type":"select","name":"Clock","group":"Display","description":"How times are written on the screen.","help_text":"12-hour shows 8:00 PM, 24-hour shows 20:00.","default":"12","options":[{"12-hour":"12"},{"24-hour":"24"}]},{"keyname":"units","field_type":"select","name":"Units","group":"Display","description":"Units for your weight and height, and for the fat-loss numbers on the screen.","help_text":"Enter your weight and height below in the same units.","default":"metric","options":[{"Metric (kg, cm)":"metric"},{"Imperial (lb, in)":"imperial"}]},{"keyname":"weight","field_type":"number","name":"Your weight","group":"Fat-loss target (optional)","description":"Your current weight, in kg or lb to match Units. Needed for the fat-loss target.","help_text":"Leave empty to hide the fat-loss target. Example: 75.","step":0.1,"min":0,"max":700,"placeholder":"75","optional":true},{"keyname":"goal_weight","field_type":"number","name":"Goal weight","group":"Fat-loss target (optional)","description":"The weight you are aiming for, in the same units. Used to estimate how many weeks it could take.","help_text":"Optional. Leave empty to hide the weeks estimate.","step":0.1,"min":0,"max":700,"placeholder":"68","optional":true},{"keyname":"pace","field_type":"select","name":"Pace","group":"Fat-loss target (optional)","description":"How quickly you want to lose fat.","help_text":"Anything faster than 1% of your body weight a week is slowed to stay safe. Maintain shows the calories that keep your weight steady.","default":"50","optional":true,"options":[{"Maintain my weight":"0"},{"Gentle (0.25 kg or 0.55 lb a week)":"25"},{"Steady (0.5 kg or 1.1 lb a week)":"50"},{"Brisk (0.75 kg or 1.65 lb a week)":"75"},{"Fastest safe (1 kg or 2.2 lb a week)":"100"}]},{"keyname":"height","field_type":"number","name":"Height","group":"Fat-loss target (optional)","description":"Your height, in cm or inches to match Units. With age and sex it is used to estimate your daily calories.","help_text":"Example: 172 cm or 68 in. Leave empty to see the fat target without calories.","step":0.1,"min":0,"max":300,"placeholder":"172","optional":true},{"keyname":"age","field_type":"number","name":"Age","group":"Fat-loss target (optional)","description":"Your age in years. Used in the calorie estimate.","help_text":"Targets are only shown for adults, 18 and over.","min":0,"max":120,"placeholder":"35","optional":true},{"keyname":"sex","field_type":"select","name":"Sex","group":"Fat-loss target (optional)","description":"Used only in the calorie formula and to set the minimum safe intake.","help_text":"Prefer not to say uses the average of both.","default":"any","optional":true,"options":[{"Prefer not to say":"any"},{"Female":"female"},{"Male":"male"}]},{"keyname":"activity","field_type":"select","name":"Activity level","group":"Fat-loss target (optional)","description":"How active you are on a typical week. More activity means more calories.","help_text":"Pick the lower level if you are unsure. It is better to under-estimate.","default":"138","optional":true,"options":[{"Mostly sitting":"120"},{"Light (walks, 1 to 3 workouts a week)":"138"},{"Moderate (3 to 5 workouts a week)":"155"},{"Very active (daily training)":"173"}]}],"stats":{"installs":1,"forks":0}},{"id":494403,"user_id":17065,"name":"Ridgelines: Daily Mountain Art","description":"The mountains are calling","published_at":"2026-10-15T23:22:14.765Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/gbl7t8jk8vogrq94zzr8ckke74mw","icon_content_type":"image/png","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/68usvmx3mtrmj4hqzrgobxp9hgn3","author_bio":{"keyname":"about","name":"About This Plugin","field_type":"author_bio","category":"nature,art","email_address":"isarworks@gmail.com","description":"Ridgelines is minimalist mountain art for your TRMNL, turning satellite elevation data into rippled, contour-like lines that reveal the shape of a real landscape from above.\u003c/br\u003e\u003c/br\u003e\n\nEvery drawing represents a specific place on Earth, chosen for its distinctive terrain and highest peak. A small info panel names the range, its country and its highest summit, including its elevation.\u003c/br\u003e\u003c/br\u003e\n\nFrom the Alps to the Andes, the Himalayas to the High Atlas, explore mountain ranges across the world.\u003c/br\u003e\u003c/br\u003e\n\nInstall (don't Fork!) to receive future updates.\u003c/br\u003e\u003c/br\u003e\n\nTerrain produced using Copernicus WorldDEM™-90 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved. The organisations in charge of the Copernicus programme by law or by delegation do not incur any liability for any use of the Copernicus WorldDEM™-90.\nRange names, highest points, heights and countries: \u003ca href=\"https://www.wikidata.org/\"\u003eWikidata\u003c/a\u003e (CC0).\n"},"custom_fields":[{"keyname":"about","name":"About This Plugin","field_type":"author_bio","category":"nature,art","email_address":"isarworks@gmail.com","description":"Ridgelines is minimalist mountain art for your TRMNL, turning satellite elevation data into rippled, contour-like lines that reveal the shape of a real landscape from above.\u003c/br\u003e\u003c/br\u003e\n\nEvery drawing represents a specific place on Earth, chosen for its distinctive terrain and highest peak. A small info panel names the range, its country and its highest summit, including its elevation.\u003c/br\u003e\u003c/br\u003e\n\nFrom the Alps to the Andes, the Himalayas to the High Atlas, explore mountain ranges across the world.\u003c/br\u003e\u003c/br\u003e\n\nInstall (don't Fork!) to receive future updates.\u003c/br\u003e\u003c/br\u003e\n\nTerrain produced using Copernicus WorldDEM™-90 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved. The organisations in charge of the Copernicus programme by law or by delegation do not incur any liability for any use of the Copernicus WorldDEM™-90.\nRange names, highest points, heights and countries: \u003ca href=\"https://www.wikidata.org/\"\u003eWikidata\u003c/a\u003e (CC0).\n"},{"keyname":"area","name":"Region","field_type":"select","optional":true,"multiple":true,"description":"Select the regions where the ranges are randomly selected from. Tick one or more to take turns, a new range each day; with none ticked you get every region in turn.","help_text":"Use \u003ckbd\u003e⌘\u003c/kbd\u003e+\u003ckbd\u003eclick\u003c/kbd\u003e or \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eclick\u003c/kbd\u003e to select and deselect multiple options.","options":[{"Europe":"europe"},{"Americas":"americas"},{"Asia and Oceania":"asia"},{"Africa":"africa"}]},{"keyname":"language","name":"Language","field_type":"select","options":[{"English":"en"},{"Deutsch":"de"}],"default":"en"},{"keyname":"units","name":"Units","field_type":"select","options":[{"Metric":"metric"},{"Imperial":"imperial"}],"default":"metric"},{"keyname":"peak_label","name":"Peak name","field_type":"boolean","description":"Name the highest peak above its summit in the drawing.","default":true},{"keyname":"info_box","name":"Info box","field_type":"boolean","description":"Put the range and country, with the highest peak and its height on the screen in a text box on the bottom left of the screen.","default":true},{"keyname":"title_bar","name":"Title bar","field_type":"boolean","description":"Show TRMNL's title bar with range and country, the highest peak, and its height.","default":false}],"stats":{"installs":30,"forks":0}},{"id":313101,"user_id":24809,"name":"Historic Letters","description":"Famous letters, one at a time","published_at":"2026-10-15T07:42:12.459Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/ghjgusjofrjm654k3jp76dmfvyia","icon_content_type":"image/png","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/i21hzvcw4xbc8hprwtkk82qls2fo","author_bio":{"keyname":"y2ee201","field_type":"author_bio","name":"Historic Letters","description":"Random excerpts from letters from famous people.","tagline":"Famous letters, one at a time","category":"entertainment","github_url":"https://github.com/y2ee201","email_address":"y2ee201.work@gmail.com"},"custom_fields":[{"keyname":"y2ee201","field_type":"author_bio","name":"Historic Letters","description":"Random excerpts from letters from famous people.","tagline":"Famous letters, one at a time","category":"entertainment","github_url":"https://github.com/y2ee201","email_address":"y2ee201.work@gmail.com"}],"stats":{"installs":9,"forks":0}},{"id":500939,"user_id":6458,"name":"Paprika Menus","description":"One of your menus, day by day","published_at":"2026-10-15T07:34:10.124Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/9g060xobfr0m0pfos7qwu33qstdr","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/etv75op8fb1nda00v4loanjt2chy","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","description":"Shows one of your Paprika Recipe Manager menus, day by day.","github_url":"https://github.com/ExcuseMi/trmnl-paprika-plugin","category":"life,personal","help_text":"Unofficial. Not affiliated with Hindsight Labs (Paprika)."},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About This Plugin","description":"Shows one of your Paprika Recipe Manager menus, day by day.","github_url":"https://github.com/ExcuseMi/trmnl-paprika-plugin","category":"life,personal","help_text":"Unofficial. Not affiliated with Hindsight Labs (Paprika)."},{"keyname":"paprika_email","field_type":"string","name":"Paprika Email","description":"The email of your Paprika account. Leave it empty to see the plugin with demo data.","placeholder":"you@example.com","optional":true},{"keyname":"paprika_password","field_type":"password","name":"Paprika Password","description":"Your Paprika account password. Needed because Paprika offers no tokens for third parties.","optional":true},{"keyname":"menu","field_type":"string","name":"Menu","description":"The name of the menu to show, as in Paprika. Empty means your first menu.","placeholder":"Summer week","optional":true}],"stats":{"installs":0,"forks":0}},{"id":499993,"user_id":45777,"name":"AdMob Earnings","description":"AdMob earnings at a glance","published_at":"2026-10-15T07:30:12.600Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/j92cmc46ybuatogkvzo1er3zyj18","icon_content_type":"image/png","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/zyb45crfjnb2mmxpeuofrmprouar","author_bio":{"keyname":"about","field_type":"author_bio","name":"About AdMob Earnings","description":"An independent TRMNL recipe for Google AdMob publishers. It reads estimated earnings with read-only access through your Google sign-in, which TRMNL stores and refreshes. Nothing is sent anywhere else. Not affiliated with or endorsed by Google.\u003cbr\u003e\u003cbr\u003eAdMob Earnings puts your Google AdMob revenue on your TRMNL, so you can see how your apps are doing without opening the AdMob console or a phone app. Today\u0026#39;s earnings so far take centre stage, with yesterday, this month so far and last month alongside. Each is compared with the period before it: yesterday with the same day last week, this month with the same day last month, and last month with the month before last. Choose percent change, amount change or both. Full screen also shows each figure\u0026#39;s ad requests, impressions and clicks.\u003cbr\u003e\u003cbr\u003eAmounts appear in your account\u0026#39;s reporting currency, or a currency you choose, and follow its reporting time zone, the same way the AdMob console counts a day. Sign in with Google and pick your AdMob account from a list. There is no API key to copy, and access is read-only. TRMNL stores and refreshes the sign-in; the recipe sends your data nowhere else. Full-screen and all three mashup layouts are included, in light or dark.","category":"finance,kpi","github_url":"https://github.com/barrymichaeldoyle/trmnl-plugins","learn_more_url":"https://github.com/barrymichaeldoyle/trmnl-plugins/tree/main/apps/admob-earnings"},"custom_fields":[{"keyname":"about","field_type":"author_bio","name":"About AdMob Earnings","description":"An independent TRMNL recipe for Google AdMob publishers. It reads estimated earnings with read-only access through your Google sign-in, which TRMNL stores and refreshes. Nothing is sent anywhere else. Not affiliated with or endorsed by Google.\u003cbr\u003e\u003cbr\u003eAdMob Earnings puts your Google AdMob revenue on your TRMNL, so you can see how your apps are doing without opening the AdMob console or a phone app. Today\u0026#39;s earnings so far take centre stage, with yesterday, this month so far and last month alongside. Each is compared with the period before it: yesterday with the same day last week, this month with the same day last month, and last month with the month before last. Choose percent change, amount change or both. Full screen also shows each figure\u0026#39;s ad requests, impressions and clicks.\u003cbr\u003e\u003cbr\u003eAmounts appear in your account\u0026#39;s reporting currency, or a currency you choose, and follow its reporting time zone, the same way the AdMob console counts a day. Sign in with Google and pick your AdMob account from a list. There is no API key to copy, and access is read-only. TRMNL stores and refreshes the sign-in; the recipe sends your data nowhere else. Full-screen and all three mashup layouts are included, in light or dark.","category":"finance,kpi","github_url":"https://github.com/barrymichaeldoyle/trmnl-plugins","learn_more_url":"https://github.com/barrymichaeldoyle/trmnl-plugins/tree/main/apps/admob-earnings"},{"keyname":"publisher_id","field_type":"xhrSelect","name":"AdMob account","optional":true,"description":"Connect Google above, then choose the account to show.","placeholder":"pub-0000000000000000","remote":{"url":"https://admob.googleapis.com/v1/accounts","method":"GET","headers":{"Authorization":"Bearer {{ oauth_access_token }}"},"response_path":"account","label_field":"{{ publisherId }} · {{ currencyCode }}","value_field":"publisherId"}},{"keyname":"currency","field_type":"select","name":"Currency","description":"Other currencies use AdMob's conversion at the daily average exchange rate.","options":[{"Reporting currency":"account"},{"Australian dollar (AUD)":"AUD"},{"Brazilian real (BRL)":"BRL"},{"British pound (GBP)":"GBP"},{"Canadian dollar (CAD)":"CAD"},{"Chinese yuan (CNY)":"CNY"},{"Danish krone (DKK)":"DKK"},{"Euro (EUR)":"EUR"},{"Hong Kong dollar (HKD)":"HKD"},{"Indian rupee (INR)":"INR"},{"Indonesian rupiah (IDR)":"IDR"},{"Israeli shekel (ILS)":"ILS"},{"Japanese yen (JPY)":"JPY"},{"Mexican peso (MXN)":"MXN"},{"New Zealand dollar (NZD)":"NZD"},{"Norwegian krone (NOK)":"NOK"},{"Philippine peso (PHP)":"PHP"},{"Polish zloty (PLN)":"PLN"},{"Singapore dollar (SGD)":"SGD"},{"South African rand (ZAR)":"ZAR"},{"South Korean won (KRW)":"KRW"},{"Swedish krona (SEK)":"SEK"},{"Swiss franc (CHF)":"CHF"},{"Turkish lira (TRY)":"TRY"},{"US dollar (USD)":"USD"}],"default":"account"},{"keyname":"comparison_style","field_type":"select","name":"Comparison","description":"How each figure compares with its earlier period.","options":[{"Percent change":"percent"},{"Amount change":"amount"},{"Both":"both"}],"default":"percent"},{"keyname":"appearance","field_type":"select","name":"Appearance","description":"Dark shows light text on a black screen.","options":[{"Light":"light"},{"Dark":"dark"}],"default":"light"}],"stats":{"installs":3,"forks":0}},{"id":498879,"user_id":4318,"name":"NEVER BUILT","description":"One unbuilt future, every refresh.","published_at":"2026-10-15T07:07:42.139Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/til3i5oypckmirvios8qdirg1a1u","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/ksnetxrqprnaiwadm39fyksleow2","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About NEVER BUILT","category":"custom,education","description":"A rotating museum of real proposals for buildings, vehicles, and inventions that never became reality.","github_url":"https://github.com/michaelkurath/Never-Built"},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About NEVER BUILT","category":"custom,education","description":"A rotating museum of real proposals for buildings, vehicles, and inventions that never became reality.","github_url":"https://github.com/michaelkurath/Never-Built"},{"keyname":"category","name":"Category","field_type":"select","options":[{"All categories":"all"},{"Technology":"technology"},{"Architecture":"architecture"},{"Transport":"transport"},{"Space":"space"},{"Infrastructure":"infrastructure"}],"default":"all","description":"Choose from all entries or one category. Every entry is shown once before the rotation repeats.","optional":true}],"stats":{"installs":21,"forks":0}},{"id":498915,"user_id":4318,"name":"STILL HERE","description":"Unexpected survivors, still here.","published_at":"2026-10-15T07:02:44.688Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/igm1bly00o4osc6256zxslkm92oj","icon_content_type":"image/png","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/7y9zwxxffln2t8nojsdxge4qo6ml","author_bio":{"keyname":"author_bio","field_type":"author_bio","name":"About STILL HERE","category":"custom,education","description":"A museum of species, technologies, and places that unexpectedly survive.","github_url":"https://github.com/michaelkurath/TRMNL-Still-Here"},"custom_fields":[{"keyname":"author_bio","field_type":"author_bio","name":"About STILL HERE","category":"custom,education","description":"A museum of species, technologies, and places that unexpectedly survive.","github_url":"https://github.com/michaelkurath/TRMNL-Still-Here"},{"keyname":"category","name":"Category","field_type":"select","options":[{"All categories":"all"},{"Technology":"technology"},{"Internet":"internet"},{"Transport":"transport"},{"Nature":"nature"},{"Everyday life":"everyday"}],"default":"all","description":"Choose from all entries or one category. Every entry is shown once before the rotation repeats.","optional":true}],"stats":{"installs":17,"forks":0}},{"id":489400,"user_id":37780,"name":"Relief of the Day","description":"A printable place at every refresh","published_at":"2026-10-15T06:07:50.960Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/9o4kcj2u5to1awgk0yb8bvnbtmy8","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/e1qnzxdycrc7hhmv6l9x8qoz9gvn","author_bio":{"keyname":"about","name":"About this plugin","field_type":"author_bio","category":"personal","description":"A new place on Earth at every refresh, drawn the way Tactus prints it: the land cut into thin layers, black lines on white or white lines on black. Forty places take turns, from the Matterhorn and Mount Fuji to the Richat Structure and Bora Bora. Scan the QR code to open the same relief on tactus.works and make it yours.\u003cbr/\u003e\u003cbr/\u003e \u003cb\u003eSetup.\u003c/b\u003e No account needed. Pick Light or Night under Style. The relief changes whenever the plugin refreshes.\u003cbr/\u003e\u003cbr/\u003e Made by \u003ca href=\"https://tactus.works\" class=\"underline\"\u003etactus.works\u003c/a\u003e.","learn_more_url":"https://tactus.works","email_address":"info@tactus.works"},"custom_fields":[{"keyname":"about","name":"About this plugin","field_type":"author_bio","category":"personal","description":"A new place on Earth at every refresh, drawn the way Tactus prints it: the land cut into thin layers, black lines on white or white lines on black. Forty places take turns, from the Matterhorn and Mount Fuji to the Richat Structure and Bora Bora. Scan the QR code to open the same relief on tactus.works and make it yours.\u003cbr/\u003e\u003cbr/\u003e \u003cb\u003eSetup.\u003c/b\u003e No account needed. Pick Light or Night under Style. The relief changes whenever the plugin refreshes.\u003cbr/\u003e\u003cbr/\u003e Made by \u003ca href=\"https://tactus.works\" class=\"underline\"\u003etactus.works\u003c/a\u003e.","learn_more_url":"https://tactus.works","email_address":"info@tactus.works"},{"keyname":"style","name":"Style","field_type":"select","description":"Black lines on white, or white lines on black.","options":[{"Light":"light"},{"Night":"night"}],"default":"light"}],"stats":{"installs":20,"forks":0}},{"id":495768,"user_id":4757,"name":"Dinosaur of the Day","description":"A daily prehistoric field guide","published_at":"2026-10-15T03:21:07.784Z","icon_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/b8k8564twwuwe4be41qi2xxwjndi","icon_content_type":"image/svg+xml","screenshot_url":"https://trmnl-public.s3.us-east-2.amazonaws.com/yx04555o8o9yc1mky6bru0xl5dit","author_bio":{"keyname":"doesnt_matter","name":"About this plugin","category":"education,nature","field_type":"author_bio","description":"Discover a dinosaur each day with a photo, a short introduction, and fossil findings. Created by Shriram Datar. No API key or setup required.\u003cbr/\u003e Summaries come from \u003ca href=\"https://en.wikipedia.org/\"\u003eWikipedia\u003c/a\u003e, photos from \u003ca href=\"https://commons.wikimedia.org/\"\u003eWikimedia Commons\u003c/a\u003e, and fossil data from the \u003ca href=\"https://paleobiodb.org/\"\u003ePaleobiology Database\u003c/a\u003e. Counts and maps describe a limited fossil sample, not all known discoveries.","github_url":"https://github.com/sd416","email_address":"shriram@pm.me"},"custom_fields":[{"keyname":"doesnt_matter","name":"About this plugin","category":"education,nature","field_type":"author_bio","description":"Discover a dinosaur each day with a photo, a short introduction, and fossil findings. Created by Shriram Datar. No API key or setup required.\u003cbr/\u003e Summaries come from \u003ca href=\"https://en.wikipedia.org/\"\u003eWikipedia\u003c/a\u003e, photos from \u003ca href=\"https://commons.wikimedia.org/\"\u003eWikimedia Commons\u003c/a\u003e, and fossil data from the \u003ca href=\"https://paleobiodb.org/\"\u003ePaleobiology Database\u003c/a\u003e. Counts and maps describe a limited fossil sample, not all known discoveries.","github_url":"https://github.com/sd416","email_address":"shriram@pm.me"}],"stats":{"installs":35,"forks":0}}],"total":1171,"from":1,"to":25,"per_page":25,"current_page":1,"prev_page_url":null,"next_page_url":"/recipes.json?page=2\u0026per_page=25"}