http.compressionThreshold: docs say default 1200, shipped config sets 0 (compression off by default)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- documentation
Línea de trabajo
Comienza revisando las cuatro ubicaciones de documentación citadas y confirmando con la persona responsable de static/defaultConfig.yaml de Harper si compressionThreshold: 0 es intencional. Después verifica la inconsistencia correspondiente de Harper y el problema de streams de #655 antes de actualizar de forma coherente todos los valores documentados; se considera terminado cuando la decisión entre repositorios queda registrada y las cuatro páginas coinciden con el comportamiento distribuido.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What's wrong
The docs state that http.compressionThreshold defaults to 1200 bytes, so Brotli response compression is on out of the box. Harper's shipped configuration sets it to 0, and the runtime treats 0 as "off" — so on a default install, Brotli response compression never happens.
The root cause is not in this repo. Harper contradicts itself, and our docs faithfully mirror the half of it that isn't what actually ships.
Evidence (harper origin/main)
| Location | Says |
|---|---|
config-root.schema.json:25-31 |
property description: "Responses larger than this threshold (bytes) will be compressed... Default: 1200" |
config-root.schema.json:774 |
examples block: "compressionThreshold": 1200 |
static/defaultConfig.yaml:4 |
compressionThreshold: 0 — this is what gets written into a new install's config |
validation/configValidator.ts:329 |
compressionThreshold: number.optional() — no default injected |
server/serverHelpers/contentTypes.ts:362 |
const COMPRESSION_THRESHOLD = envMgr.get(CONFIG_PARAMS.HTTP_COMPRESSIONTHRESHOLD) — no || fallback, so a configured 0 stays 0 |
server/serverHelpers/contentTypes.ts:373 |
canCompress = COMPRESSION_THRESHOLD && request.headers...includes('br') — 0 is falsy, so compression is skipped entirely |
So the schema documents 1200, the shipped template sets 0, and the runtime honors 0. There is no code-level 1200 default anywhere.
Note this is specifically http.compressionThreshold. The unrelated storage.compressionThreshold (LMDB record compression) does have a real code default — (storage.pageSize || 4096) - 60 at resources/databases.ts:102 — which makes this easy to conflate when grepping.
Affected pages in this repo
reference/configuration/options.md:37- "Default:1200(bytes)"reference/http/configuration.md:111- thehttp.compressionThresholdsection, plus1200in examples at:123and:318reference/http/overview.md:104- "Compression applies when the response body exceeds the configuredcompressionThreshold(default 1200 bytes)"reference/configuration/operations.md:106-"compressionThreshold": 1200in a config response example
The question that has to be answered first
Is compressionThreshold: 0 in the shipped config intentional? The docs fix depends entirely on the answer, and the two outcomes are very different:
- If 0 is a bug in harper - Brotli compression has been silently off for every default install. That is the real finding here, and the fix belongs in
static/defaultConfig.yaml. Our docs then need no change beyond possibly noting the versions affected. - If 0 is intentional - then harper's own schema description and examples are wrong too, and our four locations should say compression is disabled by default and must be explicitly enabled. In that case
config-root.schema.jsonshould be corrected alongside.
Either way one of the two harper locations is wrong, so this likely wants a companion harper issue; transferring or cross-linking is fine.
Why it matters beyond a wrong number
Two things downstream depend on this:
- Anyone following our docs believes responses over 1200 bytes are compressed. If they are not, that is a real and invisible performance difference on a default install.
- There is a latent crash gated behind this setting.
contentTypes.ts:410-425pipesserializeStream's return value intocreateBrotliCompress()whenevercanCompressis true, but theapplication/x-msgpackhandler returns aBuffer(not a stream) for a plain array.Accept: application/x-msgpack+Accept-Encoding: br+ an array body would throwTypeError: stream.pipe is not a function. That is currently unreachable only because compression ships disabled - so if the default is "corrected" to 1200 without fixing the pipe path first, this becomes reachable the same day. Sequencing matters. Surfaced in #655.
Suggested fix
- Get a ruling from whoever owns
static/defaultConfig.yamlon whether 0 is intended. - Fix harper's inconsistency (either the shipped default or the schema description + examples).
- Update the four locations above to match, in one pass so they cannot disagree with each other.
- Track the
.pipe()normalization separately, and land it before any change that turns compression on by default.
sent with Claude Opus 5
- Lenguaje dominante
- MDX
- Estrellas
- 9
- Forks
- 9
- Merge medio
- 2 d 3 h
- PR fusionados (30 d)
- 30
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de HarperFast/documentation
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
HarperFast/documentation#677 ·
-
Document markCredentialRejection / credentialRejectionError, the server.getUser rejection tag Abierto
Dificultad 2/5 Medio día Aptitud para principiantes 88/100
HarperFast/documentation#675 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
HarperFast/documentation#665 ·
-
Add Harper deploy behavior Abiertocontent
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
HarperFast/documentation#478 ·
-
content
Dificultad 1/5 Menos de una hora Aptitud para principiantes 76/100
HarperFast/documentation#399 · 2 comentarios ·
Todos los issues de HarperFast/documentation
Issues similares
-
Crush Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
catppuccin/catppuccin#3125 ·
-
Link Checker Report Abiertoautomated issue report
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
VoltAgent/awesome-design-md#469 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
KhronosGroup/glTF#2648 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
sccn/sccn.github.io#108 ·