From 5358682a8cfbd12d93a4e9962f7a9f0440c42c19 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 2 Nov 2025 20:48:17 +0000 Subject: feat(rss): Add import tags from RSS feed categories (#2031) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(feeds): Add import tags from RSS feed categories - Add importTags boolean field to rssFeedsTable schema (default: false) - Create database migration 0063_add_import_tags_to_feeds.sql - Update zod schemas (zFeedSchema, zNewFeedSchema, zUpdateFeedSchema) to include importTags - Update Feed model to handle importTags in create and update methods - Update feedWorker to: - Read title and categories from RSS parser - Attach categories as tags to bookmarks when importTags is enabled - Log warnings if tag attachment fails Resolves #1996 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Mohamed Bassem * feat(web): Add importTags option to feed settings UI - Add importTags toggle to FeedsEditorDialog (create feed) - Add importTags toggle to EditFeedDialog (edit feed) - Display as a bordered switch control with descriptive text - Defaults to false for new feeds Co-authored-by: Mohamed Bassem * fix migration * remove extra migration --------- Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Mohamed Bassem --- packages/shared/types/feeds.ts | 3 +++ 1 file changed, 3 insertions(+) (limited to 'packages/shared') diff --git a/packages/shared/types/feeds.ts b/packages/shared/types/feeds.ts index 060f6d10..90a187f7 100644 --- a/packages/shared/types/feeds.ts +++ b/packages/shared/types/feeds.ts @@ -10,6 +10,7 @@ export const zFeedSchema = z.object({ name: z.string().min(1).max(MAX_FEED_NAME_LENGTH), url: z.string().url(), enabled: z.boolean(), + importTags: z.boolean(), lastFetchedStatus: z.enum(["success", "failure", "pending"]).nullable(), lastFetchedAt: z.date().nullable(), }); @@ -20,6 +21,7 @@ export const zNewFeedSchema = z.object({ name: z.string().min(1).max(MAX_FEED_NAME_LENGTH), url: z.string().max(MAX_FEED_URL_LENGTH).url(), enabled: z.boolean(), + importTags: z.boolean().optional().default(false), }); export const zUpdateFeedSchema = z.object({ @@ -27,4 +29,5 @@ export const zUpdateFeedSchema = z.object({ name: z.string().min(1).max(MAX_FEED_NAME_LENGTH).optional(), url: z.string().max(MAX_FEED_URL_LENGTH).url().optional(), enabled: z.boolean().optional(), + importTags: z.boolean().optional(), }); -- cgit v1.2.3-70-g09d2