···1616 | "bsky-post"
1717 | "record"
1818 | "patch-record"
1919- | "bookmark"
1919+ | "margin-bookmark"
2020 | "semble-save"
2121 | `follow-${FollowTarget}`;
2222···2828 * use a sifa-blue and follow-tangled a grey while still grouping under the
2929 * Bluesky/Apps categories. */
3030 colorKey?: ColorKey;
3131- /** Domain used to render the per-app favicon next to the icon (bookmark, follow). */
3131+ /** Domain used to render the per-app favicon next to the icon (margin-bookmark, follow). */
3232 faviconDomain?: string;
3333};
3434···9898 description: "Quick actions for specific AT Protocol apps",
9999 actions: [
100100 {
101101- id: "bookmark",
101101+ id: "margin-bookmark",
102102 label: "Bookmark on Margin",
103103 description: "Create a bookmark note in Margin.at",
104104 icon: Bookmark,
+1-1
lib/automations/follow-targets.ts
···3232 *
3333 * Insertion order doubles as the catalogue tile order within each category
3434 * (Bluesky tile group: bsky-post → follow-bluesky → ...; Apps tile group:
3535- * bookmark → follow-sifa → follow-tangled). Reorder here to reorder the UI.
3535+ * margin-bookmark → follow-sifa → follow-tangled). Reorder here to reorder the UI.
3636 *
3737 * Pure-data module: no JSX / icon imports, so backend code paths can read
3838 * `appName` etc. without pulling in UI components. */
···11+-- Rename "bookmark" action $type to "margin-bookmark" in stored automations.
22+-- Drizzle serializes the `actions` column with JSON.stringify (no spaces), so a
33+-- literal text replace on the canonical `"$type":"bookmark"` substring is safe.
44+UPDATE automations
55+SET actions = REPLACE(actions, '"$type":"bookmark"', '"$type":"margin-bookmark"')
66+WHERE actions LIKE '%"$type":"bookmark"%';