Changelog
Changelog
[0.3.0] - 2026-05-30
- Per-site builds (major change). The export is now built and deployed once per site from a shared index, so one editor can publish several independent sites (e.g. Jeralyzer and Rekietalyzer) over the same channel pool. Each deployed site shows only its own channels and carries its own branding (title, header, tagline, footer social links), channel groups, and charts dashboard — a channel shared between sites is downloaded once and never duplicated. The site is selected at build time via the
SITE_IDenv var; the heavy per-channel transcript/subs data is generated once and shared, while each site gets a filtered summaries/subs/stats bundle composed into its own static output. No user-visible change for a single-site install beyond the branding now coming from that site's config. - Twitch.tv videos. Twitch is now a supported platform: Twitch videos play inline via a Twitch embed, and "Twitch" appears as an option in the charts platform filter and series grouping.
- Advanced query builder when charting search matches. A chart's search source now uses the same layered query builder as the main search page — combine any number of layers with AND/OR/NOT, nest groups, and set each layer's scope and regex — instead of the old single term box. Simple one-term searches still collapse to a single input.
- "Chart this search." A new control beside "Share current search" turns the query you're looking at into a chart in one click: pick a starting template (mentions over time / matching videos per month / matches by channel) and jump to the Charts tab with the query pre-filled and ready to edit. Choose whether it's added to your existing board or opens as a single-chart board, and your selected channels carry over as the chart's channel filter.
- Charts. A new Charts tab (a prominent primary nav item alongside Search) visualises the library. Build charts from video metadata — upload date (binned by week/month/quarter/year, with optional cumulative running totals), engagement metrics (views, likes, comments, follower count), duration distributions, categories, languages — or from search matches, plotting how many videos match a term (or total hits) over time. Each chart has labelled axes and hover tooltips. Pick the chart type (line/bar/stacked/area/pie), split any chart into series by channel/platform/language, and apply a dashboard-wide filter bar (date range, platform, channel, has-transcript). The editor sets the data source with a clear Metadata/Search toggle, and search terms can be plain text or regex. A chart's date/channel/platform filters narrow the search scope (not just the displayed results), so a date range keeps a search chart light. The default board leads with example search charts, date-limited to the recent ~2 years so they load quickly out of the box. Charts open with an editor-authored default dashboard plus a grouped gallery of templates — including ready-made search examples — that you can fork and customise. Your board auto-saves locally and survives reloads; Reset to default restores the editor's dashboard. Share copies a link that restores the whole board, and every chart can be exported as a PNG (download or copy to clipboard) or its data as CSV. Engagement metrics come from a new stats dataset built alongside the search index.
[0.2.2] - 2026-05-26
- Browse all videos without searching. With no search query entered, the results list now shows every video matching the current filters (newest-first), instead of a "add a layer to search" prompt. Typing a query narrows the list as before; clearing it returns to the full browse view. This replaces the old workaround of searching regex
.on titles. - Collapsing the query builder to one layer no longer strips a hidden setting. Deselecting "Show hits in results" on a layer and then deleting the other layers used to leave that lone layer permanently hits-off, with no control to fix it (the checkbox is hidden in the single-layer compact view). Collapsing back to compact now resets "Show hits" to on.
[0.2.1] - 2026-05-25
- "Unlisted" availability filter. The Availability filter group now has a dedicated Unlisted checkbox alongside Available and Deleted. Availability is now a three-way split — unlisted videos are their own bucket rather than counting as "Available", so you can isolate or hide them independently. Unlisted videos remain shown by default, and the filter is saved in profiles and shareable links like the other filters.
[0.2.0] - 2026-05-22
- Composable layered search. The single search bar is now a query builder: combine any number of layers with AND / OR / NOT and arbitrary nesting, each layer scoped to transcripts, live chat, or title/channel. Matches from every layer surface in the result list with a per-layer colour swatch. Editing one layer doesn't re-run the others, so deep nests stay fast. Simple one-keyword search still looks like a single input — the builder collapses to compact mode when there's only one layer. Legacy
?q=&m=&re=share-links auto-migrate to a one-layer tree. - Query-builder controls. A "Reset layers" button collapses the builder back to one empty transcripts leaf. An "Unwrap" button on every non-root group flattens its children into the parent; if the group had NOT set, the promoted children inherit a flipped NOT so the meaning of the subtree doesn't silently change. The "slow / medium / fast" cost badges next to each scope dropdown have been removed — they read as a warning on the primary mode (transcripts) without giving you anything to do about it.
- Profile row at the top of the search. The profile selector now sits above both the query builder and the filters, and is shown even with a single channel since profiles cover both query and filters. The "Share current search" button moved into the same row. The dirty-profile indicator is now a small amber
•instead of the ambiguous text "(unsaved)". A Revert button appears whenever the active profile is dirty, re-applying the saved snapshot (filters and query both) so you can experiment and roll back without re-selecting the profile. - Collapsible filters section (channels, Type, Audience, Availability). The summary stays visible whether open or closed and shows "{N} of {Total} channels" with a compact list of the selected channel names (truncated on overflow; full list on hover). Open/closed state persists across reloads, and toggling never marks a profile dirty.
- "Reset everything" button in the filter reset row clears the layered query and every filter and drops the active profile pointer in one shot. The narrower "Reset channels" / "Reset all filters" buttons stay alongside.
- Virtualised search results. Results now render through a virtualised list, one element per matching video. Cards mount in full when they enter the viewport and unmount once scrolled away — much smoother on long result lists, and no empty bands while sizes settle. The "Show more videos" pagination button and the "Videos per page" advanced option are gone; everything renders in one continuous list. When the search pipeline still caps at its per-batch hit limit, a "Load more results" button appears below the list.
/changelogpage rendering this changelog, linked from the right side of the sticky header, with per-heading copy-link buttons for permalinks.- Search results survive a page reload. Previously the cached hit rows would silently disappear after refresh (the "N hits" count stayed correct, but the list of timestamps was empty).
- AND-chained search layers no longer drop hit timestamps after certain edit sequences. Previously, evaluating a layer with "Show hits in results" off and then turning it on at the same query/scope could surface the matching video without any timestamps; the workaround was toggling regex on and off.
- Filter changes survive a refresh again when a saved profile was active. Previously, committing a filter change with a profile selected would silently revert on the next reload.
- Index builds no longer crash on large datasets. A single live-chat track encoding to hundreds of MB could previously exhaust memory; page bodies now stream to disk instead of being buffered, and the post-build availability pass no longer makes thousands of sequential file reads.