Skip to content

0.6.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 22:11
· 23 commits to master since this release
v0.6.0
c547f39

Two themes. A GEDCOM file is allowed to indent itself, and files in the wild do —
so those are now read, highlighted and folded like any other, whatever they indent
with. And the panels stop showing the reader the file's own shorthand: slashes
around a surname, F for a sex, a URL that cannot be clicked, a hover that
answers "Text."

Added

  • Indented files are read as first-class. The specification puts the level
    number first on the line with nothing before it, but plenty of exporters
    indent anyway to show the hierarchy, and such a file is now lexed,
    highlighted, folded and validated exactly as a flat one is. detectIndentation
    reports the habit — spaces, tabs or both, the width per level, and any line
    that departs from it.

    A tab's width is the only thing a file cannot state. Where tabs and spaces are
    mixed it is solved by search over the widths anything has ever defaulted to,
    because the direct calculation needs a space-only line at the same level to
    measure against and a file whose first levels are tabs never provides one.

  • Seven fixtures/style/ files carrying the same family tree at one, two and
    four spaces per level, at tabs, and at tabs-then-spaces with the tab standing
    for two, four and eight columns. A test asserts all seven parse to the same
    tree, which is the load-bearing claim: the level number states the hierarchy
    and the whitespace states nothing.

  • A sentence about what each tag is for, in hovers. The registry we vendor is
    a machine's view of the format — tags, payload types, cardinalities, labels —
    and carries no prose, so a hover over OCCU answered with "Text.", which the
    reader could see for themselves.
    Roughly ninety structures now carry a written gloss, and the payload line is
    dropped where the gloss has already said what belongs there. Across the fixture
    corpus this takes the hovers that said nothing from several hundred to none.

  • Links and image previews in the details panel. A URL anywhere in a field —
    a media object's FILE, a WWW, an address written into a note — is now a
    link that opens in the browser, and media the file identifies as a picture is
    shown as a thumbnail beneath its row.

    http and https only. A FILE payload is free text from a document the
    reader may merely have been sent, and javascript:, file: and vscode: URIs
    would otherwise be handed to the machine by a click; the scheme is checked in
    the extension host rather than trusted from the panel.

    Previews are on by default and gedcom.details.imagePreviews turns them off.
    Off rewrites the panel's content security policy rather than merely suppressing
    the <img>, so the panel is then unable to make a request rather than
    disinclined to — the point of the setting is that a photograph hosted by a
    genealogy site does not get to learn that the file is being read, and from
    where. Even on, only https is permitted.

Fixed

  • A media object written inline was reported as a broken pointer. GEDCOM
    5.5.1 lets OBJE, among others, be written either as a pointer or with the
    record's substructures in place of the payload, and the second form is common
    in real files. Only the payload-less form is exempt: 1 ASSO @I1@ df is still
    wrong however many substructures follow it.

  • A date's time of day was dropped from the details panel. TIME hangs under
    DATE rather than beside it, in 5.5.1 and 7.0 alike, and the panel read only
    the date — so a change record, whose entire purpose is to say when, showed
    14 FEB 1998 and threw away 09:22:41. The parse tree was right throughout;
    only the reading of it was wrong.

Changed

  • A name is read rather than copied. The slashes in /Family/ Personal are
    how GEDCOM marks the surname, not punctuation, and the details panel was
    printing them. It now shows the name without them, in the order the file wrote
    — that order is itself information, since the format exists to carry names from
    cultures that write the surname first — and lists the parts beneath, from the
    GIVN and SURN substructures where the file states them and from its own
    reading of the string where it does not.

    Where a person holds several names, the TYPE beneath each becomes its label,
    so two rows are no longer both called "Name".

  • A structure carrying nothing says so. 1 _MAYBE with no payload and nothing
    beneath it used to render as "recorded", a word the file never said. It is now
    marked as having no value, in italic and dimmed, so that a tag someone wrote and
    left blank is visible as exactly that.

  • Coded values are shown in English. The details panel expands an enumerated
    payload to its meaning — Sex: Female, not Sex: F — for every enumeration
    the extension models, not only SEX. Inlay hints capitalise the same labels,
    since a hint is a caption beside the line rather than a clause continuing it.

  • The details panel names a media object by its own title rather than by its tag,
    and says what kind of file it is — read from the FORM where the file writes
    one and from the path's extension where it does not. A residence with an
    address but no place now shows the address instead of the word "recorded".