Skip to content

leexuanxuan95-dev/decode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Decode · Read Between the Lines

Tell me what they meant. Tell them what you mean.

iOS 17+ communication coach app. Paste a text from your mom, boss, partner, mother-in-law — Decode reads between the lines and drafts three reply versions (warmer / neutral / boundary).

The decoding engine runs entirely on-device — no LLM call, no analytics, no servers — using a Swift-native algorithm with combinatorial template generation across 8 cultures and 14 relationship roles.

Stack

  • SwiftUI 6, iOS 17+
  • StoreKit 2 (subscription + lifetime tier)
  • JSON-on-disk persistence (no SwiftData, no iCloud)
  • Pure-Swift decode + reply engine (no LLM, no network)

Engine

Stage Files
Signal detection Decode/Engine/SignalDetector.swift
Cultural cues Decode/Engine/Phrasebook.swift (33 cues, 8 cultures)
Decode (3-layer) Decode/Engine/DecodeEngine.swift
Reply (3 tones) Decode/Engine/ReplyEngine.swift
Iteration mode Decode/Engine/IterationEngine.swift
Deterministic RNG Decode/Engine/SeededRNG.swift (SplitMix64 + FNV-1a)

Distinct draft combinations: 378M base × regen-counter (effectively unbounded) × signal-biasing → into the billions. See ReplyEngine.distinctOutputEstimate.

Build

brew install xcodegen
xcodegen generate
open Decode.xcodeproj
# ⌘R against any iPhone simulator

Test

xcodebuild -project Decode.xcodeproj -scheme Decode \
  -destination 'platform=iOS Simulator,name=iPhone 17' \
  -configuration Debug test CODE_SIGNING_ALLOWED=NO

24 unit tests covering: engine determinism, fuzz survival across weird/empty/emoji-only/multi-script input, persistence round-trip, RNG cross-launch stability, search-space sanity.

Screenshot mode (DEBUG only)

The app honors a --screenshot=<screen> launch argument that jumps to a single screen with seeded state. Used to verify each flow in CI without UI driving:

xcrun simctl launch booted com.atrium.decode --screenshot=decoded
xcrun simctl launch booted com.atrium.decode --screenshot=reply
xcrun simctl launch booted com.atrium.decode --screenshot=iterationOutcome
xcrun simctl launch booted com.atrium.decode --screenshot=libraryAdd
xcrun simctl launch booted com.atrium.decode --screenshot=libraryForget
xcrun simctl launch booted com.atrium.decode --screenshot=onboard1
xcrun simctl launch booted com.atrium.decode --screenshot=onboard2
xcrun simctl launch booted com.atrium.decode --screenshot=onboard3

#if DEBUG-gated — stripped from release builds.

Privacy

  • No accounts. No email. No phone number.
  • No LLM call.
  • No analytics SDK.
  • Messages live in memory only (or in a local JSON file if you save the relationship profile).
  • "Forget" wipes any profile + its decoded history. There is no backup.

Full policy: docs/privacy.html

License

Source available, all rights reserved.

Links

About

Read between the lines. iOS app that decodes texts from your mom, boss, partner — and drafts three reply versions. On-device, no LLM, no analytics.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages