You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feeds="url1,url2,..." attribute: fetches multiple OTE feeds in parallel
and renders their events combined into a single sorted/filtered/limited
list, instead of just one feed. Takes full precedence over feed when
present and non-empty (same "full replacement" precedent as fields); a
bare feed="..." is unaffected. A feed that fails to fetch is dropped and
the rest still render — the error state only appears if every feed fails.
Each merged event is tagged with _feedUrl/_feedTitle (unless the source
already set its own), so EventRenderContext.feed and the ote-event-open/ote-event-action DOM events still attribute each event
to the feed it came from.
The playground's "feed" control now doubles as "feed / feeds": enter one
URL for feed, or several comma-separated to combine them via feeds, and
the copy-paste snippet reflects whichever attribute applies.
New <ote-subscribe> custom element (dist/ote-subscribe.js, its own
esbuild entry point — consumers who don't use it pay nothing for it): a
"subscribe to this feed" trigger + popover, for any site publishing an OTE
feed, not just one running <ote-events>. Ported from a real-world fix in
a <ote-events> consumer's hand-rolled version of these same links, where
the Google Calendar and Feedly URLs were both silently broken and the
Outlook web deep-link turned out to be unreliable after login (a
Microsoft-side issue, not fixable from the caller's side — dropped in
favor of a universal webcal:// link, which already covers Outlook
desktop).
feed-ics/feed-rss/feed-json attributes each enable an independent
group of links: Calendar (Google Calendar, webcal://, ICS download),
RSS (Feedly, feed://, RSS download), and OTE feed (OTE Reader, OTE
Tools preview, JSON download) respectively. Any combination may be
present.
show="..." (comma list, full-replacement semantics like fields)
filters which individual links render.
layout="menu" (default) is a single trigger whose popover lists every
available group. layout="badges" renders one small trigger per
available group instead, each with its own popover and independent
(mutually exclusive) open state.
theme/lang follow the same auto/light/dark and auto/en/es
conventions as <ote-events>, and it reuses the same --ote-* CSS
custom properties for consistent theming when both elements are on a
page.
<slot name="trigger"> (or ics-trigger/rss-trigger/ote-trigger in layout="badges") lets a host swap in its own badge/icon markup instead
of the default text button.