{
  "entfernt": [],
  "geaendert": {
    "com.fleitec.certus": {
      "art": "apk",
      "beschreibung": "Ein Webbrowser, vollstaendig in Firn geschrieben.",
      "builds": [
        {
          "aenderungen": "DER ABSTURZMELDER WAR SELBST DIE URSACHE. Die Speicherkarte aus 0.38 hat gezeigt: beide Absturzgruppen liegen in boot.oat, dem vorkompilierten Java-Code des Rahmenwerks, auf wechselnden Fadenstapeln und ohne einen einzigen Certus-Rahmen im Rueckweg. ART loest SIGSEGV im Normalbetrieb aus -- Null-Pruefungen in kompiliertem Java-Code laufen ueber Speicherschutz und werden von ARTs eigenem Behandler in eine NullPointerException verwandelt. Der Melder hat diesen Behandler ueberschrieben ohne ihn zu sichern und bei jedem Signal den Prozess getoetet: aus jeder harmlosen NullPointerException des Rahmenwerks wurde ein Absturz. Jetzt wird der vorhandene Behandler gesichert, ein Signal ohne jeden Certus-Rahmen im Stapel unveraendert an ihn weitergereicht, und nur ein Absturz, an dem Certus wirklich beteiligt ist, gemeldet.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 37,
          "datei": "speicher/36/36a25517152f641887cc6e08c717129422a99666c30e485a8c9d832496b32073.apk",
          "erstellt": "2026-09-10T00:07:45Z",
          "groesse": 6243340,
          "minSdk": 29,
          "sha256": "36a25517152f641887cc6e08c717129422a99666c30e485a8c9d832496b32073",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 44,
          "versionName": "0.40"
        },
        {
          "aenderungen": "ENTSCHEIDUNGSFASSUNG, nicht fuer den taeglichen Gebrauch. Gleicher Quelltext wie 0.38, aber arm64 komplett OHNE die Registerzuteilung uebersetzt (neuer Uebersetzerschalter FIRN_NO_REGALLOC_A64): jeder Wert liegt in seinem Stapelfach, wie vor Runde REGALLOC-A64. Sie ist deutlich langsamer und braucht mehr Speicher. Zweck: beantwortet die Frage, ob der Absturz vom Uebersetzer kommt. Stuerzt sie NICHT ab, ist die Registerzuteilung schuld; stuerzt sie genauso ab, ist sie entlastet.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 36,
          "datei": "speicher/c2/c2b77a1fc4406f660b6d05c4117a70813bc9d66211ad45c54f8ae62ddcb7ddd2.apk",
          "erstellt": "2026-09-09T23:49:32Z",
          "groesse": 7222284,
          "minSdk": 29,
          "sha256": "c2b77a1fc4406f660b6d05c4117a70813bc9d66211ad45c54f8ae62ddcb7ddd2",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 43,
          "versionName": "0.39-entscheider"
        },
        {
          "aenderungen": "Der Melder schickt jetzt die SPEICHERKARTE mit. Zu pc, lr, sp, fp und jedem Rueckweg-Rahmen steht die Zeile aus /proc/self/maps im Bericht: Name der Bibliothek, Bereich, Rechte und Versatz darin. Dazu eine Liste aller ausfuehrbaren Abbildungen. Damit ist eine 'fremde' Adresse keine Sackgasse mehr, sondern benennbar (libart, bionic, Treiber oder anonymer Block).",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 35,
          "datei": "speicher/88/883a50db982249218a1eef444ede121dd50ff1b5e2acecb7ea645304b995d22c.apk",
          "erstellt": "2026-09-09T23:49:32Z",
          "groesse": 6239244,
          "minSdk": 29,
          "sha256": "883a50db982249218a1eef444ede121dd50ff1b5e2acecb7ea645304b995d22c",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 42,
          "versionName": "0.38"
        },
        {
          "aenderungen": "Der Absturz beim Klick in die Adresszeile ist behoben. Ursache (aus dem ersten aufloesbaren Bericht vom Geraet, 231456): ANativeActivity.clazz wurde als LOKALE JNI-Referenz gemerkt und je Bild weiterbenutzt. Lokale Referenzen sterben mit der Rueckkehr aus dem nativen Aufruf; libart fiel beim Abfragen der Tastaturhoehe darueber -- deshalb pc ausserhalb von libcertus und Fehleradresse 0. Jetzt eine globale Referenz, wie bei allen anderen Objekten. Zusaetzlich gehaertet: alle elf JNI-Verteiler pruefen den Platz in der Tafel (leerer Platz hiess vorher Sprung auf Adresse 0), und die Tastaturhoehe faellt sauber auf 0 zurueck statt abzustuerzen. Melder verbessert: 'moeglich' jetzt geordnet und ohne Wiederholung, neue Zeile 'folge' in Stapelreihenfolge, und 'stapel' funktioniert auch bei einem Absturz auf einem Nebenfaden.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 34,
          "datei": "speicher/d6/d6fd60918e4ba147eb63f3979f97e5daf3e3089e65d2b2ba4db1fcf152e7196c.apk",
          "erstellt": "2026-09-09T23:27:15Z",
          "groesse": 6235148,
          "minSdk": 29,
          "sha256": "d6fd60918e4ba147eb63f3979f97e5daf3e3089e65d2b2ba4db1fcf152e7196c",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 41,
          "versionName": "0.37"
        },
        {
          "aenderungen": "Der Absturzmelder sendet jetzt wirklich -- bewiesen (bericht-st=200, Bericht im Eingang). Vier stille Fehler behoben: der Sendeversuch kehrte um, solange store.fleitec.com noch nicht aufgeloest war, und wurde dann nie wiederholt; 'Bericht senden' schickte nur die Messspur statt des Absturzberichts; geloescht wurde beim Absenden statt beim Ankommen; die Fassung im Bericht war fest 37. Neu: sichtbare Rueckmeldung oben ('Bericht angekommen' / 'Senden fehlgeschlagen' / 'nichts zu senden'). Ausserdem zeigte die Messtafel 'p99 0.0 ms', wo sie 'zu wenige Werte' meinte -- jetzt mit p99-n.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 33,
          "datei": "speicher/71/713349e3330f172dd2fdaaafc4ba20d6b8e74564bd8e377f1a40a0dc2b1c7a26.apk",
          "erstellt": "2026-09-09T22:21:38Z",
          "groesse": 6231052,
          "minSdk": 29,
          "sha256": "713349e3330f172dd2fdaaafc4ba20d6b8e74564bd8e377f1a40a0dc2b1c7a26",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 40,
          "versionName": "0.36"
        },
        {
          "aenderungen": "Der Absturzmelder sendet jetzt wirklich. In 0.33/0.34 kehrte jeder Sendeversuch still um, weil der Name store.fleitec.com beim ersten Versuch noch nicht aufgeloest war -- der Bericht wurde damit fuer immer verworfen. Jetzt wird der Auftrag gemerkt und nachgeholt, geloescht wird erst nach der Antwort 200, und der Menuepunkt 'Bericht senden' schickt den Absturzbericht (nicht nur die Messspur) und meldet sichtbar, was passiert ist. Fassung im Bericht war faelschlich fest 37.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 32,
          "datei": "speicher/e0/e03fe4c41202826ecbea1fcd7436dcfcac5159e7197f54625555a378f12810d6.apk",
          "erstellt": "2026-09-09T22:16:59Z",
          "groesse": 6231052,
          "minSdk": 29,
          "sha256": "e03fe4c41202826ecbea1fcd7436dcfcac5159e7197f54625555a378f12810d6",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 39,
          "versionName": "0.35"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 31,
          "datei": "speicher/a4/a421a2c9da754d023038188d3f326c45c0779864b5d31d378b135933c55b4694.apk",
          "erstellt": "2026-09-09T21:29:25Z",
          "groesse": 6222860,
          "minSdk": 29,
          "sha256": "a421a2c9da754d023038188d3f326c45c0779864b5d31d378b135933c55b4694",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 38,
          "versionName": "0.34"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 30,
          "datei": "speicher/d1/d1019a3e062de00799dd03d350f1ac439fc4b13a128a2b47d032877f74090cbb.apk",
          "erstellt": "2026-09-09T17:58:47Z",
          "groesse": 6222860,
          "minSdk": 29,
          "sha256": "d1019a3e062de00799dd03d350f1ac439fc4b13a128a2b47d032877f74090cbb",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 37,
          "versionName": "0.33"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 29,
          "datei": "speicher/2b/2b12d84edc7c18e44d8983b17ad1c4019a60ffc3b77cfe919b589cb727d98da7.apk",
          "erstellt": "2026-09-09T16:29:50Z",
          "groesse": 6218764,
          "minSdk": 29,
          "sha256": "2b12d84edc7c18e44d8983b17ad1c4019a60ffc3b77cfe919b589cb727d98da7",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 36,
          "versionName": "0.32"
        },
        {
          "aenderungen": "RUNDE ARM64-TEMPO: der Registerzuteiler fuer aarch64. Der Firn-Uebersetzer hatte fuer arm64 GAR KEINE Registerzuteilung -- jeder Wert ging ueber ein Rahmenfach. Der Zweig regalloc-a64 ist eingezogen, und dabei kamen ZWEI echte Fehler heraus, die sonst mit ausgeliefert worden waeren: (1) zwei Zweige hatten unabhaengig denselben Zustandsplatz 2152 vergeben (die Chunk-Tafel des Sammlers und die Blockgroessentafel des Zuteilers), die eine schrieb ueber den Zeiger der anderen -- 62 Faelle der Testtafel fielen. (2) Die Systemaufruf-Argumente wurden der Reihe nach in x0..x5 gelegt; mit Registerzuteilung KANN ein Wert dort schon liegen, und aus heap_free(zeiger, laenge) wurde munmap(zeiger, zeiger) -- der frisch belegte Puffer verschwand, naechster Zugriff Segmentierungsfehler. Beides behoben und belegt. Messung am echten Stilblatt-Pruefstand (29 Blaetter von github.com, 8941 Regeln, Ausgabe Zeichen fuer Zeichen wie vorher): aarch64 8,46 s -> 2,99 s, also 2,8x. Am Android-Pruefstand unter qemu: Leiste 66,1 ms -> 51,5 ms (1,28x), Zeichen malen 55,9 ms -> 48,3 ms (1,16x), laengster Block 5281 us -> 4666 us. Die Programmbibliothek ist 20 % kleiner (9028216 -> 7193296 Oktett), das Paket 6325260 -> 6206476 Oktett. Testtafel 311 von 311 gleich auf beiden Maschinen (dev-fast und --no-opt), cargo test 277, tools/checked 150, x86-Assembler 316 Dateien unveraendert -- der Eingriff ist reines aarch64.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 28,
          "datei": "speicher/9c/9ce86a72d06c854efce70805cbda98ac33ee1192e241918edecba0828133b3df.apk",
          "erstellt": "2026-09-09T15:42:08Z",
          "groesse": 6206476,
          "minSdk": 29,
          "sha256": "9ce86a72d06c854efce70805cbda98ac33ee1192e241918edecba0828133b3df",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 35,
          "versionName": "0.31"
        },
        {
          "aenderungen": "RUNDE SCHICHT: Sichtbarkeitsrecht und Beschnitt. Ein Kasten klemmte seinen EIGENEN Text nicht -- er bekam den Rahmen, mit dem er hereinkam, nur die Kinder den engeren. Githubs .sr-only war korrekt 1x1 Bildpunkt und liess seinen Text trotzdem quer ueber die Seite laufen (Chromium 30 Zeilen, Certus 66 -> jetzt 30). Das war die Textspalte am linken Rand und zugleich das riesige 'Navigation Menu'. Dazu: [hidden] { display: none } fehlte in beiden Stilblaettern. @layer mit getrennter Namens- und Reihenfolgetafel (die Statement-Form '@layer a,b,c;' wurde bisher ganz weggeworfen, und derselbe Name bekam jedes Mal eine neue Nummer). <input> hatte Breite 0 (die Breite haengt an der Schrift), Formularfelder sitzen auf der Grundlinie statt darauf zu stehen, white-space:nowrap macht die Mindestbreite zur ganzen Zeile. Pruefstuecke 65 -> 95/95 (572/572 Kaesten <=1 px), Grundlinie 1087/1087 bei 0,00 %.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 27,
          "datei": "speicher/05/053a8f2c8133b53650463c867a7b816210bf1f72f06a0e35bd3e0ebd30d52de2.apk",
          "erstellt": "2026-09-08T22:03:30Z",
          "groesse": 6284300,
          "minSdk": 29,
          "sha256": "053a8f2c8133b53650463c867a7b816210bf1f72f06a0e35bd3e0ebd30d52de2",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 32,
          "versionName": "0.28"
        },
        {
          "aenderungen": "Die Faser (Skripte in Scheiben) ist erstmals auf echtem AArch64 ausgefuehrt und geprueft worden -- gleiche Zahlen wie auf x86. Tippen: die Eingabe hat jetzt Vorrang vor der Skriptscheibe (Mittelwert 28,7 -> 18,5 ms). Die Faser laesst sich ohne neuen Bau abschalten (files/faser.txt = 0).",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 26,
          "datei": "speicher/bb/bbd8d7c1c1ca6d53b8e35c61fac87b9d225e10f54761f24d0795c59e9eaaf54d.apk",
          "erstellt": "2026-09-08T13:20:22Z",
          "groesse": 6243340,
          "minSdk": 29,
          "sha256": "bbd8d7c1c1ca6d53b8e35c61fac87b9d225e10f54761f24d0795c59e9eaaf54d",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 30,
          "versionName": "0.26"
        },
        {
          "aenderungen": "Kern-3: die Faser — die JavaScript-Maschine laeuft auf einem eigenen Stapel im selben Faden und haelt nach 8 ms an, der Hauptfaden malt dazwischen (m.youtube.com: Block 1930 ms -> 254 ms im Emulator, keine Abstuerze). DNS ohne Warten auf dem Hauptfaden (async ueber die Schleife, 5-s-Frist). Skript-Budget 10 s/30 s (ANR-Schutz ist jetzt die Faser). Tafel: Faser/Faser-n. Pruefstand tools/kern/probe_faser.html.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 25,
          "datei": "speicher/ca/ca13323ccc449e5e0488e2505cbc86f862d99eccda1d5116b4f56adbf0854d52.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 6239244,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "ca13323ccc449e5e0488e2505cbc86f862d99eccda1d5116b4f56adbf0854d52",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 29,
          "versionName": "0.25"
        },
        {
          "aenderungen": "Kern-2: JavaScript-Kern erweitert — fetch/XMLHttpRequest ueber den Netzfaden (Bote), eval und Function, Vorspann mit ~180 nachgereichten Browser-Schnittstellen (performance.timing, screen, atob/btoa, TextEncoder, Intl, customElements, DOMParser, typisierte Felder ...), top-level var als window-Eigenschaft, Regex-Matcher ohne Rekursion je Zeichen, Sammler mit Chunk-Tabelle (JavaScript 3,5x schneller), Aufruftiefe an den Stapel angepasst (kein Absturz mehr), Skriptkette in Scheiben, aeussere Skripte auf dem Netzfaden zerteilt. m.youtube.com laeuft ohne Absturz durch (base.js 1,8 s), zeigt aber noch nichts.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 24,
          "datei": "speicher/d6/d697241794605d7b93861c7c09bfb5d6d5c2d709fa2e3e3d894f6c4a238dbf3a.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 6210572,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "d697241794605d7b93861c7c09bfb5d6d5c2d709fa2e3e3d894f6c4a238dbf3a",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 28,
          "versionName": "0.24"
        },
        {
          "aenderungen": "RUNDE KERN: JavaScript laeuft jetzt auch auf Android (lib/kern/skript.fi -- eine Skriptmaschine fuer Schreibtisch und Telefon): innere und aeussere Skripte in Dokumentreihenfolge, DOM-Aenderungen (textContent, appendChild, innerHTML), setTimeout/setInterval, click-Ereignisse mit preventDefault, DOMContentLoaded/load; Budget 1,2 s je Skript, 2,5 s je Dokument; <noscript> wird nicht mehr gezeigt",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 23,
          "datei": "speicher/db/db74bdf370d33870aed1c175c284f490ca85c2ea652316fa81d41b2631c854ab.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 6112268,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "db74bdf370d33870aed1c175c284f490ca85c2ea652316fa81d41b2631c854ab",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 27,
          "versionName": "0.23"
        },
        {
          "aenderungen": "Stilblaetter auf fremden Wirten (CDN) werden jetzt geladen (DNS-Handschlag Netzfaden/Hauptfaden); Seiten mit Bildanfragen ohne Ergebnis wurden nicht fertig gemalt; <select> als Kasten mit gewaehlter Option (:checked); Sammler ruht bis nach der Bildanfrage (github 8,9 s -> 2,5 s)",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 22,
          "datei": "speicher/6c/6c5bde92be803740f314278c89218580949ad938032bfb28bb6b6a0cb7bf32b4.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 4092940,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "6c5bde92be803740f314278c89218580949ad938032bfb28bb6b6a0cb7bf32b4",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 26,
          "versionName": "0.22"
        },
        {
          "aenderungen": "HTTP 202 (Bot-Pruefseite) von duckduckgo.com wird auf html.duckduckgo.com/html/ umgelenkt; sonst sichtbare Hinweisseite statt weisser Flaeche",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 21,
          "datei": "speicher/9f/9fdfff7099d707c6c42ef38f7020265e4ab15d8875dc6ea49e1028ef1b1e2173.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 4076556,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "9fdfff7099d707c6c42ef38f7020265e4ab15d8875dc6ea49e1028ef1b1e2173",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 25,
          "versionName": "0.21"
        },
        {
          "aenderungen": "RUNDE SUCHE-2: Suche ueber html.duckduckgo.com (die Hauptseite liefert Certus eine leere Bot-Pruefseite, 202); Adresse laeuft nicht mehr ueber die Pille hinaus (Beschnitt + Auslassung); Tafel zerlegt die Leiste (L-adr/L-txt/L-pil/L-kno/L-max).",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 20,
          "datei": "speicher/52/52e50a89ad2a9b2ccfdab7d41718203c4784853ce783c05c81ce8bb72cae926f.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 4064268,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "52e50a89ad2a9b2ccfdab7d41718203c4784853ce783c05c81ce8bb72cae926f",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 24,
          "versionName": "0.20"
        },
        {
          "aenderungen": "RUNDE SUCHE: DuckDuckGo-Suche blockierte 6 s und lief in den ANR. Sammler ruht waehrend des Seitenbaus (Stile 5,1 s -> 0,28 s); kein voller Sammellauf mehr vor jedem Netzauftrag; Tokenizer haelt nach <script>/<style> an statt den Rest der Seite je Skript neu zu tokenisieren (Baum github 434 -> 75 ms, youtube 265 -> 69 ms).",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 19,
          "datei": "speicher/af/afda5a61b17797149a97ca6644e8a46710517c3669cac4cbdbdc359ab85716c2.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 4060172,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "afda5a61b17797149a97ca6644e8a46710517c3669cac4cbdbdc359ab85716c2",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 23,
          "versionName": "0.19"
        },
        {
          "aenderungen": "0.18: Die Adresszeile ist eine volle Textbox (lib/widget/textfeld.fi). Tipp setzt den Zeiger mitten in den Text, Ziehen markiert, Langdruck greift das Wort und oeffnet das Kontextmenue (Ausschneiden/Kopieren/Einfuegen/Alles auswaehlen) mit zwei Griffen an der Markierung; Pfeile, Pos1/Ende, Entf, Strg+A/C/X/V. Die Systemtastatur (Gboard) sieht jetzt Zeiger und Anker statt alles-oder-nichts: jede Methode der Eingabeverbindung rechnet mitten im Text, getExtractedText ist nativ, und setzt Certus den Zeiger selbst, erfaehrt es die Tastatur ueber updateSelection. Messtafel: N-Grund/TLS-Gr/DNS-F sagen, WORAN ein Abruf scheitert.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 18,
          "datei": "speicher/86/860c3dd5a02807800f476c449f8e5208c91457cb61de7ee22ed05afb6091fd37.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 4056076,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "860c3dd5a02807800f476c449f8e5208c91457cb61de7ee22ed05afb6091fd37",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 22,
          "versionName": "0.18"
        },
        {
          "aenderungen": "0.17: Die Adresszeile als Textbox. Antippen markiert die Adresse und LOESCHT sie nicht mehr sofort (der Text wurde bisher schon beim Oeffnen der Tastatur weggeworfen, gemessen 3178 -> 398 dunkle Bildpunkte; jetzt 3406, ersetzt wird erst beim ersten getippten Zeichen). Fuer Gboard auf Android 13+ vier weitere Methoden der Eingabeverbindung nativ (replaceText, setComposingRegion, setSelection, getSurroundingText) -- BaseInputConnection beantwortete sie bisher auf einem eigenen leeren Text, deshalb kam ein angetippter Vorschlag nie im Feld an. Neu auf der Messtafel: Status, N-Fehl, DNS statt Format/Zeile/Breite, damit eine Seite, die nicht laedt, eine Zahl hinterlaesst.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 17,
          "datei": "speicher/04/0438cebc6a436e305748a6b8aab42338db664a48f86c3d88e136fccd99adebe0.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 4019212,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "0438cebc6a436e305748a6b8aab42338db664a48f86c3d88e136fccd99adebe0",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 21,
          "versionName": "0.17"
        },
        {
          "aenderungen": "0.16: Tempo auf dem Telefon. Der Zoom rechnet die Seite nicht mehr neu um -- die Umbruchbreite haengt nicht mehr an der Zoomstufe, wie bei Chrome und Safari: 122,3 -> 38,8 ms je Zoomschritt (-68 %), der Textfluss faellt dabei ganz weg (111-175 -> 0 ms). Die Scheibengrenze band die Untergrenze bisher an die Bandhoehe statt ans Fenster und hat damit das 8-ms-Zeitbudget ueberstimmt; das Malbudget war mit 24 ms groesser als ein Bildtakt (16,7 ms). Ergebnis auf xoffi.ai: Finger 110,1 -> 76,2 ms (-31 %), p99 63,5 -> 48,4 ms (-24 %), Rollen-p99 47,1 -> 32,8 ms (-30 %), 60,2 -> 66,4 fps. Auf news.ycombinator.com: Finger-Hoechstwert 184,9 -> 103,8 ms (-44 %), p99 28,7 -> 22,8 ms. Zwei Zaehler haben zudem gelogen und sagen jetzt die Wahrheit: 'verpasst' zaehlte Wartezeit als Ruckeln (mehr ausgelassene Takte als Bilder -- 179/57 auf dem Telefon), und 'Unbemalt' buchte das Dokumentende einer kurzen Seite als Loch (dauerhaft 190 auf news.ycombinator.com, jetzt 0). Das Bild bleibt Oktett fuer Oktett dasselbe: 15 von 15 Seiten gleich.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 16,
          "datei": "speicher/63/63922dda7e5501bcd16ced0245a63a7f0146157ce115142d3ab1d54c0f52569e.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 4015116,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "63922dda7e5501bcd16ced0245a63a7f0146157ce115142d3ab1d54c0f52569e",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 20,
          "versionName": "0.16"
        },
        {
          "aenderungen": "0.15: Die Malschicht ist jetzt dieselbe wie unter X11 und Windows (dritte Rueckwand, Runde ABSCHLUSS) -- gemessen bildpunktgleich, 851200 von 851200.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 15,
          "datei": "speicher/f9/f9b745d7d6f60b55c485f7c0b6a1d43803e1cad062496dca750fb5110fdc21ac.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 4011020,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "f9b745d7d6f60b55c485f7c0b6a1d43803e1cad062496dca750fb5110fdc21ac",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 19,
          "versionName": "0.15"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 14,
          "datei": "speicher/c8/c806cd7945eefd1d9e0d8009c89b48b0f8771be6a6d4db8bc0fc5808d4ce2cca.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3838988,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "c806cd7945eefd1d9e0d8009c89b48b0f8771be6a6d4db8bc0fc5808d4ce2cca",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 14,
          "versionName": "0.10"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 13,
          "datei": "speicher/1d/1d8ebce629637ebdbe6aecfbe9583ebc583f2a27bb4827072fb559f5043c230e.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3814412,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "1d8ebce629637ebdbe6aecfbe9583ebc583f2a27bb4827072fb559f5043c230e",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 13,
          "versionName": "0.9"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 12,
          "datei": "speicher/cb/cba668072e760087b17190ee35beb0017428c5fae5f9fe358fd3f879820468f7.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3744780,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "cba668072e760087b17190ee35beb0017428c5fae5f9fe358fd3f879820468f7",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 12,
          "versionName": "0.8"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 11,
          "datei": "speicher/34/34eafcc3314274640da7b5d171954a7760e43a0a5f3b095e9671d9c550626266.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3732492,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "34eafcc3314274640da7b5d171954a7760e43a0a5f3b095e9671d9c550626266",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 11,
          "versionName": "0.7.2"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 10,
          "datei": "speicher/b9/b92ce4633c8df603bf70a035769e213470944b63759bcd076c612befec9719b3.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3732492,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "b92ce4633c8df603bf70a035769e213470944b63759bcd076c612befec9719b3",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 10,
          "versionName": "0.7.1"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 9,
          "datei": "speicher/15/15302d1b3feb9520dfb58ce4292b98fdc605bd71c4eba20d159ba3213a41892c.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3716108,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "15302d1b3feb9520dfb58ce4292b98fdc605bd71c4eba20d159ba3213a41892c",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 9,
          "versionName": "0.7"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 8,
          "datei": "speicher/4b/4bede96c419372a206a51070fbd060e3307b706d624cdc433c6c15bcabceac90.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3703820,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "4bede96c419372a206a51070fbd060e3307b706d624cdc433c6c15bcabceac90",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 8,
          "versionName": "0.6"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 7,
          "datei": "speicher/29/2999c37605a724948924fdd99d8ee6f66f68c4a88d769c5e4bcf76b664121296.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3691532,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "2999c37605a724948924fdd99d8ee6f66f68c4a88d769c5e4bcf76b664121296",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 7,
          "versionName": "0.5.1"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 6,
          "datei": "speicher/0b/0b01264905e3a7de668d5a1001f175e29bfeccc39325325cab88891f87a7d642.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3679244,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "0b01264905e3a7de668d5a1001f175e29bfeccc39325325cab88891f87a7d642",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 6,
          "versionName": "0.5"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 5,
          "datei": "speicher/65/65784182b608c9612e73f4c4c7560dde303314a5ab17c120aa53a92aff026b9a.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3630092,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "65784182b608c9612e73f4c4c7560dde303314a5ab17c120aa53a92aff026b9a",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 5,
          "versionName": "0.4.1"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 4,
          "datei": "speicher/6f/6f20c06a5cc5445dc29ef4885bb2537c5723db15b96ff93afb0a65f7bc11b3b6.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3593228,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "6f20c06a5cc5445dc29ef4885bb2537c5723db15b96ff93afb0a65f7bc11b3b6",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 4,
          "versionName": "0.4"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 3,
          "datei": "speicher/33/3340cd24f646312d82413754bd7450183c8807c263c9d80cc74625c09a6c08bc.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3355660,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "3340cd24f646312d82413754bd7450183c8807c263c9d80cc74625c09a6c08bc",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 3,
          "versionName": "0.3-mobil3"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "build_id": 2,
          "datei": "speicher/0e/0ebca4b6c268cee0dd1b9b80a584d4aeb14221dd66f4888404447b8525ed184d.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 3163148,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "0ebca4b6c268cee0dd1b9b80a584d4aeb14221dd66f4888404447b8525ed184d",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 2,
          "versionName": "0.2-mobil2"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.INTERNET"
          ],
          "build_id": 1,
          "datei": "speicher/e8/e8958162a391541227b3962ccbcc341659db94e9eab831176008ad874af423fe.apk",
          "erstellt": "2026-09-07T17:24:31Z",
          "groesse": 1081825,
          "minSdk": 24,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "e8958162a391541227b3962ccbcc341659db94e9eab831176008ad874af423fe",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 0,
          "versionName": "0"
        }
      ],
      "fassungen": [
        {
          "aenderungen": "DER ABSTURZMELDER WAR SELBST DIE URSACHE. Die Speicherkarte aus 0.38 hat gezeigt: beide Absturzgruppen liegen in boot.oat, dem vorkompilierten Java-Code des Rahmenwerks, auf wechselnden Fadenstapeln und ohne einen einzigen Certus-Rahmen im Rueckweg. ART loest SIGSEGV im Normalbetrieb aus -- Null-Pruefungen in kompiliertem Java-Code laufen ueber Speicherschutz und werden von ARTs eigenem Behandler in eine NullPointerException verwandelt. Der Melder hat diesen Behandler ueberschrieben ohne ihn zu sichern und bei jedem Signal den Prozess getoetet: aus jeder harmlosen NullPointerException des Rahmenwerks wurde ein Absturz. Jetzt wird der vorhandene Behandler gesichert, ein Signal ohne jeden Certus-Rahmen im Stapel unveraendert an ihn weitergereicht, und nur ein Absturz, an dem Certus wirklich beteiligt ist, gemeldet.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/36/36a25517152f641887cc6e08c717129422a99666c30e485a8c9d832496b32073.apk",
          "groesse": 6243340,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "36a25517152f641887cc6e08c717129422a99666c30e485a8c9d832496b32073",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 44,
          "versionName": "0.40"
        },
        {
          "aenderungen": "ENTSCHEIDUNGSFASSUNG, nicht fuer den taeglichen Gebrauch. Gleicher Quelltext wie 0.38, aber arm64 komplett OHNE die Registerzuteilung uebersetzt (neuer Uebersetzerschalter FIRN_NO_REGALLOC_A64): jeder Wert liegt in seinem Stapelfach, wie vor Runde REGALLOC-A64. Sie ist deutlich langsamer und braucht mehr Speicher. Zweck: beantwortet die Frage, ob der Absturz vom Uebersetzer kommt. Stuerzt sie NICHT ab, ist die Registerzuteilung schuld; stuerzt sie genauso ab, ist sie entlastet.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/c2/c2b77a1fc4406f660b6d05c4117a70813bc9d66211ad45c54f8ae62ddcb7ddd2.apk",
          "groesse": 7222284,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "c2b77a1fc4406f660b6d05c4117a70813bc9d66211ad45c54f8ae62ddcb7ddd2",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 43,
          "versionName": "0.39-entscheider"
        },
        {
          "aenderungen": "Der Melder schickt jetzt die SPEICHERKARTE mit. Zu pc, lr, sp, fp und jedem Rueckweg-Rahmen steht die Zeile aus /proc/self/maps im Bericht: Name der Bibliothek, Bereich, Rechte und Versatz darin. Dazu eine Liste aller ausfuehrbaren Abbildungen. Damit ist eine 'fremde' Adresse keine Sackgasse mehr, sondern benennbar (libart, bionic, Treiber oder anonymer Block).",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/88/883a50db982249218a1eef444ede121dd50ff1b5e2acecb7ea645304b995d22c.apk",
          "groesse": 6239244,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "883a50db982249218a1eef444ede121dd50ff1b5e2acecb7ea645304b995d22c",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 42,
          "versionName": "0.38"
        },
        {
          "aenderungen": "Der Absturz beim Klick in die Adresszeile ist behoben. Ursache (aus dem ersten aufloesbaren Bericht vom Geraet, 231456): ANativeActivity.clazz wurde als LOKALE JNI-Referenz gemerkt und je Bild weiterbenutzt. Lokale Referenzen sterben mit der Rueckkehr aus dem nativen Aufruf; libart fiel beim Abfragen der Tastaturhoehe darueber -- deshalb pc ausserhalb von libcertus und Fehleradresse 0. Jetzt eine globale Referenz, wie bei allen anderen Objekten. Zusaetzlich gehaertet: alle elf JNI-Verteiler pruefen den Platz in der Tafel (leerer Platz hiess vorher Sprung auf Adresse 0), und die Tastaturhoehe faellt sauber auf 0 zurueck statt abzustuerzen. Melder verbessert: 'moeglich' jetzt geordnet und ohne Wiederholung, neue Zeile 'folge' in Stapelreihenfolge, und 'stapel' funktioniert auch bei einem Absturz auf einem Nebenfaden.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/d6/d6fd60918e4ba147eb63f3979f97e5daf3e3089e65d2b2ba4db1fcf152e7196c.apk",
          "groesse": 6235148,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "d6fd60918e4ba147eb63f3979f97e5daf3e3089e65d2b2ba4db1fcf152e7196c",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 41,
          "versionName": "0.37"
        },
        {
          "aenderungen": "Der Absturzmelder sendet jetzt wirklich -- bewiesen (bericht-st=200, Bericht im Eingang). Vier stille Fehler behoben: der Sendeversuch kehrte um, solange store.fleitec.com noch nicht aufgeloest war, und wurde dann nie wiederholt; 'Bericht senden' schickte nur die Messspur statt des Absturzberichts; geloescht wurde beim Absenden statt beim Ankommen; die Fassung im Bericht war fest 37. Neu: sichtbare Rueckmeldung oben ('Bericht angekommen' / 'Senden fehlgeschlagen' / 'nichts zu senden'). Ausserdem zeigte die Messtafel 'p99 0.0 ms', wo sie 'zu wenige Werte' meinte -- jetzt mit p99-n.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/71/713349e3330f172dd2fdaaafc4ba20d6b8e74564bd8e377f1a40a0dc2b1c7a26.apk",
          "groesse": 6231052,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "713349e3330f172dd2fdaaafc4ba20d6b8e74564bd8e377f1a40a0dc2b1c7a26",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 40,
          "versionName": "0.36"
        },
        {
          "aenderungen": "Der Absturzmelder sendet jetzt wirklich. In 0.33/0.34 kehrte jeder Sendeversuch still um, weil der Name store.fleitec.com beim ersten Versuch noch nicht aufgeloest war -- der Bericht wurde damit fuer immer verworfen. Jetzt wird der Auftrag gemerkt und nachgeholt, geloescht wird erst nach der Antwort 200, und der Menuepunkt 'Bericht senden' schickt den Absturzbericht (nicht nur die Messspur) und meldet sichtbar, was passiert ist. Fassung im Bericht war faelschlich fest 37.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/e0/e03fe4c41202826ecbea1fcd7436dcfcac5159e7197f54625555a378f12810d6.apk",
          "groesse": 6231052,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "e03fe4c41202826ecbea1fcd7436dcfcac5159e7197f54625555a378f12810d6",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 39,
          "versionName": "0.35"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/a4/a421a2c9da754d023038188d3f326c45c0779864b5d31d378b135933c55b4694.apk",
          "groesse": 6222860,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "a421a2c9da754d023038188d3f326c45c0779864b5d31d378b135933c55b4694",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 38,
          "versionName": "0.34"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/d1/d1019a3e062de00799dd03d350f1ac439fc4b13a128a2b47d032877f74090cbb.apk",
          "groesse": 6222860,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "d1019a3e062de00799dd03d350f1ac439fc4b13a128a2b47d032877f74090cbb",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 37,
          "versionName": "0.33"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/2b/2b12d84edc7c18e44d8983b17ad1c4019a60ffc3b77cfe919b589cb727d98da7.apk",
          "groesse": 6218764,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "2b12d84edc7c18e44d8983b17ad1c4019a60ffc3b77cfe919b589cb727d98da7",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 36,
          "versionName": "0.32"
        },
        {
          "aenderungen": "RUNDE ARM64-TEMPO: der Registerzuteiler fuer aarch64. Der Firn-Uebersetzer hatte fuer arm64 GAR KEINE Registerzuteilung -- jeder Wert ging ueber ein Rahmenfach. Der Zweig regalloc-a64 ist eingezogen, und dabei kamen ZWEI echte Fehler heraus, die sonst mit ausgeliefert worden waeren: (1) zwei Zweige hatten unabhaengig denselben Zustandsplatz 2152 vergeben (die Chunk-Tafel des Sammlers und die Blockgroessentafel des Zuteilers), die eine schrieb ueber den Zeiger der anderen -- 62 Faelle der Testtafel fielen. (2) Die Systemaufruf-Argumente wurden der Reihe nach in x0..x5 gelegt; mit Registerzuteilung KANN ein Wert dort schon liegen, und aus heap_free(zeiger, laenge) wurde munmap(zeiger, zeiger) -- der frisch belegte Puffer verschwand, naechster Zugriff Segmentierungsfehler. Beides behoben und belegt. Messung am echten Stilblatt-Pruefstand (29 Blaetter von github.com, 8941 Regeln, Ausgabe Zeichen fuer Zeichen wie vorher): aarch64 8,46 s -> 2,99 s, also 2,8x. Am Android-Pruefstand unter qemu: Leiste 66,1 ms -> 51,5 ms (1,28x), Zeichen malen 55,9 ms -> 48,3 ms (1,16x), laengster Block 5281 us -> 4666 us. Die Programmbibliothek ist 20 % kleiner (9028216 -> 7193296 Oktett), das Paket 6325260 -> 6206476 Oktett. Testtafel 311 von 311 gleich auf beiden Maschinen (dev-fast und --no-opt), cargo test 277, tools/checked 150, x86-Assembler 316 Dateien unveraendert -- der Eingriff ist reines aarch64.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/9c/9ce86a72d06c854efce70805cbda98ac33ee1192e241918edecba0828133b3df.apk",
          "groesse": 6206476,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "9ce86a72d06c854efce70805cbda98ac33ee1192e241918edecba0828133b3df",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 35,
          "versionName": "0.31"
        },
        {
          "aenderungen": "RUNDE SCHICHT: Sichtbarkeitsrecht und Beschnitt. Ein Kasten klemmte seinen EIGENEN Text nicht -- er bekam den Rahmen, mit dem er hereinkam, nur die Kinder den engeren. Githubs .sr-only war korrekt 1x1 Bildpunkt und liess seinen Text trotzdem quer ueber die Seite laufen (Chromium 30 Zeilen, Certus 66 -> jetzt 30). Das war die Textspalte am linken Rand und zugleich das riesige 'Navigation Menu'. Dazu: [hidden] { display: none } fehlte in beiden Stilblaettern. @layer mit getrennter Namens- und Reihenfolgetafel (die Statement-Form '@layer a,b,c;' wurde bisher ganz weggeworfen, und derselbe Name bekam jedes Mal eine neue Nummer). <input> hatte Breite 0 (die Breite haengt an der Schrift), Formularfelder sitzen auf der Grundlinie statt darauf zu stehen, white-space:nowrap macht die Mindestbreite zur ganzen Zeile. Pruefstuecke 65 -> 95/95 (572/572 Kaesten <=1 px), Grundlinie 1087/1087 bei 0,00 %.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/05/053a8f2c8133b53650463c867a7b816210bf1f72f06a0e35bd3e0ebd30d52de2.apk",
          "groesse": 6284300,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "053a8f2c8133b53650463c867a7b816210bf1f72f06a0e35bd3e0ebd30d52de2",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 32,
          "versionName": "0.28"
        },
        {
          "aenderungen": "Die Faser (Skripte in Scheiben) ist erstmals auf echtem AArch64 ausgefuehrt und geprueft worden -- gleiche Zahlen wie auf x86. Tippen: die Eingabe hat jetzt Vorrang vor der Skriptscheibe (Mittelwert 28,7 -> 18,5 ms). Die Faser laesst sich ohne neuen Bau abschalten (files/faser.txt = 0).",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/bb/bbd8d7c1c1ca6d53b8e35c61fac87b9d225e10f54761f24d0795c59e9eaaf54d.apk",
          "groesse": 6243340,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "bbd8d7c1c1ca6d53b8e35c61fac87b9d225e10f54761f24d0795c59e9eaaf54d",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 30,
          "versionName": "0.26"
        },
        {
          "aenderungen": "Kern-3: die Faser — die JavaScript-Maschine laeuft auf einem eigenen Stapel im selben Faden und haelt nach 8 ms an, der Hauptfaden malt dazwischen (m.youtube.com: Block 1930 ms -> 254 ms im Emulator, keine Abstuerze). DNS ohne Warten auf dem Hauptfaden (async ueber die Schleife, 5-s-Frist). Skript-Budget 10 s/30 s (ANR-Schutz ist jetzt die Faser). Tafel: Faser/Faser-n. Pruefstand tools/kern/probe_faser.html.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/ca/ca13323ccc449e5e0488e2505cbc86f862d99eccda1d5116b4f56adbf0854d52.apk",
          "groesse": 6239244,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "ca13323ccc449e5e0488e2505cbc86f862d99eccda1d5116b4f56adbf0854d52",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 29,
          "versionName": "0.25"
        },
        {
          "aenderungen": "Kern-2: JavaScript-Kern erweitert — fetch/XMLHttpRequest ueber den Netzfaden (Bote), eval und Function, Vorspann mit ~180 nachgereichten Browser-Schnittstellen (performance.timing, screen, atob/btoa, TextEncoder, Intl, customElements, DOMParser, typisierte Felder ...), top-level var als window-Eigenschaft, Regex-Matcher ohne Rekursion je Zeichen, Sammler mit Chunk-Tabelle (JavaScript 3,5x schneller), Aufruftiefe an den Stapel angepasst (kein Absturz mehr), Skriptkette in Scheiben, aeussere Skripte auf dem Netzfaden zerteilt. m.youtube.com laeuft ohne Absturz durch (base.js 1,8 s), zeigt aber noch nichts.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/d6/d697241794605d7b93861c7c09bfb5d6d5c2d709fa2e3e3d894f6c4a238dbf3a.apk",
          "groesse": 6210572,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "d697241794605d7b93861c7c09bfb5d6d5c2d709fa2e3e3d894f6c4a238dbf3a",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 28,
          "versionName": "0.24"
        },
        {
          "aenderungen": "RUNDE KERN: JavaScript laeuft jetzt auch auf Android (lib/kern/skript.fi -- eine Skriptmaschine fuer Schreibtisch und Telefon): innere und aeussere Skripte in Dokumentreihenfolge, DOM-Aenderungen (textContent, appendChild, innerHTML), setTimeout/setInterval, click-Ereignisse mit preventDefault, DOMContentLoaded/load; Budget 1,2 s je Skript, 2,5 s je Dokument; <noscript> wird nicht mehr gezeigt",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/db/db74bdf370d33870aed1c175c284f490ca85c2ea652316fa81d41b2631c854ab.apk",
          "groesse": 6112268,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "db74bdf370d33870aed1c175c284f490ca85c2ea652316fa81d41b2631c854ab",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 27,
          "versionName": "0.23"
        },
        {
          "aenderungen": "Stilblaetter auf fremden Wirten (CDN) werden jetzt geladen (DNS-Handschlag Netzfaden/Hauptfaden); Seiten mit Bildanfragen ohne Ergebnis wurden nicht fertig gemalt; <select> als Kasten mit gewaehlter Option (:checked); Sammler ruht bis nach der Bildanfrage (github 8,9 s -> 2,5 s)",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/6c/6c5bde92be803740f314278c89218580949ad938032bfb28bb6b6a0cb7bf32b4.apk",
          "groesse": 4092940,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "6c5bde92be803740f314278c89218580949ad938032bfb28bb6b6a0cb7bf32b4",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 26,
          "versionName": "0.22"
        },
        {
          "aenderungen": "HTTP 202 (Bot-Pruefseite) von duckduckgo.com wird auf html.duckduckgo.com/html/ umgelenkt; sonst sichtbare Hinweisseite statt weisser Flaeche",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/9f/9fdfff7099d707c6c42ef38f7020265e4ab15d8875dc6ea49e1028ef1b1e2173.apk",
          "groesse": 4076556,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "9fdfff7099d707c6c42ef38f7020265e4ab15d8875dc6ea49e1028ef1b1e2173",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 25,
          "versionName": "0.21"
        },
        {
          "aenderungen": "RUNDE SUCHE-2: Suche ueber html.duckduckgo.com (die Hauptseite liefert Certus eine leere Bot-Pruefseite, 202); Adresse laeuft nicht mehr ueber die Pille hinaus (Beschnitt + Auslassung); Tafel zerlegt die Leiste (L-adr/L-txt/L-pil/L-kno/L-max).",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/52/52e50a89ad2a9b2ccfdab7d41718203c4784853ce783c05c81ce8bb72cae926f.apk",
          "groesse": 4064268,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "52e50a89ad2a9b2ccfdab7d41718203c4784853ce783c05c81ce8bb72cae926f",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 24,
          "versionName": "0.20"
        },
        {
          "aenderungen": "RUNDE SUCHE: DuckDuckGo-Suche blockierte 6 s und lief in den ANR. Sammler ruht waehrend des Seitenbaus (Stile 5,1 s -> 0,28 s); kein voller Sammellauf mehr vor jedem Netzauftrag; Tokenizer haelt nach <script>/<style> an statt den Rest der Seite je Skript neu zu tokenisieren (Baum github 434 -> 75 ms, youtube 265 -> 69 ms).",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/af/afda5a61b17797149a97ca6644e8a46710517c3669cac4cbdbdc359ab85716c2.apk",
          "groesse": 4060172,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "afda5a61b17797149a97ca6644e8a46710517c3669cac4cbdbdc359ab85716c2",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 23,
          "versionName": "0.19"
        },
        {
          "aenderungen": "0.18: Die Adresszeile ist eine volle Textbox (lib/widget/textfeld.fi). Tipp setzt den Zeiger mitten in den Text, Ziehen markiert, Langdruck greift das Wort und oeffnet das Kontextmenue (Ausschneiden/Kopieren/Einfuegen/Alles auswaehlen) mit zwei Griffen an der Markierung; Pfeile, Pos1/Ende, Entf, Strg+A/C/X/V. Die Systemtastatur (Gboard) sieht jetzt Zeiger und Anker statt alles-oder-nichts: jede Methode der Eingabeverbindung rechnet mitten im Text, getExtractedText ist nativ, und setzt Certus den Zeiger selbst, erfaehrt es die Tastatur ueber updateSelection. Messtafel: N-Grund/TLS-Gr/DNS-F sagen, WORAN ein Abruf scheitert.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/86/860c3dd5a02807800f476c449f8e5208c91457cb61de7ee22ed05afb6091fd37.apk",
          "groesse": 4056076,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "860c3dd5a02807800f476c449f8e5208c91457cb61de7ee22ed05afb6091fd37",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 22,
          "versionName": "0.18"
        },
        {
          "aenderungen": "0.17: Die Adresszeile als Textbox. Antippen markiert die Adresse und LOESCHT sie nicht mehr sofort (der Text wurde bisher schon beim Oeffnen der Tastatur weggeworfen, gemessen 3178 -> 398 dunkle Bildpunkte; jetzt 3406, ersetzt wird erst beim ersten getippten Zeichen). Fuer Gboard auf Android 13+ vier weitere Methoden der Eingabeverbindung nativ (replaceText, setComposingRegion, setSelection, getSurroundingText) -- BaseInputConnection beantwortete sie bisher auf einem eigenen leeren Text, deshalb kam ein angetippter Vorschlag nie im Feld an. Neu auf der Messtafel: Status, N-Fehl, DNS statt Format/Zeile/Breite, damit eine Seite, die nicht laedt, eine Zahl hinterlaesst.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/04/0438cebc6a436e305748a6b8aab42338db664a48f86c3d88e136fccd99adebe0.apk",
          "groesse": 4019212,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "0438cebc6a436e305748a6b8aab42338db664a48f86c3d88e136fccd99adebe0",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 21,
          "versionName": "0.17"
        },
        {
          "aenderungen": "0.16: Tempo auf dem Telefon. Der Zoom rechnet die Seite nicht mehr neu um -- die Umbruchbreite haengt nicht mehr an der Zoomstufe, wie bei Chrome und Safari: 122,3 -> 38,8 ms je Zoomschritt (-68 %), der Textfluss faellt dabei ganz weg (111-175 -> 0 ms). Die Scheibengrenze band die Untergrenze bisher an die Bandhoehe statt ans Fenster und hat damit das 8-ms-Zeitbudget ueberstimmt; das Malbudget war mit 24 ms groesser als ein Bildtakt (16,7 ms). Ergebnis auf xoffi.ai: Finger 110,1 -> 76,2 ms (-31 %), p99 63,5 -> 48,4 ms (-24 %), Rollen-p99 47,1 -> 32,8 ms (-30 %), 60,2 -> 66,4 fps. Auf news.ycombinator.com: Finger-Hoechstwert 184,9 -> 103,8 ms (-44 %), p99 28,7 -> 22,8 ms. Zwei Zaehler haben zudem gelogen und sagen jetzt die Wahrheit: 'verpasst' zaehlte Wartezeit als Ruckeln (mehr ausgelassene Takte als Bilder -- 179/57 auf dem Telefon), und 'Unbemalt' buchte das Dokumentende einer kurzen Seite als Loch (dauerhaft 190 auf news.ycombinator.com, jetzt 0). Das Bild bleibt Oktett fuer Oktett dasselbe: 15 von 15 Seiten gleich.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/63/63922dda7e5501bcd16ced0245a63a7f0146157ce115142d3ab1d54c0f52569e.apk",
          "groesse": 4015116,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "63922dda7e5501bcd16ced0245a63a7f0146157ce115142d3ab1d54c0f52569e",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 20,
          "versionName": "0.16"
        },
        {
          "aenderungen": "0.15: Die Malschicht ist jetzt dieselbe wie unter X11 und Windows (dritte Rueckwand, Runde ABSCHLUSS) -- gemessen bildpunktgleich, 851200 von 851200.",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/f9/f9b745d7d6f60b55c485f7c0b6a1d43803e1cad062496dca750fb5110fdc21ac.apk",
          "groesse": 4011020,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "f9b745d7d6f60b55c485f7c0b6a1d43803e1cad062496dca750fb5110fdc21ac",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 19,
          "versionName": "0.15"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/c8/c806cd7945eefd1d9e0d8009c89b48b0f8771be6a6d4db8bc0fc5808d4ce2cca.apk",
          "groesse": 3838988,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "c806cd7945eefd1d9e0d8009c89b48b0f8771be6a6d4db8bc0fc5808d4ce2cca",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 14,
          "versionName": "0.10"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/1d/1d8ebce629637ebdbe6aecfbe9583ebc583f2a27bb4827072fb559f5043c230e.apk",
          "groesse": 3814412,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "1d8ebce629637ebdbe6aecfbe9583ebc583f2a27bb4827072fb559f5043c230e",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 13,
          "versionName": "0.9"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/cb/cba668072e760087b17190ee35beb0017428c5fae5f9fe358fd3f879820468f7.apk",
          "groesse": 3744780,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "cba668072e760087b17190ee35beb0017428c5fae5f9fe358fd3f879820468f7",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 12,
          "versionName": "0.8"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/34/34eafcc3314274640da7b5d171954a7760e43a0a5f3b095e9671d9c550626266.apk",
          "groesse": 3732492,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "34eafcc3314274640da7b5d171954a7760e43a0a5f3b095e9671d9c550626266",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 11,
          "versionName": "0.7.2"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/b9/b92ce4633c8df603bf70a035769e213470944b63759bcd076c612befec9719b3.apk",
          "groesse": 3732492,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "b92ce4633c8df603bf70a035769e213470944b63759bcd076c612befec9719b3",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 10,
          "versionName": "0.7.1"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/15/15302d1b3feb9520dfb58ce4292b98fdc605bd71c4eba20d159ba3213a41892c.apk",
          "groesse": 3716108,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "15302d1b3feb9520dfb58ce4292b98fdc605bd71c4eba20d159ba3213a41892c",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 9,
          "versionName": "0.7"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/4b/4bede96c419372a206a51070fbd060e3307b706d624cdc433c6c15bcabceac90.apk",
          "groesse": 3703820,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "4bede96c419372a206a51070fbd060e3307b706d624cdc433c6c15bcabceac90",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 8,
          "versionName": "0.6"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/29/2999c37605a724948924fdd99d8ee6f66f68c4a88d769c5e4bcf76b664121296.apk",
          "groesse": 3691532,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "2999c37605a724948924fdd99d8ee6f66f68c4a88d769c5e4bcf76b664121296",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 7,
          "versionName": "0.5.1"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/0b/0b01264905e3a7de668d5a1001f175e29bfeccc39325325cab88891f87a7d642.apk",
          "groesse": 3679244,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "0b01264905e3a7de668d5a1001f175e29bfeccc39325325cab88891f87a7d642",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 6,
          "versionName": "0.5"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/65/65784182b608c9612e73f4c4c7560dde303314a5ab17c120aa53a92aff026b9a.apk",
          "groesse": 3630092,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "65784182b608c9612e73f4c4c7560dde303314a5ab17c120aa53a92aff026b9a",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 5,
          "versionName": "0.4.1"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/6f/6f20c06a5cc5445dc29ef4885bb2537c5723db15b96ff93afb0a65f7bc11b3b6.apk",
          "groesse": 3593228,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "6f20c06a5cc5445dc29ef4885bb2537c5723db15b96ff93afb0a65f7bc11b3b6",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 4,
          "versionName": "0.4"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/33/3340cd24f646312d82413754bd7450183c8807c263c9d80cc74625c09a6c08bc.apk",
          "groesse": 3355660,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "3340cd24f646312d82413754bd7450183c8807c263c9d80cc74625c09a6c08bc",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 3,
          "versionName": "0.3-mobil3"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.ACCESS_NETWORK_STATE",
            "android.permission.INTERNET"
          ],
          "datei": "speicher/0e/0ebca4b6c268cee0dd1b9b80a584d4aeb14221dd66f4888404447b8525ed184d.apk",
          "groesse": 3163148,
          "minSdk": 29,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "0ebca4b6c268cee0dd1b9b80a584d4aeb14221dd66f4888404447b8525ed184d",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 2,
          "versionName": "0.2-mobil2"
        },
        {
          "aenderungen": "",
          "architekturen": [
            "arm64-v8a",
            "x86_64"
          ],
          "berechtigungen": [
            "android.permission.INTERNET"
          ],
          "datei": "speicher/e8/e8958162a391541227b3962ccbcc341659db94e9eab831176008ad874af423fe.apk",
          "groesse": 1081825,
          "minSdk": 24,
          "plattformen": [
            "android-arm64",
            "android-x86_64"
          ],
          "sha256": "e8958162a391541227b3962ccbcc341659db94e9eab831176008ad874af423fe",
          "signaturverfahren": [
            "v3",
            "v2"
          ],
          "targetSdk": 34,
          "versionCode": 0,
          "versionName": "0"
        }
      ],
      "kanaele": {
        "pruef": 36,
        "stabil": 37
      },
      "lizenz": "",
      "manifest": {
        "aktionen": {},
        "antiFeatures": [
          "NonFreeNet"
        ],
        "bilder": {
          "capsule": null,
          "schirmbilder": [],
          "video": null
        },
        "kurztext": "Ein Webbrowser, vollstaendig in Firn geschrieben.",
        "langtext": "Certus ist ein Browser ohne fremde Maschine: Auszeichnung, Stilsprache und JavaScript sind in Firn geschrieben und laufen auf Schreibtisch und Telefon aus derselben Quelle.\n\nDie JavaScript-Maschine laeuft seit Kern-3 auf einer eigenen Faser im selben Faden und haelt alle 8 ms an, damit der Hauptfaden zwischendurch malen kann -- auf m.youtube.com sank die laengste Blockade dadurch von 1930 ms auf 254 ms.\n\nEs gibt keine Werbefilter-Liste und keine Telemetrie, weil es nichts zu melden gibt.",
        "rechte": [
          "netz"
        ],
        "schlagworte": [
          "Browser",
          "Firn"
        ],
        "speicherstaende": {},
        "voraussetzungen": []
      },
      "mindestVersionCode": 0,
      "naechste_build_id": 38,
      "name": "Certus",
      "quelltext": "",
      "symbol": {
        "datei": "symbole/90/90aeb549343fb5b1825184137df8da5bc95ca159e056df768e20f395f57d2d57.png",
        "groesse": 15914,
        "sha256": "90aeb549343fb5b1825184137df8da5bc95ca159e056df768e20f395f57d2d57"
      },
      "zertifikate": [
        "ad3e9c9b9af02e9eadc9e1b1d2b53765bcb409ea2a81545e42e0d601180ac520",
        "689dc2c34a220a35ef518719d7e920dc680fa6f4d192c5b0ada4cd38c6350de2"
      ],
      "ziele": [
        {
          "mindestens": "24",
          "plattform": "android-arm64"
        },
        {
          "mindestens": "24",
          "plattform": "android-x86_64"
        }
      ]
    }
  },
  "kopf": {
    "adresse": "https://store.fleitec.com/",
    "beschreibung": "Eigener Anwendungsspeicher von fleitec - Certus und OrientOS-Pakete.",
    "katalog": 1,
    "name": "Justins Speicher",
    "revision": 129,
    "spiegel": [],
    "zeitstempel": "2026-09-10T00:07:50Z"
  },
  "revision": 129,
  "seit_revision": 128
}
