Skip to content

feat(erd): nullability, optional/mandatory edge ends, edge tooltip #1156

Description

@ZhuchkaTriplesix

Problem

  • Nullability is not loaded by ErdCatalog, so the crow's foot always means "many": "zero or many" (nullable FK) and "one or many" look the same, and a nullable column is not marked on the card.
  • An edge has no label on screen; which columns it joins is visible only by following it to the rows (the SVG has a <title>, the screen does not).

Scope

  • Catalog: is_nullable for PostgreSQL / MySQL (information_schema.columns), pragma_table_info.notnull for SQLite; ErdColumn.isNullable.
  • Card: nullable columns marked (muted ? or null after the type).
  • Edge ends: optional side drawn with a circle (crow's foot + circle for a nullable FK), mandatory with a bar; the same in SVG.
  • Hover on an edge: tooltip orders.customer_id → customers.id (hit test on the route with a few px tolerance).

Acceptance

  • Nullable FK and NOT NULL FK draw different end markers, on screen and in SVG.
  • Hovering an edge shows its columns.
  • Catalog tests per dialect include nullability.

Activity

  1. added
    enhancementNew feature or request
    frontendTheme parser epic label: frontend
    uiUser interface components and widgets
    P3Low priority / Polish & Enhancements
    on Oct 8, 2026
  2. added 3 commits that reference this issue on Oct 9, 2026
  3. ZhuchkaTriplesix commented on Oct 9, 2026

    @ZhuchkaTriplesix
    MemberAuthor

    Closed by #1182 and #1203. Acceptance covered by tests on dev.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low priority / Polish & EnhancementsenhancementNew feature or requestfrontendTheme parser epic label: frontenduiUser interface components and widgets

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions