Skip to content

fix(datagrid): honor binary UUID display - #2159

Draft
sophiathedev wants to merge 3 commits into
TableProApp:mainfrom
sophiathedev:fix/2157-binary-uuid-display
Draft

fix(datagrid): honor binary UUID display#2159
sophiathedev wants to merge 3 commits into
TableProApp:mainfrom
sophiathedev:fix/2157-binary-uuid-display

Conversation

@sophiathedev

@sophiathedev sophiathedev commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • honor Display As > UUID for generic 16-byte SQL binary cells in the grid,
    row inspector, VoiceOver, and single-cell copy
  • persist an explicit Raw Value choice and isolate formats by duplicate column
    occurrence and pinned result set
  • keep mounted cells, the inspector, and active value filters consistent when a
    display format changes
  • leave undecoded MongoDB binary values in hex so BSON subtype and legacy byte
    order remain owned by the MongoDB driver

Root cause

The typed binary formatting path returned compact hex before consulting the
column's display format. The same early return also affected direct cell copy.
The surrounding display state was keyed only by column label and tab, so format
changes could leave mounted cells, filters, the inspector, or pinned results
using stale state.

MongoDB boundary

Issue #2157 led to this investigation, but MongoDB subtype 3 values cannot be
safely interpreted without their configured Java, C#, or Python legacy byte
order. This change does not guess that order. If the driver has not decoded a
MongoDB binary UUID, the host keeps it as hex and the connection's Legacy UUID
Encoding
setting remains authoritative.

Related to #2157.

Preview

The preview uses an isolated SQLite fixture with two generic 16-byte BLOBs.

Before

Binary cells use compact hexadecimal output.

Binary UUID values before formatting

After

Display As > UUID renders the same stored bytes as lowercase UUIDs.

Binary UUID values after formatting

Testing

  • focused formatter, storage, grid cache, live reload, copy, filter,
    accessibility, inspector-trigger, and MongoDB codec/flattener suites
  • neighboring result-pinning, layout, width, keyboard-copy, display-mapping,
    interaction, filter-state, and tab-switch suites
  • strict SwiftLint on all 25 changed Swift files with zero violations
  • unsigned TablePro Debug build
  • git diff --check
  • final independent AppKit/state and plugin-boundary reviews with no findings

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant