2010dec22a
Fetching https://<site>/favicon.ico directly would resolve a DNS name - and open a connection - to EVERY domain kept in the vault. The list of sites where someone holds an account is precisely what this vault protects; handing it to the network for a sixteen-pixel drawing would be a poor trade. The relay sees only that someone is interested in one domain, which is why the call is asked for entry by entry and never happens on its own. Two tries: the full host, then the second-level domain - chat.qwen.ai has no icon at the relay, qwen.ai does. The type comes from the first bytes, never from the extension: the relay answers PNG under a .ico address. A dedicated patch rather than PatchEntryField, because icon_custom is a NUMBER in the snapshot and writing it as a string would give "0" - which the desktop reads with GetValue<Boolean> and would choke on. It is set to zero: the icon comes from an automatic lookup, not from a choice, and that flag is what stops the desktop from ever replacing a chosen icon during a refresh. Base64 without line breaks. Delphi's encoder wraps at 76 characters by default, a wrapped data: URI does not display, and that trap has already been paid once on the containers.
35 lines
1.4 KiB
ObjectPascal
35 lines
1.4 KiB
ObjectPascal
program pmserverApk;
|
|
|
|
uses
|
|
System.StartUpCopy,
|
|
FMX.Forms,
|
|
mainApk in 'mainApk.pas' {Form8},
|
|
PMA.Crypto in 'android-client\PMA.Crypto.pas',
|
|
PMA.TestVector in 'android-client\PMA.TestVector.pas',
|
|
PMA.SyncClient in 'android-client\PMA.SyncClient.pas',
|
|
PMA.Store in 'android-client\PMA.Store.pas',
|
|
PMA.Biometric in 'android-client\PMA.Biometric.pas',
|
|
PMA.Vault in 'android-client\PMA.Vault.pas',
|
|
PMA.Totp in 'android-client\PMA.Totp.pas',
|
|
PMA.ScreenGuard in 'android-client\PMA.ScreenGuard.pas',
|
|
PMA.Clipboard in 'android-client\PMA.Clipboard.pas',
|
|
PMA.Theme in 'android-client\PMA.Theme.pas',
|
|
PMA.WebUI in 'android-client\PMA.WebUI.pas',
|
|
PMA.VaultPatch in 'android-client\PMA.VaultPatch.pas',
|
|
PMA.SaveFile in 'android-client\PMA.SaveFile.pas',
|
|
PMA.Favicon in 'android-client\PMA.Favicon.pas';
|
|
|
|
{$R *.res}
|
|
|
|
begin
|
|
// NI SKIA NI STYLE. Les deux servaient les controles FMX : Skia pour mettre
|
|
// en forme l'arabe dans les libelles - le moteur d'origine ne lie pas les
|
|
// lettres et ne reordonne pas le bidirectionnel - et le style pour que les
|
|
// champs et les listes ne s'affichent pas en clair. L'interface est passee au
|
|
// moteur du systeme, qui fait les deux lui-meme ; il ne reste plus un seul
|
|
// controle FMX a habiller. Au passage, libsk4d.so ne pese plus dans l'APK.
|
|
Application.Initialize;
|
|
Application.CreateForm(TForm8, Form8);
|
|
Application.Run;
|
|
end.
|