Skip to content

feat: integrate native Windows file and folder icons #24

Description

@nextestudios

Summary

Replace the emoji icons in the file list with the real Windows Shell icons for files, folders, known folders and drives.

Motivation

Recognizable icons make a TV/handheld UI readable at a glance; emoji are inconsistent and look out of place on Windows.

Requirements

  • Icons for registered file associations (per extension/type), generic files, folders and special folders (Downloads, Documents, Desktop, Pictures, Videos, Music).
  • Drive icons by type: fixed, USB/removable, optical, network (see feat: show drive-type icons for fixed, USB, optical and network drives #25).
  • Recycle Bin icon where the location is shown (see feat: add the Recycle Bin as a browsable location #26).
  • Asynchronous loading with a placeholder; never blocks the UI thread or list virtualization.
  • Bounded in-memory cache keyed by type/extension (not by full path for common types); invalidation on DPI change.
  • Correct sizes for 1080p, 4K and handheld DPI; no emoji anywhere in the list.

Controller UX

No new input: icons appear in Home, Browser, Picker and archive views; focus and selection visuals stay legible on top of them.

Technical Notes

Add an IIconProvider contract (Core) with a Windows implementation (SHGetFileInfo/IShellItemImageFactory) in ControlFS.Infrastructure.Windows/Shell; EntryRowTemplate.Fill requests icons asynchronously. Archive entries use extension-based icons without touching disk.

Acceptance Criteria

  • File, folder, known-folder and drive rows show the Windows icon.
  • Scrolling a 10,000-item folder stays responsive while icons load.
  • No emoji remain in the file list.

Testing

Unit tests for new branches and for every bug reproduced before a fix (no trivial variations, see AGENTS.md). Windows integration test that the provider returns a non-empty image for a .txt and a folder. Manual: 4K and handheld scaling.

Dependencies

  • None

Priority: high · Milestone: 2 · Controller-First Windows UI

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: uiViews, layout, themingarea: windowsWindows Shell and OS integrationmoscow: mustMoSCoW: required for 1.0type: featureNew capabilitytype: uiVisual interface work

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions