# v3.1.0

  • Demo::getDuration() now derives from the LAST_IN_SEGMENT DemoFrame timestamp in the PLAYBACK data segment (falls back to entry trackTime)
  • New Demo::getMapCrc() — returns the map CRC from the demo header
  • New Demo::getGameDirectory() — returns the game directory (e.g. cstrike)
  • New Entry::getParsedFrames(): DemoFrame[] — parsed macro block headers:
    • LOADING entries: all sequential macro blocks
    • PLAYBACK entries: LAST_IN_SEGMENT frame found by scanning the end of the segment
  • New DemoFrame class — represents a single macro block (type, time, frame, payload length)
  • New MacroTypeEnum — 10 macro types (0–9) used in GoldSrc demo files
  • Fixed entry table parsing: corrected SIZE_ENTRY to 92 bytes; entries now start properly after the count field

# v3.0.2

  • Refactor Parser: add constants, fix type safety, improve tests

# v3.0.1

  • Fixed the return type in Entry::getCDTrack()
  • New documentation on GitHub Pages
  • Added the changelog to the documentation

# v3.0.0

# Compatibility-breaking changes:

  • PHP version has been upgraded to 8.2.
  • The namespace exceptions has been renamed to Exceptions
  • The file bootstrap.php has been removed.
  • The getTypeString() method of the Entry class now returns an EntryTypeEnum.
  • DateTime has been changed to DateTimeImmutable.

# Non-compatibility-breaking changes:

  • DTO classes are now readonly.
  • All parser exceptions now inherit from the ParserException class.
  • The Demo class has added a getDuration() method that returns the duration of the demo file in seconds.
  • An EntryTypeEnum enum has been added.