Skip to content

Add Hello Cal - #3228

Open
valit wants to merge 6 commits into
tidbyt:mainfrom
valit:main
Open

valit wants to merge 6 commits into
tidbyt:mainfrom
valit:main

Conversation

@valit

@valit valit commented Jun 21, 2026

Copy link
Copy Markdown

Hello Cal

Summary: Next event, always in view

Description: A calendar display for any iCal feed — including secondary Google Calendars most calendar apps can't reach. Shows your next event, correctly handles recurring meetings, and adapts to your local timezone.


What this app does

Hello Cal connects to any iCal feed (the standard .ics format used by Google Calendar, Apple Calendar, Outlook, and others) and displays your next upcoming event on the Tidbyt. It shows the event title, date, and start time — or "All day" for all-day events.

A few things worth calling out for reviewers:

  • Any iCal feed, not just primary Google Calendar. Google Calendar's Tidbyt integration only surfaces the primary calendar. This app accepts the secret iCal address from any calendar — secondary work calendars, shared family calendars, etc.

  • Recurring events with ordinal weekday rules. The RRULE engine handles BYDAY codes with ordinal prefixes (e.g. BYDAY=3MO = "3rd Monday of the month"), which are common in real-world calendars for things like recurring team meetings or street-cleaning schedules. It also handles EXDATE exclusions and RECURRENCE-ID overrides (rescheduled individual occurrences).

  • Local timezone via the Location field. The app uses the standard schema.Location field; the user's timezone is extracted from the location JSON and applied to all event times and date comparisons, so the display is always correct regardless of where the iCal feed was created.

Schema fields

  • iCal URL — the calendar's secret address in iCal format (found in Google Calendar settings under "Secret address in iCal format")
  • Location — standard Tidbyt location picker, used for timezone

Manifest

  • id: hello-cal
  • author: Valerio Italiano

@tidbyt

tidbyt Bot commented Jun 21, 2026 •

Copy link
Copy Markdown

⚠️ The automated review process is experimental and likely has bugs. Please bear with us as we iron out the kinks and enable you to ship changes at high velocity 🚀

Next Steps

Hello! Thank you so much for your change 🤜 🤛 . There are a few things you need to do:

  • Sign the CLA if you haven't already
  • Ensure your build is green! Any problem will display a proposed solution to try out
  • Get a review, either by Tidbyt Bot or by a Tidbyt engineer

Manual Review Required

Hang tight! A Tidbyt engineer will be by shortly to review your change. Here is what they will be looking for:

Test Details
✅ App Dir All files are in a single app directory
🟡 Modules Usage of http.star requires review
✅ Original Author The original author matches the PR author

@tidbyt-bot

tidbyt-bot commented Jun 21, 2026 •

Copy link
Copy Markdown

CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@valit

valit commented Jun 21, 2026

Copy link
Copy Markdown
Author

recheck

@valit

valit commented Jun 21, 2026

Copy link
Copy Markdown
Author

I have read the CLA Document and I hereby sign the CLA

valit and others added 5 commits June 22, 2026 00:29
Three bugs fixed since initial submission:
- Date text row 1px too high across all screens (pad y=3 → y=4)
- Long title Marquee rendered at x=0 with no scroll when title was narrower
  than the 64px container; now uses width=58 with pad=(3,14,0,0) so any title
  wider than 58px actually scrolls and both margins are 3px symmetric
- TITLE_STATIC_MAX lowered 61 → 58 to match the new Marquee width

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sync from private tidbyt-cal repo. Key changes:
- PREPARATION_TIME (15 min) replaces SWITCH_LEAD / is_contiguous
- PERSISTENCE_TIME (10 min) + EXTENDED_THRESHOLD (4 h) for extended events
- Most-recently-started wins when events overlap; simultaneous events
  synthesized as "Event + N other(s)" with automatic decrement
- 8 pm look-ahead also applies synthesis

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When a timed event is upcoming and we are within the configurable alert
window (default 3 min, range 1–5 min), render_event() returns an animated
WebP that alternates between the normal state (yellow text on black) and an
inverted state (full-width yellow bar, black text) at 1-second intervals.
The title row is raised 1px in both phases. Two new schema fields are
exposed: a Toggle to enable/disable the alert and a Dropdown for the alert
window duration.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- All-day events now show "Today" or "Tomorrow" instead of "All day"
- In-progress timed events show "Now" instead of the start time
- After-8pm look-ahead extended to all-day events (new tomorrow events
  take priority; continuing multi-day events fall back)
- Date row shows "Tomorrow" for all look-ahead events (timed or all-day)
  so both rows consistently communicate the look-ahead context

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@saltedlolly

Copy link
Copy Markdown
Contributor

Hi @valit — this looks like a really useful app, and I noticed it's unfortunately been sitting here awaiting review since June.

In case you haven't come across it, Tronbyt is an open-source, self-hosted continuation of the Tidbyt ecosystem. It was created after development of the original Tidbyt community app repository largely stalled after Tidbyt joined Modal.

Tronbyt provides an open-source replacement server and firmware for Tidbyt hardware, along with its own maintained fork of Pixlet. Its apps repository is a direct fork of tidbyt/community, preserving the existing app ecosystem while continuing to accept new apps, fixes, and improvements. This means existing Tidbyt/Pixlet apps can generally be brought across without being rewritten.

I checked and I don't believe Hello Cal has been ported to Tronbyt yet. There is a separate Google Calendar app currently being developed there, but that uses the Google Calendar API/OAuth. Hello Cal's provider-independent iCal approach would still be really useful — particularly for non-Google calendars and for users who don't want to configure OAuth.

If you're interested, it would be great to see Hello Cal submitted to tronbyt/apps so the work can become part of the actively maintained community ecosystem rather than remaining stuck in the Tidbyt review queue.

I'm not affiliated with Tronbyt — just a Tidbyt/Tronbyt user who noticed some excellent contributions sitting unmerged here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants