# NOTICE: WITH A FLY · Fontana Club, Vaasa · 5 Oct 2026 (the cinema page)
**The source of this page is these unminified files:** `index.html`, `css/fonts.css`, `css/player.css`, `css/face.css`,
`css/layers.css`, `js/player.js`, `js/layers.js`, `js/fly.js`. Nothing is bundled, minified or generated. To get the
source, copy this folder.
**Copyright © 2026 CRAITR** (https://craitr.no), for the page's own code and for the work.
## Licences in one look
| what | licence | text |
|---|---|---|
| the page's code, as a whole | **GPL-3.0-or-later** | `LICENSES/GPL-3.0.txt` |
| … of which the Jellyfin-derived files (`index.html` markup, `css/player.css`, `js/player.js`) | GPL-2.0-or-later, used under its "or any later version" as part of the GPL-3.0-or-later whole | `LICENSES/jellyfin-web.LICENSE-GPL-2.0.txt` |
| … our own files (`js/layers.js`, `js/fly.js`, `css/layers.css`, `css/face.css`, `css/fonts.css`, the inline scripts in `index.html`) | GPL-3.0-or-later | `LICENSES/GPL-3.0.txt` |
| **the work**: the film (picture and sound), the five layers' texts, and the data in `data/` | **CC BY-NC-SA 4.0** | `LICENSES/CC-BY-NC-SA-4.0.txt` |
| fonts and icons | their own licences (below) | `LICENSES/` |
**The work** — *WITH A FLY*, the film of Dissonance at Fontana Club, Vaasa, 5 October 2026, with its sound and the five
layers — is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International licence
(https://creativecommons.org/licenses/by-nc-sa/4.0/): you may share and adapt it, not for commercial purposes, with
credit, and under the same licence.
## The player interface: jellyfin-web, GPL-2.0-or-later
The player's interface is a rebuild of Jellyfin's web video player, using its markup, styles and behaviour.
- Upstream: jellyfin-web, https://github.com/jellyfin/jellyfin-web, commit `66c1c33ea3a7b45e704a8121642cd5520bc12af9`
(package.json 13.0.0, commit dated 2026-10-07).
- Copyright: Jellyfin Contributors and Emby Contributors. The list is in `LICENSES/jellyfin-web.CONTRIBUTORS.md`.
- Licence: GNU General Public License, version 2 or (at your option) any later version. The full text is in
`LICENSES/jellyfin-web.LICENSE-GPL-2.0.txt`. There is NO WARRANTY, to the extent permitted by law (GPL §11–12).
- These files derive from it and carry the GPL notice in their header: `index.html` (markup), `css/player.css`,
`js/player.js`.
- This page has no affiliation with the Jellyfin project, and the project has not endorsed it. The page does not use
the Jellyfin name or logo for itself. The GPL grants no trademark rights.
### Our modifications (dated)
Items 1–10 were made on **2026-10-08** and item 11 on **2026-10-09**, by Ánde Quirne, for Enrique's Monday cinema:
1. The SCSS was flattened to plain CSS, starting from the kit's `osd.css`, with the dark-theme variables resolved. The
font and icon URLs now point to `fonts/` and `icons/`. The SyncPlay, Cast, favourite, record, audio-track and
playlist buttons are gone, because this page plays one film from local files.
2. One local `<video>` replaces playbackManager and the server. The volume curve (`(v/100)^3`, steps of 2) and the
key bindings, the 300 ms click / double-click and the wheel handling were re-implemented from
`apps/legacy/controllers/playback/video/index.js` and `plugins/htmlVideoPlayer/plugin.js`. The time texts, the
"Ends at" text and the 700 ms refresh come from the same controller, `scripts/datetime.js` and
`components/mediainfo/mediainfo.js`. The emby-slider behaviour was re-implemented: progress, buffered range, hover
bubble with chapter names, chapter markers and keyboard steps.
3. **The Subtitles ActionSheet is multi-select.** Rows Off / THE ROOM / TAO / THE WALL / THE FLY / THE HANDS each
toggle their own check. The sheet stays open until you click the backdrop or press Escape. In Jellyfin you make one
choice and the sheet closes. Your choices are kept in localStorage.
4. Dialogs push no history entries; Jellyfin pushes one for every dialog. Escape closes the top sheet.
5. The Settings sheet has two rows. "Picture" offers the wall, the wall with the collage camera picture-in-picture, or
the collage camera alone. "About this film" opens the credits. The PiP button toggles the collage camera
picture-in-picture.
6. Before play, a safety notice opens in Jellyfin's alert dialog (`components/dialog`). It warns of strobing light,
counted from `data/wall-hb.json`, and asks you to press play. The top bar's back arrow pauses the film and opens the
notice again.
7. The shadow fly (`js/fly.js`) opens a full-screen frame of https://dissonance.craitr.no/fly under a copy of the video
top bar. The back arrow closes the frame and leaves the film paused.
8. Our own [cinema] CSS rules sit at the end of `css/player.css`, and each one is marked.
9. index.html carries one more inline script (assembly, 2026-10-08): the page holds an EventSource on `/__alive`
so the bundled `serve.py` can stop when the window closes. On any other server it gets a 404 once and does nothing.
10. Round-1 fixes, 2026-10-08 (same day): `js/player.js` steers the picture-in-picture camera toward the film's time
with a playback-rate nudge of at most 3 % between 0.04 and 0.25 s of drift (it jumps only past 0.25 s), checked every
250 ms instead of 500 ms. `index.html` now carries the GPL permission and warranty notice in its header, a `marks`
entry (the START and END times) in its config, and new `?v=` stamps on every script and stylesheet.
11. **WITH A FLY, the new face (2026-10-09).** The page is named WITH A FLY (title, top bar, notice, About).
`css/face.css` (new, ours, loaded after `css/player.css`) restyles Jellyfin's OSD, sheets and dialogs without changing
their markup, behaviour, keys or timings: a fainter shade, hairline sliders, white instead of Jellyfin's blue, glass
sheets, the display face for titles and Poppins for the rest. `js/player.js` adds `CinemaPlayer.pictureAt(x, y)` (the
picture's brightness, from the grid the fly already reads) and builds "About this film" from `window.CINEMA.about`
(type direction, the licences); `index.html` loads `css/fonts.css` and `css/face.css` and carries the new name and the
licence lines in its header and config. The page as a whole is now offered under GPL-3.0-or-later (see the table
above); the Jellyfin-derived files keep their GPL-2.0-or-later notices.
## Our own files
`js/layers.js` (the five layers, drawn as the picture's own type), `js/fly.js` (the shadow fly, written 8 Oct 2026),
`css/layers.css`, `css/face.css` and `css/fonts.css` are new work, not derived from jellyfin-web. They are licensed
under the **GNU General Public License, version 3 or (at your option) any later version** (`LICENSES/GPL-3.0.txt`), and
each carries that notice in its header. They talk to the player only through `window.CinemaPlayer`. The recording, the
five layers' texts, the data and the music are the work (CC BY-NC-SA 4.0, above), not code.
## Fonts and icons
Type direction: **Tora** (resident student of craitr), from her prototype's typefaces.
- **Michroma** (The Michroma Project Authors), from `@fontsource/[email protected]`, file
`fonts/michroma/michroma-latin-400-normal.woff2`, unmodified, under the SIL Open Font License 1.1
(`LICENSES/michroma.LICENSE-OFL-1.1.txt`). The display face of this public copy.
- **Poppins** (Indian Type Foundry), from Tora's kit, files `fonts/poppins/*.woff2` (converted from the TTFs to WOFF2,
not subset, not renamed), under the SIL Open Font License 1.1 (`LICENSES/poppins.LICENSE-OFL-1.1.txt`).
- **Noto Sans** (The Noto Project Authors), from `@fontsource/[email protected]`, files `fonts/noto-sans/*.woff2`
(latin and latin-ext, 400/700), unmodified, SIL Open Font License 1.1 (`LICENSES/noto-sans.LICENSE-OFL-1.1.txt`).
It draws the Jellyfin controls' few remaining words and the arrows Poppins lacks.
- **Material Icons** (Google), from `[email protected]`, files `icons/font/MaterialIcons-Regular.woff2`
and `.ttf`, unmodified, Apache License 2.0 (`LICENSES/material-design-icons-iconfont.LICENSE-Apache-2.0.txt`).
- **MUI icons**: the back arrow's SVG path is inline in `index.html` and `js/player.js`, from `@mui/[email protected]`.
Copyright (c) 2014 Call-Em-All, MIT License (`LICENSES/mui-icons-material.LICENSE-MIT.txt`).
## Credit line (as shown in "About this film")
> WITH A FLY. Type direction: Tora (resident student of craitr). The film, its sound, the five layers' texts and data:
> CC BY-NC-SA 4.0. The page's code: GPL-3.0-or-later; its player files derive from jellyfin-web (GPL-2.0-or-later),
> Copyright Jellyfin Contributors and Emby Contributors, modified 2026 (see NOTICE.md). Not affiliated with the Jellyfin
> project. Icons: Material Icons (Google, Apache-2.0); MUI icons (Call-Em-All, MIT).