From c39aeacf08541e95414e639851087274b005a402 Mon Sep 17 00:00:00 2001 From: Tim Schmidt <4+timba@noreply.localhost> Date: Thu, 3 Sep 2026 09:38:20 +0000 Subject: [PATCH] SHUFTN 0.2.5 --- latest.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/latest.json b/latest.json index 8f9f7f9..013f247 100644 --- a/latest.json +++ b/latest.json @@ -1,11 +1,11 @@ { - "version": "0.2.4", - "notes": "Mehrtägige Termine sind im Monatsgitter jetzt ein Balken. Eine Messe von Montag bis Mittwoch stand bisher als drei Kästchen in drei Zellen — und drei Kästchen liest man als drei Termine; wo die Messe anfängt und aufhört, musste man abzählen. Jetzt läuft sie als ein Streifen durch, mit Pfeilspitzen an den Rändern, wenn sie über die Woche hinausgeht. Das gilt auch für Zeittermine über mehrere Tage, nicht nur für ganztägige: Das Monatsgitter hat keine Zeitachse, an der ein solcher Termin besser stünde. Die Wochenansicht konnte das schon; gerechnet wird jetzt beides mit derselben Reihenlogik statt mit zwei Fassungen davon.\n\nKalender lassen sich nebeneinanderlegen. Der Knopf links neben Monat / Woche / Tag gibt jedem angehakten Kalender eine eigene Spalte mit eigenem Gitter und Namen darüber — statt alle Termine in ein Gitter zu legen. Übereinander bleibt die Vorgabe: Wer zwei Kalender anhakt, sucht meist die Lücke, in der beide frei sind, und die sieht man nur in einem Gitter. Nebeneinander ist die andere Frage — *was macht der Kollege am Dienstag?* Unter einer Mindestbreite je Spalte wird gerollt statt gequetscht; ein unlesbares Gitter ist schlechter als eine Rollleiste. Der Knopf steht ausgegraut da, solange nur ein Kalender angehakt ist, und sagt im Hinweis, was fehlt.\n\nDer Streifen an ungelesenen Nachrichten ist doppelt so breit und lässt sich anklicken. Vier Punkt statt zwei — er ist das einzige Zeichen, das bleibt, wenn jemand die Schriftgrade der Listenzeile verstellt, und auf einem hellen Schirm ging er gegen den Rand der Liste verloren. Ein Klick darauf schaltet gelesen und ungelesen um, ohne die Nachricht zu öffnen oder auszuwählen. Getroffen wird eine breitere Fläche, als zu sehen ist: Vier Punkt trifft niemand mit der Maus. Auf einer gelesenen Zeile erscheint der Streifen blass unter dem Zeiger — eine unsichtbare Fläche, die auf Klick etwas tut, findet sonst niemand.\n\nTrennlinien und Schriftfarbe stehen jetzt im schnellen Ansichts-Menü (die drei Schieberegler oben rechts), nicht mehr nur auf der Einstellungsseite. Beides entscheidet sich am Aussehen der Mailliste — und die ist auf der Einstellungsseite gerade nicht zu sehen. Wer probiert, ob die Linien nun reichen, soll dabei hinsehen können.\n\nDas Verfassen-Fenster merkt sich das Vollbild. Wer einmal auf die ganze Fläche stellt, schreibt lange Mails; ihn bei jedem neuen Entwurf wieder in die Ecke zu setzen, war derselbe Griff jeden Tag. Gemerkt wird nur, was jemand selbst angefasst hat — die Vorgabe bleibt das kleine Fenster. Lage und Grösse des kleinen Fensters bleiben getrennt davon liegen, damit der zweite Druck wirklich dorthin zurückbringt, wo es stand.", - "pub_date": "2026-09-03T08:03:15Z", + "version": "0.2.5", + "notes": "Ein Anhang liess sich nicht öffnen, solange ein Abgleich lief. „Der Kern gleicht gerade ab — gleich noch einmal versuchen.\" Bei einem gewachsenen Postfach dauert ein Abgleich Minuten; wer in dieser Zeit dreimal auf dieselbe Rechnung klickt, bekommt dreimal dieselbe Ausrede und hält das Programm für kaputt. Jetzt stellt sich das Öffnen an, statt aufzugeben — dieselbe Entscheidung, die der Postausgang schon getroffen hatte. Das Warten kostet nichts: Es läuft auf einem eigenen Faden, das Fenster bleibt bedienbar.\n\nPDF wird gezeichnet — im Fenster, ohne Acrobat. Rechnungen kommen als PDF, nicht als Word; das war die auffälligste Lücke. Gezeichnet wird mit pdf.js, demselben Auswerter, der in Firefox jedes PDF anzeigt: in JavaScript geschrieben und damit frei von der Sorte Speicherfehler, aus der die PDF-Lücken der letzten zwanzig Jahre bestehen. Er läuft ohne Netz — Schriften und Zeichentabellen werden nicht nachgeladen —, ohne `eval` und ohne die Anmerkungsschicht: Gezeichnet wird die Seite, Verweise und Formulare bleiben Bild und werden nicht zu Knöpfen, die irgendwohin führen.\n\nGezeichnet wird, was in die Nähe des Blickfelds kommt. Ein Bauantrag mit achtzig Seiten soll nicht erst alle achtzig zeichnen, bevor die erste zu sehen ist.\n\nVideos laufen im Fenster — MP4, WebM und Ogg, mit Bedienelementen und ohne automatisches Abspielen.\n\nAus dem Dateibaum ohne Grössengrenze. Eine Datei auf dem Rechner hat einen Pfad; SHUFTN stellt sie über eine eigene Medienausgabe bereit, und der Abspieler holt sie sich stückweise ab. Damit läuft auch ein Baustellenvideo mit dreihundert Megabyte, und man kann darin springen. Bei einem Anhang gibt es keinen Pfad — der geht als Ganzes hinüber, und dort gilt weiter eine Grenze von 64 MB mit einem Hinweis aufs Standardprogramm.\n\nDie Medienausgabe öffnet einen Port, und das gehört gesagt. Ein Postprogramm, das das tut, muss es sich verdienen; fünf Riegel halten ihn eng:\n\n* Gebunden nur an `127.0.0.1` — aus dem Netz nicht erreichbar, auch nicht aus demselben WLAN. * Ein zufälliger Port, keine feste Nummer, die jemand anlaufen könnte. * Je Datei ein Geheimnis aus 128 zufälligen Bit des Systemgenerators. Ohne das gibt es 404, und raten lässt es sich nicht. * Kein Pfad aus der Anfrage. Ausgeliefert wird, was hinterlegt wurde — die Anfrage nennt eine Kennung, keinen Dateinamen. Damit gibt es keinen Pfad-Ausbruch, weil es keinen Pfad gibt. * Nur solange das Fenster offen ist. Beim Schliessen wird die Kennung zurückgezogen.\n\nWer ein AVI oder ein echtes QuickTime öffnet, bekommt eine Meldung statt eines schwarzen Felds mit einem Abspielknopf, der nichts tut.\n\nTextdateien und Bilder kommen dazu. `.txt` zeigt der Betrachter in fester Breite, damit Spalten aus Tabulatoren stehen bleiben — und er sagt oben, welche Kodierung er angenommen hat. Das ist keine Spielerei: Windows hat drei Sorten Textdatei hinterlassen (UTF-8, UTF-16 und ANSI), und wer stur eine davon liest, macht aus „Grüße\" ein „Gr??e\". Erkannt wird über die Stückliste, dann über die Gültigkeit als UTF-8, sonst Windows-1252. Stehen die Umlaute doch falsch, sieht man wenigstens, wovon der Betrachter ausgegangen ist.\n\nBilder — PNG, JPEG, GIF, BMP, WebP. Decodiert werden sie von der Bildmaschine des Browsers, nicht von SHUFTN. Ein Bilddecoder ist eine der ältesten Angriffsflächen überhaupt; einen eigenen einzubauen wäre mehr Arbeit *und* mehr Risiko. Der Typ kommt aus den ersten Bytes und nicht aus dem Dateinamen: Wer eine HTML-Datei `foto.png` nennt, bekommt eine Meldung.\n\nKein SVG. Ein SVG ist kein Bild, sondern ein Programm — es kann Skripte, Fremdverweise und eingebettete Objekte enthalten. Ein `\u003cimg\u003e` führt davon zwar nichts aus, aber das ist eine Zusicherung des Browsers, und die Zusage dieses Betrachters soll nicht davon abhängen, dass sie eingehalten wird.\n\nEin Dateibaum in SHUFTN — „Dateien\" in der Leiste links. Desktop, Dokumente, Downloads, OneDrive und die Laufwerke; Ordner mit Grösse und Datum, ein Filter für den offenen Ordner, ein Pfad zum Anklicken. Ein Klick auf eine Word- oder Excel-Datei zeigt sie im Betrachter — es muss also nichts mehr aus dem Explorer heraus geöffnet werden, nur um hineinzusehen.\n\nEr liest, und sonst nichts. Er verschiebt nicht, löscht nicht, benennt nicht um und startet nichts. Ein Postprogramm, das Dateien ausführen kann, ist genau die Tür, die man in einem Postprogramm nicht haben will — was einen Anhang gefährlich macht, macht auch eine Datei auf der Platte gefährlich, und der Weg vom Anhang zur Platte ist ein Doppelklick. Wer etwas starten will, hat den Windows-Explorer; der Knopf „Im Explorer\" führt dorthin, und zwar zum Ordner: Derselbe Aufruf mit einer Datei würde sie ausführen.\n\nAus demselben Grund liest SHUFTN von der Platte nur `.docx` und `.xlsx` — und prüft die Endung, bevor es die Datei anfasst. Sonst wäre der Befehl ein allgemeines „lies mir irgendeine Datei\".\n\nSHUFTN zeigt Word- und Excel-Dateien selbst. Ein Klick auf einen `.docx`- oder `.xlsx`-Anhang öffnet ihn im Programm statt in Word — mit Überschriften, Fettdruck, Tabellen und Listen, bei Mappen mit Blattreitern, Spaltenköpfen und den richtigen Zeilennummern. Der Knopf mit der Lupe oben rechts nimmt dafür auch Dateien vom Rechner. Der Weg nach draussen bleibt: Am Anhang sitzt ein zweiter Knopf, der ihn wie bisher ins Standardprogramm gibt.\n\nDer Betrachter ist absichtlich misstrauisch gebaut, denn ein Dokument ist eine fremde Datei, die auf dem eigenen Rechner ausgewertet wird — die gleiche Klasse wie ein Mailanhang:\n\n* Es wird nie HTML erzeugt. Der Kern gibt Absätze, Läufe und Zellen heraus, die Oberfläche baut daraus Elemente. Damit gibt es keine Stelle, an der Text aus einer fremden Datei zu Auszeichnung werden könnte. * Makros werden erkannt, gemeldet und nicht angefasst. Es gibt in der Kiste keinen Weg, der irgendetwas ausführt. * Eine Dokumenttyp-Deklaration wird abgelehnt, nicht ausgewertet. Damit fallen zwei Angriffe auf einmal weg: Dateien vom Rechner in das Dokument zu holen, und aus einer Kilobyte-Datei Gigabytes im Speicher zu machen. * Nichts wird nachgeladen. Verweise nach draussen werden gezählt und übersprungen — ein Betrachter, der beim Öffnen eine Adresse abruft, verrät dem Absender, dass gelesen wurde. * Grenzen werden beim Lesen geprüft, nicht der Datei geglaubt. Ein Zip-Eintrag nennt seine entpackte Grösse selbst; eine Zip-Bombe nennt sie falsch.\n\nWas übergangen wurde, steht als Hinweis über dem Dokument. Ein Betrachter, der schweigend die Hälfte weglässt, ist schlimmer als keiner — weil man ihm glaubt.\n\nWas er nicht ist: ein Ersatz für Word. Die Treue reicht zum Lesen; Seitenumbrüche, Kopfzeilen, Bilder und Zeichnungen gibt es nicht, Formeln werden nicht gerechnet. Zum Bearbeiten führt der zweite Knopf hinaus.", + "pub_date": "2026-09-03T09:38:15Z", "platforms": { "windows-x86_64": { - "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbENEalUzQ3RFRDk5OWRicHJIUVVvWTZwRCtxSkVRTXZXL2hhaDdvdnpuSzI1eVJWTzFyUm9BbTdZVlJPS3IvaDJ6M0UxZyt3SUNuUWlUYUkyQnlXZ0hDYVNhTnMvRUFZPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg4NDIyNDAzCWZpbGU6U0hVRlROXzAuMi40X3g2NC1zZXR1cC5leGUKSVY2YkZkZFRycmpqWFZsK3czQXp0bmZEUXpOTEN2dFVELzJZdnNwVFNOWml0d2drMVNZRXhERkMzdThoenU1aEcyQ3V2amdTdVFJTExUZGVtRk5nQXc9PQo=", - "url": "https://gitea.itm-technologies.de/ITM-GmbH/shuftn-releases/releases/download/v0.2.4/SHUFTN_0.2.4_x64-setup.exe" + "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbENEalUzQ3RFRDJjNUpOd09zUVQ3dTYxRTlLZXRsV2lneG9vV0MwejBzQkxraXpjNmlFaXZYTVhsbFFCaGdxS043aUxBWkNUeVJlS3Qrc29CTlBYR2dIQklMT3pwcWdJPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg4NDI4MjUzCWZpbGU6U0hVRlROXzAuMi41X3g2NC1zZXR1cC5leGUKdCtPVmlqUTJvZ2JIQXMyQzR6dEFPa3lsTDZWcDM1b3hkZ0RKQnNzbXYrL1YxdkFiZTVXOEVwSjBUL0x0Z2JCS1hqUTZMTEZyK2c5TlZPMXJqdWR5QlE9PQo=", + "url": "https://gitea.itm-technologies.de/ITM-GmbH/shuftn-releases/releases/download/v0.2.5/SHUFTN_0.2.5_x64-setup.exe" } } } \ No newline at end of file