feat: screenshots (#282)

Drew Smirnoff created

Change summary

.github/workflows/screenshots.yml      | 141 +++++++++++++++++++++
Makefile                               |  14 +
docs/docs/Features/COMPOSING.md        |   2 
docs/docs/Features/DRAFTS.md           |   2 
docs/docs/Features/EMAIL_MANAGEMENT.md |   2 
docs/docs/assets/compose_email.png     |   0 
docs/docs/assets/compose_empty.png     |   0 
docs/docs/assets/drafts.png            |   0 
docs/docs/assets/email_view.png        |   0 
docs/docs/assets/inbox_view.png        |   0 
docs/docs/assets/main_menu.png         |   0 
docs/docs/assets/settings.png          |   0 
docs/docs/index.md                     |   2 
public/assets/screenshots/.gitkeep     |   0 
screenshots/.gitignore                 |   2 
screenshots/cmd/email_view/main.go     |  86 ++++++++++++
screenshots/cmd/inbox_view/main.go     | 187 ++++++++++++++++++++++++++++
screenshots/common.tape                |  14 ++
screenshots/compose_email.tape         |  71 ++++++++++
screenshots/compose_empty.tape         |  29 ++++
screenshots/drafts.tape                |  32 ++++
screenshots/email_view.tape            |  24 +++
screenshots/inbox_view.tape            |  23 +++
screenshots/main_menu.tape             |  23 +++
screenshots/settings.tape              |  35 +++++
25 files changed, 687 insertions(+), 2 deletions(-)

Detailed changes

.github/workflows/screenshots.yml 🔗

@@ -0,0 +1,141 @@
+name: Generate Screenshots
+
+on:
+  workflow_dispatch:
+  release:
+    types: [published]
+
+permissions:
+  contents: write
+  pull-requests: write
+
+jobs:
+  generate-screenshots:
+    name: Generate Feature Screenshots
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v6
+        with:
+          ref: master
+          persist-credentials: false
+
+      - name: Set up Go
+        uses: actions/setup-go@v6
+        with:
+          go-version: "stable"
+
+      - name: Create Dummy Config
+        run: |
+          mkdir -p ~/.config/matcha
+          cat <<EOF > ~/.config/matcha/config.json
+          {
+            "accounts": [
+              {
+                "id": "demo-user",
+                "name": "Matcha Client",
+                "email": "matcha@floatpane.com",
+                "password": "dummy-password",
+                "service_provider": "custom",
+                "fetch_email": "matcha@floatpane.com"
+              }
+            ]
+          }
+          EOF
+
+      - name: Create Dummy Drafts
+        run: |
+          cat <<EOF > ~/.config/matcha/drafts.json
+          {
+            "drafts": [
+              {
+                "id": "draft-001",
+                "to": "team@example.com",
+                "subject": "Q1 Planning Document",
+                "body": "# Q1 Planning\n\nHere are the key objectives for Q1...",
+                "account_id": "demo-user"
+              },
+              {
+                "id": "draft-002",
+                "to": "alice@example.com",
+                "subject": "Re: Design Review Feedback",
+                "body": "Thanks for the review! I'll address the comments...",
+                "account_id": "demo-user"
+              }
+            ],
+            "updated_at": "2026-01-15T10:00:00Z"
+          }
+          EOF
+
+      - name: Build Matcha
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+          LATEST_TAG=$(gh release view --json tagName -q ".tagName" 2>/dev/null || echo "dev")
+          echo "Using version: $LATEST_TAG"
+
+          git fetch --tags 2>/dev/null || true
+
+          COMMIT=$(git rev-parse --short HEAD)
+          DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
+          go build -ldflags="-s -w -X main.version=$LATEST_TAG -X main.commit=$COMMIT -X main.date=$DATE" -o matcha .
+          go build -o email_view ./screenshots/cmd/email_view
+          go build -o inbox_view ./screenshots/cmd/inbox_view
+
+      - name: Prepare Tapes
+        run: |
+          for tape in screenshots/*.tape; do
+            [ "$tape" = "screenshots/common.tape" ] && continue
+            sed -i 's|go run \./screenshots/cmd/email_view|./email_view|' "$tape"
+            sed -i 's|go run \./screenshots/cmd/inbox_view|./inbox_view|' "$tape"
+            sed -i 's|go run \.|./matcha|' "$tape"
+          done
+
+      - name: Install Dependencies
+        run: |
+          sudo apt-get update
+          sudo apt-get install -y ffmpeg ttyd
+          mkdir -p ~/.local/share/fonts
+          wget -q https://github.com/ryanoasis/nerd-fonts/releases/download/v3.1.1/JetBrainsMono.zip
+          unzip -o JetBrainsMono.zip -d ~/.local/share/fonts
+          fc-cache -fv
+          go install github.com/charmbracelet/vhs@latest
+
+      - name: Generate Screenshots
+        env:
+          CLICOLOR_FORCE: "1"
+        run: |
+          mkdir -p docs/docs/assets/
+          for tape in screenshots/*.tape; do
+            [ "$tape" = "screenshots/common.tape" ] && continue
+            name=$(basename "$tape" .tape)
+            echo "==> Generating screenshot: $name"
+            TERM=xterm-256color vhs "$tape" || echo "Warning: $name failed"
+          done
+          # Move generated screenshots to public assets, clean up intermediate gifs
+          mv screenshots/*.png docs/docs/assets/ 2>/dev/null || true
+          rm -f screenshots/*.gif 2>/dev/null || true
+          ls -la public/assets/screenshots/
+
+      - name: Create Pull Request
+        uses: peter-evans/create-pull-request@v8
+        with:
+          token: ${{ secrets.GITHUB_TOKEN }}
+          commit-message: "docs: update feature screenshots [skip ci]"
+          title: "docs: update feature screenshots"
+          body: |
+            This PR updates the feature screenshots based on the latest release version.
+
+            Generated automatically by the Generate Screenshots workflow.
+
+            ### Screenshots included:
+            - `main_menu.png` - Main menu / choice screen
+            - `compose_email.png` - Email composition with Markdown
+            - `compose_empty.png` - Clean compose interface
+            - `email_view.png` - HTML email with inline images and attachments
+            - `inbox_view.png` - Inbox with emails from various senders and dates
+            - `settings.png` - Settings / account management
+            - `drafts.png` - Draft management view
+          branch: "update-screenshots"
+          base: "master"
+          add-paths: public/assets/screenshots/

Makefile 🔗

@@ -1,4 +1,4 @@
-.PHONY: build test run clean lint fmt vet build-full
+.PHONY: build test run clean lint fmt vet build-full generate_screenshots
 
 BINARY_NAME=matcha
 BUILD_DIR=bin
@@ -8,6 +8,18 @@ generate_gif:
 	vhs demo.tape
 	mv demo.gif public/assets/demo.gif
 
+generate_screenshots:
+	@mkdir -p docs/docs/assets/
+	@for tape in screenshots/*.tape; do \
+		[ "$$(basename $$tape)" = "common.tape" ] && continue; \
+		name=$$(basename "$$tape" .tape); \
+		echo "==> Generating screenshot: $$name"; \
+		vhs "$$tape" || echo "Warning: $$name failed"; \
+	done
+	@mv screenshots/*.png docs/docs/assets/ 2>/dev/null || true
+	@rm -f screenshots/*.gif 2>/dev/null || true
+	@echo "Screenshots saved to public/assets/screenshots/"
+
 build:
 	go build -o $(BUILD_DIR)/$(BINARY_NAME) .
 

docs/docs/Features/COMPOSING.md 🔗

@@ -1,5 +1,7 @@
 # Composing Emails
 
+![composer](../assets/compose_email.png) ![Empty Composer](../assets/compose_empty.png)
+
 Matcha provides a clean, intuitive interface for writing emails.
 
 ## Features

docs/docs/Features/EMAIL_MANAGEMENT.md 🔗

@@ -1,5 +1,7 @@
 # Email Management
 
+![settings](../assets/settings.png)
+
 Matcha provides comprehensive tools for managing your emails directly from the terminal.
 
 ## Key Features

docs/docs/index.md 🔗

@@ -15,7 +15,7 @@ hide_table_of_contents: true
 
 Ready to dive in? Here are a few places to start:
 
-- 🚀 [Installation Guide](./Getting Started/installation.md) - Get Matcha running on your machine
+- 🚀 [Installation Guide](.//installation.md) - Get Matcha running on your machine
 - 📖 [Usage & Shortcuts](./usage.md) - Learn how to navigate the interface
 - ⚙️ [Configuration](./Configuration.md) - Set up your accounts and preferences
 

screenshots/cmd/email_view/main.go 🔗

@@ -0,0 +1,86 @@
+// email_view is a small helper that renders a mock email with inline images
+// for screenshot generation. It creates a bubbletea program displaying a
+// realistic HTML email using the real EmailView component.
+package main
+
+import (
+	"fmt"
+	"os"
+	"time"
+
+	tea "charm.land/bubbletea/v2"
+	"github.com/floatpane/matcha/fetcher"
+	"github.com/floatpane/matcha/tui"
+)
+
+func main() {
+	email := fetcher.Email{
+		UID:       1001,
+		From:      "Sarah Chen <sarah.chen@example.com>",
+		To:        []string{"team@example.com"},
+		Subject:   "New Dashboard Redesign - Preview & Feedback",
+		Date:      time.Now().Add(-2 * time.Hour),
+		MessageID: "<dashboard-redesign-001@example.com>",
+		AccountID: "demo-user",
+		Body: `<html>
+<body>
+<h1>Dashboard Redesign Preview</h1>
+
+<p>Hi team,</p>
+
+<p>I'm excited to share the <b>new dashboard redesign</b> we've been working on!
+Here's a quick overview of the changes:</p>
+
+<h2>What's New</h2>
+
+<ul>
+<li><b>Simplified navigation</b> - We reduced sidebar items from 12 to 6</li>
+<li><b>Dark mode support</b> - Full theme switching with system preference detection</li>
+<li><b>Real-time updates</b> - WebSocket integration for live data refresh</li>
+<li><b>Responsive layout</b> - Optimized for mobile, tablet, and desktop</li>
+</ul>
+
+<h2>Screenshots</h2>
+
+<p>Here's the new main view:</p>
+<img src="cid:dashboard-main" alt="Dashboard main view" />
+
+<p>And the analytics panel:</p>
+<img src="cid:analytics-panel" alt="Analytics panel with charts" />
+
+<h2>Next Steps</h2>
+
+<ol>
+<li>Review the mockups above</li>
+<li>Leave comments in the <a href="https://figma.com/file/example">Figma file</a></li>
+<li>Join the feedback session on <b>Thursday at 3pm</b></li>
+</ol>
+
+<p>Looking forward to your thoughts!</p>
+
+<p>Best,<br/>
+Sarah</p>
+</body>
+</html>`,
+		Attachments: []fetcher.Attachment{
+			{
+				Filename: "dashboard-mockup.png",
+				MIMEType: "image/png",
+				Inline:   false,
+			},
+			{
+				Filename: "analytics-export.csv",
+				MIMEType: "text/csv",
+				Inline:   false,
+			},
+		},
+	}
+
+	ev := tui.NewEmailView(email, 0, 140, 45, tui.MailboxInbox, true)
+
+	p := tea.NewProgram(ev)
+	if _, err := p.Run(); err != nil {
+		fmt.Fprintf(os.Stderr, "Error: %v\n", err)
+		os.Exit(1)
+	}
+}

screenshots/cmd/inbox_view/main.go 🔗

@@ -0,0 +1,187 @@
+// inbox_view is a small helper that renders a mock inbox with realistic emails
+// for screenshot generation. It wraps the real Inbox component in a model
+// that forwards window size events properly.
+package main
+
+import (
+	"fmt"
+	"os"
+	"time"
+
+	tea "charm.land/bubbletea/v2"
+	"github.com/floatpane/matcha/config"
+	"github.com/floatpane/matcha/fetcher"
+	"github.com/floatpane/matcha/tui"
+)
+
+// wrapper forwards all messages to the FolderInbox and ensures it renders correctly.
+type wrapper struct {
+	folderInbox *tui.FolderInbox
+}
+
+func (w wrapper) Init() tea.Cmd {
+	return w.folderInbox.Init()
+}
+
+func (w wrapper) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
+	m, cmd := w.folderInbox.Update(msg)
+	if fi, ok := m.(*tui.FolderInbox); ok {
+		w.folderInbox = fi
+	}
+	return w, cmd
+}
+
+func (w wrapper) View() tea.View {
+	v := w.folderInbox.View()
+	v.AltScreen = true
+	return v
+}
+
+func main() {
+	now := time.Now()
+
+	accounts := []config.Account{
+		{
+			ID:         "demo-user",
+			Name:       "Matcha Client",
+			Email:      "matcha@floatpane.com",
+			FetchEmail: "matcha@floatpane.com",
+		},
+	}
+
+	emails := []fetcher.Email{
+		{
+			UID:       1012,
+			From:      "Alice Park <alice.park@example.com>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "Quick sync on the API migration?",
+			Date:      now.Add(-12 * time.Minute),
+			MessageID: "<api-migration-012@example.com>",
+			AccountID: "demo-user",
+		},
+		{
+			UID:       1011,
+			From:      "GitHub <notifications@github.com>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "[floatpane/matcha] Fix: resolve inbox pagination issue (#281)",
+			Date:      now.Add(-47 * time.Minute),
+			MessageID: "<gh-notif-281@github.com>",
+			AccountID: "demo-user",
+		},
+		{
+			UID:       1010,
+			From:      "Sarah Chen <sarah.chen@example.com>",
+			To:        []string{"team@example.com"},
+			Subject:   "New Dashboard Redesign - Preview & Feedback",
+			Date:      now.Add(-2 * time.Hour),
+			MessageID: "<dashboard-redesign-001@example.com>",
+			AccountID: "demo-user",
+			Attachments: []fetcher.Attachment{
+				{Filename: "dashboard-mockup.png", MIMEType: "image/png"},
+			},
+		},
+		{
+			UID:       1009,
+			From:      "David Kim <david.kim@example.com>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "Re: Quarterly budget review notes",
+			Date:      now.Add(-5 * time.Hour),
+			MessageID: "<budget-review-009@example.com>",
+			AccountID: "demo-user",
+		},
+		{
+			UID:       1008,
+			From:      "Stripe <receipts@stripe.com>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "Your receipt from Acme Corp - Invoice #4821",
+			Date:      now.Add(-23 * time.Hour),
+			MessageID: "<stripe-receipt-4821@stripe.com>",
+			AccountID: "demo-user",
+		},
+		{
+			UID:       1007,
+			From:      "Maria Gonzalez <maria.g@example.com>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "Design system tokens - final version attached",
+			Date:      now.Add(-1*24*time.Hour - 6*time.Hour),
+			MessageID: "<design-tokens-007@example.com>",
+			AccountID: "demo-user",
+			Attachments: []fetcher.Attachment{
+				{Filename: "design-tokens-v3.json", MIMEType: "application/json"},
+			},
+		},
+		{
+			UID:       1006,
+			From:      "Linear <notifications@linear.app>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "MAT-342: Implement keyboard shortcuts for compose view",
+			Date:      now.Add(-2*24*time.Hour - 3*time.Hour),
+			MessageID: "<linear-342@linear.app>",
+			AccountID: "demo-user",
+		},
+		{
+			UID:       1005,
+			From:      "James Wright <j.wright@example.com>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "Onboarding docs are ready for review",
+			Date:      now.Add(-3*24*time.Hour - 1*time.Hour),
+			MessageID: "<onboarding-005@example.com>",
+			AccountID: "demo-user",
+		},
+		{
+			UID:       1004,
+			From:      "Vercel <notifications@vercel.com>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "Deployment successful: matcha-docs-8f3a2b1",
+			Date:      now.Add(-4*24*time.Hour - 8*time.Hour),
+			MessageID: "<vercel-deploy-004@vercel.com>",
+			AccountID: "demo-user",
+		},
+		{
+			UID:       1003,
+			From:      "Lena Muller <lena.m@example.com>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "Conference talk proposal - Rethinking TUI Design",
+			Date:      now.Add(-5*24*time.Hour - 2*time.Hour),
+			MessageID: "<conference-003@example.com>",
+			AccountID: "demo-user",
+		},
+		{
+			UID:       1002,
+			From:      "GitHub <notifications@github.com>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "[floatpane/matcha] Release v1.4.0 published",
+			Date:      now.Add(-5*24*time.Hour - 14*time.Hour),
+			MessageID: "<gh-release-140@github.com>",
+			AccountID: "demo-user",
+		},
+		{
+			UID:       1001,
+			From:      "Omar Hassan <omar.h@example.com>",
+			To:        []string{"matcha@floatpane.com"},
+			Subject:   "Re: Open source contribution guidelines",
+			Date:      now.Add(-6*24*time.Hour - 5*time.Hour),
+			MessageID: "<oss-contrib-001@example.com>",
+			AccountID: "demo-user",
+		},
+	}
+
+	folders := []string{
+		"INBOX",
+		"Drafts",
+		"Sent",
+		"Archive",
+		"Receipts",
+		"GitHub",
+		"Trash",
+	}
+
+	folderInbox := tui.NewFolderInbox(folders, accounts)
+	folderInbox.SetEmails(emails, accounts)
+
+	p := tea.NewProgram(wrapper{folderInbox: folderInbox})
+	if _, err := p.Run(); err != nil {
+		fmt.Fprintf(os.Stderr, "Error: %v\n", err)
+		os.Exit(1)
+	}
+}

screenshots/common.tape 🔗

@@ -0,0 +1,14 @@
+# Common VHS settings shared across all screenshot tapes
+# This file documents the shared settings - each tape includes them directly
+# because VHS does not support tape imports.
+
+# Terminal settings:
+#   Set FontSize 14
+#   Set FontFamily "JetBrainsMono Nerd Font"
+#   Set Width 1400
+#   Set Height 800
+#   Set Theme "Catppuccin Mocha"
+#   Set Padding 20
+#   Set WindowBar Colorful
+#   Set WindowBarSize 40
+#   Set BorderRadius 10

screenshots/compose_email.tape 🔗

@@ -0,0 +1,71 @@
+# Screenshot: Email Composition
+# Shows the compose screen with Markdown content being written
+
+Output screenshots/compose_email.gif
+
+Set FontSize 14
+Set FontFamily "JetBrainsMono Nerd Font"
+Set Width 1400
+Set Height 800
+Set Theme "Catppuccin Mocha"
+Set Padding 20
+Set WindowBar Colorful
+Set WindowBarSize 40
+Set BorderRadius 10
+
+Hide
+Type "go run ."
+Enter
+Show
+
+Sleep 2s
+
+# Navigate to Compose Email
+Down
+Sleep 300ms
+Enter
+Sleep 1.5s
+
+# Type recipient
+Type "alice@example.com"
+Sleep 200ms
+Tab
+Sleep 200ms
+Tab
+Sleep 100ms
+Tab
+Sleep 200ms
+
+# Type subject
+Type "Weekly Project Update"
+Sleep 200ms
+Tab
+Sleep 300ms
+
+# Type email body with Markdown
+Type "# Project Update"
+Enter
+Enter
+Type "Hi team, here's our **weekly update**:"
+Enter
+Enter
+Type "## Completed"
+Enter
+Type "- Shipped new dashboard redesign"
+Enter
+Type "- Fixed authentication bug in production"
+Enter
+Type "- Added unit tests for core modules"
+Enter
+Enter
+Type "## In Progress"
+Enter
+Type "- API rate limiting implementation"
+Enter
+Type "- Database migration planning"
+Enter
+Enter
+Type "Best regards"
+Sleep 800ms
+
+Screenshot screenshots/compose_email.png

screenshots/compose_empty.tape 🔗

@@ -0,0 +1,29 @@
+# Screenshot: Empty Compose Screen
+# Shows the clean compose interface before typing
+
+Output screenshots/compose_empty.gif
+
+Set FontSize 14
+Set FontFamily "JetBrainsMono Nerd Font"
+Set Width 1400
+Set Height 800
+Set Theme "Catppuccin Mocha"
+Set Padding 20
+Set WindowBar Colorful
+Set WindowBarSize 40
+Set BorderRadius 10
+
+Hide
+Type "go run ."
+Enter
+Show
+
+Sleep 2s
+
+# Navigate to Compose Email
+Down
+Sleep 300ms
+Enter
+Sleep 1.5s
+
+Screenshot screenshots/compose_empty.png

screenshots/drafts.tape 🔗

@@ -0,0 +1,32 @@
+# Screenshot: Drafts View
+# Shows the drafts management screen
+
+Output screenshots/drafts.gif
+
+Set FontSize 14
+Set FontFamily "JetBrainsMono Nerd Font"
+Set Width 1400
+Set Height 800
+Set Theme "Catppuccin Mocha"
+Set Padding 20
+Set WindowBar Colorful
+Set WindowBarSize 40
+Set BorderRadius 10
+
+Hide
+Type "go run ."
+Enter
+Show
+
+Sleep 2s
+
+# Navigate to Drafts (3rd menu item when drafts exist)
+Down
+Sleep 300ms
+Down
+Sleep 300ms
+Enter
+
+Sleep 1.5s
+
+Screenshot screenshots/drafts.png

screenshots/email_view.tape 🔗

@@ -0,0 +1,24 @@
+# Screenshot: Email View with Inline Images
+# Shows an HTML email with formatted content, inline image placeholders,
+# attachments list, and hyperlinks
+
+Output screenshots/email_view.gif
+
+Set FontSize 14
+Set FontFamily "JetBrainsMono Nerd Font"
+Set Width 1400
+Set Height 800
+Set Theme "Catppuccin Mocha"
+Set Padding 20
+Set WindowBar Colorful
+Set WindowBarSize 40
+Set BorderRadius 10
+
+Hide
+Type "go run ./screenshots/cmd/email_view"
+Enter
+Show
+
+Sleep 2.5s
+
+Screenshot screenshots/email_view.png

screenshots/inbox_view.tape 🔗

@@ -0,0 +1,23 @@
+# Screenshot: Inbox View
+# Shows a populated inbox with emails from various senders and dates
+
+Output screenshots/inbox_view.gif
+
+Set FontSize 14
+Set FontFamily "JetBrainsMono Nerd Font"
+Set Width 1400
+Set Height 800
+Set Theme "Catppuccin Mocha"
+Set Padding 20
+Set WindowBar Colorful
+Set WindowBarSize 40
+Set BorderRadius 10
+
+Hide
+Type "go run ./screenshots/cmd/inbox_view"
+Enter
+Show
+
+Sleep 2.5s
+
+Screenshot screenshots/inbox_view.png

screenshots/main_menu.tape 🔗

@@ -0,0 +1,23 @@
+# Screenshot: Main Menu
+# Shows the main menu / choice screen with all navigation options
+
+Output screenshots/main_menu.gif
+
+Set FontSize 14
+Set FontFamily "JetBrainsMono Nerd Font"
+Set Width 1400
+Set Height 800
+Set Theme "Catppuccin Mocha"
+Set Padding 20
+Set WindowBar Colorful
+Set WindowBarSize 40
+Set BorderRadius 10
+
+Hide
+Type "go run ."
+Enter
+Show
+
+Sleep 2s
+
+Screenshot screenshots/main_menu.png

screenshots/settings.tape 🔗

@@ -0,0 +1,35 @@
+# Screenshot: Settings Screen
+# Shows the settings / account management view
+
+Output screenshots/settings.gif
+
+Set FontSize 14
+Set FontFamily "JetBrainsMono Nerd Font"
+Set Width 1400
+Set Height 800
+Set Theme "Catppuccin Mocha"
+Set Padding 20
+Set WindowBar Colorful
+Set WindowBarSize 40
+Set BorderRadius 10
+
+Hide
+Type "go run ."
+Enter
+Show
+
+Sleep 2s
+
+# Navigate to Settings (3rd item if no drafts, 4th if drafts exist)
+# In CI we create dummy drafts, so: Inbox -> Compose -> Drafts -> Settings
+Down
+Sleep 300ms
+Down
+Sleep 300ms
+Down
+Sleep 300ms
+Enter
+
+Sleep 1.5s
+
+Screenshot screenshots/settings.png