Skip to content

ffalt/mah

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,242 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Support Palestine
Mah

Mah - Mahjong Solitaire

The original open-source Mahjong Solitaire game powering many Mahjong experiences on the web.
Completely free. No ads. No tracking. No cloud.

license test developer known vulnerabilities Maintainability Codacy Badge


✨ Features

🧩 84 built-in boards plus a random board generator for endless replayability

🎨 13 tile image sets - switch between beautiful tile designs in light and dark styles

🖼️ Massive visual customization - 8 image backgrounds, 375 pattern backgrounds, light/dark mode, 14 color themes

🏆 3 difficulty levels - from relaxed casual play to expert-level challenge

💾 Auto-save - your game state and best times are saved locally in your browser, never to the cloud

📱 Cross-platform - runs in the browser, on desktop (macOS, Windows, Linux), and on Android

🌍 37 languages - English, العربية, বাংলা, Català, Čeština, Dansk, Deutsch, Ελληνικά, Español, Euskara, فارسی, Suomi, Filipino, Français, हिन्दी, Magyar, Bahasa Indonesia, Italiano, 日本語, 한국어, Bahasa Melayu, Nederlands, Norsk, Polski, Português, Română, Русский, Svenska, Kiswahili, தமிழ், తెలుగు, ไทย, Türkçe, Українська, اردو, Tiếng Việt, 中文

Want to help translate? Contribute on Crowdin


🏛️ Explore More Boards

Browse a curated archive of custom board layouts created by the Kyodai Mahjongg community. Click any layout and select "Play it with Mah" to import it directly into your game.


📥 Download

Play instantly in the browser, or grab a native build for your platform:

Get it on Github Get it on Obtainium

Platform Available
🌐 Web Play now
🍎 macOS .dmg installer
🪟 Windows .msi / .exe installer
🐧 Linux .deb / .AppImage
🤖 Android .apk

Important

Unsigned apps/installers (macOS and Windows)

The macOS and Windows builds are not yet code-signed. Your OS may show a warning the first time you run the app - this is normal for unsigned software and does not mean the files are malicious. If you prefer to skip these warnings, just play in your browser instead.

🍎 macOS - bypassing Gatekeeper

Apple's Gatekeeper blocks apps from unidentified developers. You may see a message claiming the app is damaged - this is not true.

Remove the quarantine attribute to fix it:

xattr -dr com.apple.quarantine /Applications/mah.app

The exact steps may vary by macOS version - search for instructions specific to yours.

🪟 Windows - bypassing SmartScreen

Microsoft Defender SmartScreen shows a warning for unsigned apps.

Click "More info""Run anyway" to proceed.

🤖 Android - installing from APK

Android blocks installs from unknown sources by default. Go to Settings → Security (or Apps) and enable Unknown Sources.

Most modern phones use arm64. Try these APK variants in order:

  1. android-mah-x_y_z-arm64.apk
  2. android-mah-x_y_z-arm.apk
  3. android-mah-x_y_z-x86_64.apk
  4. android-mah-x_y_z-x86.apk

🙏 Acknowledgements

Mah's art is built on open-source creative work. See the credits for artwork, backgrounds, sounds, and fonts.


🛠️ Development

Build Config

The default game name is "Mah Jong". To change it:

  1. Copy custom-build-config.json.dist to custom-build-config.json
  2. Edit the name in custom-build-config.json to your desired app name

Quick Start

npm run start         # Dev server → http://localhost:4200/
npm run build:prod    # Production build → dist/
npm run test          # Run unit tests