first commit
RustBox CI / rustbox (push) Waiting to run

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-29 15:24:59 +01:00
commit bc5fbd6ba9
180 files changed
+63750

No files matched your search

+6
View File
@@ -0,0 +1,6 @@
CREATE TABLE IF NOT EXISTS user_meta (
key TEXT PRIMARY KEY,
value TEXT NOT NULL
);
INSERT OR IGNORE INTO user_meta (key, value) VALUES ('schema_version', '1');
+41
View File
@@ -0,0 +1,41 @@
-- Folder cache: stores the IMAP folder hierarchy
CREATE TABLE IF NOT EXISTS folders (
name TEXT PRIMARY KEY,
delimiter TEXT,
parent TEXT,
flags TEXT NOT NULL DEFAULT '',
is_subscribed INTEGER NOT NULL DEFAULT 1,
total_count INTEGER NOT NULL DEFAULT 0,
unread_count INTEGER NOT NULL DEFAULT 0,
uid_validity INTEGER NOT NULL DEFAULT 0,
highest_modseq INTEGER NOT NULL DEFAULT 0,
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
-- Message header cache: stores synced email headers per folder
CREATE TABLE IF NOT EXISTS messages (
uid INTEGER NOT NULL,
folder TEXT NOT NULL,
message_id TEXT,
in_reply_to TEXT,
subject TEXT NOT NULL DEFAULT '',
from_address TEXT NOT NULL DEFAULT '',
from_name TEXT NOT NULL DEFAULT '',
to_addresses TEXT NOT NULL DEFAULT '',
cc_addresses TEXT NOT NULL DEFAULT '',
date TEXT NOT NULL,
flags TEXT NOT NULL DEFAULT '',
size INTEGER NOT NULL DEFAULT 0,
has_attachments INTEGER NOT NULL DEFAULT 0,
snippet TEXT NOT NULL DEFAULT '',
body_cached INTEGER NOT NULL DEFAULT 0,
body_html TEXT,
body_text TEXT,
references_header TEXT,
PRIMARY KEY (uid, folder),
FOREIGN KEY (folder) REFERENCES folders(name) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_messages_folder_date ON messages(folder, date DESC);
CREATE INDEX IF NOT EXISTS idx_messages_message_id ON messages(message_id);
CREATE INDEX IF NOT EXISTS idx_messages_in_reply_to ON messages(in_reply_to);
+6
View File
@@ -0,0 +1,6 @@
-- Add a sortable integer timestamp column for proper date ordering.
ALTER TABLE messages ADD COLUMN date_epoch INTEGER NOT NULL DEFAULT 0;
-- Rebuild index to use the new column for sorting.
DROP INDEX IF EXISTS idx_messages_folder_date;
CREATE INDEX idx_messages_folder_date ON messages(folder, date_epoch DESC);
@@ -0,0 +1,3 @@
-- Separate timestamp for when a folder's messages were last synced from IMAP,
-- distinct from `updated_at` which tracks when the folder list was last synced.
ALTER TABLE folders ADD COLUMN messages_updated_at TEXT;
@@ -0,0 +1,24 @@
CREATE TABLE IF NOT EXISTS drafts (
id TEXT PRIMARY KEY,
to_addresses TEXT NOT NULL DEFAULT '',
cc_addresses TEXT NOT NULL DEFAULT '',
bcc_addresses TEXT NOT NULL DEFAULT '',
subject TEXT NOT NULL DEFAULT '',
text_body TEXT NOT NULL DEFAULT '',
html_body TEXT,
in_reply_to TEXT,
references_header TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS draft_attachments (
id TEXT PRIMARY KEY,
draft_id TEXT NOT NULL,
filename TEXT NOT NULL,
content_type TEXT NOT NULL,
size INTEGER NOT NULL,
file_path TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
FOREIGN KEY (draft_id) REFERENCES drafts(id) ON DELETE CASCADE
);
@@ -0,0 +1,3 @@
-- Cache attachment metadata and raw headers alongside the message body.
ALTER TABLE messages ADD COLUMN attachments_json TEXT;
ALTER TABLE messages ADD COLUMN raw_headers TEXT;
+18
View File
@@ -0,0 +1,18 @@
CREATE TABLE IF NOT EXISTS contacts (
id TEXT PRIMARY KEY,
email TEXT NOT NULL,
name TEXT NOT NULL DEFAULT '',
company TEXT NOT NULL DEFAULT '',
notes TEXT NOT NULL DEFAULT '',
is_favorite INTEGER NOT NULL DEFAULT 0,
last_contacted TEXT,
contact_count INTEGER NOT NULL DEFAULT 0,
source TEXT NOT NULL DEFAULT 'manual',
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE UNIQUE INDEX IF NOT EXISTS idx_contacts_email ON contacts(email);
CREATE INDEX IF NOT EXISTS idx_contacts_name ON contacts(name);
CREATE INDEX IF NOT EXISTS idx_contacts_last_contacted ON contacts(last_contacted DESC);
CREATE INDEX IF NOT EXISTS idx_contacts_contact_count ON contacts(contact_count DESC);
+9
View File
@@ -0,0 +1,9 @@
CREATE TABLE IF NOT EXISTS identities (
id INTEGER PRIMARY KEY AUTOINCREMENT,
display_name TEXT NOT NULL DEFAULT '',
email TEXT NOT NULL,
signature_html TEXT NOT NULL DEFAULT '',
is_default INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
@@ -0,0 +1,9 @@
CREATE TABLE IF NOT EXISTS notification_preferences (
id INTEGER PRIMARY KEY DEFAULT 1 CHECK (id = 1),
enabled INTEGER NOT NULL DEFAULT 1,
sound INTEGER NOT NULL DEFAULT 0,
folders TEXT NOT NULL DEFAULT '["INBOX"]',
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
INSERT OR IGNORE INTO notification_preferences (id) VALUES (1);
+16
View File
@@ -0,0 +1,16 @@
CREATE TABLE IF NOT EXISTS contact_groups (
id TEXT PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS contact_group_members (
group_id TEXT NOT NULL,
contact_id TEXT NOT NULL,
PRIMARY KEY (group_id, contact_id),
FOREIGN KEY (group_id) REFERENCES contact_groups(id) ON DELETE CASCADE,
FOREIGN KEY (contact_id) REFERENCES contacts(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_cgm_contact_id ON contact_group_members(contact_id);
+1
View File
@@ -0,0 +1 @@
ALTER TABLE messages ADD COLUMN reaction TEXT;
+20
View File
@@ -0,0 +1,20 @@
CREATE TABLE IF NOT EXISTS tags (
id TEXT PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
color TEXT NOT NULL DEFAULT '#6b7280',
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS message_tags (
tag_id TEXT NOT NULL,
message_uid INTEGER NOT NULL,
message_folder TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
PRIMARY KEY (tag_id, message_uid, message_folder),
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE,
FOREIGN KEY (message_uid, message_folder) REFERENCES messages(uid, folder) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_message_tags_message ON message_tags(message_uid, message_folder);
CREATE INDEX IF NOT EXISTS idx_message_tags_tag ON message_tags(tag_id);
+7
View File
@@ -0,0 +1,7 @@
CREATE TABLE IF NOT EXISTS display_preferences (
id INTEGER PRIMARY KEY DEFAULT 1 CHECK (id = 1),
density TEXT NOT NULL DEFAULT 'comfortable',
theme TEXT NOT NULL DEFAULT 'system',
language TEXT NOT NULL DEFAULT 'en',
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
+1
View File
@@ -0,0 +1 @@
ALTER TABLE display_preferences ADD COLUMN compose_format TEXT NOT NULL DEFAULT 'html';
+1
View File
@@ -0,0 +1 @@
ALTER TABLE display_preferences ADD COLUMN deep_index BOOLEAN NOT NULL DEFAULT 0;
+51
View File
@@ -0,0 +1,51 @@
CREATE TABLE calendar_events (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
description TEXT NOT NULL DEFAULT '',
location TEXT NOT NULL DEFAULT '',
start_time TEXT NOT NULL,
end_time TEXT NOT NULL,
all_day INTEGER NOT NULL DEFAULT 0,
recurrence_rule TEXT,
attendees TEXT NOT NULL DEFAULT '[]',
organizer TEXT NOT NULL DEFAULT '',
status TEXT NOT NULL DEFAULT 'confirmed',
source TEXT NOT NULL DEFAULT 'manual',
source_uid TEXT,
source_message_uid INTEGER,
source_message_folder TEXT,
meeting_url TEXT,
color TEXT,
reminder_minutes INTEGER,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE INDEX idx_calendar_events_time ON calendar_events(start_time, end_time);
CREATE INDEX idx_calendar_events_source_uid ON calendar_events(source_uid);
CREATE TABLE calendar_settings (
id INTEGER PRIMARY KEY DEFAULT 1 CHECK (id = 1),
default_view TEXT NOT NULL DEFAULT 'month',
week_starts_on INTEGER NOT NULL DEFAULT 0,
working_hours_start TEXT NOT NULL DEFAULT '09:00',
working_hours_end TEXT NOT NULL DEFAULT '17:00',
time_format TEXT NOT NULL DEFAULT '12h',
zoom_link TEXT NOT NULL DEFAULT '',
teams_link TEXT NOT NULL DEFAULT '',
meet_link TEXT NOT NULL DEFAULT '',
caldav_url TEXT NOT NULL DEFAULT '',
caldav_username TEXT NOT NULL DEFAULT '',
caldav_password TEXT NOT NULL DEFAULT '',
caldav_enabled INTEGER NOT NULL DEFAULT 0,
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE meeting_templates (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
url_template TEXT NOT NULL,
icon TEXT NOT NULL DEFAULT '',
is_default INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
+4
View File
@@ -0,0 +1,4 @@
-- Add email_theme column to messages table
-- NULL = not yet detected (only relevant when body_html exists)
-- 0 = Light, 1 = Dark, 2 = Transparent
ALTER TABLE messages ADD COLUMN email_theme INTEGER;
+2
View File
@@ -0,0 +1,2 @@
ALTER TABLE display_preferences
ADD COLUMN animation_mode TEXT NULL;
+34
View File
@@ -0,0 +1,34 @@
-- Denormalized table of known email addresses extracted from message headers.
-- Avoids expensive json_each() scanning of to_addresses/cc_addresses columns.
CREATE TABLE IF NOT EXISTS known_addresses (
email TEXT NOT NULL,
name TEXT NOT NULL DEFAULT '',
PRIMARY KEY (email)
);
CREATE INDEX IF NOT EXISTS idx_known_addresses_name ON known_addresses(name);
-- Backfill from existing messages: from_address
INSERT INTO known_addresses (email, name)
SELECT from_address, COALESCE(from_name, '')
FROM messages
WHERE from_address != ''
ON CONFLICT(email) DO UPDATE SET name = excluded.name WHERE excluded.name != '';
-- Backfill from existing messages: to_addresses (JSON array)
INSERT INTO known_addresses (email, name)
SELECT value->>'address', COALESCE(value->>'name', '')
FROM messages, json_each(to_addresses)
WHERE json_valid(to_addresses)
AND value->>'address' IS NOT NULL
AND value->>'address' != ''
ON CONFLICT(email) DO UPDATE SET name = excluded.name WHERE excluded.name != '';
-- Backfill from existing messages: cc_addresses (JSON array)
INSERT INTO known_addresses (email, name)
SELECT value->>'address', COALESCE(value->>'name', '')
FROM messages, json_each(cc_addresses)
WHERE json_valid(cc_addresses)
AND value->>'address' IS NOT NULL
AND value->>'address' != ''
ON CONFLICT(email) DO UPDATE SET name = excluded.name WHERE excluded.name != '';
@@ -0,0 +1,17 @@
ALTER TABLE display_preferences ADD COLUMN preview_pane TEXT NOT NULL DEFAULT 'right';
ALTER TABLE display_preferences ADD COLUMN ui_scale TEXT NOT NULL DEFAULT 'normal';
ALTER TABLE display_preferences ADD COLUMN color_preset TEXT NOT NULL DEFAULT 'sage';
ALTER TABLE display_preferences ADD COLUMN accent_color TEXT NOT NULL DEFAULT '#6f9c86';
ALTER TABLE display_preferences ADD COLUMN font_family TEXT NOT NULL DEFAULT 'system';
ALTER TABLE display_preferences ADD COLUMN font_size INTEGER NOT NULL DEFAULT 13;
ALTER TABLE display_preferences ADD COLUMN row_height INTEGER NOT NULL DEFAULT 58;
ALTER TABLE display_preferences ADD COLUMN folder_pane_width INTEGER NOT NULL DEFAULT 228;
ALTER TABLE display_preferences ADD COLUMN message_pane_width INTEGER NOT NULL DEFAULT 420;
ALTER TABLE display_preferences ADD COLUMN border_radius INTEGER NOT NULL DEFAULT 4;
ALTER TABLE display_preferences ADD COLUMN contrast TEXT NOT NULL DEFAULT 'normal';
ALTER TABLE display_preferences ADD COLUMN show_avatars INTEGER NOT NULL DEFAULT 1;
ALTER TABLE display_preferences ADD COLUMN show_attachment_icons INTEGER NOT NULL DEFAULT 1;
ALTER TABLE display_preferences ADD COLUMN show_flags INTEGER NOT NULL DEFAULT 1;
ALTER TABLE display_preferences ADD COLUMN reduce_motion INTEGER NOT NULL DEFAULT 0;
ALTER TABLE display_preferences ADD COLUMN date_format TEXT NOT NULL DEFAULT 'locale';
ALTER TABLE display_preferences ADD COLUMN time_format TEXT NOT NULL DEFAULT 'locale';
+5
View File
@@ -0,0 +1,5 @@
CREATE TABLE IF NOT EXISTS special_folders (
role TEXT PRIMARY KEY CHECK(role IN ('sent','drafts','trash','junk','archive')),
folder_name TEXT NOT NULL,
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
+8
View File
@@ -0,0 +1,8 @@
ALTER TABLE identities ADD COLUMN reply_to TEXT NOT NULL DEFAULT '';
ALTER TABLE identities ADD COLUMN bcc TEXT NOT NULL DEFAULT '';
ALTER TABLE identities ADD COLUMN organization TEXT NOT NULL DEFAULT '';
ALTER TABLE identities ADD COLUMN signature_text TEXT NOT NULL DEFAULT '';
ALTER TABLE identities ADD COLUMN signature_new INTEGER NOT NULL DEFAULT 1;
ALTER TABLE identities ADD COLUMN signature_reply INTEGER NOT NULL DEFAULT 1;
ALTER TABLE identities ADD COLUMN signature_forward INTEGER NOT NULL DEFAULT 1;
ALTER TABLE identities ADD COLUMN signature_position TEXT NOT NULL DEFAULT 'above';
+9
View File
@@ -0,0 +1,9 @@
CREATE TABLE IF NOT EXISTS saved_searches (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
query_string TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE UNIQUE INDEX IF NOT EXISTS idx_saved_searches_name ON saved_searches(name COLLATE NOCASE);
+3
View File
@@ -0,0 +1,3 @@
ALTER TABLE notification_preferences ADD COLUMN dnd_enabled INTEGER NOT NULL DEFAULT 0;
ALTER TABLE notification_preferences ADD COLUMN dnd_start TEXT NOT NULL DEFAULT '22:00';
ALTER TABLE notification_preferences ADD COLUMN dnd_end TEXT NOT NULL DEFAULT '07:00';
+3
View File
@@ -0,0 +1,3 @@
ALTER TABLE display_preferences ADD COLUMN background_color TEXT NOT NULL DEFAULT '#121513';
ALTER TABLE display_preferences ADD COLUMN panel_color TEXT NOT NULL DEFAULT '#181c19';
ALTER TABLE display_preferences ADD COLUMN text_color TEXT NOT NULL DEFAULT '#edf0ec';
+14
View File
@@ -0,0 +1,14 @@
CREATE TABLE IF NOT EXISTS mail_preferences (
id INTEGER PRIMARY KEY CHECK (id = 1),
messages_per_page INTEGER NOT NULL DEFAULT 50,
mark_read_delay_ms INTEGER NOT NULL DEFAULT 0,
remote_images TEXT NOT NULL DEFAULT 'ask',
preferred_body TEXT NOT NULL DEFAULT 'auto',
thread_mode TEXT NOT NULL DEFAULT 'threaded',
collapse_quotes INTEGER NOT NULL DEFAULT 1,
show_snippets INTEGER NOT NULL DEFAULT 1,
default_sort TEXT NOT NULL DEFAULT 'date_desc',
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
INSERT OR IGNORE INTO mail_preferences (id) VALUES (1);
+13
View File
@@ -0,0 +1,13 @@
ALTER TABLE contacts ADD COLUMN phone TEXT NOT NULL DEFAULT '';
ALTER TABLE contacts ADD COLUMN job_title TEXT NOT NULL DEFAULT '';
ALTER TABLE contacts ADD COLUMN address TEXT NOT NULL DEFAULT '';
ALTER TABLE contacts ADD COLUMN website TEXT NOT NULL DEFAULT '';
ALTER TABLE contacts ADD COLUMN birthday TEXT NOT NULL DEFAULT '';
CREATE TABLE IF NOT EXISTS contact_photos (
contact_id TEXT PRIMARY KEY,
content_type TEXT NOT NULL,
data BLOB NOT NULL,
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
FOREIGN KEY (contact_id) REFERENCES contacts(id) ON DELETE CASCADE
);
@@ -0,0 +1,3 @@
ALTER TABLE contacts ADD COLUMN emails_json TEXT NOT NULL DEFAULT '[]';
ALTER TABLE contacts ADD COLUMN phones_json TEXT NOT NULL DEFAULT '[]';
ALTER TABLE contacts ADD COLUMN addresses_json TEXT NOT NULL DEFAULT '[]';
+2
View File
@@ -0,0 +1,2 @@
ALTER TABLE drafts ADD COLUMN request_mdn INTEGER NOT NULL DEFAULT 0;
ALTER TABLE drafts ADD COLUMN priority TEXT NOT NULL DEFAULT 'normal';
@@ -0,0 +1,7 @@
ALTER TABLE mail_preferences ADD COLUMN flagged_on_top INTEGER NOT NULL DEFAULT 0;
CREATE TABLE IF NOT EXISTS folder_preferences (
folder_name TEXT PRIMARY KEY REFERENCES folders(name) ON UPDATE CASCADE ON DELETE CASCADE,
flagged_on_top INTEGER CHECK(flagged_on_top IN (0, 1) OR flagged_on_top IS NULL),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
+4
View File
@@ -0,0 +1,4 @@
ALTER TABLE display_preferences ADD COLUMN compose_autosave_ms INTEGER NOT NULL DEFAULT 3000;
ALTER TABLE display_preferences ADD COLUMN default_priority TEXT NOT NULL DEFAULT 'normal';
ALTER TABLE display_preferences ADD COLUMN request_mdn_default INTEGER NOT NULL DEFAULT 0;
ALTER TABLE display_preferences ADD COLUMN attachment_reminder INTEGER NOT NULL DEFAULT 1;
+15
View File
@@ -0,0 +1,15 @@
ALTER TABLE display_preferences ADD COLUMN icon_size INTEGER NOT NULL DEFAULT 18;
ALTER TABLE display_preferences ADD COLUMN toolbar_density TEXT NOT NULL DEFAULT 'normal';
ALTER TABLE display_preferences ADD COLUMN sidebar_item_height INTEGER NOT NULL DEFAULT 29;
ALTER TABLE display_preferences ADD COLUMN reader_max_width INTEGER NOT NULL DEFAULT 0;
ALTER TABLE display_preferences ADD COLUMN composer_width INTEGER NOT NULL DEFAULT 900;
ALTER TABLE display_preferences ADD COLUMN selection_color TEXT NOT NULL DEFAULT '#28352e';
ALTER TABLE display_preferences ADD COLUMN unread_font_weight INTEGER NOT NULL DEFAULT 730;
ALTER TABLE display_preferences ADD COLUMN unread_badge_style TEXT NOT NULL DEFAULT 'dot';
ALTER TABLE display_preferences ADD COLUMN compact_headers INTEGER NOT NULL DEFAULT 0;
ALTER TABLE display_preferences ADD COLUMN show_borders INTEGER NOT NULL DEFAULT 1;
ALTER TABLE display_preferences ADD COLUMN scrollbar_density TEXT NOT NULL DEFAULT 'thin';
ALTER TABLE display_preferences ADD COLUMN monochrome INTEGER NOT NULL DEFAULT 0;
ALTER TABLE display_preferences ADD COLUMN folder_background TEXT NOT NULL DEFAULT '';
ALTER TABLE display_preferences ADD COLUMN message_background TEXT NOT NULL DEFAULT '';
ALTER TABLE display_preferences ADD COLUMN reader_background TEXT NOT NULL DEFAULT '';
@@ -0,0 +1 @@
ALTER TABLE drafts ADD COLUMN compose_format TEXT NOT NULL DEFAULT 'html';
+4
View File
@@ -0,0 +1,4 @@
ALTER TABLE mail_preferences ADD COLUMN sync_imap_keywords INTEGER NOT NULL DEFAULT 0;
ALTER TABLE tags ADD COLUMN imap_keyword TEXT NOT NULL DEFAULT '';
UPDATE tags SET imap_keyword = 'RustBox-' || replace(id, '-', '') WHERE imap_keyword = '';
CREATE UNIQUE INDEX IF NOT EXISTS idx_tags_imap_keyword ON tags(imap_keyword) WHERE imap_keyword <> '';
@@ -0,0 +1,5 @@
ALTER TABLE display_preferences ADD COLUMN compose_font_family TEXT NOT NULL DEFAULT 'system';
ALTER TABLE display_preferences ADD COLUMN reply_position TEXT NOT NULL DEFAULT 'above';
ALTER TABLE display_preferences ADD COLUMN quote_style TEXT NOT NULL DEFAULT 'standard';
ALTER TABLE display_preferences ADD COLUMN forward_mode TEXT NOT NULL DEFAULT 'inline';
ALTER TABLE display_preferences ADD COLUMN spellcheck_enabled INTEGER NOT NULL DEFAULT 1;
@@ -0,0 +1,3 @@
ALTER TABLE drafts ADD COLUMN remote_folder TEXT;
ALTER TABLE drafts ADD COLUMN remote_uid INTEGER;
ALTER TABLE drafts ADD COLUMN remote_uid_validity INTEGER;
+24
View File
@@ -0,0 +1,24 @@
-- OpenPGP keyring metadata. Secret key material is stored outside SQLite.
CREATE TABLE IF NOT EXISTS pgp_keys (
fingerprint TEXT PRIMARY KEY,
key_id TEXT NOT NULL,
email TEXT NOT NULL DEFAULT '',
user_id TEXT NOT NULL DEFAULT '',
public_key_armor TEXT NOT NULL,
secret_key_path TEXT,
has_secret INTEGER NOT NULL DEFAULT 0,
trust TEXT NOT NULL DEFAULT 'unknown',
source TEXT NOT NULL DEFAULT 'import',
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE INDEX IF NOT EXISTS idx_pgp_keys_email ON pgp_keys(lower(email));
CREATE TABLE IF NOT EXISTS pgp_preferences (
id INTEGER PRIMARY KEY CHECK (id = 1),
wkd_enabled INTEGER NOT NULL DEFAULT 1,
hkp_enabled INTEGER NOT NULL DEFAULT 0,
require_trusted_encryption INTEGER NOT NULL DEFAULT 0,
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
INSERT OR IGNORE INTO pgp_preferences (id) VALUES (1);
+4
View File
@@ -0,0 +1,4 @@
ALTER TABLE identities ADD COLUMN pgp_fingerprint TEXT;
ALTER TABLE identities ADD COLUMN pgp_sign_default INTEGER NOT NULL DEFAULT 0;
ALTER TABLE identities ADD COLUMN pgp_encrypt_default INTEGER NOT NULL DEFAULT 0;
ALTER TABLE identities ADD COLUMN pgp_inline_default INTEGER NOT NULL DEFAULT 0;
@@ -0,0 +1,2 @@
ALTER TABLE drafts ADD COLUMN pgp_mode TEXT NOT NULL DEFAULT 'none';
ALTER TABLE drafts ADD COLUMN pgp_inline INTEGER NOT NULL DEFAULT 0;
@@ -0,0 +1 @@
ALTER TABLE drafts ADD COLUMN pgp_attach_public_key INTEGER NOT NULL DEFAULT 0;
@@ -0,0 +1 @@
ALTER TABLE drafts ADD COLUMN pgp_attach_recipient_keys INTEGER NOT NULL DEFAULT 0;