summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
AgeCommit message (Collapse)AuthorFilesLines
11 daysrelease: 0.19.0v0.19.0Danilo M.1-1/+1
12 daysrelease: 0.18.0v0.18.0Danilo M.1-1/+1
12 daysrelease: 0.17.0v0.17.0Danilo M.1-1/+1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
12 daysrelease: 0.16.0v0.16.0Danilo M.1-1/+1
14 daysfeat(panes): draw the pane marks from shipped SVGs, not font glyphsDanilo M.1-1/+1
Items 70 and 69, the second folded into the first as item 70's own size note predicted it should be. The panes drew their state marks as font glyphs: U+1F4CE for an attachment and U+2605 for a flagged thread, each with a fallback for a font that cannot render it. Both fell back to "*", so on such a font a flagged thread and one carrying an attachment were indistinguishable, which is a defect the fallback introduced rather than prevented. What a mark looks like was also the desktop's decision rather than this application's, and the panes are exactly where it should not be: the user asked for the toolbar and menus to keep following their icon theme while the panes stop. Six marks now ship in assets/icons/marks/: flagged, attachment, passed, replied and the two expander triangles. QIcon::fromTheme still resolves every toolbar and menu icon and was not touched. Licensing chose the shapes. The look came from a GPL3 icon theme, and this project is GPLv2-only, which are incompatible: GPLv2's "no further restrictions" clause bars shipping GPL3 assets in a v2-only work. The six were drawn fresh in the same idiom instead, with no path data copied. The idiom is generic: solid single-path silhouettes at 16x16 with no strokes. They are compiled in as string literals rather than loaded from a .qrc. src/CMakeLists.txt already records why resources belong to the executable: a qrc in the static library registers itself from a global initialiser the linker drops. The tests link the library, so a resource-based mark would be missing exactly where it needs asserting. assets/icons/marks/ stays the editable source. One asset serves both palettes. Every payload paints with fill="currentColor", which QSvgRenderer renders black rather than resolving, so Marks::pixmap composites the wanted colour with CompositionMode_SourceIn. A mark then takes the card's own pen colour and follows selection and the read/unread dimming without a second variant to keep in step. CardLayout reserves a rect per mark and CardDelegate paints into it. The marks were glyphs inside the subject STRING, so their width came free from the text metrics; as icons the geometry has to know they are there or the subject runs underneath them. The expander pill had the same trap, its triangle being a glyph in expanderLabel(), and now reserves that width explicitly. Item 69's part: passed and replied were words in the tag strip and are marks beside the subject now. The message pane's header carries the flagged and attachment marks next to the subject, per the user's decision that the right pane needs those two and only outside the message area. A duplicate that no test caught is worth recording. Every geometry assertion passed while a card showed passed as BOTH an arrow and a green tag chip: the chip filter had no reason to know a mark had appeared. It was found by rendering real cards to an image and looking at them. isDrawnAsAMark() is now one list consulted by both PillTagsRole and MessageOwnTagsRole, since two copies drifting apart is how a tag ends up drawn twice on one row and not at all on another. Fourteen tests: nine in test_marks, four in test_cardlayout, one in test_threadlistmodel. Mutation-checked at four points, each failing a test: the subject ignoring the marks, the flag not indenting the subject, the pill forgetting the triangle's width, and the recolour composite removed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
14 daysrelease: 0.15.0v0.15.0Danilo M.1-1/+1
2026-08-10release: 0.14.0v0.14.0Danilo M.1-1/+1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10release: 0.13.0v0.13.0Danilo M.1-1/+1
2026-08-09release: 0.12.1v0.12.1Danilo M.1-1/+1
One fix: Archive and Mark all read shipped 0.12.0 sharing an icon, which the same release's toolbar change made visible by removing the text labels that had been disambiguating them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09release: 0.12.0v0.12.0Danilo M.1-1/+1
Collects the per-account sync, the cron-sync indicator fix, and the toolbar and icon work that had been sitting unreleased since 0.11.0. A minor bump rather than a patch: two user-visible behaviours changed. The Flag action is now called Important, and the toolbar follows the desktop's own button style instead of always showing text beside icons. Both are documented under Upgrading, along with the saved-query label that a user may want to rename to match. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07release: 0.11.0v0.11.0Danilo M.1-1/+1
The empty message pane now carries the application's own identity and the counts worth knowing, and Escape finally does what it does everywhere else. Collects the placeholder pane, the Maildir overview, the Escape change, and the thread-list work that had been sitting unreleased since 0.10.0.
2026-08-06release: 0.10.0v0.10.0Danilo M.1-1/+1
Tag edits made during a background sync are held and sent when it finishes, rather than stalling the worker and freezing the message pane. Sync is one control on the toolbar instead of two that behaved differently, and the query bar gains a clear button and the saved queries beside it. Minor rather than patch: a visible control was removed, the query row was rearranged, and when a tag edit reaches the database changed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04release: 0.9.0v0.9.0Danilo M.1-1/+1
Corrections from using 0.8.0: net unsynced count, Delete as a toggle, expiring status messages, Sync disabled during a background sync, Esc to blank the pane, and a named default on the quit prompt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04release: 0.8.0v0.8.0Danilo M.1-1/+1
Multi-select discoverability and awareness of background syncs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04release: 0.7.0v0.7.0Danilo M.1-1/+1
Arbitrary tagging from the UI and the unsynced-edits work are both new features, so this takes the minor slot. The SlackBuild's MD5SUM stays at the previous value until the 0.7.0 snapshot tarball exists, which is after the tag is pushed. Update it with sbodl before building the package. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04release: 0.6.0v0.6.0Danilo M.1-1/+1
Message details and automatic mark-read are both new features, so this takes the minor slot. The SlackBuild's MD5SUM stays at the previous value until the 0.6.0 snapshot tarball exists, which is after the tag is pushed. Update it with sbodl before building the package. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04release: 0.5.0v0.5.0Danilo M.1-1/+1
Query completion is a new feature, so this takes the minor slot rather than a patch, the accompanying bug fixes notwithstanding. The SlackBuild's MD5SUM is left at the 0.4.1 value on purpose: it can only be computed once the 0.5.0 snapshot tarball exists, which is after the tag is pushed. Update it with sbodl before the package is built. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04release: 0.4.1v0.4.1Danilo M.1-1/+1
Packaging only. The 0.4.0 tarball predated QTMAILDIR_BUILD_TESTS, so a package built from it accepted -DQTMAILDIR_BUILD_TESTS=OFF and ignored it. This tag is the first whose source honours the flag. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04build: add a SlackBuild under assets/slackbuildDanilo M.1-3/+14
Packages the application for Slackware, following SBo conventions with two deliberate departures: the tag is _danix rather than _SBo and the package type is txz rather than tgz, since this is not an SBo submission. sbolint reports exactly those two as errors and nothing else; the template comments it warned about are gone. Written against the install layout the build really produces, checked by staging it: one binary, one .desktop entry and one scalable icon, no libraries and no man or info pages. The template's .la removal, man and info compression and perllocal.pod cleanup would all act on nothing here, so they are left out rather than carried along as dead code. doinst.sh keeps only the desktop-database and icon-cache updates. The download URL and checksum are verified rather than assumed: sbodl fetches the tarball and reports "md5sum matches OK". Adds QTMAILDIR_BUILD_TESTS, defaulting to ON so the ordinary build is unchanged. A packaging build has no use for the test binaries, and building them pulls in Qt6::Test to produce nothing that ships. Note the 0.4.0 tarball predates this option, so with that source the flag is accepted but does nothing; the README says so. notmuch is the only dependency outside Slackware. Qt6 including WebEngine, gmime and cmake are all stock, which is what REQUIRES reflects. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04release: 0.4.0v0.4.0Danilo M.1-1/+1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04release: 0.3.0v0.3.0Danilo M.1-1/+1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04release: 0.2.0v0.2.0Danilo M.1-1/+1
2026-08-04feat: use the application iconDanilo M.1-0/+1
The icon was committed in a previous session and referenced nowhere: no qrc, no .desktop entry, no setWindowIcon. It is wired up now, as a window icon, a desktop entry, and install rules placing both into hicolor and share/applications. resources.qrc belongs to the executable rather than to qtmaildir_lib. A qrc compiled into a static library registers itself from a global initialiser, and the linker discards that object because nothing references it: the build succeeded, qInitResources_resources() was present in the .a, and QFile::exists(":/icons/qtmaildir.svg") still returned false at runtime. Verified loading at 16, 32 and 64 pixels after the move. Toolbar and menu actions take icons from the system theme by their standard names, so they match the rest of the desktop rather than shipping bespoke art. A theme lacking one leaves that action as text, which still works.
2026-08-04feat: surface the version and adopt semantic versioningDanilo M.1-0/+7
The version was declared in the project() call and used nowhere. It is now generated into version.h from that single declaration, so nothing repeats the literal, and it reaches the places it is actually wanted: --version, --help, the window title, and QApplication. --version and --help are answered before the web engine schemes are registered and before QApplication is constructed. Printing one line does not need a GUI, and both must work on a machine where the GUI cannot open. Staying at 0.1.0 rather than calling this 1.0.0: under semver, 0.x is where the interface may still change, and for this project the interface is the config file format and the bindable action names. Both are one manual verification pass old. 1.0.0 becomes a deliberate decision to stop changing them under users. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04build: add CMake skeleton and dependency discoveryDanilo M.1-0/+24