aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-02 17:21:47 +0200
committerDanilo M. <danix@danix.xyz>2026-08-02 17:21:47 +0200
commitb61ce428d81871fbbc6261f274f20785db9d1c38 (patch)
treeb1ebcf1da244a31ec1c991be42d0062d776ba1b4 /docs/superpowers
parentdb1eb37b26f9ac14be4e1a4e5edbf5b6e77f8db7 (diff)
downloadqtmaildir-b61ce428d81871fbbc6261f274f20785db9d1c38.tar.gz
qtmaildir-b61ce428d81871fbbc6261f274f20785db9d1c38.zip
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.
Diffstat (limited to 'docs/superpowers')
-rw-r--r--docs/superpowers/plans/2026-08-02-qtmaildir-v1.md12
-rw-r--r--docs/superpowers/specs/2026-08-02-qtmaildir-design.md4
2 files changed, 8 insertions, 8 deletions
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 = <the gmail address>
maildir = gmail