+ This will delete the original post and create a new one with alt text
+ added to {approvedCount} image{approvedCount !== 1 ? 's' : ''}.
+
+
+ All likes, reposts, quotes, and replies on the original post will be lost.
+ This cannot be undone.
+
+
+
+
+
+
+
+ )}
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/Home/Home.js b/src/components/Home/Home.js
index 103c89b..f396685 100644
--- a/src/components/Home/Home.js
+++ b/src/components/Home/Home.js
@@ -6,16 +6,11 @@ const Home = () => (
Altifier
Scan your Bluesky posts for missing alt text and fix them with AI-generated descriptions.
-
-
- Scan My Posts
-
-
- Verifier
-
-
+
+ Scan My Posts
+
);
-export default Home;
+export default Home;
\ No newline at end of file
diff --git a/src/utils/altApplier.js b/src/utils/altApplier.js
new file mode 100644
index 0000000..a387390
--- /dev/null
+++ b/src/utils/altApplier.js
@@ -0,0 +1,52 @@
+/**
+ * Alt text applicator — delete-and-recreate posts with updated alt text.
+ *
+ * AT Protocol posts are immutable (content-addressed). To add alt text
+ * to a post that's visible in Bluesky's UI, we must delete the original
+ * and create a new one with the updated embed.images[].alt fields.
+ *
+ * Warning: This loses all engagement (likes, reposts, quotes, replies).
+ */
+
+/**
+ * Applies approved alt text to a post by recreating it.
+ *
+ * 1. Deep-clones the original record
+ * 2. Updates embed.images[N].alt with approved values
+ * 3. Deletes the original post
+ * 4. Creates a new post with updated alt text
+ *
+ * @param {import('@atproto/api').Agent} agent - Authenticated ATProto agent
+ * @param {string} did - The user's DID
+ * @param {Object} post - Post object from postScanner (must include originalValue and rkey)
+ * @param {Object} approvedAlts - Map of imageIndex -> new alt text
+ * @returns {Promise