me-web? 0.3: the path in drawn steps, each step's checks under it, the real RAM
- The path from this device to the internet is a vertical zig-zag of larger drawings (this phone or computer, the router or the mobile network, a shared exit, the provider's building, the globe) that pulse while their step is checked, joined by curved wires with the link and its speed, and a few details beside each: the model, the addresses inside and outside the router and which port-opening protocols answer, the AS number, the public addresses. - The results are grouped under the step they concern, in the path's order, with the same drawing as a heading; tapping a step in the path scrolls to its checks. - After a check, the status and "Check again" move to the end, beside sharing. - Memory reads the device's RAM: on Android it showed the runtime's heap limit (0.1 GB). Labelled "Memory (RAM)" in every language. Free disk is read for the app's own folder, so Android shows it too. The device's model is read on Android, Linux and Windows. - Two icons drew outside their box (the outside test's shield, the calls and games radio tower): joined Lucide elements started with a relative move. Fixed; twelve unused icons deleted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
This commit is contained in:
1 parent
7cfc8b6de5
commit
37752f9f07
126 files changed
+699
-281
No files matched your search
@@ -60,7 +60,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` |
|
||||
| `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.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`) |
|
||||
@@ -93,6 +93,16 @@ The Android release key: alias `meweb`, certificate SHA-256
|
||||
- **Shared findings are files, not Mongo.** The box's Mongo has auth on and me-web? has no user there; a file per
|
||||
submission under the unit's `StateDirectory`, with only the delete token's SHA-256, needs no credentials.
|
||||
- **An address inside right-to-left text reorders around `→`.** `Texts.Isolate` wraps every literal value in U+2068/U+2069.
|
||||
- **A Lucide icon joined from several SVG elements must start each one with an absolute `M`.** A leading `m` is
|
||||
absolute only as a path's first command; joined after another element it becomes relative and draws outside the box.
|
||||
The shield and the radio tower did that until 0.3; check new geometry by walking its points against 24 (or 48).
|
||||
- **On Android `GC.GetGCMemoryInfo().TotalAvailableMemoryBytes` is the runtime's limit, not the RAM** (0.1 GB on a
|
||||
phone with several): `AndroidPlatform` reads `ActivityManager.MemoryInfo.TotalMem`, Linux `/proc/meminfo`.
|
||||
- **`DriveInfo` on Unix takes any path** (it calls `statvfs`): pass the app's folder, not `/`, or Android reads the
|
||||
read-only root and reports no free disk at all.
|
||||
- **An IPv6 address only wraps at a colon if it is allowed to**: the path's detail lines put U+200B after each colon;
|
||||
they are plain `TextBlock`s for that reason, so a copy never carries the invisible character (the cards' values,
|
||||
which are selectable, stay untouched).
|
||||
|
||||
- **Avalonia 12 Android head:** `[Application] MainApplication : AvaloniaAndroidApplication<App>` plus a non-generic
|
||||
`AvaloniaMainActivity`; the main view comes through `IActivityApplicationLifetime.MainViewFactory`, checked before
|
||||
|
||||
Reference in new issue
Block a user