TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An offline-first, open-source mail client for iOS and macOS. Otegami connects to Gmail, iCloud, Yahoo! Mail (including Yahoo! Mail JAPAN), Outlook.com/Office365, and any other IMAP/SMTP account through a single sync engine, stores everything locally in SQLite (GRDB) with full-text search, translates and summarizes English mail on-device, and can optionally run its own self-hosted push notification relay. iOS 26+ / macOS 26+, a single SwiftUI codebase. 日本語版 README: README_ja.md. Status: in development, experimental. Read Status below before trusting it with real mail.README 전문 보기 ↗
An offline-first, open-source mail client for iOS and macOS. Otegami connects to Gmail, iCloud, Yahoo! Mail (including Yahoo! Mail JAPAN), Outlook.com/Office365, and any other IMAP/SMTP account through a single sync engine, stores everything locally in SQLite (GRDB) with full-text search, translates and summarizes English mail on-device, and can optionally run its own self-hosted push notification relay.
iOS 26+ / macOS 26+, a single SwiftUI codebase. 日本語版 README: README_ja.md.
Status: in development, experimental. Read Status below before trusting it with real mail.
(The screenshots use development fixture accounts, not real mail.)
Ahead of the feature list, two things this app is built around:
Gmail and Outlook/Office365 each require you to register your own OAuth Client ID (the button is simply disabled if it's not configured — every other feature works fine without it). See docs/oauth-setup.md.
LIKE). Supports from:/to:/cc:/subject:
search operators, account filter chips, recent search history, and
saved searches (a search screen with History/Saved tabs).X-GM-THRID; everyone else uses
References/In-Reply-To JWZ-style union-find plus a subject
fallback. The message view is an accordion (every message in the
thread listed chronologically, only the latest expanded, tap a header
to expand a different one) shared by iOS and macOS. The list shows a
count badge on multi-message threads.WKWebView (JavaScript
disabled). Fixed-width marketing/notification tables are scaled to fit
the screen, with a one-tap "HTML" badge to switch to plain text.
Embedded images are off by default, remote images on by default, both
overridable per-message with a "Show images" banner. In-body links can
open in an in-app browser (default, iOS only) or the system default
browser.The UI is a from-scratch design: flat, zero corner radius, 2pt borders,
Archivo for Latin text / system font for Japanese, a pale-blue-tinted
light theme with a matching dark theme. See
docs/design-system.md for the adopted
information architecture and how design tokens are used.
MailScreenView's size-class branch).NavigationSplitView.Summarization and translation run on-device via Apple's Foundation
Models framework (LanguageModelSession) — iOS/macOS 26+, requires a
device with Apple Intelligence enabled. The related UI collapses
automatically on unsupported devices.
Engine design, supported languages, and known limitations (calling
Foundation Models from an iOS Simulator .app process fails with
FoundationModels.LanguageModelError -1, while the same call from a
swift test process on the same machine succeeds — a
Simulator/toolchain limitation, not an app bug) are documented in
docs/translation.md.
For a walkthrough of adding accounts, using the viewer, search, and settings, see docs/usage.md.
This is a personal, AI-assisted side project developed while keeping the
automated test/verification suite (make test, the scripts/verify-*.sh
checkpoints) green. It hasn't been published on the App Store or used as
anyone's daily driver for an extended period yet. Some behavior (real
account sign-in, two-device iCloud account sync round-trips, etc.) can't
be fully exercised by simulator-based automated tests and needs
confirmation on real accounts/devices — known limitations for each
feature are documented in the relevant docs/*.md.
brew install xcodegen # needed to generate the Xcode project
make mac # macOS app (debug build)
make ios # iOS Simulator build
make test # OtegamiKit unit tests
Requires Xcode (iOS 26 / macOS 26 SDK, Xcode 26+). Debug builds show up
as "Otegami-dev" so they're distinguishable from a release install on
the same device. For device builds,
Gmail/Outlook OAuth, the dev mail stack (Dovecot + Mailpit), and
screenshot-based screen verification via scripts/verify-screen.sh, see
docs/development-setup.md.
make test # OtegamiKit unit tests (fast, no simulator)
scripts/verify-screen.sh <scenario> [output.png] # tap-free screenshots
scripts/verify-relay.sh # otegami-relay E2E check
See docs/verify.md for what each checkpoint covers and
known simulator instabilities, and .claude/skills/verify/SKILL.md for
the automated-verification approach used in this project.
apps/Otegami/ — the SwiftUI app (iOS + macOS), XcodeGen
project.yml.packages/OtegamiKit/ — platform-independent core: OtegamiCore
(models, threading), MailTransport/MailTransportMailCore
(IMAP/SMTP, MailCore2 adapter), OtegamiStore (GRDB schema/queries/
FTS), SyncEngine (sync + offline operation queue),
GoogleOAuth/MicrosoftOAuth, PushRelayClient, OtegamiRelayAPI
(DTOs shared with the server), OtegamiTranslation/
OtegamiTranslationFoundationModels/TranslationEngine (the
on-device translation/summarization stack).server/otegami-relay-go/ — the push relay (Go).dev/mailstack/ — the Dovecot + Mailpit development stack.For module dependency direction, sync engine design, and known pitfalls, see docs/architecture.md; for how the MailCore2 dependency is vendored, see docs/build-mailcore2.md; for performance testing, see docs/performance.md.
Usage & features
Development
Auth & distribution
Issues and pull requests are welcome — bug reports, questions, and small fixes especially. See CONTRIBUTING.md for dev environment setup, how to run tests, and commit/PR conventions. Report security vulnerabilities through SECURITY.md rather than a public issue.
MIT — see LICENSE.
Otegami depends on several third-party open-source packages via Swift
Package Manager (GRDB.swift, a MailCore2 fork and its C dependencies),
and Go modules for the push relay, and bundles the Archivo font (SIL Open
Font License). See NOTICE for license and copyright notices, and
server/otegami-relay-go/go.mod for the
relay module list and versions.
cid:
images, RFC 2047/2231 filename decoding (including Japanese
filenames).text/calendar; method=REQUEST and
shows an invite card (title, time, location, organizer); Accept/
Decline/Tentative sends a standard iTIP METHOD:REPLY back to the
organizer. See docs/calendar-invites.md.\Flagged flag. macOS uses a row context
menu instead of swipes.server/otegami-relay-go) watches IMAP INBOX over IDLE and sends
privacy-conscious APNs pushes that carry no subject/body (actual
content is fetched by the Notification Service Extension over its own
IMAP connection). Fully opt-in — the app works the same without it.
Tapping a notification opens the message directly (syncing it first if
it hasn't arrived locally yet), and the notification's long-press menu
offers "Mark as read" and "Archive" actions that work without opening
the app. See docs/relay-deployment.md and
docs/push-notification-actions.md.
The app icon can also show an unread badge, toggleable in Settings.NavigationSplitView layout. The unified inbox's "Group by account"
digest view works here too, with its own inline search bar.