Skip to content

Track sorting breaks for podcasts with >999 episodes (lexicographic sort issue) #1012

@talon-k

Description

@talon-k

Iris version

3.70.0

Operating system(s) affected

  • Windows
  • MacOS
  • iOS
  • Android
  • Linux
  • Other

Browser(s) affected

  • Firefox
  • Chrome
  • Edge
  • Other

What happened?

Summary

When browsing:

Browse → Podcasts → "Show"

and sorting by track number, shows with more than 999 episodes sort incorrectly.

Example behavior:

  • 110 appears grouped near 1100
  • 100 appears grouped near 1000
  • Ordering becomes lexicographic instead of numeric after 999

Steps to Reproduce

  1. Open Iris
  2. Browse → Podcasts
  3. Open a show with >999 episodes (I am using "https://feeds.simplecast.com/dCXMIpJz")
  4. Sort by track (ascending or descending)

Expected Behavior

Track numbers sort numerically:

... 998, 999, 1000, 1001 ...


Actual Behavior

Sorting behaves lexicographically once track_number >= 1000.


Root Cause

In src/js/util/format.js, Iris builds a string-based disc_track key:

track.disc_track = `${track.disc_number || 0}`.padStart(3, '0');
track.disc_track += '.';
track.disc_track += `${track.track_number || 0}`.padStart(3, '0');

Using 3-digit padding works only up to 999.
When track_number reaches 1000, lexicographic sorting breaks.

Proposed Fix

Increase padding width from 3 to 6 digits in src/js/util/format.js

track.disc_track = `${track.disc_number || 0}`.padStart(6, '0');
track.disc_track += '.';
track.disc_track += `${track.track_number || 0}`.padStart(6, '0');

This preserves lexicographic ordering up to 99,999 without changing sort logic elsewhere.

Environment

  • macOS 26.3
  • Safari 26.3 (21623.2.7.11.5)
  • Firefox 147.0.4

(Note: This appears to be frontend logic and should be browser-agnostic.)

A minimal PR is ready and will be linked below.

Logs

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions