···8899Vow is a Go PDS (Personal Data Server) for AT Protocol.
10101111-## Quick Start with Docker Compose
1111+## Quick Start
1212+1313+> [!NOTE]
1414+> Experiment with Vow using the following `DL7KM7UX-4LLQYELW` invite code on the test server [vowpds.srv.rbrt.fr](https://vowpds.srv.rbrt.fr).
1515+> The PDS accounts are cleared regularly.
12161317### Prerequisites
1418
···169169 }, nil
170170}
171171172172-// revSetter is implemented by blockstores that can be told the current repo
173173-// revision before blocks are written (so the Rev column is stamped correctly).
174174-type revSetter interface {
175175- SetRev(rev string)
176176-}
177177-178172// unsignedCommit is the intermediate product of buildUnsignedCommit. It holds
179173// the serialised commit CBOR (without a sig field) plus the rev string, ready
180174// for the user to sign. Once the signature arrives, finaliseCommit uses this
···975969 switch val := item.(type) {
976970 case map[string]any:
977971 if val["$type"] == "blob" {
978978- if ref, ok := val["ref"].(string); ok {
979979- c, err := cid.Parse(ref)
972972+ var c cid.Cid
973973+ switch ref := val["ref"].(type) {
974974+ case string:
975975+ var err error
976976+ c, err = cid.Parse(ref)
980977 if err != nil {
981978 return err
982979 }
980980+ case lexutil.LexLink:
981981+ c = cid.Cid(ref)
982982+ case cid.Cid:
983983+ c = ref
984984+ }
985985+986986+ if c.Defined() {
983987 cids = append(cids, c)
984988 }
989989+985990 for _, v := range val {
986991 return deepiter(v)
987992 }