# This repository ignores everything at the top level and then names what it
# keeps.  The working tree doubles as the developer's scratch space -- program
# output, sample Tasker backups, one-off notes -- and an allow-list is the only
# way to stop that leaking into the repository as it accumulates.
#
# Adding a top-level file or directory to the project therefore means adding a
# '!' line for it below.  Nothing else is needed; everything else stays out.

# ignore all root items
/*

# unignore folders: files and folders to ignore (the / is optional - I just think it looks nice)
!**/src/*.py
!**/tests/*.py
!docs/
!.github/
# Referenced by README.md.  GitHub serves the README's images out of the
# repository, so they have to be tracked -- when they are not, every image
# on the project page 404s.
!documentation_images/
# Translations of README.md, linked from the top of it as a language switcher.
!README_translated/

# unignore files: files and folders to not ignore
!.gitignore
!Changelog.md
!Build.txt
!LICENSE
!README.md
!README_PyPl.md
!pyproject.toml
!generated_output_files.md
# Tracked so CI can `uv sync --locked` and get byte-identical dependencies.
!uv.lock
# Runs the CI gates locally; kept beside the workflow it mirrors.
!run-ci.sh
# Rebuilds the generated wiki pages and pushes them; kept beside run-ci.sh.
!publish-wikis.sh
# Kills any MapTasker instance still holding port 8080.
!killall_port8080.sh
!maptasker
!tests
dmg_builder
# Maintainer utilities -- not shipped, not imported by the package.  Kept out of
# 'scripts/', which [tool.ruff] lints, because these are one-off tools written to
# no particular standard and linting them would only add noise.
!tools
# Maintainer tools held to the project's lint rules, such as the noqa ratchet the
# CI lint job runs.  Unlike 'tools/', CI depends on these being in the repository.
!scripts


# recursively re-ignore
__pycache__
.claude

# test / lint tooling artifacts
.pytest_cache
.ruff_cache
.coverage
.coverage.*
coverage.xml
htmlcov

# ---------------------------------------------------------------------------
# Everything below is already covered by the '/*' rule at the top when it sits
# in the root.  It is spelled out anyway so the same file is still ignored when
# a run drops it inside 'maptasker/' or 'tools/' -- which is how the stray copies
# of .MapTasker_RunCount.txt and .MapTasker_Settings.pkl got committed under
# maptasker/assets/ in the first place.
# ---------------------------------------------------------------------------

# Program output: the map, the reports and the diagrams MapTasker writes.
# Everything the scripts write into scripts/Reports.  Reports are made from a real Tasker
# backup, and two of them once carried API keys from it into a commit.
scripts/Reports/
MapTasker.html
MapTasker_Map.txt
MapTasker_Apps.json
MapTasker_Apps.jsontemp
MapTasker_HealthCheck_*.txt
MapTasker_Fix_*.txt
MapTasker_VarXref_*.txt
MapTasker_TaskFlow_*.txt
MapTasker_Flowchart_*.txt
MapTasker_Backups/
ziplog.txt

# Per-user run state, written to the working directory on every run.
.MapTasker_RunCount.txt
.MapTasker_Settings.pkl
MapTasker_Settings.toml
.maptasker.pkl
.maptasker_last_run.txt

# Build artifacts.
dist/
build/
*.egg-info/
*.py[cod]

# Regenerated in full on every run of tools/misc/build_command_wiki.py.
tools/misc/no_description.log

# OS and editor metadata.
.DS_Store
Thumbs.db
