| Age | Commit message (Expand) | Author | Files | Lines |
| 12 days | chore(typing): pyright per-directory overrides for graphviz/regex missing stubs | natsuoto | 1 | -2/+13 |
| 12 days | refactor(typing): make edify pass mypy --strict and pyright --strict end to end | natsuoto | 15 | -46/+101 |
| 12 days | test(discipline): every type-checker suppression carries a code and inline re... | natsuoto | 1 | -0/+35 |
| 12 days | feat(builder): typed engine=Literal kwarg on to_regex with EngineNotWiredError | natsuoto | 4 | -0/+67 |
| 12 days | refactor(builder): TypeVar-generic helpers and cross-mixin surface on Builder... | natsuoto | 3 | -20/+37 |
| 12 days | refactor(result): keep _RePatternAttribute union on Regex.__getattr__; drop A... | natsuoto | 1 | -1/+2 |
| 12 days | refactor(atoms): drop docstring from __init__ per exports-only rule | natsuoto | 1 | -7/+0 |
| 12 days | refactor(serialize): precise JSONValue types replace Any; hoist imports; drop... | natsuoto | 7 | -170/+127 |
| 12 days | chore: refresh uv.lock for mypy + pyright pins | natsuoto | 1 | -0/+72 |
| 12 days | chore(typing): ship py.typed marker and library-scope mypy/pyright config | natsuoto | 2 | -0/+33 |
| 13 days | feat(pattern): canonical dict/JSON serialization for Pattern (#277) | Bobby | 9 | -0/+792 |
| 13 days | feat(pattern): canonical dict/JSON serialization on Pattern (to_dict, from_di... | natsuoto | 9 | -0/+792 |
| 13 days | feat(atoms): public edify.atoms — 83 composable Pattern fragments (#276) | Bobby | 171 | -38/+3626 |
| 13 days | feat(atoms): expand from 13 to 83 general-purpose composable fragments | natsuoto | 141 | -0/+2991 |
| 13 days | rename(atoms): single-word filenames (octet/port/label/uuid/hexcolor/nibble/i... | natsuoto | 25 | -112/+106 |
| 13 days | feat(atoms): public edify.atoms with 13 composable Pattern fragments | natsuoto | 31 | -40/+643 |
| 2026-07-11 | feat!: callable-Pattern validator API + 223-pattern library across 22 categor... | Bobby | 302 | -1599/+8100 |
| 2026-07-11 | feat(library): add 23 patterns across 12 categories (medical, transport, fina... | natsuoto | 36 | -10/+601 |
| 2026-07-11 | refactor: eliminate suppression comments and internal-import tests, delete no... | natsuoto | 24 | -503/+68 |
| 2026-07-11 | refactor(library): rewrite geo/postal to inline patterns; delete RegexBackedP... | natsuoto | 44 | -719/+451 |
| 2026-07-11 | refactor(library): rewrite software/ validators to fluent Pattern() chain | natsuoto | 12 | -57/+562 |
| 2026-07-11 | refactor(library): rewrite temporal/, text/ validators to fluent Pattern() chain | natsuoto | 21 | -107/+514 |
| 2026-07-11 | refactor(library): rewrite web/, security/, media/ validators to fluent Patte... | natsuoto | 27 | -62/+632 |
| 2026-07-11 | refactor(library): rewrite numeric/ validators to fluent Pattern() chain | natsuoto | 8 | -27/+201 |
| 2026-07-11 | refactor(library): rewrite validators to fluent Pattern() chain | natsuoto | 77 | -267/+2365 |
| 2026-07-11 | chore: ruff format + lint fixes (en-dash → hyphen, line-length, script.py n... | natsuoto | 186 | -317/+1308 |
| 2026-07-11 | feat(library): reorganize into 22 category folders + flat 200-name re-export ... | natsuoto | 29 | -837/+126 |
| 2026-07-11 | feat(library): 22 patterns across security/grammar/web categories | natsuoto | 25 | -0/+140 |
| 2026-07-11 | feat(library): 33 patterns across api/data/document categories | natsuoto | 36 | -0/+209 |
| 2026-07-11 | feat(library): 12 patterns across transport/publishing/product/medical catego... | natsuoto | 16 | -0/+85 |
| 2026-07-11 | feat(library/software): 12 software patterns (semver, version, package, docke... | natsuoto | 13 | -0/+102 |
| 2026-07-11 | feat(library/media): 11 media patterns (mimetype, extension, filename, glob, ... | natsuoto | 12 | -0/+84 |
| 2026-07-11 | feat(library/color): 5 color patterns (color, palette, swatch, gradient, filter) | natsuoto | 6 | -0/+46 |
| 2026-07-11 | feat(library/text): 11 text patterns (slug, base, script, ascii, printable, a... | natsuoto | 12 | -0/+137 |
| 2026-07-11 | feat(library/numeric): 9 numeric patterns (number, integer, hash, percentage,... | natsuoto | 10 | -0/+109 |
| 2026-07-11 | feat(library/geo): 6 geo patterns (coordinate, geohash, plus, postal, place, ... | natsuoto | 7 | -0/+80 |
| 2026-07-11 | feat(library/temporal): 11 temporal patterns (date, time, datetime, duration,... | natsuoto | 12 | -0/+178 |
| 2026-07-11 | feat(library/financial): 4 financial patterns (currency, card, wallet, crypto) | natsuoto | 5 | -0/+65 |
| 2026-07-11 | feat(library/auth): 19 auth patterns (password, pin, token, jwt, otp, apikey,... | natsuoto | 20 | -0/+371 |
| 2026-07-11 | feat(library/contact): 6 contact patterns (email, phone, fax, pager, address,... | natsuoto | 7 | -0/+103 |
| 2026-07-11 | feat(library/address): 13 address patterns (ip, cidr, subnet, hostname, domai... | natsuoto | 14 | -0/+242 |
| 2026-07-11 | chore: drop as_pattern helper (obsoleted by Pattern()-only construction) | natsuoto | 1 | -20/+0 |
| 2026-07-11 | feat(library/identifier): all 26 identifier patterns as callable Pattern chains | natsuoto | 28 | -118/+525 |
| 2026-07-11 | feat(library): infrastructure and first three identifier migrations (uuid, gu... | natsuoto | 6 | -0/+181 |
| 2026-07-10 | feat: Pattern.__call__(value) -> bool and RegexBackedPattern base for validat... | natsuoto | 2 | -0/+60 |
| 2026-07-10 | chore!: relicense edify from Apache 2.0 to MIT (#273) | Bobby | 4 | -203/+39 |
| 2026-07-10 | test: license.test.py asserts installed edify carries MIT license expression ... | natsuoto | 1 | -0/+16 |
| 2026-07-10 | docs: README license section reads MIT (#234) | natsuoto | 1 | -1/+1 |
| 2026-07-10 | chore!: pyproject.toml license field = MIT SPDX (#232) | natsuoto | 1 | -1/+1 |
| 2026-07-10 | chore!: replace LICENSE with MIT text (#231) | natsuoto | 1 | -201/+21 |