Skip to content

[clients] Trim what the clients see and give them a home - #2270

Merged
frankrousseau merged 14 commits into
cgwire:mainfrom
frankrousseau:clients/home
Oct 19, 2026
Merged

frankrousseau merged 14 commits into
cgwire:mainfrom
frankrousseau:clients/home

Conversation

@frankrousseau

@frankrousseau frankrousseau commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Problem

  • Clients reached pages and controls meant for the studio: entity and task type pages, task type names and library options, the action panel, the publish tab, the stats search, and the task type, download, onion skin, annotation, waveform and comparison controls of the playlist player.
  • Their home was the studio production grid, with nothing to tell where a production stands.
  • The comment panel of the playlist player was sized before it mounted, and a progress drag stopped when the mouse left the window.

Solution

  • Close those routes to clients and hide the options and controls, keeping a Download .zip link on the playlist header.
  • Give the clients a home: per production, the episode, shot and asset counts, the three latest playlists as cards and the progress by department, with links to the playlists and the stats pages; the studio name titles the topbar and a closable welcome message introduces the page, down to phone widths. Each overview loads once, a failed one shows empty, and main pack playlists link to the main pack.
  • Size the comment panel from a style binding once the media is sized, and keep a drag alive while a mouse button stays pressed.

frankrousseau and others added 14 commits October 19, 2026 16:24
The lists already hide the links, the routes follow. The task type page
listed the assignees, estimations and dates to a client typing its URL.
The changelog link of the topbar goes along: it speaks to the studio.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… mounts

The panel is an async component: on load its chunk lands after the
player has sized its media, so the DOM write of its height missed it.
The panel then kept its natural height, pushed the media row down and
left the smaller media centered in the surplus until the next sizing,
on an entity switch, snapped the row back. A client, who gets the panel
open on load, saw it on every playlist. The height is now a style
binding the panel picks up whenever it mounts.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Chrome fires mouseleave on the document when a held pointer exits the
window, and keeps sending the moves: the drag ended there and the bar
stayed on its last frame. Only a released button ends a drag now.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A client reviews, it does not drive the playlist: the task type change,
the download menu, the onion skin, the revision and mode pickers of the
comparison, and the task type filter and sort of the playlist list go
away, while the task type and revision combos of the entity strip lock.
Its one download, the playlist zip, is offered up front in the header.

The onion skin picker of PlayerAnnotationBar and the revision and mode
pickers of PlayerComparisonBar become opt-in: they show only to a
consumer binding them. PreviewPlayer binds them all and keeps them.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A client landed on the same production grid as the studio, with nothing
to tell one production from another. The home page now shows them, per
production, two panels: the production with its number of episodes,
shots and assets, and its three latest playlists as full-frame cards
next to the progress of each department as a status bar, with links to
the playlists and the statistics pages.

The topbar titles the page with the productions of the studio, and a
closable welcome message introduces the page, remembered like the
contributions banner. Zou types the shots but not the assets in its
entity lists, so the store tags them to count them. The status bars name
the statuses in full on hover, and read done, retake and waiting for
approval first, then the order of the production.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Under 768px the production panel becomes a strip, logo on the left with
the name and counts next to it, the playlist cards fill the width in as
many columns as fit, the page clears the topbar and the title of the
topbar shrinks and truncates instead of overflowing.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…lients

A client reviews the playlist as delivered: the annotation show/hide
toggle, the waveform and the whole comparison bar are review tools that
only clutter their player. The annotation toggle of PlayerAnnotationBar
becomes opt-in like the onion skin picker; the comparison bar is no
longer rendered for a client, so the playlist player binds its pickers
plainly again.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A TV-show playlist without episode is the main pack, unless it is for
all episodes. The home linked both to the "all" pseudo-episode, where
the playlist page cannot find a main pack one and opens an empty player.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The open productions list changes on every production event, and the
watcher reloaded every overview each time: the shots and assets of every
production, with their tasks, and a slow early answer could land over a
later one. Only the productions new to the list are loaded now, and the
overviews of the gone ones are dropped. A failed load showed a spinner
for good: it shows an empty overview instead.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The title joined the studio name and the word "productions" in English
order, which reads wrong in the locales that put the noun first.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The panel bound a height of 0px until the first sizing landed, so it
collapsed on the first paint and stayed collapsed wherever the sizing
was not reached.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@frankrousseau
frankrousseau merged commit 93f3647 into cgwire:main Oct 19, 2026
5 checks passed
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