# Flutter/Dart
.dart_tool/
.packages
build/
.pub-cache/
.pub/
pubspec.lock
.flutter-plugins
.flutter-plugins-dependencies

# Generated files
*.freezed.dart
*.gr.dart
*.mocks.dart

# All generated *.g.dart files (from json_serializable, riverpod, version_builder)
# These are regenerated by build_runner during CI/CD builds
lib/**/*.g.dart

# Generated health.json (regenerated by tool/generate_health_json.dart during build)
web/health.json

# IDE
.idea/
*.iml
*.ipr
*.iws
.vscode/*
!.vscode/launch.json
*.swp
*.swo
*~

# macOS
.DS_Store
*.dmg
*.plist.backup

# Android
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.*
**/android/key.properties
*.jks

# iOS/macOS
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/.last_build_id
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/ephemeral
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# macOS specific
**/macos/Flutter/ephemeral
**/macos/Flutter/Flutter-Debug.xcconfig
**/macos/Flutter/Flutter-Release.xcconfig
**/macos/Flutter/Flutter-Profile.xcconfig
**/macos/Flutter/GeneratedPluginRegistrant.swift
**/macos/Pods/

# Linux
**/linux/flutter/ephemeral

# Windows
**/windows/flutter/ephemeral

# Web
**/web/.dart_tool/

# Coverage
coverage/
*.lcov

# Test
.test_coverage.dart

# Logs
*.log

# Environment
.env
.env.*
!.env.example

# Secrets (never commit)
secrets/
*.pem
*.p12
*.key

# Temporary files
*.tmp
*.temp
.temp/

# Uploads (reference images, not tracked)
uploads/
logs/
.vscode/launch.json

# Claude Code user-specific settings.
#
# WARNING: this file is currently TRACKED, so this rule does NOTHING yet. Git
# applies ignore rules only to untracked paths; edits to a tracked file still
# show in status and still get committed. It takes effect only after
#   git rm --cached .claude/settings.local.json
# which is a history decision, deliberately left out of the 2026-08-09
# normalization pass. Contents are benign - a 4-entry permission allow list, no
# env block, no secrets - so this is hygiene, not an incident.
#
# Also: plain `git check-ignore` prints nothing for this path because it consults
# the index. Use `git check-ignore --no-index` to confirm the rule itself matches.
.claude/settings.local.json
.pql/*
!.pql/changelog/
