DIDKit Changelog
[0.3.1] - 2025-12-19
- allow passing a DID string or object to
#resolve_handleand just return that DID – so you can have a script that accepts either a handle or a DID, and passes the input toDID.resolve_handlewithout checking which one it is - allow passing another DID object to
DID.newand return a copy of that DID - parse
seqfield inPLCOperationif included and expose it as a property - fixed some errors on Rubies older than 3.2 due to missing
filter_mapandURI#origin PLCOperationverifies if the argument is aHash
[0.3.0] - 2025-12-15
Breaking changes:
- removed
DID#is_known_by_relay?– it doesn't work anymore, since relays are now non-archival and they expose almost no XRPC routes - renamed a few handle-related methods:
get_validated_handle->get_verified_handlepick_valid_handle->first_verified_handle
Also:
- added
DID#account_statusmethod, which checksgetRepoStatusendpoint to tell if an account is active, deactivated, taken down etc. - added
DID#account_active?helper (account_status == :active) DID#account_exists?now callsgetRepoStatus(viaaccount_status, checking if it's not nil) instead ofgetLatestCommit- added
DID#documentwhich keeps a memoized copy of the document - added
pds_host&labeler_hostmethods toPLCOperationandDocument, which return the PDS/labeller address without thehttps:// - added
labeller_endpoint&labeller_hostaliases for the double-L enjoyers :] - added
PLCOperation#cid PLCImporternow removes duplicate operations at the edge of pages returned from the/exportAPI- rewritten some networking code – all classes now use
Net::HTTPwith consistent options instead ofopen-uri
Note: PLCImporter will be rewritten soon to add support for updated plc.directory APIs, so be prepared for some breaking changes there in v. 0.4.
[0.2.3] - 2024-07-02
- added a
DID#get_audit_logmethod that fetches the PLC audit log for a DID - added a way to set an error handler in
PLCImporter - reverted the change from 0.2.1 that added Ruby stdlib dependencies explicitly to the gemspec, since this causes more problems than it's worth
- minor bug fixes
[0.2.2] - 2024-04-01
- added helpers for checking if a DID is known by (federated with) a relay or if the repo exists on its assigned PDS
[0.2.1] - 2024-03-26
- tweaked validations in
DocumentandPLCOperationto make them more aligned with what might be expected - added Ruby stdlib dependencies explicitly to the gemspec
[0.2.0] - 2024-03-19
- added
PLCImporterclass, which lets you import operations from PLC in pages of 1000 through the "export" API - implemented parsing of all services from DID doc & operations, not only
atproto_pds(specifically labeller endpoints) - allow setting the nameserver in
Resolverinitializer
[0.1.0] - 2024-03-12
- rejecting handles from disallowed domains like
.arpaor.test - validating handles with the
.well-knownfile having a trailing newline - validating handles with
.well-knownaddress returning a redirect - added
#pick_valid_handlehelper - allow overriding the nameserver for
Resolv::DNS - other bug fixes
[0.0.4] - 2024-03-07
- extracted resolving code from
DIDto a newResolverclass (DIDhas helper methods to call the resolver) - added
Resolver#get_validated_handlemethod to validate handles from theDocument(+ helpers inDIDinDocument) - added timeout to
#resolve_handle_by_well_known
[0.0.3] - 2024-03-06
- added
Document#handleswith handle info extracted fromalsoKnownAsfield - added validation of various fields of the DID document
- added
DID#resolved_by(:dnsor:http) - added
DID#didwhich returns the DID in a string form liketo_s - added
DID#web_domainwhich returns the domain part of adid:web - changed
DID#typeto be stored as a symbol
[0.0.2] - 2023-11-14
- fixed missing require
- fixed some connection error handling
[0.0.1] - 2023-11-14
Initial release:
- resolving handle to DID via DNS or HTTP well-known
- loading DID document via PLC or did:web well-known
- extracting PDS endpoint field from the DID doc
