A VCARD birthday calendar integration for Home Assistant
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Renovate Bot 2c283032af
All checks were successful
build-and-test / build (push) Successful in 50s
Update actions/upload-artifact action to v7 (#3)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | action | major | `v6` → `v7` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the warning logs for more information.

---

### Release Notes

<details>
<summary>actions/upload-artifact (actions/upload-artifact)</summary>

### [`v7.0.1`](https://github.com/actions/upload-artifact/releases/tag/v7.0.1)

[Compare Source](https://github.com/actions/upload-artifact/compare/v7...v7.0.1)

##### What's Changed

- Update the readme with direct upload details by [@&#8203;danwkennedy](https://github.com/danwkennedy) in [#&#8203;795](https://github.com/actions/upload-artifact/pull/795)
- Readme: bump all the example versions to v7 by [@&#8203;danwkennedy](https://github.com/danwkennedy) in [#&#8203;796](https://github.com/actions/upload-artifact/pull/796)
- Include changes in typespec/ts-http-runtime 0.3.5 by [@&#8203;yacaovsnc](https://github.com/yacaovsnc) in [#&#8203;797](https://github.com/actions/upload-artifact/pull/797)

**Full Changelog**: <https://github.com/actions/upload-artifact/compare/v7...v7.0.1>

### [`v7.0.0`](https://github.com/actions/upload-artifact/releases/tag/v7.0.0)

[Compare Source](https://github.com/actions/upload-artifact/compare/v6.0.0...v7)

##### v7 What's new

##### Direct Uploads

Adds support for uploading single files directly (unzipped). Callers can set the new `archive` parameter to `false` to skip zipping the file during upload. Right now, we only support single files. The action will fail if the glob passed resolves to multiple files. The `name` parameter is also ignored with this setting. Instead, the name of the artifact will be the name of the uploaded file.

##### ESM

To support new versions of the `@actions/*` packages, we've upgraded the package to ESM.

##### What's Changed

- Add proxy integration test by [@&#8203;Link-](https://github.com/Link-) in [#&#8203;754](https://github.com/actions/upload-artifact/pull/754)
- Upgrade the module to ESM and bump dependencies by [@&#8203;danwkennedy](https://github.com/danwkennedy) in [#&#8203;762](https://github.com/actions/upload-artifact/pull/762)
- Support direct file uploads by [@&#8203;danwkennedy](https://github.com/danwkennedy) in [#&#8203;764](https://github.com/actions/upload-artifact/pull/764)

##### New Contributors

- [@&#8203;Link-](https://github.com/Link-) made their first contribution in [#&#8203;754](https://github.com/actions/upload-artifact/pull/754)

**Full Changelog**: <https://github.com/actions/upload-artifact/compare/v6...v7.0.0>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNC4xIiwidXBkYXRlZEluVmVyIjoiNDQuNDguMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: #3
2026-09-13 03:27:45 +00:00
.forgejo/workflows Update nick-fields/retry action to v4 (#5) 2026-09-13 03:27:33 +00:00
.github/workflows Update actions/upload-artifact action to v7 (#3) 2026-09-13 03:27:45 +00:00
custom_components/birthday_calendar fix: get rid of HACS validation errors (#15) 2026-08-10 16:33:21 +00:00
tests feat: add extended tests and update dependencies (#13) 2026-08-10 15:21:35 +00:00
.flake8 feat: extend test coverage (#1) 2026-04-19 14:32:35 +00:00
.gitignore Improve the workflow 2026-02-11 20:46:01 +01:00
hacs.json fix: get rid of HACS validation errors (#15) 2026-08-10 16:33:21 +00:00
LICENSE fix: get rid of HACS validation errors (#15) 2026-08-10 16:33:21 +00:00
pyproject.toml feat: add extended tests and update dependencies (#13) 2026-08-10 15:21:35 +00:00
pytest.ini feat: add extended tests and update dependencies (#13) 2026-08-10 15:21:35 +00:00
README.md feat: add extended tests and update dependencies (#13) 2026-08-10 15:21:35 +00:00
renovate.json Add renovate.json 2026-02-17 20:47:30 +00:00
uv.lock feat: add extended tests and update dependencies (#13) 2026-08-10 15:21:35 +00:00

Birthday Calendar (CardDAV)

A Home Assistant integration that creates a calendar entity from a CardDAV addressbook, extracting birthdays from contact VCards.

CI

Features

  • Connects to any standard CardDAV server (SOGo, Nextcloud, iCloud, etc.).
  • Extracts BDAY fields from VCards.
  • Creates a Calendar entity with all birthdays as all-day events.
  • Calculates the next birthday occurrence and current age.
  • Configurable look-ahead period (default 30 days).

Installation

HACS

  1. Open HACS.
  2. Add Custom Repository: https://github.com/phbaer/ha-birthday-calendar.
  3. Select "Integration".
  4. Install.

Manual Installation

  1. Download the birthday_calendar.zip from the Latest Release.
  2. Unzip it.
  3. Copy the custom_components/birthday_calendar folder to your Home Assistant config/custom_components/ directory.
  4. Restart Home Assistant.

Configuration

  1. Go to Settings > Devices & Services.
  2. Click Add Integration.
  3. Search for Birthday Calendar.
  4. Enter the following details:
    • Calendar Name: Friendly name for the entity.
    • CardDAV URL: Full URL to your addressbook (e.g., https://example.com/dav/user/contacts/).
    • Username: CardDAV username.
    • Password: CardDAV password.
    • Days to look ahead: Number of days to include in the calendar view/state (default 30).

Development

This project uses uv for dependency management and requires a recent version of Python (3.14.3+).

Prerequisites

  • uv
  • Python 3.14.3 or later
  • C Compiler (build-essential, gcc, or clang) - Required for compiling dependencies on Python 3.14.

Setup

uv sync

Testing

Run the full test suite:

uv run pytest

CI/CD

The project includes a Forgejo/GitHub Actions workflow (.github/workflows/ci.yaml) that:

  1. Sets up Python 3.12 and uv.
  2. Installs system dependencies (compilers).
  3. Runs tests.
  4. Create a HACS-compatible ZIP release artifact (birthday_calendar.zip) on every push and tag.