The numeric code may be used to search the version control log by prefixing it with `f/`; for example, to find all of the documentation edits, `f/1.3.` Lines prefixed with an asterisk (*) are considered complete -- though edits for refactoring or bugfixes are always still possibilities -- while ones with an exclamation point (!) are in progress. 0. Infrastructure and metadata for code structure, rather than program behaviour 0.1. Maintain a README with a high-level overview of the library 0.2. Explicit tracking of what has been and what will be done 0.2.1. FEATURES 0.2.2. CHANGELOG 0.2.3. ROADMAP 0.3. Track bug reports and feature requests 1. Provide a direct Haskell interface to libcdio and libcdio-paranoia 1.1. Export all symbols the libcdio public C headers do * 1.1.1. Translate the "primary" headers #included directly by `cdio/cdio.h` * 1.1.1.1. `cdio/version.h` * 1.1.1.2. `cdio/types.h` * 1.1.1.3. `cdio/sector.h` * 1.1.1.4. `cdio/device.h` * 1.1.1.5. `cdio/cdtext.h` * 1.1.1.6. `cdio/disc.h` * 1.1.1.7. `cdio/read.h` * 1.1.1.8. `cdio/track.h` * 1.1.1.9. `cdio/memory.h` 1.1.2. Translate the headers #included by `cdio/mmc_cmds.h` 1.1.2.1. `cdio/mmc.h` 1.1.2.1.1. `cdio/audio.h 1.1.2.1.2. `cdio/dvd.h` 1.1.2.1.3. `cdio/mmc_util.h` 1.1.2.2. `cdio/mmc_ll_cmds.h` 1.1.2.3. `cdio/mmc_hl_cmds.h` 1.1.3. Translate the remainder of those public headers * 1.1.3.1. `cdio/cd_types.h` * 1.1.3.2. `cdio/logging.h` 1.1.3.3. `cdio/utf8.h` 1.1.3.4. `cdio/posix.h` 1.1.4. Translate the deprecated headers for "backwards compatibility" 1.1.4.1. `cdio/ds.h` * 1.1.4.2. `cdio/util.h` 1.1.5. Translate the libcdio-paranoia headers 1.1.5.1. `cdio/paranoia/cdda.h` 1.1.5.2. `cdio/paranoia/paranoia.h` 1.1.6. Translate headers for handling non-audio data 1.1.6.1. `cdio/iso9660.h` 1.1.6.1.1. `cdio/rock.h` 1.1.6.1.1. `cdio/xa.h` 1.1.6.2. `cdio/udf.h` 1.1.6.2.1. `cdio/udf_file.h` 1.1.6.2.2. `cdio/udf_time.h` 1.1.6.2.3. `cdio/ecma_167.h` 1.3. Improve the documentation from that copied from the headers * 1.3.1. "Primary" headers #included directly by `cdio/cdio.h` * 1.3.1.1. `cdio/version.h` * 1.3.1.2. `cdio/types.h` * 1.3.1.3. `cdio/sector.h` * 1.3.1.4. `cdio/device.h` * 1.3.1.5. `cdio/cdtext.h` * 1.3.1.6. `cdio/disc.h` * 1.3.1.7. `cdio/read.h` * 1.3.1.8. `cdio/track.h` * 1.3.1.9. `cdio/memory.h` 1.3.2. Headers #included by `cdio/mmc_cmds.h` 1.3.2.1. `cdio/mmc.h` 1.3.2.1.1. `cdio/audio.h 1.3.2.1.2. `cdio/dvd.h` 1.3.2.1.3. `cdio/mmc_util.h` 1.3.2.2. `cdio/mmc_ll_cmds.h` 1.3.2.3. `cdio/mmc_hl_cmds.h` 1.3.3. Other public headers * 1.3.3.1. `cdio/cd_types.h` * 1.3.3.2. `cdio/logging.h` 1.3.3.3. `cdio/utf8.h` 1.3.3.4. `cdio/posix.h` 1.3.4. Deprecated headers for "backwards compatibility" 1.3.4.1. `cdio/ds.h` * 1.3.4.2. `cdio/util.h` 1.3.5. libcdio-paranoia headers 1.3.5.1. `cdio/paranoia/cdda.h` 1.3.5.2. `cdio/paranoia/paranoia.h` 1.3.6. Non-audio data 1.3.6.1. `cdio/iso9660.h` 1.3.6.1.1. `cdio/rock.h` 1.3.6.1.1. `cdio/xa.h` 1.3.6.2. `cdio/udf.h` 1.3.6.2.1. `cdio/udf_file.h` 1.3.6.2.2. `cdio/udf_time.h` 1.3.6.2.3. `cdio/ecma_167.h` 1.4. Copy and translate library tests ! 1.4.1. libcdio tests 1.4.2. libcdio-paranoia tests 2. Provide Haskell reimplementations of the packaged binaries 2.1. `cd-drive` 2.2. `cd-info` 2.3. `cd-read` 2.4. `cdda-player` 2.5. `iso-info` 2.6. `iso-read` 2.7. `mmc-tool` 2.8. `libcdio-paranoia` ! 3. Provide alternate idomatic (custom-Monad-based) interface for libcdio functions * 3.1. "Primary" headers #included directly by `cdio/cdio.h` 3.2. Headers #included by `cdio/mmc_cmds.h` ! 3.3. Other public headers 3.4. Deprecated headers for "backwards compatibility" 3.5. libcdio-paranoia headers 3.6. Non-audio data file access