Repository navigation
Gmail inbox tabs and iOS chat list fixes - #14
Merged
Merged
Conversation
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
📒 Files selected for processing (27)
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Gmail's IMAP INBOX holds every inbox tab, so Promotions mail such as World Athletics newsletters showed in qmsg's Inbox although Gmail keeps it out of its own. INBOX now lists Primary mail, and Promotions, Social, Updates and Forums are virtual mailboxes over INBOX. go-imap can't send X-GM-RAW, so the tab searches run on a small connection of their own, kept open and repeated only when Inbox changes. gmail_tabs = "false" turns this off for accounts without tabs. The iOS app lists the tabs under Inbox and leaves them out of Move. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Plain lists pin section headers while scrolling, so Recent, Servers and Direct Messages stuck under the title like subtitles. Show them as rows that scroll away instead. Fixes #12 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Direct messages came after every server and, without loaded activity, in alphabetical order, so they were easy to miss. The Discord provider now positions DMs by their last message, and Chats lists them before servers in that order, with chats that have activity first. Fixes #10 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Recent list lived only in memory, so it was empty after the app closed. Save it in user defaults; pairing again still clears it. Fixes #11 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
While connecting, the banner's regular material showed as a black box over the gray canvas in dark mode. Fixes #13 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Marking read is a journaled action, and the server keeps 5,000 per device a week. The app marked read on every arrival while at the bottom, after a function lookup each time. Now a message is marked once, the account's own messages not at all, and arrivals during a mark become one mark of the newest. A send refused with RESOURCE_EXHAUSTED never ran, so it now shows as failed rather than maybe sent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ctrl-C now asks managed providers to shut down and gives them five seconds before killing them. An account whose type is gone or whose component fails to start is logged and left stopped instead of keeping the whole server from starting. An action result too large to journal returns UNKNOWN, since it ran, not RESOURCE_EXHAUSTED. The API guide also describes iOS Gmail sign-in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- New Message falls back to the account's contacts when a server can't open chats, as on Discord, instead of saying the account can't. - Pasted HEIC and other uncommon images become JPEG or PNG, like photos from the library. - Sending reuses Attachment.kind instead of its own MIME switch. - The README no longer names one person's machine. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Service managers stop the server with SIGTERM, which skipped the graceful provider shutdown that Ctrl-C gets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rows without their own background fell back to the default black in dark mode: the account-starting row in Chats, which set nil and undid the list's canvas, and error and Load more rows in mail folders. They showed as black boxes while loading. Fixes #13 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
IGN-Styly
force-pushed
the
t3/fix-inbox-sync-ci
branch
from
October 12, 2026 23:08
72a52c7 to
5dcf9a6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #8. The protoc CI fix is already pushed to #7 and #8 directly.
Gmail Inbox matches Gmail
Gmail's IMAP
INBOXholds every inbox tab, so Promotions mail (for example the World Athletics newsletters) appeared in qmsg's Inbox although Gmail's own Inbox hides it.INBOXuses an explicitcategory:primarysearch. Primary can overlap Updates when Gmail disables that tab, so subtracting the other categories hid valid Primary mail. Promotions, Social, Updates and Forums are virtual mailboxes overINBOX, marked$GmailTab.UID SEARCH X-GM-RAW "category:…". go-imap can't send that, so a minimal IMAP exchange runs on a separate connection. It stays open and is searched again only when Inbox's state changes.gmail_tabs = "false"restores the old behaviour.iOS issues
Cleanup from the #7/#8 review
RESOURCE_EXHAUSTEDshow as failed, not "maybe sent". An action result too large to journal now returnsUNKNOWN, because it ran.send()reusesAttachment.kind.Testing
Startup screenshots
Before
c66e3a8/ after72a52c7, same iPhone and dark-mode loading state. Images use the owner’s file server and require Tailscale access.