me-web? 0.3: the path in drawn steps, each step's checks under it, the real RAM
Build / Desktop, server and tools (push) Successful in 59s
Release / Every platform, the server, the release (push) Successful in 7m35s

- 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:
thepraandClaude Opus 5.5 committed 2026-10-15 08:08:37 +02:00
1 parent 7cfc8b6de5
commit 37752f9f07
126 files changed
+699 -281

No files matched your search

+38
View File
@@ -0,0 +1,38 @@
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StreamGeometry x:Key="ArtPhoneBase">M 17 4 H 31 A 4 4 0 0 1 35 8 V 40 A 4 4 0 0 1 31 44 H 17 A 4 4 0 0 1 13 40 V 8 A 4 4 0 0 1 17 4 Z M 22 8.5 H 26 M 21 39.5 H 27</StreamGeometry>
<StreamGeometry x:Key="ArtPhoneBeat1">M 18 16 H 30</StreamGeometry>
<StreamGeometry x:Key="ArtPhoneBeat2">M 18 22 H 30</StreamGeometry>
<StreamGeometry x:Key="ArtPhoneBeat3">M 18 28 H 25</StreamGeometry>
<StreamGeometry x:Key="ArtLaptopBase">M 11 9 H 37 A 2.5 2.5 0 0 1 39.5 11.5 V 31 H 8.5 V 11.5 A 2.5 2.5 0 0 1 11 9 Z M 8.5 31 L 4.6 37 A 1.4 1.4 0 0 0 5.8 39 H 42.2 A 1.4 1.4 0 0 0 43.4 37 L 39.5 31 M 21 35 H 27</StreamGeometry>
<StreamGeometry x:Key="ArtLaptopBeat1">M 14 16 H 28</StreamGeometry>
<StreamGeometry x:Key="ArtLaptopBeat2">M 14 21 H 34</StreamGeometry>
<StreamGeometry x:Key="ArtLaptopBeat3">M 14 26 H 23</StreamGeometry>
<StreamGeometry x:Key="ArtRouterBase">M 9 26 H 39 A 4 4 0 0 1 43 30 V 35 A 4 4 0 0 1 39 39 H 9 A 4 4 0 0 1 5 35 V 30 A 4 4 0 0 1 9 26 Z M 11 39 V 42 M 37 39 V 42 M 29 32.5 H 37</StreamGeometry>
<StreamGeometry x:Key="ArtRouterBeat1">M 20.46 18.46 A 5 5 0 0 1 27.54 18.46 M 10 32.5 H 12</StreamGeometry>
<StreamGeometry x:Key="ArtRouterBeat2">M 16.93 14.93 A 10 10 0 0 1 31.07 14.93 M 15 32.5 H 17</StreamGeometry>
<StreamGeometry x:Key="ArtRouterBeat3">M 13.39 11.39 A 15 15 0 0 1 34.61 11.39 M 20 32.5 H 22</StreamGeometry>
<StreamGeometry x:Key="ArtTowerBase">M 24 20 L 16 44 M 24 20 L 32 44 M 21.4 28.5 H 26.6 M 19.5 34 H 28.5 M 12 44 H 36 M 21 17 A 3 3 0 1 0 27 17 A 3 3 0 1 0 21 17 Z</StreamGeometry>
<StreamGeometry x:Key="ArtTowerBeat1">M 19.05 12.05 A 7 7 0 0 0 19.05 21.95 M 28.95 12.05 A 7 7 0 0 1 28.95 21.95</StreamGeometry>
<StreamGeometry x:Key="ArtTowerBeat2">M 15.51 8.51 A 12 12 0 0 0 15.51 25.49 M 32.49 8.51 A 12 12 0 0 1 32.49 25.49</StreamGeometry>
<StreamGeometry x:Key="ArtTowerBeat3">M 11.98 4.98 A 17 17 0 0 0 11.98 29.02 M 36.02 4.98 A 17 17 0 0 1 36.02 29.02</StreamGeometry>
<StreamGeometry x:Key="ArtSharedBase">M 15 6 H 33 A 3 3 0 0 1 36 9 V 15 A 3 3 0 0 1 33 18 H 15 A 3 3 0 0 1 12 15 V 9 A 3 3 0 0 1 15 6 Z M 17 12 H 19 M 24 18 V 26 M 10 33 V 30 A 4 4 0 0 1 14 26 H 34 A 4 4 0 0 1 38 30 V 33 M 24 26 V 33</StreamGeometry>
<StreamGeometry x:Key="ArtSharedBeat1">M 5.5 44 V 38.5 L 10 34.5 L 14.5 38.5 V 44 Z</StreamGeometry>
<StreamGeometry x:Key="ArtSharedBeat2">M 19.5 44 V 38.5 L 24 34.5 L 28.5 38.5 V 44 Z</StreamGeometry>
<StreamGeometry x:Key="ArtSharedBeat3">M 33.5 44 V 38.5 L 38 34.5 L 42.5 38.5 V 44 Z</StreamGeometry>
<StreamGeometry x:Key="ArtBuildingBase">M 15 44 V 8 A 2 2 0 0 1 17 6 H 31 A 2 2 0 0 1 33 8 V 44 M 15 22 H 8 A 2 2 0 0 0 6 24 V 44 M 33 22 H 40 A 2 2 0 0 1 42 24 V 44 M 3 44 H 45 M 21 44 V 38 H 27 V 44 M 24 6 V 2</StreamGeometry>
<StreamGeometry x:Key="ArtBuildingBeat1">M 19.5 12 H 21.5 M 26.5 12 H 28.5 M 9.5 28 H 11 M 37 34 H 38.5</StreamGeometry>
<StreamGeometry x:Key="ArtBuildingBeat2">M 19.5 18 H 21.5 M 26.5 24 H 28.5 M 37 28 H 38.5</StreamGeometry>
<StreamGeometry x:Key="ArtBuildingBeat3">M 26.5 18 H 28.5 M 19.5 24 H 21.5 M 19.5 30 H 21.5 M 26.5 30 H 28.5 M 9.5 34 H 11</StreamGeometry>
<StreamGeometry x:Key="ArtGlobeBase">M 6 24 A 18 18 0 1 0 42 24 A 18 18 0 1 0 6 24 Z M 6 24 H 42 M 8.4 15 H 39.6 M 8.4 33 H 39.6</StreamGeometry>
<StreamGeometry x:Key="ArtGlobeSpin">M 24 6 A 9 18 0 0 0 24 42 A 9 18 0 0 0 24 6 Z</StreamGeometry>
<StreamGeometry x:Key="WireToEnd">M 0 0 C 0 0.62 1 0.38 1 1</StreamGeometry>
<StreamGeometry x:Key="WireToStart">M 1 0 C 1 0.62 0 0.38 0 1</StreamGeometry>
</ResourceDictionary>
+6 -17
View File
@@ -1,31 +1,21 @@
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StreamGeometry x:Key="IconLaptop">M 18 5 a 2 2 0 0 1 2 2 v 8.526 a 2 2 0 0 0 .212 .897 l 1.068 2.127 a 1 1 0 0 1 -.9 1.45 H 3.62 a 1 1 0 0 1 -.9 -1.45 l 1.068 -2.127 A 2 2 0 0 0 4 15.526 V 7 a 2 2 0 0 1 2 -2 z M 20.054 15.987 H 3.946</StreamGeometry>
<StreamGeometry x:Key="IconSmartphone">M 7 2 H 17 A 2 2 0 0 1 19 4 V 20 A 2 2 0 0 1 17 22 H 7 A 2 2 0 0 1 5 20 V 4 A 2 2 0 0 1 7 2 Z M 12 18 h .01</StreamGeometry>
<StreamGeometry x:Key="IconWifi">M 12 20 h .01 M 2 8.82 a 15 15 0 0 1 20 0 M 5 12.859 a 10 10 0 0 1 14 0 M 8.5 16.429 a 5 5 0 0 1 7 0</StreamGeometry>
<StreamGeometry x:Key="IconSignal">M 2 20 h .01 M 7 20 v -4 M 12 20 v -8 M 17 20 V 8 M 22 4 v 16</StreamGeometry>
<StreamGeometry x:Key="IconCable">M 17 19 a 1 1 0 0 1 -1 -1 v -2 a 2 2 0 0 1 2 -2 h 2 a 2 2 0 0 1 2 2 v 2 a 1 1 0 0 1 -1 1 z M 17 21 v -2 M 19 14 V 6.5 a 1 1 0 0 0 -7 0 v 11 a 1 1 0 0 1 -7 0 V 10 M 21 21 v -2 M 3 5 V 3 M 4 10 a 2 2 0 0 1 -2 -2 V 6 a 1 1 0 0 1 1 -1 h 4 a 1 1 0 0 1 1 1 v 2 a 2 2 0 0 1 -2 2 z M 7 5 V 3</StreamGeometry>
<StreamGeometry x:Key="IconRouter">M 4 14 H 20 A 2 2 0 0 1 22 16 V 20 A 2 2 0 0 1 20 22 H 4 A 2 2 0 0 1 2 20 V 16 A 2 2 0 0 1 4 14 Z M 6.01 18 H 6 M 10.01 18 H 10 M 15 10 v 4 M 17.84 7.17 a 4 4 0 0 0 -5.66 0 M 20.66 4.34 a 8 8 0 0 0 -11.31 0</StreamGeometry>
<StreamGeometry x:Key="IconBuilding2">M 10 12 h 4 M 10 8 h 4 M 14 21 v -3 a 2 2 0 0 0 -4 0 v 3 M 6 10 H 4 a 2 2 0 0 0 -2 2 v 7 a 2 2 0 0 0 2 2 h 16 a 2 2 0 0 0 2 -2 V 9 a 2 2 0 0 0 -2 -2 h -2 M 6 21 V 5 a 2 2 0 0 1 2 -2 h 8 a 2 2 0 0 1 2 2 v 16</StreamGeometry>
<StreamGeometry x:Key="IconGlobe">M 2 12 A 10 10 0 1 0 22 12 A 10 10 0 1 0 2 12 Z M 12 2 a 14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0 -20 M 2 12 h 20</StreamGeometry>
<StreamGeometry x:Key="IconGlobe">M 2 12 A 10 10 0 1 0 22 12 A 10 10 0 1 0 2 12 Z M 12 2 a 14.5 14.5 0 0 0 0 20 a 14.5 14.5 0 0 0 0 -20 M 2 12 h 20</StreamGeometry>
<StreamGeometry x:Key="IconNetwork">M 17 16 H 21 A 1 1 0 0 1 22 17 V 21 A 1 1 0 0 1 21 22 H 17 A 1 1 0 0 1 16 21 V 17 A 1 1 0 0 1 17 16 Z M 3 16 H 7 A 1 1 0 0 1 8 17 V 21 A 1 1 0 0 1 7 22 H 3 A 1 1 0 0 1 2 21 V 17 A 1 1 0 0 1 3 16 Z M 10 2 H 14 A 1 1 0 0 1 15 3 V 7 A 1 1 0 0 1 14 8 H 10 A 1 1 0 0 1 9 7 V 3 A 1 1 0 0 1 10 2 Z M 5 16 v -3 a 1 1 0 0 1 1 -1 h 12 a 1 1 0 0 1 1 1 v 3 M 12 12 V 8</StreamGeometry>
<StreamGeometry x:Key="IconRadioTower">M 4.9 16.1 C 1 12.2 1 5.8 4.9 1.9 M 7.8 4.7 a 6.14 6.14 0 0 0 -.8 7.5 M 10 9 A 2 2 0 1 0 14 9 A 2 2 0 1 0 10 9 Z M 16.2 4.8 c 2 2 2.26 5.11 .8 7.47 M 19.1 1.9 a 9.96 9.96 0 0 1 0 14.1 M 9.5 18 h 5 m 8 22 4 -11 4 11</StreamGeometry>
<StreamGeometry x:Key="IconHistory">M 3 12 a 9 9 0 1 0 9 -9 9.75 9.75 0 0 0 -6.74 2.74 L 3 8 M 3 3 v 5 h 5 M 12 7 v 5 l 4 2</StreamGeometry>
<StreamGeometry x:Key="IconRadioTower">M 4.9 16.1 C 1 12.2 1 5.8 4.9 1.9 M 7.8 4.7 a 6.14 6.14 0 0 0 -.8 7.5 M 10 9 A 2 2 0 1 0 14 9 A 2 2 0 1 0 10 9 Z M 16.2 4.8 c 2 2 2.26 5.11 .8 7.47 M 19.1 1.9 a 9.96 9.96 0 0 1 0 14.1 M 9.5 18 h 5 M 8 22 l 4 -11 l 4 11</StreamGeometry>
<StreamGeometry x:Key="IconHistory">M 3 12 a 9 9 0 1 0 9 -9 a 9.75 9.75 0 0 0 -6.74 2.74 L 3 8 M 3 3 v 5 h 5 M 12 7 v 5 l 4 2</StreamGeometry>
<StreamGeometry x:Key="IconInfo">M 2 12 A 10 10 0 1 0 22 12 A 10 10 0 1 0 2 12 Z M 12 16 v -4 M 12 8 h .01</StreamGeometry>
<StreamGeometry x:Key="IconCircleCheck">M 2 12 A 10 10 0 1 0 22 12 A 10 10 0 1 0 2 12 Z m 16 9 -5.5 5.5 L 8 12</StreamGeometry>
<StreamGeometry x:Key="IconTriangleAlert">m 21.73 18 -8 -14 a 2 2 0 0 0 -3.48 0 l -8 14 A 2 2 0 0 0 4 21 h 16 a 2 2 0 0 0 1.73 -3 M 12 9 v 4 M 12 17 h .01</StreamGeometry>
<StreamGeometry x:Key="IconCircleX">M 2 12 A 10 10 0 1 0 22 12 A 10 10 0 1 0 2 12 Z m 15 9 -6 6 m 9 9 6 6</StreamGeometry>
<StreamGeometry x:Key="IconCircleHelp">M 2 12 A 10 10 0 1 0 22 12 A 10 10 0 1 0 2 12 Z M 9.09 9 a 3 3 0 0 1 5.83 1 c 0 2 -3 3 -3 3 M 12 17 h .01</StreamGeometry>
<StreamGeometry x:Key="IconRefreshCw">M 3 12 a 9 9 0 0 1 9 -9 9.75 9.75 0 0 1 6.74 2.74 L 21 8 M 21 3 v 5 h -5 M 21 12 a 9 9 0 0 1 -9 9 9.75 9.75 0 0 1 -6.74 -2.74 L 3 16 M 8 16 H 3 v 5</StreamGeometry>
<StreamGeometry x:Key="IconLanguages">m 5 8 6 6 m 4 14 6 -6 2 -3 M 2 5 h 12 M 7 2 h 1 m 22 22 -5 -10 -5 10 M 14 18 h 6</StreamGeometry>
<StreamGeometry x:Key="IconPlug">M 12 22 v -5 M 15 8 V 2 M 17 8 a 1 1 0 0 1 1 1 v 4 a 4 4 0 0 1 -4 4 h -4 a 4 4 0 0 1 -4 -4 V 9 a 1 1 0 0 1 1 -1 z M 9 8 V 2</StreamGeometry>
<StreamGeometry x:Key="IconLayers">M 12.83 2.18 a 2 2 0 0 0 -1.66 0 L 2.6 6.08 a 1 1 0 0 0 0 1.83 l 8.58 3.91 a 2 2 0 0 0 1.66 0 l 8.58 -3.9 a 1 1 0 0 0 0 -1.83 z M 2 12 a 1 1 0 0 0 .58 .91 l 8.6 3.91 a 2 2 0 0 0 1.65 0 l 8.58 -3.9 A 1 1 0 0 0 22 12 M 2 17 a 1 1 0 0 0 .58 .91 l 8.6 3.91 a 2 2 0 0 0 1.65 0 l 8.58 -3.9 A 1 1 0 0 0 22 17</StreamGeometry>
<StreamGeometry x:Key="IconMapPin">M 20 10 c 0 4.993 -5.539 10.193 -7.399 11.799 a 1 1 0 0 1 -1.202 0 C 9.539 20.193 4 14.993 4 10 a 8 8 0 0 1 16 0 M 9 10 A 3 3 0 1 0 15 10 A 3 3 0 1 0 9 10 Z</StreamGeometry>
<StreamGeometry x:Key="IconChevronDown">m 6 9 6 6 6 -6</StreamGeometry>
<StreamGeometry x:Key="IconServer">M 4 2 H 20 A 2 2 0 0 1 22 4 V 8 A 2 2 0 0 1 20 10 H 4 A 2 2 0 0 1 2 8 V 4 A 2 2 0 0 1 4 2 Z M 4 14 H 20 A 2 2 0 0 1 22 16 V 20 A 2 2 0 0 1 20 22 H 4 A 2 2 0 0 1 2 20 V 16 A 2 2 0 0 1 4 14 Z M 6 6 L 6.01 6 M 6 18 L 6.01 18</StreamGeometry>
<StreamGeometry x:Key="IconShieldCheck">M 20 13 c 0 5 -3.5 7.5 -7.66 8.95 a 1 1 0 0 1 -.67 -.01 C 7.5 20.5 4 18 4 13 V 6 a 1 1 0 0 1 1 -1 c 2 0 4.5 -1.2 6.24 -2.72 a 1.17 1.17 0 0 1 1.52 0 C 14.51 3.81 17 5 19 5 a 1 1 0 0 1 1 1 z m 9 12 2 2 4 -4</StreamGeometry>
<StreamGeometry x:Key="IconShieldCheck">M 20 13 c 0 5 -3.5 7.5 -7.66 8.95 a 1 1 0 0 1 -.67 -.01 C 7.5 20.5 4 18 4 13 V 6 a 1 1 0 0 1 1 -1 c 2 0 4.5 -1.2 6.24 -2.72 a 1.17 1.17 0 0 1 1.52 0 C 14.51 3.81 17 5 19 5 a 1 1 0 0 1 1 1 z M 9 12 l 2 2 l 4 -4</StreamGeometry>
<StreamGeometry x:Key="IconRoute">M 3 19 A 3 3 0 1 0 9 19 A 3 3 0 1 0 3 19 Z M 9 19 h 8.5 a 3.5 3.5 0 0 0 0 -7 h -11 a 3.5 3.5 0 0 1 0 -7 H 15 M 15 5 A 3 3 0 1 0 21 5 A 3 3 0 1 0 15 5 Z</StreamGeometry>
<StreamGeometry x:Key="IconArrowUpRight">M 7 7 h 10 v 10 M 7 17 17 7</StreamGeometry>
<StreamGeometry x:Key="IconDownload">M 12 15 V 3 M 21 15 v 4 a 2 2 0 0 1 -2 2 H 5 a 2 2 0 0 1 -2 -2 v -4 m 7 10 5 5 5 -5</StreamGeometry>
<StreamGeometry x:Key="IconArrowUpRight">M 7 7 h 10 v 10 M 7 17 L 17 7</StreamGeometry>
<StreamGeometry x:Key="IconHouse">M 15 21 v -8 a 1 1 0 0 0 -1 -1 h -4 a 1 1 0 0 0 -1 1 v 8 M 3 10 a 2 2 0 0 1 .709 -1.528 l 7 -6 a 2 2 0 0 1 2.582 0 l 7 6 A 2 2 0 0 1 21 10 v 9 a 2 2 0 0 1 -2 2 H 5 a 2 2 0 0 1 -2 -2 z</StreamGeometry>
<StreamGeometry x:Key="IconImages">m 22 11 -1.296 -1.296 a 2.4 2.4 0 0 0 -3.408 0 L 11 16 M 4 8 a 2 2 0 0 0 -2 2 v 10 a 2 2 0 0 0 2 2 h 10 a 2 2 0 0 0 2 -2 M 12 7 A 1 1 0 1 0 14 7 A 1 1 0 1 0 12 7 Z M 10 2 H 20 A 2 2 0 0 1 22 4 V 14 A 2 2 0 0 1 20 16 H 10 A 2 2 0 0 1 8 14 V 4 A 2 2 0 0 1 10 2 Z</StreamGeometry>
<StreamGeometry x:Key="IconGamepad2">M 6 11 L 10 11 M 8 9 L 8 13 M 15 12 L 15.01 12 M 18 10 L 18.01 10 M 17.32 5 H 6.68 a 4 4 0 0 0 -3.978 3.59 c -.006 .052 -.01 .101 -.017 .152 C 2.604 9.416 2 14.456 2 16 a 3 3 0 0 0 3 3 c 1 0 1.5 -.5 2 -1 l 1.414 -1.414 A 2 2 0 0 1 9.828 16 h 4.344 a 2 2 0 0 1 1.414 .586 L 17 18 c .5 .5 1 1 2 1 a 3 3 0 0 0 3 -3 c 0 -1.545 -.604 -6.584 -.685 -7.258 -.007 -.05 -.011 -.1 -.017 -.151 A 4 4 0 0 0 17.32 5 z</StreamGeometry>
@@ -34,5 +24,4 @@
<StreamGeometry x:Key="IconGauge">m 12 14 4 -4 M 3.34 19 a 10 10 0 1 1 17.32 0</StreamGeometry>
<StreamGeometry x:Key="IconCpu">M 12 20 v 2 M 12 2 v 2 M 17 20 v 2 M 17 2 v 2 M 2 12 h 2 M 2 17 h 2 M 2 7 h 2 M 20 12 h 2 M 20 17 h 2 M 20 7 h 2 M 7 20 v 2 M 7 2 v 2 M 6 4 H 18 A 2 2 0 0 1 20 6 V 18 A 2 2 0 0 1 18 20 H 6 A 2 2 0 0 1 4 18 V 6 A 2 2 0 0 1 6 4 Z M 9 8 H 15 A 1 1 0 0 1 16 9 V 15 A 1 1 0 0 1 15 16 H 9 A 1 1 0 0 1 8 15 V 9 A 1 1 0 0 1 9 8 Z</StreamGeometry>
<StreamGeometry x:Key="IconShare2">M 15 5 A 3 3 0 1 0 21 5 A 3 3 0 1 0 15 5 Z M 3 12 A 3 3 0 1 0 9 12 A 3 3 0 1 0 3 12 Z M 15 19 A 3 3 0 1 0 21 19 A 3 3 0 1 0 15 19 Z M 8.59 13.51 L 15.42 17.49 M 15.41 6.51 L 8.59 10.49</StreamGeometry>
<StreamGeometry x:Key="IconQrCode">M 4 3 H 7 A 1 1 0 0 1 8 4 V 7 A 1 1 0 0 1 7 8 H 4 A 1 1 0 0 1 3 7 V 4 A 1 1 0 0 1 4 3 Z M 17 3 H 20 A 1 1 0 0 1 21 4 V 7 A 1 1 0 0 1 20 8 H 17 A 1 1 0 0 1 16 7 V 4 A 1 1 0 0 1 17 3 Z M 4 16 H 7 A 1 1 0 0 1 8 17 V 20 A 1 1 0 0 1 7 21 H 4 A 1 1 0 0 1 3 20 V 17 A 1 1 0 0 1 4 16 Z M 21 16 h -3 a 2 2 0 0 0 -2 2 v 3 M 21 21 v .01 M 12 7 v 3 a 2 2 0 0 1 -2 2 H 7 M 3 12 h .01 M 12 3 h .01 M 12 16 v .01 M 16 12 h 1 M 21 12 v .01 M 12 21 v -1</StreamGeometry>
</ResourceDictionary>
+140 -7
View File
@@ -152,14 +152,26 @@
<Setter Property="Opacity" Value="1" />
<Setter Property="RenderTransform" Value="scale(1)" />
</Style>
<Style Selector="TextBlock.nodeTitle">
<Setter Property="FontSize" Value="14" />
<Style Selector="StackPanel.hopText">
<Setter Property="Opacity" Value="0.5" />
<Setter Property="Transitions">
<Transitions>
<DoubleTransition Property="Opacity" Duration="0:0:0.45" />
</Transitions>
</Setter>
</Style>
<Style Selector="StackPanel.hopText.lit">
<Setter Property="Opacity" Value="1" />
</Style>
<Style Selector="TextBlock.hopTitle">
<Setter Property="FontSize" Value="17" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
<Style Selector="TextBlock.nodeSubtitle">
<Setter Property="FontSize" Value="12" />
<Style Selector="TextBlock.hopDetail">
<Setter Property="FontSize" Value="13" />
<Setter Property="LineHeight" Value="19" />
<Setter Property="Foreground" Value="{StaticResource TextSoftBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
@@ -167,14 +179,124 @@
<Setter Property="FontSize" Value="12" />
<Setter Property="Foreground" Value="{StaticResource TextSoftBrush}" />
</Style>
<Style Selector="Border.linkTag">
<Setter Property="Background" Value="{StaticResource GroundBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource LineBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="CornerRadius" Value="12" />
<Setter Property="Padding" Value="10,4" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
<Style Selector="Border.linkTag Path.icon">
<Setter Property="Stroke" Value="{StaticResource TextSoftBrush}" />
</Style>
<Style Selector="Line.connector">
<Style Selector="Button.hop">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Padding" Value="0" />
<Setter Property="CornerRadius" Value="45" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
<Style Selector="Button.hop:pointerover /template/ ContentPresenter, Button.hop:pressed /template/ ContentPresenter">
<Setter Property="Background" Value="Transparent" />
</Style>
<Style Selector="Button.hop:pointerover Ellipse.disc">
<Setter Property="StrokeThickness" Value="4" />
</Style>
<Style Selector="Path.art">
<Setter Property="Stroke" Value="{StaticResource TextStrongBrush}" />
<Setter Property="StrokeThickness" Value="2" />
<Setter Property="StrokeLineCap" Value="Round" />
<Setter Property="StrokeJoin" Value="Round" />
</Style>
<Style Selector="Path.art.beat">
<Setter Property="Stroke" Value="{StaticResource TextSoftBrush}" />
</Style>
<Style Selector="Grid.art.running Path.art.beat">
<Setter Property="Stroke" Value="{StaticResource BrandRedLightBrush}" />
</Style>
<Style Selector="Grid.art.good Path.art.beat">
<Setter Property="Stroke" Value="{StaticResource GoodBrush}" />
</Style>
<Style Selector="Grid.art.caution Path.art.beat">
<Setter Property="Stroke" Value="{StaticResource CautionBrush}" />
</Style>
<Style Selector="Grid.art.bad Path.art.beat">
<Setter Property="Stroke" Value="{StaticResource BadBrush}" />
</Style>
<Style Selector="Grid.art.running Path.b1">
<Style.Animations>
<Animation Duration="0:0:1.2" IterationCount="Infinite">
<KeyFrame Cue="0%">
<Setter Property="Opacity" Value="0.15" />
</KeyFrame>
<KeyFrame Cue="35%">
<Setter Property="Opacity" Value="1" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Opacity" Value="0.15" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
<Style Selector="Grid.art.running Path.b2">
<Style.Animations>
<Animation Duration="0:0:1.2" Delay="0:0:0.2" IterationCount="Infinite">
<KeyFrame Cue="0%">
<Setter Property="Opacity" Value="0.15" />
</KeyFrame>
<KeyFrame Cue="35%">
<Setter Property="Opacity" Value="1" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Opacity" Value="0.15" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
<Style Selector="Grid.art.running Path.b3">
<Style.Animations>
<Animation Duration="0:0:1.2" Delay="0:0:0.4" IterationCount="Infinite">
<KeyFrame Cue="0%">
<Setter Property="Opacity" Value="0.15" />
</KeyFrame>
<KeyFrame Cue="35%">
<Setter Property="Opacity" Value="1" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Opacity" Value="0.15" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
<Style Selector="Grid.art.running Path.spin">
<Style.Animations>
<Animation Duration="0:0:1.4" IterationCount="Infinite" PlaybackDirection="Alternate" Easing="SineEaseInOut">
<KeyFrame Cue="0%">
<Setter Property="ScaleTransform.ScaleX" Value="1" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="ScaleTransform.ScaleX" Value="-1" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
<Style Selector="Ellipse.disc.thin">
<Setter Property="StrokeThickness" Value="2" />
</Style>
<Style Selector="Path.wire">
<Setter Property="Stretch" Value="Fill" />
<Setter Property="Stroke" Value="{StaticResource LineBrush}" />
<Setter Property="StrokeThickness" Value="3" />
<Setter Property="StrokeLineCap" Value="Round" />
<Setter Property="StrokeDashArray" Value="1.5,1.5" />
</Style>
<Style Selector="Line.connector.flowing">
<Style Selector="Path.wire.flowing">
<Setter Property="Stroke" Value="{StaticResource BrandRedBrush}" />
<Style.Animations>
<Animation Duration="0:0:0.5" IterationCount="Infinite">
@@ -187,11 +309,22 @@
</Animation>
</Style.Animations>
</Style>
<Style Selector="Line.connector.lit">
<Style Selector="Path.wire.lit">
<Setter Property="Stroke" Value="{StaticResource TextSoftBrush}" />
<Setter Property="StrokeDashArray" Value="1,0" />
</Style>
<Style Selector="TextBlock.groupTitle">
<Setter Property="FontSize" Value="18" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
<Style Selector="Rectangle.rule">
<Setter Property="Height" Value="1" />
<Setter Property="Fill" Value="{StaticResource LineBrush}" />
</Style>
<Style Selector="Border.card">
<Setter Property="Background" Value="{StaticResource SurfaceBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource LineBrush}" />