What's Changed
* Add new line type for NEP by p-glaum in https://github.com/PyPSA/PyPSA/pull/887
* Remove `n.lopf()` for pyomo and nomopyomo + HiGHS default solver by fneum in https://github.com/PyPSA/PyPSA/pull/884
* bugfix: retain investment periods and weightings when clustering by fneum in https://github.com/PyPSA/PyPSA/pull/891
* Multiports addition by FabianHofmann in https://github.com/PyPSA/PyPSA/pull/893
* Multiports addition, follow up by FabianHofmann in https://github.com/PyPSA/PyPSA/pull/894
* Refactor: Use relevant errors for user sanity checks by lkstrp in https://github.com/PyPSA/PyPSA/pull/897
* Ignore JetBrains IDE settings (`.idea`) in git by lkstrp in https://github.com/PyPSA/PyPSA/pull/898
* Apply basic ruff settings by lkstrp in https://github.com/PyPSA/PyPSA/pull/900
* Add more rules to ruff and apply them by lkstrp in https://github.com/PyPSA/PyPSA/pull/901
* Configure individual line colors in add_legend_line by yerbol-akhmetov in https://github.com/PyPSA/PyPSA/pull/902
* Add examples by lkstrp in https://github.com/PyPSA/PyPSA/pull/904
* Add `nan` checks in `n.consistency_check()` by lkstrp in https://github.com/PyPSA/PyPSA/pull/903
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/905
* Auto release & Improve CI by lkstrp in https://github.com/PyPSA/PyPSA/pull/907
* feat: close 906 by lkstrp in https://github.com/PyPSA/PyPSA/pull/908
* ci: fix tests badge by lkstrp in https://github.com/PyPSA/PyPSA/pull/909
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/911
* refactor: remove unnecessary module metadata by lkstrp in https://github.com/PyPSA/PyPSA/pull/913
* ci: fix Tcl installation bug by lkstrp in https://github.com/PyPSA/PyPSA/pull/915
* Updated comparable software documentation section. Dead link for PLEXOS omitted, added BID3 & EMPS. by mdzzg in https://github.com/PyPSA/PyPSA/pull/910
* consistency: explicitly check for nan's and empty strings by FabianHofmann in https://github.com/PyPSA/PyPSA/pull/918
* ci: remove unused makefile for travis by lkstrp in https://github.com/PyPSA/PyPSA/pull/916
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/919
* Docs contributing by lkstrp in https://github.com/PyPSA/PyPSA/pull/917
* consistency check: split static and varying nan checks for improved logging by FabianHofmann in https://github.com/PyPSA/PyPSA/pull/920
* test: catch DeprecationWarnings and FutureWarnings in `pytest` by lkstrp in https://github.com/PyPSA/PyPSA/pull/921
* update `.gitignore` by lkstrp in https://github.com/PyPSA/PyPSA/pull/925
* feat: add equality dunder method/ improve copy method by lkstrp in https://github.com/PyPSA/PyPSA/pull/924
* build: set dependency `numpy<2.0` by lkstrp in https://github.com/PyPSA/PyPSA/pull/931
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/929
* fix 934 by lkstrp in https://github.com/PyPSA/PyPSA/pull/935
* docs: improve bug report by lkstrp in https://github.com/PyPSA/PyPSA/pull/933
* Upgrade numpy by lkstrp in https://github.com/PyPSA/PyPSA/pull/932
* Fix YAML Syntax by lkstrp in https://github.com/PyPSA/PyPSA/pull/937
* fix: failing tests (deprecation warnings) by lkstrp in https://github.com/PyPSA/PyPSA/pull/941
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/940
* Fix flake8 'whitespace before operator' warnings by bje- in https://github.com/PyPSA/PyPSA/pull/942
* Pylint fixes: fix {} and [] default arguments etc. by bje- in https://github.com/PyPSA/PyPSA/pull/943
* Fix flake8 warnings about ambiguous variable names by bje- in https://github.com/PyPSA/PyPSA/pull/945
* Improve Docs by lkstrp in https://github.com/PyPSA/PyPSA/pull/947
* docs: fix redirects by lkstrp in https://github.com/PyPSA/PyPSA/pull/948
* ci: add dependabot config by afuetterer in https://github.com/PyPSA/PyPSA/pull/949
* build(deps): bump the github-actions group with 3 updates by dependabot in https://github.com/PyPSA/PyPSA/pull/950
* chore: fix typos by afuetterer in https://github.com/PyPSA/PyPSA/pull/951
* chore: move coverage.py config to pyproject.toml by afuetterer in https://github.com/PyPSA/PyPSA/pull/952
* ci: switch pypa/gh-action-pypi-publish version to v1 by afuetterer in https://github.com/PyPSA/PyPSA/pull/953
* ci: use checkout with fetch-depth 0 by afuetterer in https://github.com/PyPSA/PyPSA/pull/954
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/955
* optimization/abstract: fix security-constrained optimization by FabianHofmann in https://github.com/PyPSA/PyPSA/pull/946
* ci: disable codecov comments by lkstrp in https://github.com/PyPSA/PyPSA/pull/963
* docs: fix 939 by lkstrp in https://github.com/PyPSA/PyPSA/pull/962
* docs: add favicon by lkstrp in https://github.com/PyPSA/PyPSA/pull/958
* Docs move basic examples by lkstrp in https://github.com/PyPSA/PyPSA/pull/959
* docs: api reference overhaul by lkstrp in https://github.com/PyPSA/PyPSA/pull/960
* fix: 957 run deepcopy and fix component copy order by lkstrp in https://github.com/PyPSA/PyPSA/pull/964
* ci: fix missing versions on RTD and pin dependencies by lkstrp in https://github.com/PyPSA/PyPSA/pull/967
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/969
* optimize: address deprecation warnings for linopy>= 0.3.12 by FabianHofmann in https://github.com/PyPSA/PyPSA/pull/970
* ci: disable pip package caching in actions/setup-python by afuetterer in https://github.com/PyPSA/PyPSA/pull/972
* chore: remove obsolete black formatter config by afuetterer in https://github.com/PyPSA/PyPSA/pull/973
* fix: 973 follow up by lkstrp in https://github.com/PyPSA/PyPSA/pull/975
* Fix of capex description by Alex-Neve in https://github.com/PyPSA/PyPSA/pull/822
* pyproject.toml: optional dependency 'geomap' including cartopy and re… by fneum in https://github.com/PyPSA/PyPSA/pull/977
* Update optimal capacity statistics by p-glaum in https://github.com/PyPSA/PyPSA/pull/885
* statistics: make curtailment available for non-variables by FabianHofmann in https://github.com/PyPSA/PyPSA/pull/980
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/981
* add argument compute_infeasibilities to n.optimize() by fneum in https://github.com/PyPSA/PyPSA/pull/978
* fix: add `ValueError` when snapshots have timezone by lkstrp in https://github.com/PyPSA/PyPSA/pull/976
* Clarify marginal cost store by lisazeyen in https://github.com/PyPSA/PyPSA/pull/985
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/987
* add semi circle legend method for plotting by p-glaum in https://github.com/PyPSA/PyPSA/pull/986
* Add parameters to statistics by p-glaum in https://github.com/PyPSA/PyPSA/pull/886
* Statistics bus carrier nice name by FabianHofmann in https://github.com/PyPSA/PyPSA/pull/991
* add functionality for Investments statistics by lindnemi in https://github.com/PyPSA/PyPSA/pull/989
* fix statistics module performance regression by fneum in https://github.com/PyPSA/PyPSA/pull/990
* update clustering for branches by p-glaum in https://github.com/PyPSA/PyPSA/pull/982
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/PyPSA/PyPSA/pull/993
* build: improve test and release ci and remove env files by lkstrp in https://github.com/PyPSA/PyPSA/pull/968
* prepare release v0.29.0 by fneum in https://github.com/PyPSA/PyPSA/pull/994
New Contributors
* lkstrp made their first contribution in https://github.com/PyPSA/PyPSA/pull/897
* yerbol-akhmetov made their first contribution in https://github.com/PyPSA/PyPSA/pull/902
* mdzzg made their first contribution in https://github.com/PyPSA/PyPSA/pull/910
* afuetterer made their first contribution in https://github.com/PyPSA/PyPSA/pull/949
* dependabot made their first contribution in https://github.com/PyPSA/PyPSA/pull/950
* Alex-Neve made their first contribution in https://github.com/PyPSA/PyPSA/pull/822
* lindnemi made their first contribution in https://github.com/PyPSA/PyPSA/pull/989
**Full Changelog**: https://github.com/PyPSA/PyPSA/compare/v0.28.0...v0.29.0
Revised release notes are available in the [documentation](https://pypsa.readthedocs.io/en/latest/references/release-notes.html).