Skip to content
CAI
Software that uses CAICheck a score

bitwalker/timex

64.4

Adequate · 23 September 2026

13.3k

lines of production code

Elixir

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Timex is an Elixir library for date and time manipulation, providing a comprehensive API for parsing, formatting, and converting datetime values across various calendar systems and timezones. It supports extensive localization through Gettext, enabling humanized and locale-aware formatting for dates, times, and durations in numerous languages. The system also handles complex timezone resolution, including ambiguous and non-existent times, and offers utilities for calendar calculations and interval management.

How it got here

2013–2015 — Date/time parsing and formatting expansion

18 changes.

This period focused on significantly expanding the Timex library's capabilities for parsing and formatting dates and times. New modules were introduced to handle diverse datetime formats, including humanized strings, strftime patterns, and ISO-8601 variants, alongside robust error handling and locale-aware formatting. The work also included comprehensive test coverage and benchmarking to ensure the reliability of these new features.

2016 — comprehensive localization and date/time expansion

24 changes.

This period focused on significantly expanding the library's date and time handling capabilities, introducing new modules for intervals, Julian calendar support, and robust timezone ambiguity resolution. Simultaneously, the project heavily invested in internationalization, adding comprehensive translation files and a localized formatting API for multiple languages including English, Russian, Japanese, German, Italian, Portuguese, Spanish, Polish, and Chinese.

2017–2020 — internationalization and localization expansion

17 changes.

This period was dedicated to expanding the application's internationalization support by adding comprehensive translation files for numerous new languages, including Indonesian, Danish, Romanian, Dutch, Norwegian, French, Korean, Swedish, Ukrainian, Afrikaans, Turkish, Vietnamese, Czech, Hebrew, Hungarian, Serbian, and Bosnian. Each addition enabled localized formatting for dates, times, and numbers, ensuring consistent user experiences across diverse linguistic regions.

2021–2023 — Localization expansion

6 changes.

This period focused on adding comprehensive translation support for six new languages: Finnish, Estonian, Latvian, Thai, Croatian, and Khmer. Each update introduced complete localization files covering dates, times, numbers, and relative time expressions to enable full interface translation for these locales.

Features

Add Bosnian (Bosnian Cyrillic and Latin) translations

Users who select Bosnian as their language will now see the application's date, time, and number formatting, as well as day and month names, translated into Bosnian. This change adds translation files for both the Cyrillic and Latin scripts, covering day periods, months, weekdays, relative time, units, and symbols. The translations are sourced from \lib/l10n/translator.ex\ and include plural forms and specific formatting rules for the Bosnian language.

_priv/translations/bs\_cyrillic, priv/translations/bs\latin · high confidence

Add Bulgarian (bg) locale translations

Added Bulgarian (bg) locale translations for date, time, and number formatting, including month names, day names, relative time expressions, and unit labels. This enables the application to display localized strings in Bulgarian for users with that language preference.

priv/translations/bg · high confidence

Add Chinese (Simplified) localization for dates, numbers, and time

Users who select Chinese (Simplified) as their language will now see translated strings for day periods (AM/PM), month names and abbreviations, number formatting, relative time expressions (e.g., "today", "yesterday"), unit names (e.g., "days", "hours"), and weekday names. This new translation set enables proper localization of date and time displays in the application.

_priv/translations/zh\CN · high confidence

Add Czech (cs) localization for dates, time, and units

Users who select Czech as their language will now see translated month names, abbreviated months, day periods (AM/PM), weekday names, relative time expressions (e.g., "today", "yesterday"), and unit labels. This completes the Czech translation set, ensuring consistent localization across all date and time formatting options.

priv/translations/cs · high confidence

Add Danish (da) translations for dates, time, and numbers

Users who select Danish as their language will now see localized text for day periods (AM/PM), full and abbreviated month names, weekday names, relative time phrases (e.g., 'yesterday', 'in 2 days'), time units (e.g., '2 hours'), and numeric formatting symbols. This new translation set ensures that date and time displays, as well as number formatting, appear correctly in Danish.

priv/translations/da · high confidence

Add Duration and Time helper modules

Introduces new modules for time manipulation: Timex.Duration provides conversion between durations, Erlang timestamps, and clock tuples, as well as ISO-8601 parsing; Timex.Time adds functions for converting between 12/24-hour clock formats and handling time construction, with compatibility shims for older Elixir versions.

lib/time · high confidence

Add Dutch (nl) localization for date, time, and number formatting

Users selecting Dutch will now see translated labels for day periods (AM/PM), full and abbreviated month names, relative time expressions (e.g., 'yesterday', 'next week'), weekday names, and number formatting symbols. This adds comprehensive Dutch translations for the l10n translator, ensuring date and time components display correctly in the Dutch locale.

priv/translations/nl · high confidence

Add English translations for date, time, and number formatting

The English locale now includes translations for day periods (AM/PM), full and abbreviated month names, weekday names, relative time expressions (e.g., 'today', 'last week'), and unit pluralizations (e.g., '1 day' vs '2 days'). These new \.po\ and \.pot\ files in \priv/translations/en\ ensure that date and time formatting functions return correctly localized strings for English users.

priv/translations/en · high confidence

Add Estonian language support

Users can now view the application in Estonian. This update adds translation files for day periods, months (full and abbreviated), numbers, relative time expressions, symbols, units, and weekdays, enabling localized date and time formatting for Estonian-speaking users.

priv/translations/et · high confidence

Add French translations for dates, time, and numbers

French (fr) locale is now supported, providing translations for day periods (AM/PM), full and abbreviated month names, relative time expressions (e.g., "today", "yesterday"), number formatting, symbols, units (days, hours, minutes, etc.), and weekday names. This enables proper localization of date and time displays for French-speaking users.

priv/translations/fr · high confidence

Add German translations for time and date formatting

Added German translations for day periods (AM/PM), month names and abbreviations, relative time expressions (e.g., 'yesterday', 'last week'), number formatting, symbols, units (e.g., 'one day', 'two days'), and weekday names. This enables proper localization of date and time displays in the German locale.

priv/translations/de · high confidence

Add Hebrew translation support

Added Hebrew translations for date, time, and number formatting, including month and weekday names, relative time expressions, and unit labels.

priv/translations/he · high confidence

Add Hungarian and Serbian Latin translations

Added translation files for Hungarian (hu) and Serbian Latin (sr\_Latn), covering day periods, month names and abbreviations, numbers, relative time, symbols, units, and weekdays. This enables the application to display dates, times, and numbers in these languages.

_priv/translations/hu, priv/translations/sr\Latn · high confidence

Add ISO 8601 and humanized duration formatters

The \lib/format/duration/formatters\ directory now includes two new formatters: \Default\, which formats durations as ISO 8601 strings (e.g., "PT2S"), and \Humanized\, which formats durations as readable, localized strings (e.g., "2 seconds"). These new modules handle the conversion of duration values into their respective string representations, supporting both absolute values and locale-specific translations.

lib/format/duration/formatters · high confidence

Add ISO-8601 duration parsing support

Users can now parse ISO-8601 formatted duration strings (e.g., 'P15Y3M2DT1H14M37.25S') into Timex Duration structs. This new capability includes support for years, months, days, hours, minutes, seconds, and weeks, with the parser delegating to a dedicated ISO8601 parser module.

lib/parse/duration · high confidence

Add ISO-8601 extended date-time parser

A new parser for the ISO-8601 extended date-time format has been added to the datetime parsing library. This implementation handles the standard 'YYYY-MM-DDTHH:MM:SS' structure, including optional fractional seconds and timezone offsets, allowing the library to correctly parse and validate these specific date-time strings.

lib/parse/datetime/parsers · high confidence

Add Indonesian (id) localization support

Users can now see dates, times, and numbers formatted in Indonesian. This change adds the complete set of translation files for the Indonesian locale, including translations for day periods (AM/PM), month names and abbreviations, relative time expressions (e.g., 'last week', 'tomorrow'), number formatting symbols, and unit labels (e.g., 'days', 'hours').

priv/translations/id · high confidence

Add Japanese translations for time, date, and number formatting

Added Japanese (ja) translation files for day periods (AM/PM), months, abbreviated months, numbers, relative time expressions (e.g., 'today', 'yesterday'), symbols, units (e.g., 'day', 'hour'), and weekdays (full and abbreviated). This enables proper localization of date, time, and number displays for Japanese users.

priv/translations/ja · high confidence

Add Julian calendar support and day-of-week calculation

The calendar library now includes a new \Julian\ module that provides functions for working with the Julian calendar, including calculating Julian day numbers and converting dates to day-of-week values. This addition enables users to perform date calculations using the Julian calendar system, which is particularly useful for historical date conversions and astronomical calculations. The implementation includes support for both date and datetime inputs, with proper error handling for invalid dates.

lib/calendar · high confidence

Add Khmer (km) translation files

Added Khmer language support by introducing new translation files for day periods, months, abbreviated months, numbers, relative time, symbols, units, and weekdays. Users selecting Khmer as their locale will now see these localized strings in the application.

priv/translations/km · high confidence

Add Korean (ko) translations for date, time, and number formatting

Users who set their language to Korean will now see localized strings for day periods (AM/PM), month names, abbreviated months, relative time expressions (e.g., 'today', 'yesterday', 'next week'), weekday names, and unit labels. This completes the Korean localization for the application's date and time formatting components.

priv/translations/ko · high confidence

Add Norwegian (Bokmål) translations

Added Norwegian (Bokmål) translations for day periods, months, abbreviated months, numbers, relative time, symbols, units, and weekdays, enabling localized date and time formatting for users with that language setting.

_priv/translations/nb\NO · high confidence

Add Polish (pl) translations for dates, time, and units

Users who select Polish as their language will now see translated month names, abbreviated months, day periods (AM/PM), relative time expressions (e.g., 'yesterday', 'last week'), day and weekday names, and time/duration units. This adds comprehensive Polish localization support for the application's date and time formatting.

priv/translations/pl · high confidence

Add Portuguese (pt) translations for dates, time, and numbers

Added Portuguese (pt) localization files for day periods, month names and abbreviations, relative time expressions, number formatting, and weekday names. Users selecting Portuguese will now see translated labels for AM/PM, full and abbreviated month names, relative time phrases (e.g., 'last week', 'tomorrow'), and number symbols.

priv/translations/pt · high confidence

Add Romanian language support for dates, time, and numbers

Romanian (ro) translations have been added to the application, enabling localized display of month and weekday names (full and abbreviated), relative time phrases (e.g., "acum o zi"), unit names, and numeric formatting symbols. Users selecting Romanian will now see these UI elements in their native language.

priv/translations/ro · high confidence

Add Spanish (es) translations for dates, time, and numbers

Users who select Spanish as their locale will now see translated month names, abbreviated months, day periods, relative time expressions (e.g., 'yesterday', 'in 2 days'), unit names, and numeric formatting symbols. This adds the foundational localization files required for the Spanish language support in the application.

priv/translations/es · high confidence

Add Swedish (sv) localization for dates, time, and numbers

Users who select Swedish as their language will now see translated month names, abbreviated months, day periods (AM/PM), relative time expressions (e.g., 'today', 'yesterday'), weekday names, and number formatting symbols. This new translation set enables proper localization of date and time displays in the Swedish locale.

priv/translations/sv · high confidence

Add Thai language support for date and time formatting

Users can now see dates, times, and relative time expressions in Thai. This change adds translation files for month names, abbreviated months, weekdays, relative time phrases (e.g., "today", "last week"), and time period indicators (AM/PM) to the localization system.

priv/translations/th · high confidence

Add Timex module for date, time, and datetime handling

The Timex library now includes new modules for handling dates, times, and datetimes, including \Timex.Date\, \Timex.DateTime\, \Timex.NaiveDateTime\, and \Timex.Types\. These modules provide a comprehensive set of functions for date and time manipulation, such as \beginning\_of\_week\, \end\_of\_week\, \day\_of\_week\, and \to\_gregorian\_seconds\. The \Timex.Types\ module defines various types for dates, times, and timezones, while \Timex.Helpers\ offers utility functions for date and time calculations. The \Timex.Macros\ module provides macros for type checking and deprecation warnings. These changes enhance the library's capabilities for working with dates and times in Elixir.

lib/timex · high confidence

Add Turkish localization for dates, time, and numbers

Added Turkish translations for day periods (AM/PM), month names and abbreviations, relative time expressions (e.g., 'yesterday', 'next week'), number formatting symbols, and unit names. This enables the application to display dates, times, and numerical values in Turkish.

priv/translations/tr · high confidence

Add Ukrainian (uk) locale translations

Added Ukrainian translations for day periods (AM/PM), month names and abbreviations, relative time expressions (e.g., "yesterday", "in 5 days"), weekday names, and measurement units. This enables the application to display dates, times, and durations in Ukrainian.

priv/translations/uk · high confidence

Add binary zoneinfo file parser

Introduces a new module, Timex.Parse.ZoneInfo.Parser, which is responsible for parsing binary zoneinfo files (such as those found in /usr/local/zoneinfo). The module defines internal structs for Zone, Header, TransitionInfo, LeapSecond, and Rule, and implements functions to parse the TZIF format, including support for multiple versions and handling of leap seconds and daylight saving time transitions.

lib/parse/zoneinfo · high confidence

Add missing Finnish translations for dates, time, and numbers

The Finnish (fi) locale now includes complete translation files for day periods (AM/PM), month names and abbreviations, relative time expressions (e.g., 'yesterday', 'next week'), number formatting symbols, and unit translations. These new .po files in priv/translations/fi/LC\_MESSAGES ensure that date, time, and numerical values are correctly localized for Finnish-speaking users.

priv/translations/fi · high confidence

Add new translation API for localized date and time strings

The library now provides a dedicated \Timex.Translator\ module to handle localized translations for days of the week, months, and day periods. This new API allows users to retrieve translated weekday and month names (both full and abbreviated forms) for a specific locale, as well as day period names (e.g., 'am'/'AM'). The implementation uses the \Gettext\ backend to manage these translations, ensuring that date and time formatting follows the current locale settings.

lib/l10n · high confidence

Added Afrikaans translations

Added Afrikaans translations for day periods, months, month abbreviations, numbers, relative time, symbols, units, and weekdays, enabling localized date and time formatting for users with that language preference.

priv/translations/af · high confidence

Added Brazilian Portuguese (pt\_BR) translations

Users can now see the application in Brazilian Portuguese. This change adds translation files for day periods, month names, month abbreviations, number formatting, relative time expressions, symbols, units, and weekdays, enabling full localization support for this language.

_priv/translations/pt\BR · high confidence

Added Latvian language support

Users can now view the application in Latvian. This change adds translation files for day periods, months, abbreviated months, numbers, relative time expressions, symbols, units, and weekdays, enabling localized date, time, and number formatting for Latvian-speaking users.

priv/translations/lv · high confidence

Added Russian translations for date, time, and number formatting

Users viewing the application in Russian will now see translated labels for days, months, and their abbreviations, as well as relative time expressions (e.g., 'yesterday', 'in 5 minutes'), day-of-week names, and number formatting symbols. This update ensures that date and time components are correctly localized for Russian speakers.

priv/translations/ru · high confidence

Added Vietnamese language support

Added Vietnamese translations for day periods, month names, month abbreviations, numbers, relative time expressions, symbols, units, and weekdays. This enables the application to display dates, times, and numbers in Vietnamese.

priv/translations/vi · high confidence

Added humanized date formatting and parsing examples

Added new example files for a humanized date formatter and tokenizer, demonstrating how to implement custom date formatting and parsing with the Timex library. The formatter converts dates into human-readable strings (e.g., 'the eleventh of August, 2015') and the tokenizer parses such strings back into date objects, supporting non-standard directives like phonetic ordinals and date shifts.

examples · high confidence

Added timezone mapping data for Windows and .NET standard names

The application now includes two new data files, \priv/olson\_to\_win.exs\ and \priv/standard\_to\_olson.exs\, which map IANA timezone identifiers to Windows timezone names and .NET standard timezone names, respectively. This enables the library to convert between these different timezone naming conventions.

priv · high confidence

Croatian (hr) localization added

Added Croatian translations for day periods, month names, abbreviated months, numbers, relative time expressions, symbols, units, and weekdays, enabling the application to display dates, times, and numerical values in Croatian.

priv/translations/hr · high confidence

Expanded Date manipulation and conversion capabilities

The Date module now includes new helper functions to find the beginning or end of the day, week, month, quarter, and year, as well as to calculate the day of the week. Additionally, the module implements the Timex.Protocol for seamless conversion between Date and other types, including NaiveDateTime, Erlang dates, and Unix timestamps, while also supporting ISO day and Julian date conversions.

lib/date · high confidence

Introduce AmbiguousDateTime to handle non-existent and ambiguous time periods

The datetime handling has been refactored to explicitly represent and manage timezone ambiguities. A new \AmbiguousDateTime\ struct is introduced to capture situations where a requested date-time does not exist (e.g., during a 'spring forward' gap) or has multiple valid timezone periods (e.g., during a 'fall back' overlap). This type is now returned by conversion functions and internal helpers when timezone resolution encounters these edge cases, allowing callers to inspect and resolve the ambiguity rather than receiving an error or silently normalizing the time.

lib/datetime · high confidence

Introduce Comparable protocol for date/time comparison and diffing

A new \Timex.Comparable\ protocol and supporting modules (\Timex.Comparable.Diff\, \Timex.Comparable.Utils\) have been added to the \lib/comparable\ directory. This introduces a standardized way to compare and calculate the difference between various date and time types (such as \Date\, \DateTime\, \NaiveDateTime\, and \AmbiguousDateTime\) using a \granularity\ parameter. The \diff\ function now returns an integer or \Timex.Duration\ representing the difference, while \compare\ returns -1, 0, or 1 based on the specified granularity.

lib/comparable · high confidence

Introduce Timex.Interval for date/time range manipulation

The Timex.Interval module has been added to the codebase, providing a new way to create and manipulate date/time intervals. Users can now define intervals with specific start and end points, configure open or closed bounds, and specify steps for iteration. This introduces a new API for handling time ranges, including functions for checking membership, overlap, and containment within intervals.

lib/interval · high confidence

Introduce Timex.Protocol for unified date/time conversions

The library now provides a central \Timex.Protocol\ that defines a consistent API for converting \Date\, \NaiveDateTime\, and \DateTime\ values into various formats, including Julian calendar dates, Gregorian seconds, UNIX timestamps, and Erlang tuples. This protocol allows users to perform standardized conversions across different date and time types, with error handling that returns \{:error, term}\ for invalid inputs. The main \Timex\ module delegates several of these conversion functions (e.g., \to\_date\, \to\_naive\_datetime\, \to\_datetime\) to this new protocol, ensuring a unified interface for date/time manipulation.

lib · high confidence

Introduce new datetime parsing architecture

The datetime parsing logic has been restructured into a modular system with dedicated modules for helpers, parsers, and tokenizers. This change introduces a \Timex.Parse.DateTime.Tokenizer\ behavior, allowing users to implement custom tokenizers for non-standard date/time formats. The new architecture separates concerns, with \helpers.ex\ providing utility functions for month/weekday/AM-PM conversion, \parsers.ex\ defining specific parsers for time components, and \parser.ex\ orchestrating the parsing process with support for weighted directives and optimized paths for ISO-8601 and RFC-3339 formats.

lib/parse/datetime · high confidence

Italian localization files added for date, time, and number formatting

New Italian translation files have been added to the application, covering day periods (AM/PM), full and abbreviated month names, weekday names, relative time expressions (e.g., 'yesterday', 'next week'), number formatting symbols, and unit translations. This provides comprehensive Italian support for date and time display, ensuring that users see correctly translated month and weekday names, as well as proper pluralization for time durations and numbers.

priv/translations/it · high confidence

New datetime formatters: Default, Relative, and Strftime

Added three new datetime formatters to the library: a new \Default\ formatter with a custom \{mnemonic}\ directive language, a \Relative\ formatter for human-readable relative time (e.g., "2 hours ago"), and a \Strftime\ formatter supporting standard C library \%\ directives. These replace or supplement previous formatting capabilities, introducing locale-aware relative time formatting and expanded directive support.

lib/format/datetime/formatters · high confidence

New default and strftime datetime tokenizers

The datetime parsing and formatting logic has been refactored into new tokenizer modules: \Timex.Parse.DateTime.Tokenizers.Default\ for standard format strings, \Timex.Parse.DateTime.Tokenizers.Strftime\ for strftime-style formats, and \Timex.Parse.DateTime.Tokenizers.Directive\ to manage parsing directives. This introduces support for a wider range of date/time formats, including ISO 8601 variants, RFC 822/1123/3339, ASN.1 time formats, and various week-numbering systems.

lib/parse/datetime/tokenizers · high confidence

Repository scaffolding and documentation updates

The repository now includes standard configuration and documentation files: a \.formatter.exs\ for Elixir code formatting, a \.gitignore\ to exclude build artifacts and IDE files, and a \changelog.md\ documenting version history. Additionally, \contributing.md\ and \license.md\ have been added to guide contributors and define the MIT license, while \readme.md\ provides an overview and quickstart examples for the Timex library. The old \date.ex\ file has been removed.

(repo-wide) · high confidence

Support for parsing POSIX-style timezone strings

The library now parses POSIX-style timezone definitions (e.g., \CST6CDT,M3.2.0/2:00:00,M11.1.0/2:00:00\), allowing users to convert timezones specified in the POSIX format used by many Unix systems. This includes handling standard and daylight saving time offsets, as well as the start and end rules for daylight saving time transitions.

lib/parse/posix · high confidence

Behavioural changes

Add FormatError exception for string formatting failures

A new FormatError exception has been introduced to handle errors encountered during string formatting. This change ensures that non-string error reasons are properly handled, addressing issue \#398 where the previous implementation did not correctly process non-string reasons for format errors.

lib/format · medium confidence

Add locale-aware duration formatting

The Timex library now supports localized duration formatting. The new \lformat\ function allows users to format durations using a specific locale, enabling translated output for human-readable representations. This change introduces a new \formatter.ex\ file that implements the \lformat\ function, which takes a duration, a locale string, and an optional formatter, enabling users to get duration strings in their preferred language.

lib/format/duration · high confidence

Added ParseError exception for parsing failures

A new ParseError exception has been introduced in the parsing library to handle errors encountered during parsing operations. This change provides a dedicated exception type with a default 'Invalid input!' message, allowing for more specific error handling in parsing workflows.

lib/parse · high confidence

Refactored DateTime formatting API with locale-aware and locale-specific formatting functions

The \Timex.Format.DateTime.Formatter\ module was restructured to support locale-aware formatting. The library now provides \lformat\ and \lformat!\ functions that accept a \locale\ argument, allowing date and time strings to be formatted according to specific regional conventions. The \format\ and \format!\ functions now automatically use the current global locale (defaulting to "en") for formatting, while still supporting explicit formatter selection (e.g., \:strftime\ or \:relative\). This change ensures that formatting behavior respects the application's configured locale settings.

lib/format/datetime · high confidence

Refactored timezone handling with new modules and structs

The \lib/timezone\ directory was refactored to improve timezone resolution and conversion. A new \Timex.AmbiguousTimezoneInfo\ struct and module were added to represent ambiguous timezone periods. The \Timex.Timezone.Database\ module was introduced to implement the \Calendar.TimeZoneDatabase\ behavior, providing a fallback mechanism for timezone lookups. Additionally, \Timex.PosixTimezone\ was added to handle POSIX-style timezone rules, and \Timex.Timezone.Local\ was created to manage local machine timezone detection across different operating systems. The \Timex.TimezoneInfo\ struct was also updated to support these changes.

lib/timezone · high confidence

Timex Gettext locale configuration added

A new configuration file (config/config.exs) has been added to set the default locale for Timex's Gettext backend to "en". This change ensures that Timex follows the global Gettext locale settings rather than requiring independent locale configuration, aligning with the Gettext guidelines.

config · medium confidence

Fixes

Fix map conversion errors and precision handling

The \Timex.Convert\ module was rewritten to fix several bugs in map-to-datetime conversion. Specifically, the implementation now correctly handles the \microsecond\ field to preserve precision, resolves issues with converting maps lacking microseconds, and improves error handling for insufficient date information or invalid integer values. These changes ensure that date and time data are converted accurately from maps, with better error reporting for malformed inputs.

lib/convert · high confidence

Test coverage

2 commits adding/updating tests in test/include; Add comprehensive test coverage for calendar, comparison, conversion, and formatting modules; Added benchmarks for Timex date/time parsing and formatting; Added tests for Julian calendar and relative date formatting.

Dependencies

Update project dependencies and lockfile

The project's \mix.exs\ and \mix.lock\ files have been updated to specify and pin specific versions of dependencies, including tzdata 1.1.3, combine 0.10.0, gettext 0.26.2, ex\_doc 0.38.2, and stream\_data 1.2.0, among others.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 58 → 64 (+6.7)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 85 → 91 (+6.5)
  • Architecture 100 → 100 (+0.0)
  • Maturity 49 → 49 (+0.0)
  • Readiness 46 → 62 (+16.3)
  • Security 88 → 98 (+10.3)

Resolved (33)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • Duplicated block (10 lines × 2) (lib/parse/datetime/parsers.ex)
  • Duplicated block (11 lines × 2) (lib/datetime/helpers.ex)
  • Duplicated block (11 lines × 2) (lib/parse/posix/parser.ex)
  • Duplicated block (12 lines × 2) (lib/datetime/helpers.ex)
  • Duplicated block (13 lines × 2) (lib/parse/posix/parser.ex)
  • Duplicated block (13 lines × 2) (lib/parse/posix/parser.ex)
  • Duplicated block (14 lines × 2) (lib/parse/posix/parser.ex)
  • Duplicated block (16 lines × 3) (lib/parse/datetime/parsers.ex)
  • Duplicated block (35 lines × 2) (lib/parse/datetime/tokenizers/default.ex)
  • Duplicated block (5 lines × 2) (lib/parse/datetime/parser.ex)
  • Duplicated block (5 lines × 2) (lib/parse/posix/parser.ex)
  • Duplicated block (5 lines × 4) (examples/tokenizer/humanized.exs)
  • Duplicated block (6 lines × 2) (lib/l10n/translator.ex)
  • Duplicated block (6 lines × 2) (lib/parse/datetime/tokenizers/default.ex)
  • Duplicated block (6 lines × 3) (lib/format/datetime/formatter.ex)
  • Duplicated block (6 lines × 3) (lib/format/datetime/formatters/relative.ex)
  • Duplicated block (6 lines × 3) (lib/parse/datetime/parsers.ex)
  • Duplicated block (6 lines × 4) (lib/l10n/translator.ex)
  • …and 13 more

New (41)

  • Documentation: no architecture or design documentation (docs/Custom Parsers.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no project overview (README.md)
  • Duplicated block (10–11 lines × 2) (lib/parse/datetime/parsers.ex)
  • Duplicated block (11 lines × 2) (lib/timezone/timezone.ex)
  • Duplicated block (12 lines × 2) (lib/format/datetime/formatter.ex)
  • Duplicated block (12–13 lines × 3) (lib/datetime/helpers.ex)
  • Duplicated block (15 lines × 2) (lib/parse/datetime/parsers.ex)
  • Duplicated block (16 lines × 2) (lib/parse/posix/parser.ex)
  • Duplicated block (17 lines × 2) (lib/parse/posix/parser.ex)
  • Duplicated block (18 lines × 2) (lib/parse/posix/parser.ex)
  • Duplicated block (18–19 lines × 3) (lib/parse/datetime/parsers.ex)
  • Duplicated block (19 lines × 2) (lib/parse/posix/parser.ex)
  • Duplicated block (3–5 lines × 6) (lib/format/datetime/formatter.ex)
  • Duplicated block (44–61 lines × 2) (lib/parse/datetime/tokenizers/default.ex)
  • Duplicated block (5 lines × 2) (lib/l10n/translator.ex)
  • Duplicated block (5 lines × 3) (lib/parse/datetime/parsers.ex)
  • Duplicated block (5 lines × 4) (examples/tokenizer/humanized.exs)
  • Duplicated block (5 lines × 4) (lib/l10n/translator.ex)
  • Duplicated block (5–14 lines × 2) (lib/parse/datetime/tokenizers/default.ex)
  • …and 21 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

bitwalker/timex was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 5ad1b8206977ebffb3bf72f88c18d490c36151c8 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.