Make the writing surface a sheet of paper
It was a page-shaped box that was not page-coloured: the same fill as everything around it with a hairline border, so it read as an empty panel. Now it is warm off-white in daylight and a raised surface at night — deliberately not a white rectangle, since a page that glows brighter than the room is what makes an app unusable in the evening. The line ran to 84 characters, past the width at which the eye reliably finds the start of the next line, and that was the single biggest reason the surface read badly. Measured, not guessed: 620px of sheet with a 56px margin gives about 73. It is centred now — it used to sit 28px from the left and stop short of the right — with almost square corners instead of a dialog's 14px radius. Blocks on the sheet are tinted from paper rather than from the app background, or they read as sitting underneath it. Five German strings survived the earlier pass, "Alle Notizen exportieren" among them: that sweep filtered on umlauts, so sentences without one went straight through. Swept again by word. 218 unit tests, 244 browser checks across eleven suites. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
11f37b7921
commit
c12ffa250e
10 files changed
+82
-27
No files matched your search
@@ -40,7 +40,7 @@ describe("readZip", () => {
|
||||
});
|
||||
|
||||
it("refuses something that is not a ZIP", async () => {
|
||||
await expect(readZip(new TextEncoder().encode("nur Text").buffer)).rejects.toThrow(/keine ZIP/);
|
||||
await expect(readZip(new TextEncoder().encode("nur Text").buffer)).rejects.toThrow(/not a ZIP/);
|
||||
});
|
||||
|
||||
it("returns an empty list for an archive with no entries", async () => {
|
||||
|
||||
@@ -35,7 +35,7 @@ function findEocd(view: DataView): number {
|
||||
|
||||
async function inflateRaw(bytes: Uint8Array): Promise<Uint8Array> {
|
||||
if (typeof DecompressionStream === "undefined") {
|
||||
throw new Error("Dieses Archiv ist komprimiert; der Browser kann es nicht entpacken.");
|
||||
throw new Error("This archive is compressed and the browser cannot unpack it.");
|
||||
}
|
||||
const copy = new Uint8Array(bytes.byteLength);
|
||||
copy.set(bytes);
|
||||
@@ -53,7 +53,7 @@ export async function readZip(buffer: ArrayBuffer): Promise<ZipFile[]> {
|
||||
const all = new Uint8Array(buffer);
|
||||
|
||||
const eocd = findEocd(view);
|
||||
if (eocd < 0) throw new Error("Das ist keine ZIP-Datei.");
|
||||
if (eocd < 0) throw new Error("That is not a ZIP file.");
|
||||
|
||||
const count = view.getUint16(eocd + 10, true);
|
||||
let at = view.getUint32(eocd + 16, true);
|
||||
|
||||
Reference in new issue
Block a user