From 983900000ab9c7793966ebb1e09c68591f61310c Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 1 Sep 2026 13:57:48 +0200 Subject: [PATCH] Programm-Icon an allen Stellen gesetzt Das Projekt setzte nirgends ein Icon - weder noch Window.Icon, und in der Web-UI kein Favicon. Auf dem Server trugen dadurch alle unsere Anwendungen dasselbe generische Platzhalter-Icon und waren in Explorer und Taskleiste nicht auseinanderzuhalten. Assets/predictalytics.ico ist die einzige Quelle, alles andere daraus abgeleitet (Ableitung und Neuerzeugung: Assets/README.md): * im Shell-Projekt - Explorer, Taskleiste, Task-Manager * Window.Icon in MainWindow und LicenseWindow; die im Code gebauten Dialoge erben es vom Besitzerfenster * favicon.ico, apple-touch-icon.png und icon-192/512.png in der Web-UI, verlinkt aus index.html, landing.html und docs.html Fuer das Fenstericon bewusst PNG statt ICO: Skia dekodiert kein ICO, unter Linux waere der Fensteraufbau sonst gescheitert. Die .ico bleibt per Exclude aus dem AvaloniaResource-Glob - sie geht ueber in die Programmdatei und muss nicht zusaetzlich in die Assembly. Der XAML-Compiler prueft Asset-URIs nicht (ein falscher Pfad baut fehlerfrei durch), deshalb gegen die gebaute Assembly verifiziert: beide relativen URIs loesen auf, WindowIcon dekodiert sie, der Gegentest mit einem nicht vorhandenen Pfad schlaegt fehl. Bugtracker: #418 Co-Authored-By: Claude Opus 5 --- .../wwwroot/apple-touch-icon.png | Bin 0 -> 11581 bytes src/Predictalytics.Api/wwwroot/docs.html | 3 ++ src/Predictalytics.Api/wwwroot/favicon.ico | Bin 0 -> 7149 bytes src/Predictalytics.Api/wwwroot/icon-192.png | Bin 0 -> 12474 bytes src/Predictalytics.Api/wwwroot/icon-512.png | Bin 0 -> 55404 bytes src/Predictalytics.Api/wwwroot/index.html | 3 ++ src/Predictalytics.Api/wwwroot/landing.html | 3 ++ src/Predictalytics.Shell/Assets/README.md | 26 ++++++++++++++++++ .../Assets/predictalytics.ico | Bin 0 -> 169763 bytes .../Assets/predictalytics.png | Bin 0 -> 6950 bytes .../Predictalytics.Shell.csproj | 10 +++++++ src/Predictalytics.Shell/Views/Dialogs.cs | 5 +++- .../Views/LicenseWindow.axaml | 1 + .../Views/MainWindow.axaml | 1 + 14 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/Predictalytics.Api/wwwroot/apple-touch-icon.png create mode 100644 src/Predictalytics.Api/wwwroot/favicon.ico create mode 100644 src/Predictalytics.Api/wwwroot/icon-192.png create mode 100644 src/Predictalytics.Api/wwwroot/icon-512.png create mode 100644 src/Predictalytics.Shell/Assets/README.md create mode 100644 src/Predictalytics.Shell/Assets/predictalytics.ico create mode 100644 src/Predictalytics.Shell/Assets/predictalytics.png diff --git a/src/Predictalytics.Api/wwwroot/apple-touch-icon.png b/src/Predictalytics.Api/wwwroot/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5083aecebc8ed4636480f00e091c330c59da1b GIT binary patch literal 11581 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 z za?kIEzcmv+1UdrxAQ2#7$XXk9A3h59ta?B*;2R(aD%_6ZFy*M|5FI|n+@4tvYg!uZ z54XU)*a2zFvU*>ttX3ouq4tB*V9#v;GXCCNx*8M}RmU6Pd;n4c4T~n>&0RSp+VT)F z2{s(<<=8hm8^q_-BX(Q?WUf(CTmRZ_uH5?!7Pk#{jA7VCY6Tm*D)C>vnjZA*XwzuSfO z4YY5{QWR!)<;qVK5+E%J6_c=17PO}a(=G=|K)0{KoX6yN42o#fpjMS_?h0gEGuZan z4(#6439rY4oAJx?rS8gm<(F{?AXaN5RujXd`C~ER#PMOeXL!JON=ZPEud&s*n3jma zmNY7EJ<17(oQb7;JM2PzxIIonWd$J$?ka02_YuI`W+^?6ei;r(B*DSw{H^LL!2&1f(Uf z^@$eLA6<(vvm0SNGbpQ30C0>!vy;b^cnnD?MigpMc||t{ViN5yx1(oA7BViwevha( z^RROKqI=Q)TIXTgZ~}m97~7pZa#}--U`{P6)eCj@xK+`(G;Fu9;y(jyqRV%?Lk5=5 zz&6K2HV7aipbv88rGVS*BJlNqtfnIcX7+vPyaSWZgN+%G>*02JC^(@*Vs8h`*p_qA zfP%#;(U6hR)>xArAez4t2j7fHw;+PlIhi z52MhD9_>&qfmurUJw0fce-e(rrU~)!6CjiYtF8{s|Nb+GSZvf3GZk*EJBmSZl<`jt~1{%AmT=09qUu?Vdku;6)L-!t-S! zg4f-JNgp^DbG~{xWGsdtn}JLw;b*$B^U;R^W)KKm200oLq16o|^*Gxa@<<&4UExkf zkjr8EM?ZmM|KTDC%Z7Fws8kAmR~KHs^&9AT_8G`{9L%PS3Y3Jl0@Pz|D*`%#nE+!D z9Jy81s&I z$U?#^M;%EM|p7YS#c;qa1oLEDJCj1Wpdg=|`hs z{sMGwcnLk5H$o(5t9*+L> zKj7HUeGxDQ?0c}%X=Ju+!b>Zfu;+#6VAa)Cq{obC>U((I1D($ULSW`aU%|`^zZm+r zK>$*!1T+aSWAca2L+5kPVC#SU5>`#^kOD{!od=!Gg0+TKSBI{b zUcgH$mLcEP0;|mXG9sWy#l;Ztd%BUDel(7|;yR2wZE`3E4m;OB zhz)CQfp*={-H2e0a_G|3LA!a7vM}pQmtw(+J9=RzDM3P@{fS5M^jANJ)(7u{)zARH zryH-VUXCD_g^&tt3>r>)J7!$?1sK;o;ex@6#qi5i4x88{v7k&Z4vcNhBb7|Mb>)*W#&t82o za@)6tIkN9VrPAnl?l0K*y>Fv;L#Ng_<}(*!-05fZmY)ZezdJdkkC}-Rm##wHy!m@e z+37U4|JSd2VJ4+2eB*zVat!Tm3Zr3M7n9F94|BeH1>)l;hPQ5JkW|QS-GU8wtisMm z9)e0F_vun&W1v!LH2?cg(Xim{p#u{5AZ6jWE3QRm(`#^d?F_#hhYDT6BCMG)3nyH^ z42j9p5M+A7-vMCDPkw;rU;G5Zw#)h{Q&EH-1(=QRL)bCQz2s_~bknUN%sK!G0g@7} z58jJsF8u;_{^=oDsdO*I*k>DLIJ5W4np@zswt!R^*^^VIVfL4=2ra%tY;hzZptBi_ zeb=ctap?-gCr(C?>4u2KKuTfrkG_K~KfW8JtO(`^=zR}s4Xd^m3zo0J(VzbNFkJ|I zkW|ol2e00_8qZyOIh@uV2QN|>17X|9x9-4(+gF5MG=<`F(g)7Lw2yrfL3h`|Qx75t z5jrbl-?a$GU3oq1vEvYAvyh1tf?O6G?z|P-fBhej>2zV%KY}>|x&&Kz7u2L zy$BoxV8b9~A=|tKf4Tfi*z(iwL&W2ST>341U1Ok9DYX61z1X_;XJNIl&_6Nj^It{X z@$(Tlx&Et&h3M^PdT`9&eip}H+XR_RLT9s3$pXx4R-)zizk!Iy3y-XbV2*(9v-plI z1!qSKj2{Xsk`gWV{1#7r@$a$wsmGyeY6sMz#>|k(6gJ-dPuTPPvmm8lbO5Wa9`mkU z3YAC}qBreRi3BrrE{9_-_(#mW^lAvpg3jfj(rGxYEqLkXucQ5`$6(dgl{|zcIuX$O z>}4|$b`0GcUdD6RUy1F%UWXTNx&hBGy#`)a=iVvkfkZ;)(4ENT@X8&lpmSLWWr2-B z-MkYq^P;c7xcR-UVMJi9VLT7VU3op`eC2Y$7#PomRa*;ZM+;uO~)vH@9u((MSU3&(B*cFfl8*(_Q*qMUi)voZKePrF=6uFYNQa@ zy7p&yq3Ig1A3)f4lx9Rgm+wP%R6L2zKmJ~5)sQ#p;q~d zfe7fThB_5i3xO~)M^QNfy5c?WLW5ESa|HC@ALq;EB^0aU%gK?;F&glwxB^Lvn$(8) zSP2yYjgek>W*D*B7?drexw|2L?6h5Lhn=t-0X=d+2L^Rh(jX-wBVh=iAIOH08j~2% zL+>M?hv34)H>f+h9%E+IL%RWl6qWoLjCz0|5yGru65~%8SJH|ViNX=PHIfA8eQY+| zjE9a*dtfCLNDxSrC)s8Bx;PYpL1E}&_SwfEJuV6D>o9OcK#yEhVc#Iun84fqZXPy0 zuodmEcfjlM;AOmW~g(|*MuYp(w1f26jr{46~kZwsHBA{DI4`c z9NQchnLtAp3=OUzpe@OjZ*p)!50tSMP?c~2eJ~P&Fe4F1tLtH>>w!6R_qalUX2Xa) z8${i9MgLzHa_FfE8%HPOh)F^a^^QiTQX;fLKlUaA0Ry#`f-MDF92cFQhM@8mj9hpx z97Vz-4`?o2tTYj9I>^sRiAgGnU7nBDya!L4vW1!fI8{_AGyq&4a54AD1DXpj$YaL3 zT!0r{{gy>2NrX&5a1E7p?Iq(<)c`$SFy1bKBmp`C`oQ1%7y-Ki#?5;?JnL%s{MJH> z3s6&;mlC}I)iU4$Nraa)@DYnKMF4&oMQT+}X@&veJKY{0&ucUa9CBh@36amOvJtTz z8u%>}{x-%)6e2Z6K<_;<0-kj>9&`dUi1NFY4aFU(nofd%HU?fXz{#?FKCiM8s~bFB zb#4HvcjEyBfNi?GgrO*>B|$l^=%%_O5^7y$pV)wa?&|6S1F)sQa6DOWvLXbCpsu8o zrs0WhqM)C;h9ieA0`~K+E=&2ojC{Do!tZCYrvv#Yc`7=j)SAqX)GAifU)s7m>B`{prIy& zu`P5{Um#s`xUf^7Vv$H$g{!Bib8(L?o| z24b9P0SndMl0F@Vup}aQT4Q(KK}S9h-xw$&$U%Ul2HEQkTL=Wqcy4zmHg{(*uf7g* z8|smi5`i&;E{pmA&P`gFBN;Dd-9cZhauZMO#8o2%lLRzS7^x5E^N~c*#-JmgL%WlQ zr^Ag+ssQp}ezzLT(jtW8t0DwjA{PXBa#uTE>+Z%$jg2_ArUteY@C(bo2fDkYhZ)mj z78;1K&B-Gu{xPmx2x6kTdO5tq09g=0Gov$~$1W!aCkT2gkR@irpd8!*0UZ~_K0zrE zJi`G9iop zfU8Ux4)hvGA}}*Do{OE1gB~yZT8NT}T(E@$TaeO#uxVhoHaU>@a8Fy8`*34wCxPb1 zl^9#-M>cymONC%}dpbofJPbH0zZToyaBS-4t55S8jJW`GHxge0MXHw>Gl%im~uc-b(1(Fg#q zoH=DGgt?f3OXE^lZa9shsqh6U{!-5vSVCe}T^jT28!#pwgJwoxOz*ey(7xG#Zw$6N zF7|iIg$iC6JU?)qTO-e6(jP#bTR|RB9aCS1Nyxmh#PNjZh5vZYr|@f zHUZ*gfYufM*vh#RKPp*VZ3*#Cj}0_KBh+zJyyX}+2$)fC+c=@29&_qy5t9E_X%%OPKIE<|aL9HthA2+}42-|(}Vc;&5| z+SV5N0)SSbj8?u*+5q{%teQy+w;(p?ZIxxfoATF$|XN* z1R!F9gwMRo5N>i^>(VvNJDzR=#6tki0C@c%HT00M(6kt8*?I&3ux8fODIS??gy7Fv zB;u}NroAau?;i}9!3<1Kr*L9p1E!^tFolZap}a5wpu-QaEtd}~N@bi^S963eR`@c$ zhju52F3$^>Irh2Z7ALlBK@@2AH1H!kPAhJHrM0;)LuFBsWq_6fRJ={BoHOoJ!RlHe z#D@XEXYP}RgvU1qQV?d=)?$7`1IETID`~X{Xd3a@P>s1@jrGhUX1ZdAY z=ydZihWq=>7=V#Pl0pvdBSSZ@dZYE>VtTPOOhLFTTMQVWbxR=5UkBX;h{T+!pJeE( z<3gP1g>Hx`b$?2QV?s*It*^uJ4fSZSEV$;ag=4W~{zle8-k7q4y4rx2L~yl6r|Y2I z$@d1Iegq#2K-hwi*XCuAxOL0s)_+?E=p}$$8>XaO5j``d3U$T&=?!r8MMUOnaUmPs zur%Il^Ob__X^nDf&8DrxyoX}8@nYFdBg*a%%kqFR+u`QQJhaavBi-5+E^(GrI zx?C6SP7XOg=mnhnNiQrxGBE6cu-3EWO}B4od2P5s9?`Bw4lO=WjM%GYPd<~u*T=UQsD>yQ<6!{Z>-1kbQ)lWE=+?{{|}kPj=YOqo?kZZN2LN?6ns6NhuuyN z-JZAiX$gHcwgF&C5Q+$%;Xe`4Eh{&*-ctnmcz~CUz-T3n^it9D0kICyO-CISPuTt^ zSa4H9$YVTaXv3Ol-!x>ea1=Nyox3xPNNKY~mE*x`C;&3k3hi(E-Sb0P8) z04E5rE0;r;=k_{D{rtQZ1Zfi?ugx|H+@v$~^EGX4+2P8Q%dYRdG{0UoXG{&Vb&U}6 zBAaNeW6VA_Uuk|F7z0~M%&M!!y!twfjmO~Y{##WAfOapyb|)W2=m848ybiECpGQYN z-&?BgTYoN!`!#eyo zSP_H*!DaqmX56@XOWW@OaG@}wN4rb5Y`lQdThv7hVI7;9av_1QwuLyxV*_K*Z+@){ zB5`suf%y#$IJzd?3w-g)Dk3<6#x}=A_bAwUjcd4=RZ!nIQLH#lNv5!H zY$L|U<3Qmyib4x&V1VYFgFXJpwxE^^(0c_RBj*QbbF#>IKFk4H2a4`ROpx%5$ui`R z1EN*8Z)(}r_p^$Ikq3~5te7!rAxV5)32|P*&f7n~rm!>>FhdbxW^D~lXsE~7csxu` zN``m0=UlY=9>fT}{c-@hcdA+k*zM%dna_t!$OjgDPy|6B1mOSH;G1sSwDa)-$Z8oz zKfM^TZo82<>zhN32SD7|nQ3`ocjlL8G^YO-%=2w2CJ=}WBLMAN?JlMhZB8CZd}os-B!{KXQFixLzRXcbyPeV_rENOE>=X-^I=M1`c4NC0mg*gd$qQO6AQvI zWvOsEdcoFfaq|1QBh?b2B@qI{*yB0am2==~eL%ri9Dj-lBF+4!Z}4qhgS*x|-5za`3?1$luRNU1lX8ykkcC05IZ2l33O?moC^Z9 zJ2`Z^F1Tb`q@VOc3qV;yz&GaQfXu4fHtqUJuOKh!Yma~)MX;}#J9$il!IznEd0bFk z-Y}z28NKvP=e0)4QkYd+i}?-pNLv;*XL9K90w_Uc4fH-!)mryf`23Pp4+lsuC?<$p z%{_u}S4PmC-wNA0D;nf#+ab8m2+z&4C(V@tSA*$-m>_cdDWjvLzc*k;N-3P!*nrt} zwdn8zv^wqq3k~G}bokmeI^6s|Yqa_+@AsCg1&P2g4Dd4ztX#9X?Zu%Se~N$}hW?PH zB~fP8oGE7zaJ?X$2>`y?cg?~+ZKnu_3nnDuIH92dNy|oO5Fjvo*cWLifi6x}hk`GM ztnWk6fgN=Qv?`201>ipsiRCLd?znF_#-AdfhcOK)u32aTL~_pLix_-GOo*BNje+em zT%a|W2vd>?OiiaDqyr7Irn-FY*h$K$uYl;Xm=FoqFqrr459!;3Z3%&Ki3G+Zl1N)t_;lMrfIV2C zxzI641Y~_5?Rf`XC4%oj5t$J7CwsJ@xpll>mgMPT?~jaAHmu?5MnVGIAo zB)+kF(~iHCTLV!9^bn^Z0I*{Aq`y)`msye)dxrPh_S84OHf#`=3gePVj87zC2?@=I zw$5yzKo@(Hcjt5H$h&VP_?Q4A2+|^gZ}3>a_~z;@t?LeV3sD4gg$T#qF|bLKl8HK8 z$cAo=OB(Nm4!}Os==)88G9#%hOiCru5KBOcP^1k7(Ba->gRZ=bU3n+$O+JXzQf%wA z1;I7kPDCqqD*x^uzPh{TNCWwZ1-f6G?}TF}2+zGi5-zlaNap()1M53n00L?(8xxZ$ z)W_q60bL#x(8W@9x94G3-a*z6w+|g?8`M7IPljF1_;H}Do9=jh`TOT6 zCcINgc@;n(?{C{v-(w0(CL3aLOiZPawk)6kJiP_brM<~nKj?KX%)td;xF&!|7J5{E z<7=_SW@^K%0LtKaxJvK1hzs-k|sToCtG4TW@q>@Og z(CXs@0A2dTr(I4CdtCRRAQx>o2?!+wTw`7)K`T~mZ2dU^QxLt;LwF;g`*lMM0A4j` zObsLUc>q_(1dTmdeqD4#G#l7bVSFNqamgfNLcnmSHh1Q|UXZ9ACNpsn7$ zHe8q|cY?)g*VzAZXLIwOBgwspfX2|wH?EmAb&4i^0|~l75+%F?jDeLpBFv1KRG5@X zVoV|dNdi0b9(-f4$IWABVFCDooQu-&CtHv(hFzcN=SE}MnsBRq1abuQpz`Zt8iG}G zrkr7zueJq!&|v>Wnn@xg?2AMTP_19(1mZqK^urz5+s4(v-zVCymIBn zUH1XNVn96gN0I!i836rfmseZi)+WtQXEI2A~5!O{^#!_xSp)@?wn8(3sD60k!16gu34Bh`78*&DJH}zn)l!K)DO^X0JaE162a5_v>|F* zy}9)d<-R5$0=mlGkdg>WH_w@Jkpf?33o*lE12zaikPJ`(Xl8~M1Z4|?$J}fTZc9v` z`<-R$*9UzEfuj=vT?T6w#!XDctxFmBa!iPH-h_EbF^7%`BF~sCAit-5b=&G~+gd7V zO+W4hnW0sU4mZd$pe_0J_eB~f}2o$?iqO(mjm<=iRf vu9!3V Predictalytics API Reference + + +