The pages were built five ways: two layouts, seven widths from 28 to
64rem and four heading styles. Every page now looks like the share
pages: a centred heading over one 40rem column of outlined cards, with
the floating toolbar below.
- <x-page> (components/page.blade.php) is the root of every page. It
draws the h1 and its line (`brand` takes the site's logo, title and
description from Admin settings), an optional `mark` and `navigation`
slot, then the content. It has no width prop: every page is the same
<x-pane width="narrow">.
- The sign-in, password reset, confirm, verify email, two-factor
challenge, setup and system password pages move onto layouts/app with
the brand heading and their form in a card titled with the task.
layouts/auth, auth-header and the settings heading partial are gone,
and so is the per-page width CSS.
- Settings put their section nav under the heading; the admin pages get
a description line each. FileUploader and ShareDownload no longer pass
the branding to their views.
- The admin dashboard's table needed about 49rem, so its shares are a
list: created above the token, which opens the share, then files,
size, downloads and expiry on two lines that wrap instead of clipping,
and one delete button. A "Sort by" select replaces the column headers
(newest, oldest, expiring soonest with never-expiring last, largest,
most downloads, most files) and resets the page. The stats stay two
by two. table.css and sort-header.css are no longer imported.
- Branding hints in Admin settings name every page the title shows on.
- Tests: PageTemplateTest renders every page once and checks one page
template, one h1 and the width, and the brand heading with its
fallbacks. FrameTest measures the page column instead of the auth
card and the 64rem main; dashboard tests follow the list and the sort
select, including expiry order. .ai/rules/views.md records <x-page>,
the CHANGELOG notes the change and the website screenshots are
regenerated.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Indigo (the default), Blue, Teal, Green, Amber, Rose and Violet in the
Vibrant style and Graphite in the Neutral style are generated from
config into the stylesheet. Admin settings opens with a colour profile
card: a swatch previews the profile on the page, and Save Settings
stores it as color_profile, which AppServiceProvider hands to the
package's resolver, so every page, mail and error page wears it. An
unknown profile is refused, and a saved one that disappears falls back
to indigo.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9NnLxnPp8vaaurb3Z1MFy
website/ is hand-written HTML and CSS, uploaded as it is, like the
MailifySMS site: SealShare as software a company installs for its own
upload platform, how it works, features, a desktop/phone and light/dark
gallery of the generated screenshots, a dated and sourced comparison with
hosted transfer services and self-hosted tools, the Docker quick start,
FAQ and a privacy page for Plausible. Colours come from the app's scheme,
Google Sans Flex is served locally, nothing else loads from other hosts.
The README shows three screenshots and no longer calls the encryption
end-to-end. WebsiteTest guards missing files, other hosts, the screenshot
set and the encryption wording.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9NnLxnPp8vaaurb3Z1MFy
composer screenshots runs Pest browser tests in tests/Screenshots, outside
every test suite: fixed demo data under a frozen clock, desktop (MacBook
14, 2x) and phone (iPhone 15 Pro, 3x) in light and dark, each capture
published at once as WebP at two widths into website/img/screenshots.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9NnLxnPp8vaaurb3Z1MFy