Files
yellowjacket/frontend
yonluandClaude Opus 5.5 bb26d5f289
CI / check (push) Skipped
CI / e2e (push) Skipped
CI / check (pull_request) Successful in 4m25s
CI / e2e (pull_request) Successful in 13m43s
feat(explore): arrows on every sideways row, and one album card size
The shelves, the top results and the artist page's discography and
similar-artists rows scrolled sideways only by a horizontal wheel or a
trackpad, so a plain mouse could not reach anything past the fold.
<scroll-row> wraps each of them with previous/next arrows that are
hidden at the end they cannot move from, revealed on hover where there
is hover, and always shown where there is not.

The album card is defined once, in albumCardStyles, instead of twice.
explore-view clamped its cards to 130-150px, and with square artwork
that made cards in one row different heights as well as widths.  The
width is fixed now and each line under the art reserves its own space.
Covers are inset rather than cropped (contain, not cover).

The ownership badge sits over the artwork for owned and unowned alike,
and catalog cards no longer dim: a grid of dimmed covers read as a page
that had failed to load.  The album page's tracklist still dims unowned
rows, which says something different about something different.

Every MusicBrainz link now goes through openMusicBrainz, which pins the
origin, including the one on the album page that still called
window.open directly.  solid/chevron-left is bundled for the left arrow;
without it the arrow drew the missing-icon fallback.

Closes #264

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017HJiuc3ZZhxsPXz3ozTirT
2026-09-26 16:59:28 -04:00
..
2025-03-28 11:43:14 -05:00

YellowJacket Frontend

This directory contains the frontend for YellowJacket.

Dependencies

There are a couple of tools that are required to build and use the frontend.

  • vite for
    • transpiling typescript
    • bundling the final "package" that is useb by the webview
    • running a dev server with hot-reloading
    • configured with the vite.config.ts file in this directory
  • pnpm for managing frontend dependency packages

There are a handful of dependency packages that we use directly in the frontend.

Lastly, there are some dependencies that only benefit development

  • tsserver comes bundled with vscode and can be used as an LSP with other editors using typescript-language-server
    • Used for autocomplete, syntax highlighting, etc.
    • This can be configured with the tsconfig.json file in the root of the project
      • NOTE: your configuration should align with the vite config so you get in-editor feedback that aligns with how the build will be done.

Development

Ideally, you would use the frontend in the wails app as the frontend depends on the Go bindings generated by Wails. You can do this by running wails dev in the root of the YellowJacket repo.

If you want to run the frontend standalone, make sure the Wails go bindings have been generated with wails generate modules. Then, you can run pnpm dev to run the vite dev server. For more information on what commands are available, refer to package.json.

Code

Web Components

Our frontend is based off of Web Components, a standard that provides native browser encapsulation of components that can include HTML, CSS and Javascript all together. Instead of writing these components manually in Javascript, we utilize lit as a wrapper library.

Typescript

To better integrate with our tooling and to provide a better developer experience with strong typing, we have written all functional frontend code in Typescript. Vite serves as our Typescript transpiler.

Important Files and Directories

NOTE: most of these directories have aliases defined in tsconfig.json and vite.config.ts so that we may refer to them by shorthand when importing.

  • index.html and index.js is the entrypoint for the frontend. The first page that loads.
  • wailsjs/go Go code bindings generated by wails reside here
  • wailsjs/runtime the Wails runtime code needed to use Wails features
  • src all app code resides here
  • src/assets static assets like fonts, images and icons
  • src/components lit components that are used to compose the application
  • src/pages pages that serve as other entrypoints for the application that can be navigated to