diff --git a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/2ivbc5b4um5bu.json b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/2ivbc5b4um5bu.json index a18abb2..4fd2b35 100644 --- a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/2ivbc5b4um5bu.json +++ b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/2ivbc5b4um5bu.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreif2bskzqjjmwior5qmbfeivv4z6nb2qrtio6a2jnmy2z5b4hosrse", "uri": "at://did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/2ivbc5b4um5bu", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/bj3kxqtnko4gx.json b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/bj3kxqtnko4gx.json index ab13e56..e0e4a07 100644 --- a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/bj3kxqtnko4gx.json +++ b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/bj3kxqtnko4gx.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreieh4i5og6kxeq64wsteijjg3gzixckbct524kqegg22jw3wa7m2d4", "uri": "at://did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/bj3kxqtnko4gx", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/ia5uwsydi5ljs.json b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/ia5uwsydi5ljs.json index d528b46..a5d4b92 100644 --- a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/ia5uwsydi5ljs.json +++ b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/ia5uwsydi5ljs.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreid6x7xc6n4ji6hda5nl7z2assuc42mtzoom6x5makugpg4im5pp2u", "uri": "at://did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/ia5uwsydi5ljs", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/index.json b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/index.json index 69ae2b4..ab19381 100644 --- a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/index.json +++ b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/index.json @@ -16,15 +16,18 @@ "ouyhar727gfwx", "krajt6fldd762", "kr5ig7vlgl276", + "k7bhaaskcuw2j", "jtdn5ncfojjwv", "jbfvt32lao6yg", "ixeuckd6ao43h", "inwkl55s7osg3", + "ia5uwsydi5ljs", "evknoqtr7uyey", "efs4j6j3zqcbv", "d3dmreieiynnd", "caiun7er6rklv", "c5xux5rkjr3n7", + "bj3kxqtnko4gx", "bcdp3pivh6bw6", "amwpl3iupt6wn", "655zfmpn4ln3u", @@ -33,8 +36,5 @@ "3r7eq4inllheg", "325sghcecgzco", "2ks46vomw4s2i", - "ia5uwsydi5ljs", - "bj3kxqtnko4gx", - "2ivbc5b4um5bu", - "k7bhaaskcuw2j" + "2ivbc5b4um5bu" ] \ No newline at end of file diff --git a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/k7bhaaskcuw2j.json b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/k7bhaaskcuw2j.json index ae1d28f..f70fab4 100644 --- a/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/k7bhaaskcuw2j.json +++ b/public/content/did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/k7bhaaskcuw2j.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreicq4zwrghepaogxkm44azvuppoh4m3yiwdea2hfdp2ugvabugyvsm", "uri": "at://did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/k7bhaaskcuw2j", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/27xox352hir2g.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/27xox352hir2g.json index 5f32f54..149977a 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/27xox352hir2g.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/27xox352hir2g.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreif7vavmdapjg2vsocyqh2ydp2ykginlvwanfwznv7pujbg76rjakm", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/27xox352hir2g", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3gaf4ckp5be5j.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3gaf4ckp5be5j.json index 87c8a10..0539a8b 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3gaf4ckp5be5j.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3gaf4ckp5be5j.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreietihhlupzjqzyfrs6ntkz36hweq2kixgyck6szvtt4tqo55mnxcm", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3gaf4ckp5be5j", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3kwayvs5zrtng.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3kwayvs5zrtng.json index 93f1486..8272544 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3kwayvs5zrtng.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3kwayvs5zrtng.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreigbovxielydlzxwjuwxawaamk6je6ghklcrzeu242hcjkv2fovfba", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3kwayvs5zrtng", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3ucggdsyhth6h.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3ucggdsyhth6h.json index 5ecca89..f77a28c 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3ucggdsyhth6h.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3ucggdsyhth6h.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreidq2rubtlxhsc6ebfaarizdik25ym7tcqwpnbihes6jzdgki5nyl4", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/3ucggdsyhth6h", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/6eg45a33vqzp3.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/6eg45a33vqzp3.json index 223d9cd..a8b5627 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/6eg45a33vqzp3.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/6eg45a33vqzp3.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreihcmhfrnf54r2vgy2whqeorqj7cfmqtih6sk6hjdoygrqgjvmqdfq", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/6eg45a33vqzp3", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/74zyr4w2s3vf4.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/74zyr4w2s3vf4.json index 5a7852d..75174f6 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/74zyr4w2s3vf4.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/74zyr4w2s3vf4.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreicsllfd72nl7vtcxnbsurdgkkwmbc6euik67siwbdw6uunqxj7ixq", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/74zyr4w2s3vf4", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/a6hfn4arclf3k.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/a6hfn4arclf3k.json index 77daf63..3363e9e 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/a6hfn4arclf3k.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/a6hfn4arclf3k.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreifvo5d2eglcdodosgjj6tdq6al6i42gikbplzzkxcizlqtdf2gsdy", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/a6hfn4arclf3k", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/b7emi5uv7frxu.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/b7emi5uv7frxu.json index ea2feea..2c22651 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/b7emi5uv7frxu.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/b7emi5uv7frxu.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreibrh3pmpxv5dqnwha5fftpmujfhtoxdq6ak4ghmwz6fbggpxkhwb4", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/b7emi5uv7frxu", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/buzwfx2jasgos.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/buzwfx2jasgos.json index dea58a3..caf1d0f 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/buzwfx2jasgos.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/buzwfx2jasgos.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreigtc2b2fhbx3a3qwf2xungziorgikmi4gyqvugwjn6lxee6ayz2oy", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/buzwfx2jasgos", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/bvm7emi5zgatx.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/bvm7emi5zgatx.json index 3dc1442..2c754d4 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/bvm7emi5zgatx.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/bvm7emi5zgatx.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreidjp5qszvffcwzfzu62vl55tkcqfwbzedt4xpd427yq65hcyhguqm", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/bvm7emi5zgatx", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/coztphfo4rtbx.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/coztphfo4rtbx.json index 3626740..3c95732 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/coztphfo4rtbx.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/coztphfo4rtbx.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreicly2cze5fm7waanpx7y7phit6dig4vzgmba4fn4vk2rtbwlg7bv4", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/coztphfo4rtbx", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/d4wj4rh3k3zsf.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/d4wj4rh3k3zsf.json index 29a8089..b7a0acc 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/d4wj4rh3k3zsf.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/d4wj4rh3k3zsf.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreibyjzddbyvhnibx7znx5vwedewjmkedhb4nvo4xbiqw32pev6o5gy", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/d4wj4rh3k3zsf", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/dud5blgqfgxm7.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/dud5blgqfgxm7.json index a818099..a8f3b5e 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/dud5blgqfgxm7.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/dud5blgqfgxm7.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreic3sexnqskdqo7hsevag4baotyrmx2chhze6nxq4lshtcg7jyii5q", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/dud5blgqfgxm7", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/eto4yezfoztky.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/eto4yezfoztky.json index 0fa2a99..05d3fd3 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/eto4yezfoztky.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/eto4yezfoztky.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreic2kz4q77sbr6aibc7ouww6fbhoasrzp2sbra74m2w7fshs4rcsde", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/eto4yezfoztky", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/index.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/index.json index 2954210..87ca58a 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/index.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/index.json @@ -1,40 +1,40 @@ [ - "3ucggdsyhth6h", - "jcdlr7wjyernr", - "tg7crfsupxz7h", - "wwgwt2ycq3tx5", "zi7t34bdc6kqn", - "wigv2qnon7pmg", - "qbuquaswgxo36", - "p6mxoi2x2ooz6", - "vr72pvlhuxnf5", - "bvm7emi5zgatx", - "snju64fbt4a3n", - "coztphfo4rtbx", - "s55utv52t3rf6", - "odtsnpvndlp73", - "jkvo4qeutpfkk", - "jee3z7tbzoxic", - "khx456dlcp7fs", - "kftis2fugsvqt", - "27xox352hir2g", - "buzwfx2jasgos", - "smrgeplyw5wmr", "z42mx3edarpnb", "y2qobgxho6jte", - "b7emi5uv7frxu", - "6eg45a33vqzp3", - "sqzphb67ymv4i", - "kidbeqeb2gjrx", - "3gaf4ckp5be5j", - "mvahfu2zl55jr", - "74zyr4w2s3vf4", - "ktjdbs7ie2x6d", - "3kwayvs5zrtng", - "d4wj4rh3k3zsf", - "a6hfn4arclf3k", - "q57mb4gebtj2o", - "dud5blgqfgxm7", + "wwgwt2ycq3tx5", + "wigv2qnon7pmg", + "vr72pvlhuxnf5", + "tg7crfsupxz7h", "sv26xtnwgjsds", - "eto4yezfoztky" + "sqzphb67ymv4i", + "snju64fbt4a3n", + "smrgeplyw5wmr", + "s55utv52t3rf6", + "qbuquaswgxo36", + "q57mb4gebtj2o", + "p6mxoi2x2ooz6", + "odtsnpvndlp73", + "mvahfu2zl55jr", + "ktjdbs7ie2x6d", + "kidbeqeb2gjrx", + "khx456dlcp7fs", + "kftis2fugsvqt", + "jkvo4qeutpfkk", + "jee3z7tbzoxic", + "jcdlr7wjyernr", + "eto4yezfoztky", + "dud5blgqfgxm7", + "d4wj4rh3k3zsf", + "coztphfo4rtbx", + "bvm7emi5zgatx", + "buzwfx2jasgos", + "b7emi5uv7frxu", + "a6hfn4arclf3k", + "74zyr4w2s3vf4", + "6eg45a33vqzp3", + "3ucggdsyhth6h", + "3kwayvs5zrtng", + "3gaf4ckp5be5j", + "27xox352hir2g" ] \ No newline at end of file diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jcdlr7wjyernr.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jcdlr7wjyernr.json index f5471f6..e107b65 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jcdlr7wjyernr.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jcdlr7wjyernr.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreicoqko4djxjxxsj2cmlrgeq4rdkyysykfrbbiisc4nfdbyxstbjxm", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jcdlr7wjyernr", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jee3z7tbzoxic.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jee3z7tbzoxic.json index e807aa6..5115d7d 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jee3z7tbzoxic.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jee3z7tbzoxic.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreiaawvruktfefxvs2fbvme2sgltaawdk4dz3fxorihm5swgqopbiwq", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jee3z7tbzoxic", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jkvo4qeutpfkk.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jkvo4qeutpfkk.json index f2363cb..f0f7b25 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jkvo4qeutpfkk.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jkvo4qeutpfkk.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreigzgndcsixaktdbq6j3qhdc44o3pr6ehpjjvn3zsypmgfvyrsjvmm", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/jkvo4qeutpfkk", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/kftis2fugsvqt.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/kftis2fugsvqt.json index 2e8ffc4..2f9fb21 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/kftis2fugsvqt.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/kftis2fugsvqt.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreihir6mdcmfjxa23i6s6cgmkpgoytgpwa4uw6gqjvto2u2afrxluy4", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/kftis2fugsvqt", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/khx456dlcp7fs.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/khx456dlcp7fs.json index 7e5d2e7..8baad6e 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/khx456dlcp7fs.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/khx456dlcp7fs.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreifnmhigc5uiefuifmxi2iue4vynmpj7dexxju67knwyo5bcwtgqxi", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/khx456dlcp7fs", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/kidbeqeb2gjrx.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/kidbeqeb2gjrx.json index 040da22..5c19035 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/kidbeqeb2gjrx.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/kidbeqeb2gjrx.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreif5tmcaem3jv4htzzxixupzuwz3cv7zaoxyoo6mtmj7jbeyellmo4", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/kidbeqeb2gjrx", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/ktjdbs7ie2x6d.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/ktjdbs7ie2x6d.json index cecdd26..bc14ebe 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/ktjdbs7ie2x6d.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/ktjdbs7ie2x6d.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreifztctayrxqy6ly22hbzkdyk3pv3posf6rzby6c4ztu5y4kckz5xm", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/ktjdbs7ie2x6d", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/mvahfu2zl55jr.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/mvahfu2zl55jr.json index fc69c91..42b2e52 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/mvahfu2zl55jr.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/mvahfu2zl55jr.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreiadyiqbh6qzc67ycymktcvpnmoikaexp6houl2jglhdh4o53etox4", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/mvahfu2zl55jr", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/odtsnpvndlp73.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/odtsnpvndlp73.json index 837f8af..4499aa0 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/odtsnpvndlp73.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/odtsnpvndlp73.json @@ -1,5 +1,5 @@ { - "cid": "bafyreifgtrk5f6j5olmd2qas2gjkhm22lf7ka57cbopc42cqh5grukx6hu", + "cid": "bafyreienolhpwxkqqg3wyeg6refqruxt3p4drrcwbkz2nbayidokdlelza", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/odtsnpvndlp73", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/q57mb4gebtj2o.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/q57mb4gebtj2o.json index b20be88..7d03738 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/q57mb4gebtj2o.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/q57mb4gebtj2o.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreigv2bnqn4kjem2vmk2socuh3crfx3yv6hqvqskn5vr2pdx5xaaeju", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/q57mb4gebtj2o", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/s55utv52t3rf6.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/s55utv52t3rf6.json index 2b63a63..0cec2c5 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/s55utv52t3rf6.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/s55utv52t3rf6.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreic4i6iwt3v4rudbo3f7prkfrvf7h6vthca46r6asvxl2r6aqjwvrq", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/s55utv52t3rf6", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/smrgeplyw5wmr.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/smrgeplyw5wmr.json index 3016dee..5aa34b9 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/smrgeplyw5wmr.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/smrgeplyw5wmr.json @@ -1,10 +1,10 @@ { - "cid": "", + "cid": "bafyreialo6tv5rdgvndsdl5o3jhhzzq3lb5m4fksabzwlcrc7pwlt2mive", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/smrgeplyw5wmr", "value": { "$type": "ai.syui.log.chat", "author": "did:plc:vzsvtbtbnwn22xjqhcu3vd6y", - "content": "AIとの会話をblogにするailog chat", + "content": "AIとの会話をblogに", "createdAt": "2026-01-22T08:22:43.604Z", "translations": { "en": { diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/snju64fbt4a3n.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/snju64fbt4a3n.json index fe1f558..162fdad 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/snju64fbt4a3n.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/snju64fbt4a3n.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreic3r77rentf6z6mixsemgdj6wqwl2qv3jyczs6mdtz2nyocvlcoo4", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/snju64fbt4a3n", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/sqzphb67ymv4i.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/sqzphb67ymv4i.json index 0a00e6c..d4ada45 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/sqzphb67ymv4i.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/sqzphb67ymv4i.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreidgav26ja7b6q3pdc6jk65dzc5mobdctmjzvbcyripkqkzkpoeb34", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/sqzphb67ymv4i", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/sv26xtnwgjsds.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/sv26xtnwgjsds.json index be78f34..be0d55a 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/sv26xtnwgjsds.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/sv26xtnwgjsds.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreignupovvbqukrlnvxztzfqbmxqmbgbcosokxeksii7wvx5nn4vgpy", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/sv26xtnwgjsds", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/tg7crfsupxz7h.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/tg7crfsupxz7h.json index 808b23f..d93a6e0 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/tg7crfsupxz7h.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/tg7crfsupxz7h.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreie2mbknda5ldms5s7ngrxwcspkthpl4aahzp64q2ulyax6lxbyxju", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/tg7crfsupxz7h", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/vr72pvlhuxnf5.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/vr72pvlhuxnf5.json index cb4e2c5..329c586 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/vr72pvlhuxnf5.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/vr72pvlhuxnf5.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreiby4ni3j2qu7v7vc5rztu77axun2r6rmbg5wtsphldtg5iplyjs5a", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/vr72pvlhuxnf5", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/wigv2qnon7pmg.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/wigv2qnon7pmg.json index 6a04c06..cdf38d6 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/wigv2qnon7pmg.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/wigv2qnon7pmg.json @@ -1,10 +1,10 @@ { - "cid": "bafyreidsy43pp3svebjnihwxavlad2rdczwb4vyjnjlmjep2amiae46iia", + "cid": "bafyreiexvd4rbzzmj5nvkxpk5ps4jp6lu3qp3i2ib6h677g6ahs4w7iu5q", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/wigv2qnon7pmg", "value": { "$type": "ai.syui.log.chat", "author": "did:plc:vzsvtbtbnwn22xjqhcu3vd6y", - "content": "ailogのコンセプトを短く紹介してみて。", + "content": "ailogのコンセプト", "createdAt": "2026-01-20T09:48:37.328Z", "parent": "at://did:plc:6qyecktefllvenje24fcxnie/ai.syui.log.chat/3ar343fz5oop3", "root": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/cav7q75r73jui", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/wwgwt2ycq3tx5.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/wwgwt2ycq3tx5.json index 2f1d57b..dc70262 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/wwgwt2ycq3tx5.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/wwgwt2ycq3tx5.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreia4ewyyhdmj5qh3zql24yiyjpo2jafawsm7i32t4j7ksp3lt3n5mm", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/wwgwt2ycq3tx5", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/y2qobgxho6jte.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/y2qobgxho6jte.json index ebd0a58..8a1fdd4 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/y2qobgxho6jte.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/y2qobgxho6jte.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreicscksmqtcfgsojrmdsku4oheofaqkoqhbnobmzyo4o462dz2zraq", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/y2qobgxho6jte", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/z42mx3edarpnb.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/z42mx3edarpnb.json index f0e6a76..916813d 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/z42mx3edarpnb.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/z42mx3edarpnb.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreibueicq2s54tostoq5gy6lemfr5zryij7z2nq23zhzmq2f7a2zzly", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/z42mx3edarpnb", "value": { "$type": "ai.syui.log.chat", diff --git a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/zi7t34bdc6kqn.json b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/zi7t34bdc6kqn.json index 54b5e47..ba524c1 100644 --- a/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/zi7t34bdc6kqn.json +++ b/public/content/did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/zi7t34bdc6kqn.json @@ -1,5 +1,5 @@ { - "cid": "", + "cid": "bafyreid7nbomq5qnza2kqkfv3sha4wqjh4lr4cwusuqdh2y57jpza6triu", "uri": "at://did:plc:vzsvtbtbnwn22xjqhcu3vd6y/ai.syui.log.chat/zi7t34bdc6kqn", "value": { "$type": "ai.syui.log.chat", diff --git a/src/web/components/chat.ts b/src/web/components/chat.ts index 8157b72..bab0d2d 100644 --- a/src/web/components/chat.ts +++ b/src/web/components/chat.ts @@ -171,7 +171,8 @@ export function renderChatThread( userProfile?: Profile | null, botProfile?: Profile | null, pds?: string, - chatCollection: string = 'ai.syui.log.chat' + chatCollection: string = 'ai.syui.log.chat', + loggedInDid?: string | null ): string { // Find root message const rootUri = `at://${userDid}/${chatCollection}/${rootRkey}` @@ -223,6 +224,8 @@ export function renderChatThread( const displayContent = getTranslatedContent(msg) const content = renderMarkdown(displayContent) const recordLink = `/@${author.handle}/at/collection/${chatCollection}/${rkey}` + const canEdit = loggedInDid && authorDid === loggedInDid + const editLink = `/@${userHandle}/at/chat/${rkey}/edit` return `
@@ -233,6 +236,7 @@ export function renderChatThread(
@${escapeHtml(author.handle)} ${time} + ${canEdit ? `edit` : ''}
${content}
@@ -269,8 +273,41 @@ export function renderChatThreadPage( userProfile?: Profile | null, botProfile?: Profile | null, pds?: string, - chatCollection: string = 'ai.syui.log.chat' + chatCollection: string = 'ai.syui.log.chat', + loggedInDid?: string | null ): string { - const thread = renderChatThread(messages, rootRkey, userDid, userHandle, botDid, botHandle, userProfile, botProfile, pds, chatCollection) + const thread = renderChatThread(messages, rootRkey, userDid, userHandle, botDid, botHandle, userProfile, botProfile, pds, chatCollection, loggedInDid) return `
${thread}
` } + +// Render chat edit form +export function renderChatEditForm( + message: ChatMessage, + collection: string, + userHandle: string +): string { + const rkey = message.uri.split('/').pop() || '' + const content = message.value.content + + return ` +
+

Edit Chat Message

+
+ + +
+
+
+ ` +} diff --git a/src/web/lib/auth.ts b/src/web/lib/auth.ts index 9bf2cf0..f1be2d8 100644 --- a/src/web/lib/auth.ts +++ b/src/web/lib/auth.ts @@ -254,8 +254,8 @@ export async function updatePost( try { // Fetch existing record to preserve translations - let existingTranslations = undefined - let existingCreatedAt = new Date().toISOString() + let existingTranslations: unknown = undefined + let existingCreatedAt: unknown = new Date().toISOString() try { const existing = await agent.com.atproto.repo.getRecord({ repo: agent.assertDid, @@ -266,7 +266,7 @@ export async function updatePost( const value = existing.data.value as Record existingTranslations = value.translations if (value.createdAt) { - existingCreatedAt = value.createdAt as string + existingCreatedAt = value.createdAt } } } catch { @@ -298,6 +298,51 @@ export async function updatePost( } } +// Update chat message +export async function updateChat( + collection: string, + rkey: string, + content: string +): Promise<{ uri: string; cid: string } | null> { + if (!agent) return null + + try { + // Fetch existing record to preserve translations and other fields + let existingRecord: Record = {} + try { + const existing = await agent.com.atproto.repo.getRecord({ + repo: agent.assertDid, + collection, + rkey, + }) + if (existing.data.value) { + existingRecord = existing.data.value as Record + } + } catch { + // Record doesn't exist + throw new Error('Record not found') + } + + const record: Record = { + ...existingRecord, + $type: collection, + content, + } + + const result = await agent.com.atproto.repo.putRecord({ + repo: agent.assertDid, + collection, + rkey, + record, + }) + + return { uri: result.data.uri, cid: result.data.cid } + } catch (err) { + console.error('Update chat error:', err) + throw err + } +} + // Save migrated card data to ai.syui.card.old export async function saveMigratedCardData( user: { diff --git a/src/web/lib/router.ts b/src/web/lib/router.ts index c2d8fbe..2525a74 100644 --- a/src/web/lib/router.ts +++ b/src/web/lib/router.ts @@ -1,5 +1,5 @@ export interface Route { - type: 'home' | 'user' | 'post' | 'postpage' | 'atbrowser' | 'service' | 'collection' | 'record' | 'chat' | 'chat-thread' | 'card' | 'card-old' | 'rse' + type: 'home' | 'user' | 'post' | 'postpage' | 'atbrowser' | 'service' | 'collection' | 'record' | 'chat' | 'chat-thread' | 'chat-edit' | 'card' | 'card-old' | 'rse' handle?: string rkey?: string service?: string @@ -69,6 +69,12 @@ export function parseRoute(): Route { return { type: 'rse', handle: rseMatch[1] } } + // Chat edit: /@handle/at/chat/{rkey}/edit + const chatEditMatch = path.match(/^\/@([^/]+)\/at\/chat\/([^/]+)\/edit$/) + if (chatEditMatch) { + return { type: 'chat-edit', handle: chatEditMatch[1], rkey: chatEditMatch[2] } + } + // Chat thread: /@handle/at/chat/{rkey} const chatThreadMatch = path.match(/^\/@([^/]+)\/at\/chat\/([^/]+)$/) if (chatThreadMatch) { @@ -117,6 +123,8 @@ export function navigate(route: Route): void { path = `/@${route.handle}/at/chat` } else if (route.type === 'chat-thread' && route.handle && route.rkey) { path = `/@${route.handle}/at/chat/${route.rkey}` + } else if (route.type === 'chat-edit' && route.handle && route.rkey) { + path = `/@${route.handle}/at/chat/${route.rkey}/edit` } window.history.pushState({}, '', path) diff --git a/src/web/main.ts b/src/web/main.ts index 2ac2146..2471404 100644 --- a/src/web/main.ts +++ b/src/web/main.ts @@ -3,7 +3,7 @@ import './styles/card.css' import './styles/card-migrate.css' import { getConfig, resolveHandle, getProfile, getPosts, getPost, describeRepo, listRecords, getRecord, getPds, getNetworks, getChatMessages, getCards, getRse } from './lib/api' import { parseRoute, onRouteChange, navigate, type Route } from './lib/router' -import { login, logout, handleCallback, restoreSession, isLoggedIn, getLoggedInHandle, getLoggedInDid, deleteRecord, updatePost } from './lib/auth' +import { login, logout, handleCallback, restoreSession, isLoggedIn, getLoggedInHandle, getLoggedInDid, deleteRecord, updatePost, updateChat } from './lib/auth' import { validateRecord } from './lib/lexicon' import { renderHeader } from './components/header' import { renderProfile } from './components/profile' @@ -12,7 +12,7 @@ import { renderPostForm, setupPostForm } from './components/postform' import { renderCollectionButtons, renderServerInfo, renderServiceList, renderCollectionList, renderRecordList, renderRecordDetail } from './components/browser' import { renderModeTabs, renderLangSelector, setupModeTabs } from './components/mode-tabs' import { renderFooter } from './components/footer' -import { renderChatListPage, renderChatThreadPage } from './components/chat' +import { renderChatListPage, renderChatThreadPage, renderChatEditForm } from './components/chat' import { renderCardPage } from './components/card' import { renderRsePage } from './components/rse' import { checkMigrationStatus, renderMigrationPage, setupMigrationButton } from './components/card-migrate' @@ -168,7 +168,7 @@ async function render(route: Route): Promise { // Mode tabs (Blog/Browser/Post/Chat/PDS) const activeTab = route.type === 'postpage' ? 'post' : - (route.type === 'chat' || route.type === 'chat-thread') ? 'chat' : + (route.type === 'chat' || route.type === 'chat-thread' || route.type === 'chat-edit') ? 'chat' : (route.type === 'atbrowser' || route.type === 'service' || route.type === 'collection' || route.type === 'record' ? 'browser' : 'blog') html += renderModeTabs(handle, activeTab, localOnly) @@ -320,10 +320,35 @@ async function render(route: Route): Promise { langList = Array.from(chatLangs) html += renderLangSelector(langList) - html += `
${renderChatThreadPage(chatMessages, route.rkey, did, handle, botDid, botHandle, profile, botProfile, pds || undefined, chatCollection)}
` + html += `
${renderChatThreadPage(chatMessages, route.rkey, did, handle, botDid, botHandle, profile, botProfile, pds || undefined, chatCollection, loggedInDid)}
` html += `` } + } else if (route.type === 'chat-edit' && route.rkey) { + // Chat edit page + if (!config.bot) { + html += `
Bot not configured in config.json
` + html += `` + } else if (!isOwner) { + html += `
You can only edit your own messages
` + html += `` + } else { + const botDid = config.bot.did + const chatCollection = config.chatCollection || 'ai.syui.log.chat' + + // Get the specific message + const chatMessages = await getChatMessages(did, botDid, chatCollection) + const targetUri = `at://${did}/${chatCollection}/${route.rkey}` + const message = chatMessages.find(m => m.uri === targetUri) + + if (!message) { + html += `
Message not found
` + } else { + html += `
${renderChatEditForm(message, chatCollection, handle)}
` + } + html += `` + } + } else { // User page: compact collection buttons + posts (use pre-loaded collections) html += `
${renderCollectionButtons(collections, handle)}
` @@ -368,6 +393,12 @@ async function render(route: Route): Promise { setupPostEdit(config.collection) } + // Setup chat edit form + if (route.type === 'chat-edit' && isOwner) { + const chatCollection = config.chatCollection || 'ai.syui.log.chat' + setupChatEdit(chatCollection, handle) + } + // Setup validate button for record detail if (currentRecord) { setupValidateButton(currentRecord) @@ -564,6 +595,49 @@ function setupPostEdit(collection: string): void { }) } +// Setup chat edit form +function setupChatEdit(collection: string, handle: string): void { + const form = document.getElementById('chat-edit-form') as HTMLFormElement + const contentInput = document.getElementById('chat-edit-content') as HTMLTextAreaElement + const saveBtn = document.getElementById('chat-edit-save') as HTMLButtonElement + const statusEl = document.getElementById('chat-edit-status') as HTMLDivElement + + if (!form || !saveBtn) return + + form.addEventListener('submit', async (e) => { + e.preventDefault() + + const rkey = saveBtn.getAttribute('data-rkey') + if (!rkey || !contentInput) return + + const content = contentInput.value.trim() + + if (!content) { + alert('Content is required') + return + } + + try { + saveBtn.textContent = 'Saving...' + saveBtn.disabled = true + + await updateChat(collection, rkey, content) + + statusEl.innerHTML = 'Saved!' + + // Navigate back to chat thread + setTimeout(() => { + navigate({ type: 'chat-thread', handle, rkey }) + }, 1000) + } catch (err) { + console.error('Update failed:', err) + statusEl.innerHTML = `Error: ${err}` + saveBtn.textContent = 'Save' + saveBtn.disabled = false + } + }) +} + // Initial render render(parseRoute()) diff --git a/src/web/styles/main.css b/src/web/styles/main.css index e46943b..cee9c24 100644 --- a/src/web/styles/main.css +++ b/src/web/styles/main.css @@ -2510,3 +2510,133 @@ button.tab { line-height: 1.4; white-space: pre-line; } + +/* Chat Edit Button */ +.chat-edit-btn { + color: #888; + font-size: 0.8rem; + text-decoration: none; + margin-left: 8px; +} + +.chat-edit-btn:hover { + color: var(--btn-color); + text-decoration: underline; +} + +/* Chat Edit Form */ +.chat-edit-container { + max-width: 800px; + margin: 0 auto; + padding: 20px; +} + +.chat-edit-container h2 { + margin-bottom: 20px; + font-size: 1.2rem; +} + +.chat-edit-form { + display: flex; + flex-direction: column; + gap: 15px; +} + +.chat-edit-content { + width: 100%; + padding: 12px; + border: 1px solid #ddd; + border-radius: 8px; + font-size: 1rem; + font-family: inherit; + resize: vertical; + min-height: 200px; +} + +.chat-edit-content:focus { + outline: none; + border-color: var(--btn-color); +} + +.chat-edit-footer { + display: flex; + justify-content: space-between; + align-items: center; +} + +.chat-edit-collection { + color: #888; + font-size: 0.85rem; +} + +.chat-edit-buttons { + display: flex; + gap: 10px; + align-items: center; +} + +.chat-edit-cancel { + color: #666; + text-decoration: none; + padding: 8px 16px; +} + +.chat-edit-cancel:hover { + text-decoration: underline; +} + +.chat-edit-save { + background: var(--btn-color); + color: white; + border: none; + padding: 8px 20px; + border-radius: 6px; + cursor: pointer; + font-size: 0.95rem; +} + +.chat-edit-save:hover { + opacity: 0.9; +} + +.chat-edit-save:disabled { + opacity: 0.6; + cursor: not-allowed; +} + +.chat-edit-status { + margin-top: 10px; +} + +.chat-edit-success { + color: #22c55e; +} + +.chat-edit-error { + color: #ef4444; +} + +/* Dark mode */ +@media (prefers-color-scheme: dark) { + .chat-edit-btn { + color: #888; + } + + .chat-edit-btn:hover { + color: var(--btn-color); + } + + .chat-edit-content { + background: #1a1a1a; + border-color: #333; + color: #e0e0e0; + } + + .chat-edit-content:focus { + border-color: var(--btn-color); + } + + .chat-edit-cancel { + color: #999; + } +}