Skip to content

Decide what happens to the orphaned IssuesTable #382

Description

@frankieramirez

Part of #353.

Question

IssuesTable.tsx has no caller. What happens to it?

Established in #364: grep -rn "IssuesTable" across the frontend finds only the file's own declaration and an unused IssuesTableProps (types/components.ts:62, re-exported at types/index.ts:102). #137 "Major frontend redesign" (2026-04-18) removed both the import and <IssuesTable issues={issues} isManga={isManga} comicId={comicId} /> from SeriesDetailPage, which now hand-rolls the list at :646 with filteredIssues.map(...). 834 lines, 0.00% coverage, dead three months.

This is a scoping decision, not a technical one — the map's destination names the tables it covers, and two of them turn out not to exist.

Decide:

  1. Delete, revive, or rule out of scope? Deleting removes two of the eight instances and the map's getRowId/pruning work shrinks accordingly. Reviving means SeriesDetailPage's hand-rolled list goes back to TanStack — a rendering change the map has consistently ruled out elsewhere (ArcIssueTable, SearchResultsTable, and chore(frontend): Remove the unused schema-driven table system #308's warning about generalising surfaces with no callers). Ruling it out of scope leaves the dead file in place and out of the migration.
  2. Does the destination get redrawn? It says useTableState owns state for all seven tables and that useActivityTableState is deleted. If IssuesTable goes, the destination should say six live instances in five files, not seven.
  3. Two decisions rest on this file and need re-basing either way. Decide how the hook expresses pagination across four models #360's model B (TanStack slices, uncontrolled — initialState.pagination.pageSize: 50) has chaptersTable as its only instance, so the uncontrolled arm of pagination?: { pageSize } currently serves nothing live. And Decide the hook's surface area and the selection ownership model #359 justified selectAllScope being required on IssuesTable's page scope; Validate the interface against all seven call sites and measure their coverage #364 found SeriesTable:485 is also page-scoped, so the parameter survives on live evidence — but at 20–24 rows a page, not the 50 that made Decide the hook's surface area and the selection ownership model #359's argument vivid.
  4. The map records a "live fix: Decode queue table selection by row identity #307-class defect" here. Validate the interface against all seven call sites and measure their coverage #364 confirms it is source-consistent — the decode at :186-193 indexes filteredByStatus, :554 passes rowSelection with no getRowId, and setStatusFilter (:635) never clears it — but unreachable. If the file is deleted, that stops being one of the map's two identity defects and the fog entry Where the two identity fixes ship covers one, not two.

Note: #308 is the standing warning in the map's Notes — 7,447 lines deleted for having no callers. This is the same shape at smaller scale, and the map's own reframe ("generalise a hook that already has callers") argues against carrying a callerless table through the migration.

Metadata

Metadata

Labels

wayfinder:grillingWayfinder ticket: HITL grilling session

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions