Bugfixes (Dark Mode, Dropdown-Kontrast, IP-Suche), Lesezeichen-Ausbau (Farbe, Beschreibung, Favicon), Zuletzt-besucht, Spaeter-lesen, kombinierter Import-Export, Scanner-Reconciliation, Admin-Ueberarbeitung

This commit is contained in:
2026-07-20 07:52:38 +02:00
parent dc91a9aba9
commit 96cf29fef4
37 changed files with 1988 additions and 494 deletions

View File

@@ -59,6 +59,7 @@ export const categories = sqliteTable("categories", {
id: text("id").primaryKey(),
name: text("name").notNull(),
order: real("order").notNull().default(0),
color: text("color"),
createdAt: text("created_at").notNull(),
updatedAt: text("updated_at").notNull(),
});
@@ -97,3 +98,34 @@ export const bookmarks = sqliteTable("bookmarks", {
createdAt: text("created_at").notNull(),
updatedAt: text("updated_at").notNull(),
});
/**
* Zuletzt aus der Suche geöffnete Dienste/Lesezeichen, für die
* "Zuletzt besucht"-Leiste auf der Startseite.
*/
export const recentVisits = sqliteTable("recent_visits", {
id: text("id").primaryKey(),
itemType: text("item_type").notNull(), // "service" | "bookmark"
itemId: text("item_id").notNull(),
visitedAt: text("visited_at").notNull(),
});
/** Freie Schlüssel-Wert-Einstellungen, z. B. Anzahl "Zuletzt besucht". */
export const appSettings = sqliteTable("app_settings", {
key: text("key").primaryKey(),
value: text("value").notNull(),
});
/**
* "Später lesen": schnell von der Startseite abgelegte Links, unabhängig
* von Lesezeichen/Diensten. Können später zu einem Lesezeichen befördert
* oder gelöscht werden.
*/
export const readLater = sqliteTable("read_later", {
id: text("id").primaryKey(),
url: text("url").notNull(),
displayName: text("display_name").notNull(),
favicon: text("favicon"),
savedAt: text("saved_at").notNull(),
updatedAt: text("updated_at").notNull(),
});