From 7527c35208ab1bcd382d1f6d4bdca30a23665968 Mon Sep 17 00:00:00 2001 From: dev Date: Thu, 1 Oct 2026 00:55:45 +0200 Subject: [PATCH] Format 3, step 8: the README, and whole paths on a phone - README: format 3 in the table of contents and in the current version, and the coverage thresholds as vitest.config.ts has them, prefix.ts and the modules of the page included. - /create: each path is a textarea of one row that grows with its content where the browser can size it, so that a long path shows its end, the file name, on a phone of 375 px too. Enter adds no line. Co-Authored-By: Claude Opus 5.5 --- README.md | 5 +++-- src/routes/create/+page.svelte | 14 +++++++++++--- vitest.config.ts | 4 ++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index acd88cd..bcfabf5 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ La implementación de referencia es la librería Go `g.activething.com/go/DateKe | Página inspector, sin red | SvelteKit estático: `src/routes/`, `src/lib/inspector/`, `src/lib/components/` | 5 | hecho | | Apertura de cápsulas en el navegador, y la acción "abrir" de la página | fase 2 (`PLAN_fase2_ibe_noble2.md`, en `../docs`) | 6 | hecho (pasos 2 a 8 de la fase 2) | | Escritura de cápsulas en TypeScript | fase 3 (`PLAN_fase3_escritura.md`, en `../docs`) | 7 | hecho: la librería, su interoperabilidad con Go y la página `/create` (pasos 0 a 7 del plan) | +| Formato 3, especificación 0.10 (entrega 1) | `PLAN_formato3_ts.md`, en `../docs`, rama `v0.10` | — | hecho: la lectura y la escritura del formato 3, las reglas de las rutas, el ZIP de la página, `/inspect` y `/create` con ficheros y carpetas (pasos 0 a 8 del plan) | ## Versiones @@ -25,7 +26,7 @@ Hay tres números de versión, cada uno con su significado, como en la referenci `version.test.ts` comprueba que `VERSION` coincide con `package.json` y con su lockfile, y que `SPEC_VERSION` es la versión que nombran los vectores y fixtures compartidos; `vectors.test.ts` exige esa versión a cada fichero. El pie de la página muestra las dos. -La versión actual es `0.2.0-dev`: la fase 3 añade la escritura de cápsulas de formato 2 y, en la rama `v0.10`, el plan del formato 3 (`PLAN_formato3_ts.md`, en `../docs`) añade la especificación 0.10: por ahora, la lectura del formato 3. La última publicada es `0.1.0`, del 29 de septiembre de 2026, con el tag `v0.1.0`, que cubre: +La versión actual es `0.2.0-dev`: la fase 3 añade la escritura de cápsulas de formato 2 y, en la rama `v0.10`, el plan del formato 3 (`PLAN_formato3_ts.md`, en `../docs`) añade la especificación 0.10: lee los formatos 1 a 3, escribe el 3, y el 2 solo como generador de vectores (§62.1, regla 1), y las páginas abren y crean cápsulas de formato 3 con ficheros y carpetas. El número de la versión que lo publique lo decide el autor. La última publicada es `0.1.0`, del 29 de septiembre de 2026, con el tag `v0.1.0`, que cubre: - la especificación 0.9: lee los formatos de cápsula 1 y 2 (escribir, que solo escribirá el formato 2, llega en la fase 3); - solo el scheme de Quicknet (`bls-unchained-g1-rfc9380`): un perfil de otro scheme se inspecciona, pero su release no se verifica (decisión 3 del plan de la fase 2); - la inspección de los pasos 1 a 8 y la apertura de los pasos 9 a 18 (`open.ts`), desde un `Uint8Array` o un `Blob` y hacia memoria o hacia un stream de salida, como el de un fichero OPFS, también desde la página `/inspect`. Escribir cápsulas llega en la fase 3; @@ -244,7 +245,7 @@ npm run build:check # solo la comprobación del sitio ya construido npm run verify # check, typecheck, coverage y build (con su comprobación) ``` -Umbrales de cobertura (`vitest.config.ts`): `cbor.ts`, `ibe.ts`, `release.ts`, `tlock.ts`, `x25519.ts`, `bech32.ts`, `digest.ts`, `padding.ts`, `agefile.ts`, `recipient.ts`, `random.ts`, `writer.ts`, `encrypt.ts` y `lengths.ts`, y `localtime.ts`, `create-input.ts` y `creator.ts` de la página, al 100 % en líneas, ramas, funciones y sentencias; el conjunto de `src/lib/dkc` al 95/90/95/95, y el de `src/lib/inspector` también. +Umbrales de cobertura (`vitest.config.ts`), al 100 % en líneas, ramas, funciones y sentencias: de la librería, `cbor.ts`, `ibe.ts`, `release.ts`, `x25519.ts`, `bech32.ts`, `digest.ts`, `tlock.ts`, `prefix.ts`, `recipient.ts`, `random.ts`, `agefile.ts`, `padding.ts`, `writer.ts`, `encrypt.ts` y `lengths.ts`, y los del formato 3, `pathrule.ts`, `body.ts`, `security.ts`, `head.ts`, `open3.ts` y `sink.ts`; de la página, `fixtures.ts`, `opener.ts`, `opening.ts`, `release-input.ts`, `tempfile.ts`, `localtime.ts`, `create-input.ts` y `creator.ts`, y los del formato 3, `crc32.ts`, `zip.ts`, `zipsink.ts`, `files.ts`, `create-files.ts` y `create-check.ts`. El conjunto de `src/lib/dkc` al 95/90/95/95, y el de `src/lib/inspector` también. `vitest.config.ts` es la configuración de los tests; `vite.config.ts`, la del sitio con el plugin de SvelteKit. Vitest prefiere la primera, así que los tests de `src/lib` corren sin SvelteKit, y `src/lib/inspector` importa la librería por rutas relativas, sin el alias `$lib`. `tsconfig.json` extiende el que genera `svelte-kit sync` (por eso `typecheck` y `check` lo ejecutan antes, y `npm install` también, con `prepare`). diff --git a/src/routes/create/+page.svelte b/src/routes/create/+page.svelte index 4f991ba..e28762d 100644 --- a/src/routes/create/+page.svelte +++ b/src/routes/create/+page.svelte @@ -743,20 +743,26 @@ aria-label={`Guardar ${escapeInvisible(e.original)} en la cápsula`} />
- +

{formatByteCount(e.file.size)}{withMtime ? `, ${fileDate(e.file)}` : ''}{e.path === e.original ? '' @@ -1294,6 +1300,8 @@ .entry .path { font-family: var(--mono); font-size: 0.85rem; + field-sizing: content; + resize: none; } .files .left .path { text-decoration: line-through; diff --git a/vitest.config.ts b/vitest.config.ts index 00441f0..873953a 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -51,8 +51,8 @@ export default defineConfig({ 'src/lib/inspector/creator.ts': { 100: true }, // Format 3 (plan of format 3 in datekeys-ts): the rules of the paths // and texts of the head, the codec of BODY, of the security area and of - // the head, step 17 and its sink, and the ZIP in which the page - // delivers files. + // the head, step 17 and its sink, the ZIP in which the page delivers + // files, and what the pages show and check of the files. 'src/lib/dkc/pathrule.ts': { 100: true }, 'src/lib/dkc/body.ts': { 100: true }, 'src/lib/dkc/security.ts': { 100: true },