"me-web?" 0.14.0: the first three cards, drawn again
- The three pictures at the top are new: a small planet at dusk under twinkling stars, with town lights on its night side, drifting clouds, smoke from the chimney and trees that sway. - The house and the block of flats now have lit walls, a tiled roof, glowing windows and soft shadows. - The photo now flies like a little print and the visitor is a letter, because a letter needs an address. Each flies along its route with a glowing trail. At the house the door lights up green; at the block of flats the letter stops at the main door while the windows light up one by one, and a question mark appears. - The path from your device to the internet glows in each step's colour. While a step is checked, an arc circles it and small lights travel along the wires, and a ring spreads out when its answer arrives. - In right-to-left languages the small picture badge stays in its corner instead of covering the drawing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
91c92c80e9
commit
3d6315fe1e
8 files changed
+1200
-318
No files matched your search
@@ -62,7 +62,7 @@ The Android release key: alias `meweb`, certificate SHA-256
|
||||
|---|---|
|
||||
| `src/MeWeb.Shared` | `Endpoints.cs` (routes and hosts), wire contracts, `MeWebJsonContext`, generated `BuildInfo` |
|
||||
| `src/MeWeb.Core` | the checks, no UI: `Net/` (address kinds, local network, TTL route, STUN, the probe's `Answerer`, DNS, speed, the device), `Router/` (UPnP IGD, NAT-PMP, PCP; `PortMapper` opens and removes mappings, `Leftovers` remembers them across a crash), `Mail/` (port 25, reverse name, blocklists through the user's resolver), `Knowledge/` (provider map and profiles), `History/` (checks, shared submissions), `Checks/` (`CheckRunner`, `Verdicts`, `Reach`, `Uses`, `ServerProbe`, `SharePayload`) |
|
||||
| `src/MeWeb.App` | Avalonia views and view models, `Services/Localizer.cs` (+ `{s:Tr Key}`), `Strings/<code>.json`, `Resources/Colors.axaml`; `Resources/Icons.axaml` (Lucide, 24 units, for cards and lists) and `Resources/Art.axaml` (the path's drawings, 48 units: `Art<Name>Base`, up to three `Beat`s that pulse in turn while the step is checked and take its verdict colour, and a `Spin` for the globe). The path is a vertical zig-zag of `PathNodeViewModel`s, and the same nodes carry the result cards (`Cards`, regrouped by `MainViewModel.Home`), so a step in the path and its group of cards are one object |
|
||||
| `src/MeWeb.App` | Avalonia views and view models, `Services/Localizer.cs` (+ `{s:Tr Key}`), `Strings/<code>.json`, `Resources/Colors.axaml`; `Resources/Icons.axaml` (Lucide, 24 units, for cards and lists) and `Resources/Art.axaml` (the path's drawings, 48 units: `Art<Name>Base`, up to three `Beat`s that pulse in turn while the step is checked and take its verdict colour, and a `Spin` for the globe; then the intro planet's still pieces as `DrawingImage`s with a fixed `Viewbox`: `ArtHouse`, `ArtBlock`, `ArtPine`, `ArtOak`, `ArtPhoto`, `ArtLetter`, `ArtServer`). The path is a vertical zig-zag of `PathNodeViewModel`s, and the same nodes carry the result cards (`Cards`, regrouped by `MainViewModel.Home`), so a step in the path and its group of cards are one object |
|
||||
| `src/MeWeb.Desktop` | desktop head (`meweb` executable), Windows manifest |
|
||||
| `src/MeWeb.Android` | Android head (`software.arasaka.meweb`), resources, manifest |
|
||||
| `src/MeWeb.Server` | `meweb.arasaka.software`: `/api/info`, `/api/ip`, the download page `/` and `/privacy` (en, it), `/download/{platform}` from the latest Gitea release, the probe (`/api/probe/ticket`, `/api/probe/{id}`) and shared findings (`/api/share`, files under `/var/lib/meweb/shares`, swept after `KeepDays`) |
|
||||
@@ -205,7 +205,12 @@ The Android release key: alias `meweb`, certificate SHA-256
|
||||
`Views/IntroScene` is one small planet in three `Step`s: 0, a phone far away sends a photo into the house and on to
|
||||
the parents' tablet (heart); 1, a house with its own number and a small always-on computer in a callout lets a
|
||||
visitor in (green door, tick); 2, that house next to a block of flats with one number for all, where the visitor
|
||||
stops at the main door (question mark). The third card asks whether the reader's home has an address of its own and
|
||||
stops at the main door (question mark). The visitor is a letter, because a letter needs an address; it and the photo
|
||||
fly along the dotted routes with a comet trail (a gradient stroke whose ends are set each frame in
|
||||
`RelativeUnit.Absolute`), and the world around them keeps moving (stars, town lights on the night side, clouds,
|
||||
chimney smoke, swaying trees). The still drawings are `DrawingImage`s in `Art.axaml`; only what moves is a control,
|
||||
and it moves through its `RenderTransform` (scale, rotate, translate), never `Canvas.SetLeft`, so a frame does not
|
||||
lay the canvas out again. The third card asks whether the reader's home has an address of its own and
|
||||
offers two answers: "Yes, let's find out" runs the check, "Not for me" shows `Goodbye` for two seconds and closes the
|
||||
app (`IPlatform.Quit`, the desktop lifetime's `Shutdown`). The six uses follow as chips, the QR codes wait folded
|
||||
at the bottom.
|
||||
@@ -216,6 +221,8 @@ The Android release key: alias `meweb`, certificate SHA-256
|
||||
is the frame loop the scenes share; `Resting` parks a scene that is folded or off screen, so it starts again from the
|
||||
beginning when it comes back. The screenshot tool calls `Hold()` to draw each at its `Poster` moment, because the
|
||||
headless clock is real time.
|
||||
- **A `Button` clips its content to its own bounds.** The path's node buttons (`Button.hop`) turn `ClipToBounds` off
|
||||
on the button and its `ContentPresenter`, or the verdict aura and the running pulse are cut into a 90-pixel square.
|
||||
- **Nothing that is being checked is left empty.** From the moment a check starts, every use has a card with its
|
||||
title, a "Checking" chip, two skeleton lines and a sweeping glint (`UseViewModel` with no finding), and every
|
||||
running check card shows the same; the verdicts replace them as they arrive. While a check runs, the share card sits
|
||||
|
||||
Reference in new issue
Block a user