bitwalker/timex
64.4
Adequate · 23 September 2026
13.3k
lines of production code
Elixir
primary language
5
measurements over time
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.