Skip to content

web-ext: Bun build, feature folders, Audio preset, bug fixes - #109

Closed
DarhkVoyd wants to merge 2 commits into
mainfrom
web-ext/rebuild
Closed

DarhkVoyd wants to merge 2 commits into
mainfrom
web-ext/rebuild

Conversation

@DarhkVoyd

Copy link
Copy Markdown
Member

The extension work since the website/backend release (#107). Nothing here is published to the stores; bun run release stays manual.

What changed

  • Typecheck runs again. tsconfig listed uninstalled mocha/chai types, hiding 82 real errors. Content-script JSX is now typed as DOM via a local dom-chef jsx-runtime selected per file with /** @jsxImportSource dom-chef-jsx */.
  • Build: webpack + Babel replaced by Bun.build (scripts/build.ts); Tailwind through its PostCSS API from a real tailwind.config.ts; CSS via the manifest and <link> instead of JS imports. 15 dev dependencies removed; a production build takes ~300 ms.
  • Audio preset finished, Audio Mode removed. Profiles replaced the feature; the preset's watch.layout: no-video now collapses the player and keeps playback. The old overlay, visualizer, custom images, pins, B key, popup toggle, options page and store subtree are gone, as are the unimplemented watch.visuals and theatre values.
  • Bugs: Shorts buttons had ids starting with # (double-injection guard never matched); the auto-scroll toggle never reached storage; the playback-menu marker class didn't match its query; cssText = "null".
  • Structure: app/ holds only the four surfaces; features/ (playback, playlist, profiles, segments, shorts); lib/ plumbing; ui/ shared React. core/, data/, utils/, components/ and the primitive barrels are gone; cross-folder imports use @/. SegmentPanel.tsx (1,696 lines) is features/segments/panel/ with one file per section.
  • Website copy updated for the Audio preset.

Verified

bun run check (tsc + tests) and both build and build:firefox pass. The built extension was loaded into Chromium with Playwright on a live YouTube watch page: service worker up, segment button and panel injected, panel renders on click, no errors.

Not changed

Storage keys, the message protocol, primitive and preset ids, default keybindings, manifest permissions.

Typecheck runs again: tsconfig listed uninstalled mocha and chai types,
hiding 82 real errors. Content-script JSX is typed as DOM through a
local dom-chef jsx-runtime selected per file with a jsxImportSource
pragma.

Build: webpack and Babel replaced by Bun.build in scripts/build.ts,
Tailwind through its PostCSS API from tailwind.config.ts, CSS via the
manifest and <link> instead of JS imports. Fifteen dev dependencies go.

Audio preset finished, Audio Mode removed: profiles replaced the
feature. watch.layout no-video collapses the player and keeps playback;
the overlay, visualizer, custom images, pins, B key, popup toggle,
options page and store subtree are gone, with watch.visuals and the
unimplemented theatre layout.

Bugs: Shorts button ids started with '#', the auto-scroll toggle never
reached storage, the playback-menu marker class did not match its
query, cssText was set to "null".

Structure: app/ holds the four surfaces; features/ (playback, playlist,
profiles, segments, shorts); lib/ plumbing; ui/ shared React. core/,
data/, utils/, components/ and the primitive barrels are gone; cross-
folder imports use @/. SegmentPanel.tsx is features/segments/panel/,
one file per section.

Website copy follows the Audio preset. Storage keys, message protocol,
primitive and preset ids, default keybindings and manifest permissions
are unchanged.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Deploying toppings-website with  Cloudflare Pages  Cloudflare Pages

Latest commit: 65c88a9
Status: ✅  Deploy successful!
Preview URL: https://7c227cb0.toppings-website-bq3.pages.dev
Branch Preview URL: https://web-ext-rebuild.toppings-website-bq3.pages.dev

View logs

import { useToast } from "@/ui/feedback/ToastProvider";
import { useCapabilityCache } from "@/features/profiles/useCapabilityCache";
import { setExtensionIcon } from "@/lib/browser";
import { ThemePreference } from "@/ui/useTheme";
@@ -0,0 +1,266 @@
import React, { useEffect, useState } from "react";
import { Link } from "react-router-dom";
Comment on lines +21 to +26
import {
BUILT_IN_PRESETS,
type Profile,
type ProfilePrimitiveConfig,
type ThumbnailMode,
} from "@/features/profiles/profiles";
getActiveProfile,
setActiveProfileId,
} from "./profileStore";
import { setSidebarVisible, resetSidebar } from "./primitives/watch/sidebar";
setActiveProfileId,
} from "./profileStore";
import { setSidebarVisible, resetSidebar } from "./primitives/watch/sidebar";
import { setCommentsVisible, resetComments } from "./primitives/watch/comments";
} from "./profileStore";
import { setSidebarVisible, resetSidebar } from "./primitives/watch/sidebar";
import { setCommentsVisible, resetComments } from "./primitives/watch/comments";
import { setEndCardsVisible, resetEndCards } from "./primitives/watch/endCards";
import { withStore } from "@/lib/indexedDb";
import { BROWSER_STORAGE_IDB_STORE } from "@/lib/storageKeys";
import type { VideoSegmentData, SegmentConfig, SegmentAutoLoadPin } from "./types";
import { createFreshConfig } from "./factories";
…ader

The options and popup stylesheets import ui/theme.css; the PostCSS
pipeline does not resolve @import, so the compiled CSS kept a raw
import that pointed nowhere and every --color-* variable was undefined.
The build now inlines relative imports first.

The no-video layout collapsed #player-container-outer, which YouTube
empties in theater mode, moving the player into #full-bleed-container.
The container is now found by what it holds, and re-applied when the
theater attribute changes.

The playlist runtime section depended on a generated class name that
YouTube has since renamed. The header is resolved through strategies
covering both playlist layouts and reported to the capability cache.
@DarhkVoyd

Copy link
Copy Markdown
Member Author

Superseded by #110.

@DarhkVoyd DarhkVoyd closed this Sep 27, 2026
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.

1 participant