Skip to content

Preserve roadmap title truncation and date-field display settings #65

Description

@SIkebe

Background

The live GitHub Projects Roadmap UI exposes Truncate titles and Show date fields controls in the Markers overlay. The current ghpmv UI map records both controls, but RoadmapSettingsSnapshot stores only start/target fields, zoom, and markers.

Confirmed API and documentation status (2026-08-19)

These controls are undocumented browser-only settings.

  • GitHub.com GraphQL exposes no Roadmap configuration object beyond the ROADMAP_LAYOUT enum value; ProjectV2ViewConfiguration contains only visible fields.
  • The REST view create endpoint can select layout: roadmap but has no Roadmap-specific marker, zoom, title-truncation, or date-display parameters.
  • The current official Roadmap customization page documents date fields, markers, zoom, slicing, sorting, grouping, and sums, but does not mention Truncate titles or Show date fields.
  • Their current existence is supported by ghpmv's live UI discovery, not by a published GitHub product contract.

Discovery gate

Before implementation, re-run live UI discovery and record:

  • whether each control still exists;
  • whether its state persists after save and reload;
  • exact role/name selectors and overlay scope;
  • whether the state is shared or per-view;
  • whether the menu text exposes the current value.

If either control no longer exists or is not persistent, update this issue with the evidence and narrow/close that part instead of implementing speculative state.

Implementation scope

  • Add nullable TruncateTitles and ShowDateFields properties only after the discovery gate succeeds.
  • Export, import, and verify each control independently from marker selection.
  • Preserve legacy/API-only behavior through nullable capture semantics.
  • Produce property-specific warnings when the UI cannot be read or written.

Test strategy

  • Add serialization, compatibility, and verifier tests for all four boolean combinations.
  • Add Playwright round-trip and drift tests after selectors and persistence are confirmed.
  • Do not add Integration tests for these settings because REST/GraphQL exposes no corresponding data.
  • Browser tests must use cancellation tokens and finally cleanup.

ghpmv-e2e-validation skill integration

Do not add a separate user-facing scenario selector for this issue. After discovery, extend the existing browser-e2e flow conditionally for controls that are confirmed persistent.

Do not add executable checkpoints until the discovery gate proves that each control is present and persistent. After that gate:

  • Extend the UI fixture builder/setup --fixture --fixture-ui path with long titles, populated date fields, and deterministic combinations of every confirmed control.
  • Extend the existing browser-e2e fixture/checkpoints; the skill must announce the created Projects and current undocumented-UI risk.
  • Require source save/reload persistence before export.
  • Require Step 6 snapshot inspection for each confirmed property.
  • Require browser-assisted import/verify, target reload, direct rendering observation, deliberate drift, restoration, and final Match.
  • If discovery finds a removed/non-persistent control, teach the skill to report the checkpoint as unsupported/not applicable rather than attempting it.
  • Inventory temporary resources and require cleanup consent.
  • Update fixture tests, Browser E2E tests, skill instructions, and non-secret E2E settings together.

Existing manual E2E flow additions

E2E runtime consolidation: Do not add a standalone feature scenario or repeat the full fixture/export/import/verify/cleanup sequence. Fold fixture setup into the existing fixture step, snapshot assertions into the existing export result, target assertions into the existing import/verify and visual checklist, deliberate drift into the existing negative-test phase, and repair into the single idempotence re-import. Reuse the same snapshot, mappings, and target Project. Add another disposable target or native command only when a distinct code path cannot be proven otherwise; document why and include every added resource in the existing inventory and cleanup.

After the discovery gate confirms persistent controls, extend the existing browser-assisted migration flow in docs/MANUAL_TEST_PLAN.md with these checkpoints:

  1. Prepare two source Roadmap views covering different confirmed combinations of Truncate titles and Show date fields, with long titles and populated date fields so the visual effect is observable.
  2. Save and reload the source views to prove the settings persist before export.
  3. Run browser-assisted export, import into a disposable fresh target, and browser-assisted verify.
  4. Reload each target Roadmap and visually confirm title rendering and date-field display match the source.
  5. Toggle exactly one target setting, save/reload, and rerun verify; the exact property/view must be reported.
  6. Rerun import and confirm the setting is restored.
  7. Record commands, confirmed selectors/persistence, verify output, and UI observations.
  8. Delete the disposable target Project.

If discovery proves a control is non-persistent or removed, document that result instead and do not add a fictitious checkpoint for it.

Acceptance criteria

  • For each control that passes discovery, ghpmv-e2e-validation can create its fixture, prove source persistence, inspect the snapshot, validate target rendering/drift, and clean up.

  • For every confirmed persistent control, docs/MANUAL_TEST_PLAN.md contains source persistence proof, round-trip, visual assertions, drift, rerun, and cleanup.

  • Live persistence and selectors are documented before schema changes.

  • Each confirmed persistent control round-trips independently.

  • Browser-assisted verify detects drift.

  • Legacy/API-only snapshots remain compatible.

  • Warnings identify the view and failed property.

  • docs/ui-maps/projects-ui-discovery.md records the verified current UI behavior.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions