Skip to content

Lists: card, grid and ERD view modes #52

Description

@Adron

Part of #49 — Lists parity gaps: GitHub-backed lists, saved views, view modes and collaborative editing

The features page advertises viewing list data as cards, a grid, or an ERD diagram, and
lists can be nested and connected as a graph. Android renders a single table-ish layout.

  • Cards — the mode that actually suits a phone; probably the sensible Android default.
  • Grid — the dense spreadsheet view; needs horizontal scrolling and frozen first column to be
    usable on a phone.
  • ERD — the relationship diagram across connected lists; :feature:lists already models
    connections (GET /api/lists/connections), so the data is there.

Each mode should be selectable per view (see the saved-views sub-issue) rather than being a global
toggle.

Tests: Compose tests per mode; wide-table horizontal scrolling.


Filed from the parity review of feature/parity-wip @ 14d7795 against interlinedlist.com (OpenAPI /api/openapi.json, 233 paths) and the public help centre.

Activity

  1. added
    parityClosing a gap against interlinedlist.com
    P2Completeness / settings surface
    on Sep 15, 2026
  2. Adron commented on Sep 16, 2026

    @Adron
    MemberAuthor

    Blocked on a question — this issue's core assumption is not supported by the live API

    Picked this up after #51 (saved views) landed, and stopped. #51 needed the saved-view config shape
    confirmed live, so I created a view on the test account and probed it. That probe contradicts what
    this issue assumes.

    config.mode only ever stores records. I sent each of these as config.mode on
    PUT /api/lists/{id}/views/{viewId}:

    cards, card, grid, table, erd, diagram, board, gallery, kanban, list

    Every one came back as "mode": "records", with HTTP 200 and no error. The server silently
    rewrites an unrecognised value rather than rejecting it. (density behaves the same way — it
    accepted comfortable and compact, and quietly rewrote cozy and spacious to comfortable.)

    So a saved view cannot currently record "this list renders as cards / a grid / an ERD", which is
    what this issue is asking Android to build.

    What I need from you

    1. Where does the web store the view mode? Three possibilities:
      • (a) It is client-side only — the web keeps card/grid/ERD in local state or localStorage and
        never persists it per-view. If so, this issue is still buildable, but as a device-local
        preference, and it will not follow the user between web and Android. Confirm that is
        acceptable and I will build it that way.
      • (b) It lives under a different config key that I did not guess. Tell me the key and the
        accepted values and I will implement it properly.
      • (c) It is gated on something the test account (messenger, a subscriber) lacks.
    2. What are the real accepted values for config.mode? records is the only one I could
      observe. If the set is larger, I need the exact strings — guessing is what produced the silent
      rewrites above.
    3. Is the ERD view meaningful on a phone? An entity-relationship diagram of a list's connections
      is the one of the three that may not survive the form factor. If you want it, I would rather
      design it deliberately than shrink the web's rendering.

    What is already in place

    #51 built the client half so nothing is lost whichever answer comes back: ListViewConfig preserves
    config keys the client does not model through a full round-trip, and exposes storedMode so the
    server's actual value is always visible. When the mechanism is confirmed, this issue is mostly
    extending one enum plus the three renderers.

    Leaving this open and unimplemented until the above is settled.

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

    P2Completeness / settings surfacearea:listsListsparityClosing a gap against interlinedlist.com

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions