From b61ce428d81871fbbc6261f274f20785db9d1c38 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Sun, 2 Aug 2026 17:21:47 +0200 Subject: feat: add Config with account, query, and sync parsing Accounts use [account.work] rather than [account/work]: QSettings' INI backend treats "/" as its own hierarchical group separator, so a literal slash in a section header parses as a nested group and trips QSettings::FormatError, silently breaking childGroups() enumeration. A dot carries no such meaning and keeps the format flat. Saved-query order is alphabetical (QSettings::childKeys() sorts), not file order; documented in code and tests rather than left to a false assumption. --- docs/superpowers/plans/2026-08-02-qtmaildir-v1.md | 12 ++++++------ docs/superpowers/specs/2026-08-02-qtmaildir-design.md | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'docs') diff --git a/docs/superpowers/plans/2026-08-02-qtmaildir-v1.md b/docs/superpowers/plans/2026-08-02-qtmaildir-v1.md index 2defcc5..b264986 100644 --- a/docs/superpowers/plans/2026-08-02-qtmaildir-v1.md +++ b/docs/superpowers/plans/2026-08-02-qtmaildir-v1.md @@ -544,13 +544,13 @@ void TestConfig::parsesAccounts() { QTemporaryDir dir; const QString path = writeIni(dir, QStringLiteral( - "[account/work]\n" + "[account.work]\n" "name=Test User\n" "address=user@example.org\n" "maildir=work-mail\n" "drafts=Drafts\n" "\n" - "[account/personal]\n" + "[account.personal]\n" "name=Test User\n" "address=me@example.net\n" "maildir=personal\n" @@ -610,7 +610,7 @@ void TestConfig::accountWithoutMaildirIsRejected() { QTemporaryDir dir; const QString path = writeIni(dir, QStringLiteral( - "[account/broken]\n" + "[account.broken]\n" "name=No Maildir\n" "address=x@example.org\n" )); @@ -666,7 +666,7 @@ Expected: FAIL, `config.h: No such file or directory`. /// identity. struct Account { - QString key; ///< INI group suffix, e.g. "work" from [account/work]. + QString key; ///< INI group suffix, e.g. "work" from [account.work]. QString name; QString address; QString maildir; ///< Relative to notmuch's database.path. @@ -762,11 +762,11 @@ void Config::load(const QString &path) } for (const QString &group : settings.childGroups()) { - if (!group.startsWith(QStringLiteral("account/"))) + if (!group.startsWith(QStringLiteral("account."))) continue; Account account; - account.key = group.mid(QStringLiteral("account/").size()); + account.key = group.mid(QStringLiteral("account.").size()); settings.beginGroup(group); account.name = settings.value(QStringLiteral("name")).toString(); diff --git a/docs/superpowers/specs/2026-08-02-qtmaildir-design.md b/docs/superpowers/specs/2026-08-02-qtmaildir-design.md index b92c939..a2b4955 100644 --- a/docs/superpowers/specs/2026-08-02-qtmaildir-design.md +++ b/docs/superpowers/specs/2026-08-02-qtmaildir-design.md @@ -205,13 +205,13 @@ identity. [sync] command = /home/danix/bin/mailsync.sh -[account/privateemail-danix] +[account.privateemail-danix] name = Danilo M. address = danix@danix.xyz maildir = privateemail-danix ; relative to notmuch's database.path drafts = Drafts -[account/gmail] +[account.gmail] name = Danilo M. address = maildir = gmail -- cgit v1.2.3