Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Pin the named-but-unassigned StrokeConfig scalars to byte offsets

Abierto
#71 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
45/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
cpp, typescript

Línea de trabajo

Start with Part 1.4 of plans/vector-format-spec.md and use its extraction recipe to inspect the flutter_note_lib.dll binary. Trace logTrails field accesses in a disassembler, using the named log strings as anchors, and compare them with the StrokeConfig parse path in SnProcess/SnFileProcess/sndatafile.cpp. Done means the six named scalars are mapped to offsets in the StrokeConfig table.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Split out from #69 (Part 1.4 of plans/vector-format-spec.md).

logTrails in flutter_note_lib.dll gives Ratta's own name for every field in the stroke record, but it prints the fixed-size scalars in an order that is not the struct order (they appear reversed in .rdata, and the log function is free to print in any order anyway). So we gained the names without gaining the offsets.

Named but unplaced

flagSpecial, preNum, fontWidth, flagPenUp, trailNum, walcomEmrType

Slots they have to fill

From the StrokeConfig table, the offsets that read constant across every fixture and are still labelled unk_*:

Offset Current label Observed
16 unk_1 0 everywhere
24 unk_2 always u32::MAX
32 unk_3 0 everywhere
36 unk_4 0 everywhere
40 unk_5 always 5000
124 unk_6 26 everywhere

One placement is already strongly suggested: fontWidth at 16, sitting immediately before the confirmed font_height at 20.

Why it matters

Mostly as an enabler for #70 (erase-vs-select discriminator) and #72 (m_trailStatus codes) — these scalars are the main remaining candidates for carrying the erase/select distinction. On their own they're low-stakes; nothing in the current renderer needs them.

Approach

Values are constant across our whole fixture set, so differential fixtures alone won't separate them — this likely needs the binary. logTrails reads the struct in memory, so following its field accesses in a disassembler gives the offsets directly, and the log strings are ready-made anchors. SnProcess/SnFileProcess/sndatafile.cpp is the parse side.

Extraction recipe is in Part 1.4 of the spec (Inno Setup installer, plain LZMA1 payload, works on Linux).

Lenguaje dominante
TypeScript
Estrellas
42
Forks
9
Merge medio
30 min
PR fusionados (30 d)
2

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de philips/supernote-typescript

Todos los issues de philips/supernote-typescript

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.