## Java

*.class
*.war
*.ear
hs_err_pid*

## Signing keystores - NEVER commit these, losing/leaking them is catastrophic
## (a leaked keystore lets anyone publish fake updates to the real app; a lost
## one means the app can never be updated again under the same store listing)
*.keystore
*.jks
!android/debug.keystore

## Robovm
/ios/robovm-build/

## GWT
/html/war/
/html/gwt-unitCache/
.apt_generated/
.gwt/
gwt-unitCache/
www-test/
.gwt-tmp/

## Android Studio and Intellij and Android in general
/android/libs/armeabi/
/android/libs/armeabi-v7a/
/android/libs/arm64-v8a/
/android/libs/x86/
/android/libs/x86_64/
/android/gen/
.idea/*
!/.idea/inspectionProfiles
/.idea/inspectionProfiles/*
!/.idea/inspectionProfiles/Project_Default.xml
*.ipr
*.iws
*.iml
/android/out/
com_crashlytics_export_strings.xml

## Eclipse

.classpath
.project
.metadata/
/tests/bin/
/android/bin/
/core/bin/
/desktop/bin/
/server/bin/
/html/bin/
/ios/bin/
/ios-moe/bin/
*.tmp
*.bak
*.swp
*~.nib
.settings/
.loadpath
.externalToolBuilders/
*.launch

## NetBeans

/nbproject/private/
/android/nbproject/private/
/core/nbproject/private/
/desktop/nbproject/private/
/server/nbproject/private/
/html/nbproject/private/
/ios/nbproject/private/
/ios-moe/nbproject/private/

/build/
/android/build/
/core/build/
/desktop/build/
/server/build/
/html/build/
/ios/build/
/ios-moe/build/
/buildSrc/build

/nbbuild/
/android/nbbuild/
/core/nbbuild/
/desktop/nbbuild/
/server/nbbuild/
/html/nbbuild/
/ios/nbbuild/
/ios-moe/nbbuild/

/dist/
/android/dist/
/core/dist/
/desktop/dist/
/server/dist/
/html/dist/
/ios/dist/
/ios-moe/dist/

/nbdist/
/android/nbdist/
/core/nbdist/
/desktop/nbdist/
/server/nbdist/
/html/nbdist/
/ios/nbdist/
/ios-moe/nbdist/

nbactions.xml
nb-configuration.xml

## Gradle

/local.properties
.gradle/
gradle-app.setting

## OS Specific
.DS_Store
Thumbs.db

## iOS
/ios/xcode/*.xcodeproj/*
!/ios/xcode/*.xcodeproj/xcshareddata
!/ios/xcode/*.xcodeproj/project.pbxproj
/ios/xcode/native/

/ios-moe/xcode/*.xcodeproj/*
!/ios-moe/xcode/*.xcodeproj/xcshareddata
!/ios-moe/xcode/*.xcodeproj/project.pbxproj
/ios-moe/xcode/native/
android/android-release.apk
android/release/output.json
android/release/android-release.apk
android/release/release/android.aab
android/release/android.aab
android/release/android.aab.sig
android/release/android-release.aab
tests/build/
desktop/packr/
desktop/packrCache/
server/packr/
server/packrCache/
deploy/
android/release/

# Transient Unciv files
android/assets/GameSettings.json
android/assets/FasterUIDevSettings.json
android/assets/ModListCache.json
android/assets/lasterror.txt
android/assets/fonts/
android/assets/maps/
android/assets/mods/
android/assets/MultiplayerGames/
android/assets/music/
android/assets/SaveFiles/
android/assets/scenarios/

# When running the desktop app locally using "gradlew desktop:run"
lasterror.txt
GameSettings.json
ModListCache.json
fonts/
maps/
mods/
MultiplayerGames/
music/
SaveFiles/
scenarios/

# server artifacts
server.auth
MultiplayerFiles/

/.kotlin/errors/*
/.kotlin/sessions/*

# Visual Studio Code
.vscode/
/.github/workflows/node_modules/*

# node.js (we only need these temporarily for the release build)
node_modules/
package-lock.json
package.json

# Unsorted additions
# Detekt
detekt/reports.html

# When you test the wiki by running mkdocs locally:
/site/

/buildSrc/.kotlin/errors/*
/buildSrc/.kotlin/sessions/*
/.claude/

# Local-only reversibility copies before a bulk art recolor/reskin pass - not shipped
/_original_backups/

# AI icon regeneration pipeline. 38k generated candidate images live under /pic - they
# are the working material of the art project, not game assets, and the finished ones
# are already integrated into android/Images.*. Keep the tooling and the round log,
# which are small text files, and leave the images out of the repo.
/pic/*
!/pic/batch_review/
/pic/batch_review/*
!/pic/batch_review/_sd/
!/pic/batch_review/*.md
!/pic/batch_review/review.html
/pic/batch_review/_sd/*
!/pic/batch_review/_sd/*.py
!/pic/batch_review/_sd/*.md
!/pic/batch_review/_sd/regress_ledger.json
!/pic/batch_review/_sd/chaincost/
!/pic/batch_review/_sd/chaincost/*.mjs
!/pic/batch_review/_sd/chaincost/*.md

# Loose reference images dropped in while working - never shipped
/anotherref/

# The Unwrit Ages tileset art. Same reasoning as /pic above: these tiles are generated by
# pic/batch_review/_sd/relief.py and surfaces.py, which ARE tracked, so the repo keeps the
# recipe and not the output. The tileset's config json stays tracked - it is HexaRealm's
# config plus a header, and contains no art.
/android/Images.Tilesets/TileSets/UnwritAges/

# The construction icons. Same rule as the tileset art above: these 252 files are written
# by pic/batch_review/_sd/integrate.py from the approved rounds, so the repo keeps the
# generator and not the output. Removed from history on 2026-09-17 at the user's request;
# the stock upstream set is in _original_backups/ConstructionIcons_upstream/ and can also
# be fetched with: git checkout upstream/master -- android/Images.ConstructionIcons
/android/Images.ConstructionIcons/
