Compare commits

...

9 Commits

Author SHA1 Message Date
Crowdin Bot
4a306b52d1 New Crowdin translations by GitHub Action
Some checks are pending
Tests / vitest (1) (push) Waiting to run
Tests / vitest (2) (push) Waiting to run
Tests / vitest (3) (push) Waiting to run
Tests / vitest (4) (push) Waiting to run
2026-02-08 00:59:07 +00:00
Matt Popovich
f4f54cea60 Documentation: clarify jellyfin api key location, add ports (#6298)
Some checks are pending
Tests / vitest (4) (push) Waiting to run
Docker CI / Linting Checks (push) Waiting to run
Docker CI / Docker Build & Push (push) Blocked by required conditions
Tests / vitest (1) (push) Waiting to run
Tests / vitest (2) (push) Waiting to run
Tests / vitest (3) (push) Waiting to run
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2026-02-07 09:38:17 +00:00
shamoon
06595ef107 Revise PR template checklist for clarity and links
Some checks failed
Tests / vitest (2) (push) Has been cancelled
Crowdin Action / Crowdin Sync (push) Has been cancelled
Repository Maintenance / Stale (push) Has been cancelled
Repository Maintenance / Lock Old Threads (push) Has been cancelled
Repository Maintenance / Close Answered Discussions (push) Has been cancelled
Repository Maintenance / Close Outdated Discussions (push) Has been cancelled
Repository Maintenance / Close Unsupported Feature Requests (push) Has been cancelled
Docker CI / Linting Checks (push) Has been cancelled
Docker CI / Docker Build & Push (push) Has been cancelled
Tests / vitest (1) (push) Has been cancelled
Tests / vitest (3) (push) Has been cancelled
Tests / vitest (4) (push) Has been cancelled
2026-02-06 07:53:26 -08:00
dependabot[bot]
91b9aa479a Chore(deps): Bump actions/setup-node from 4 to 6 (#6285)
Some checks failed
Docker CI / Linting Checks (push) Has been cancelled
Tests / vitest (1) (push) Has been cancelled
Tests / vitest (2) (push) Has been cancelled
Tests / vitest (3) (push) Has been cancelled
Tests / vitest (4) (push) Has been cancelled
Docker CI / Docker Build & Push (push) Has been cancelled
Crowdin Action / Crowdin Sync (push) Has been cancelled
Repository Maintenance / Close Outdated Discussions (push) Has been cancelled
Repository Maintenance / Stale (push) Has been cancelled
Repository Maintenance / Lock Old Threads (push) Has been cancelled
Repository Maintenance / Close Answered Discussions (push) Has been cancelled
Repository Maintenance / Close Unsupported Feature Requests (push) Has been cancelled
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-05 13:48:18 -08:00
dependabot[bot]
08cde2f597 Chore(deps): Bump actions/checkout from 4 to 6 (#6284)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-05 13:40:57 -08:00
shamoon
0ce175cda5 Bump version to 1.10.1 2026-02-05 07:02:59 -08:00
shamoon
7f1de58e71 Fix: safely stringify replacement values 2026-02-05 07:02:07 -08:00
shamoon
f729290e96 Enhancement: better display of Arcane widget errors (#6281)
Some checks failed
Docker CI / Linting Checks (push) Has been cancelled
Docker CI / Docker Build & Push (push) Has been cancelled
Tests / vitest (1) (push) Has been cancelled
Tests / vitest (2) (push) Has been cancelled
Tests / vitest (3) (push) Has been cancelled
Tests / vitest (4) (push) Has been cancelled
2026-02-05 00:33:38 -08:00
shamoon
4974cd96b6 Chore: move to Zensical docs (#6279)
Some checks failed
Docker CI / Linting Checks (push) Has been cancelled
Docker CI / Docker Build & Push (push) Has been cancelled
Docs / Linting Checks (push) Has been cancelled
Docs / Test Build Docs (push) Has been cancelled
Docs / Build & Deploy Docs (push) Has been cancelled
Tests / vitest (1) (push) Has been cancelled
Tests / vitest (2) (push) Has been cancelled
Tests / vitest (3) (push) Has been cancelled
Tests / vitest (4) (push) Has been cancelled
2026-02-04 23:05:11 -08:00
20 changed files with 367 additions and 263 deletions

View File

@@ -35,8 +35,8 @@ What type of change does your PR introduce to Homepage?
## Checklist: ## Checklist:
- [ ] If applicable, I have added corresponding documentation changes. - [ ] If applicable, I have added corresponding documentation changes.
- [ ] If applicable, I have added or updated tests for new features and bug fixes. - [ ] If applicable, I have added or updated tests for new features and bug fixes (see [testing](https://gethomepage.dev/widgets/authoring/getting-started/#testing)).
- [ ] If applicable, I have reviewed the [feature / enhancement](https://gethomepage.dev/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/more/development/#service-widget-guidelines). - [ ] If applicable, I have reviewed the [feature / enhancement](https://gethomepage.dev/widgets/authoring/getting-started/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/widgets/authoring/getting-started/#service-widget-guidelines).
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/more/development/#code-linting). - [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/widgets/authoring/getting-started/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/widgets/authoring/getting-started/#code-linting).
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers. - [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
- [ ] In the description above I have disclosed the use of AI tools in the coding of this PR. - [ ] In the description above I have disclosed the use of AI tools in the coding of this PR.

View File

@@ -9,7 +9,9 @@ on:
workflow_dispatch: workflow_dispatch:
permissions: permissions:
contents: write contents: read
pages: write
id-token: write
jobs: jobs:
pre-commit: pre-commit:
@@ -35,44 +37,34 @@ jobs:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- uses: actions/setup-python@v6 - uses: actions/setup-python@v6
with: with:
python-version: 3.x python-version-file: ".python-version"
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV - name: Install uv
- uses: actions/cache@v5 uses: astral-sh/setup-uv@v7
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- run: sudo apt-get install pngquant - run: sudo apt-get install pngquant
- run: pip install mkdocs-material mkdocs-redirects "mkdocs-material[imaging]"
- name: Test Docs Build - name: Test Docs Build
run: MKINSIDERS=false mkdocs build run: uv run --frozen zensical build --clean
deploy: deploy:
name: Build & Deploy Docs name: Build & Deploy Docs
if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request' && github.ref == 'refs/heads/main' if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: needs:
- pre-commit - pre-commit
steps: steps:
- uses: actions/configure-pages@v5
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- name: Configure Git Credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- uses: actions/setup-python@v6 - uses: actions/setup-python@v6
with: with:
python-version: 3.x python-version-file: ".python-version"
- run: echo "cache_id=${{github.sha}}" >> $GITHUB_ENV - name: Install uv
- uses: actions/cache@v5 uses: astral-sh/setup-uv@v7
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- run: sudo apt-get install pngquant - run: sudo apt-get install pngquant
- run: pip install git+https://${GH_TOKEN}@github.com/benphelps/mkdocs-material-insiders.git - name: Build Docs
- run: pip install mkdocs-redirects "mkdocs-material[imaging]" run: uv run --frozen zensical build --clean
- name: Docs Deploy - uses: actions/upload-pages-artifact@v4
run: MKINSIDERS=true mkdocs gh-deploy --force with:
env: path: site
GH_TOKEN: ${{ secrets.GH_TOKEN }} - uses: actions/deploy-pages@v4
id: deployment

View File

@@ -13,13 +13,13 @@ jobs:
matrix: matrix:
shard: [1, 2, 3, 4] shard: [1, 2, 3, 4]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4
with: with:
version: 9 version: 9
- uses: actions/setup-node@v4 - uses: actions/setup-node@v6
with: with:
node-version: 20 node-version: 20
cache: pnpm cache: pnpm

2
.gitignore vendored
View File

@@ -46,7 +46,7 @@ next-env.d.ts
# IDEs # IDEs
/.idea/ /.idea/
# MkDocs documentation # Zensical documentation
site*/ site*/
.cache/ .cache/

1
.python-version Normal file
View File

@@ -0,0 +1 @@
3.13

View File

@@ -156,16 +156,16 @@ This is a [Next.js](https://nextjs.org/) application, see their documentation fo
The homepage documentation is available at [https://gethomepage.dev/](https://gethomepage.dev/). The homepage documentation is available at [https://gethomepage.dev/](https://gethomepage.dev/).
Homepage uses Material for MkDocs for documentation. To run the documentation locally, first install the dependencies: Homepage uses Zensical for documentation. To run the documentation locally, first install the dependencies:
```bash ```bash
pip install -r requirements.txt uv sync
``` ```
Then run the development server: Then run the development server:
```bash ```bash
mkdocs serve # or build, to build the static site uv run zensical serve # or build, to build the static site
``` ```
# Support & Suggestions # Support & Suggestions

View File

@@ -5,7 +5,7 @@ description: Jellyfin Widget Configuration
Learn more about [Jellyfin](https://github.com/jellyfin/jellyfin). Learn more about [Jellyfin](https://github.com/jellyfin/jellyfin).
You can create an API key from inside Jellyfin at `Settings > Advanced > Api Keys`. You can create an API key from inside the Jellyfin Administration Dashboard under `Advanced > API Keys`.
As of v0.6.11 the widget supports fields `["movies", "series", "episodes", "songs"]`. These blocks are disabled by default but can be enabled with the `enableBlocks` option, and the "Now Playing" feature (enabled by default) can be disabled with the `enableNowPlaying` option. As of v0.6.11 the widget supports fields `["movies", "series", "episodes", "songs"]`. These blocks are disabled by default but can be enabled with the `enableBlocks` option, and the "Now Playing" feature (enabled by default) can be disabled with the `enableNowPlaying` option.
@@ -17,7 +17,7 @@ As of v0.6.11 the widget supports fields `["movies", "series", "episodes", "song
```yaml ```yaml
widget: widget:
type: jellyfin type: jellyfin
url: http://jellyfin.host.or.ip url: http://jellyfin.host.or.ip:port
key: apikeyapikeyapikeyapikeyapikey key: apikeyapikeyapikeyapikeyapikey
version: 2 # optional, default is 1 version: 2 # optional, default is 1
enableBlocks: true # optional, defaults to false enableBlocks: true # optional, defaults to false

View File

@@ -12,7 +12,7 @@ Allowed fields: no configurable fields for this widget.
```yaml ```yaml
widget: widget:
type: tautulli type: tautulli
url: http://tautulli.host.or.ip url: http://tautulli.host.or.ip:port
key: apikeyapikeyapikeyapikeyapikey key: apikeyapikeyapikeyapikeyapikey
enableUser: true # optional, defaults to false enableUser: true # optional, defaults to false
showEpisodeNumber: true # optional, defaults to false showEpisodeNumber: true # optional, defaults to false

View File

@@ -1,6 +1,6 @@
{ {
"name": "homepage", "name": "homepage",
"version": "1.10.0", "version": "1.10.1",
"private": true, "private": true,
"scripts": { "scripts": {
"preinstall": "npx only-allow pnpm", "preinstall": "npx only-allow pnpm",

View File

@@ -1152,11 +1152,11 @@
"artists": "Kunstenaars" "artists": "Kunstenaars"
}, },
"arcane": { "arcane": {
"containers": "Containers", "containers": "Houers",
"images": "Images", "images": "Beelde",
"image_updates": "Image Updates", "image_updates": "Beeldopdaterings",
"images_unused": "Unused", "images_unused": "Ongebruik",
"environment_required": "Environment ID Required" "environment_required": "Omgewings-ID Vereis"
}, },
"dockhand": { "dockhand": {
"running": "Lopend", "running": "Lopend",

View File

@@ -108,14 +108,14 @@
"songs": "Piosenki" "songs": "Piosenki"
}, },
"jellyfin": { "jellyfin": {
"playing": "Playing", "playing": "Odtwarza",
"transcoding": "Transcoding", "transcoding": "Transkoduje",
"bitrate": "Bitrate", "bitrate": "Bitrate",
"no_active": "No Active Streams", "no_active": "Brak aktywnych strumieni",
"movies": "Movies", "movies": "Filmy",
"series": "Series", "series": "Seriale",
"episodes": "Episodes", "episodes": "Odcinki",
"songs": "Songs" "songs": "Piosenki"
}, },
"esphome": { "esphome": {
"offline": "Offline", "offline": "Offline",
@@ -716,8 +716,8 @@
"volumeAvailable": "Dostępne" "volumeAvailable": "Dostępne"
}, },
"dispatcharr": { "dispatcharr": {
"channels": "Channels", "channels": "Kanały",
"streams": "Streams" "streams": "Strumienie"
}, },
"mylar": { "mylar": {
"series": "Seriale", "series": "Seriale",
@@ -1152,11 +1152,11 @@
"artists": "Wykonawcy" "artists": "Wykonawcy"
}, },
"arcane": { "arcane": {
"containers": "Containers", "containers": "Kontenery",
"images": "Images", "images": "Obrazy",
"image_updates": "Image Updates", "image_updates": "Aktualizacje obrazów",
"images_unused": "Unused", "images_unused": "Nieużywane",
"environment_required": "Environment ID Required" "environment_required": "Wymagane ID środowiska"
}, },
"dockhand": { "dockhand": {
"running": "Działające", "running": "Działające",

View File

@@ -93,7 +93,7 @@
"http_status": "HTTP stavový kód", "http_status": "HTTP stavový kód",
"error": "Chyba", "error": "Chyba",
"response": "Odpoveď", "response": "Odpoveď",
"down": "Down", "down": "Nedostupné",
"up": "Beží", "up": "Beží",
"not_available": "Nedostupné" "not_available": "Nedostupné"
}, },
@@ -108,18 +108,18 @@
"songs": "Skladby" "songs": "Skladby"
}, },
"jellyfin": { "jellyfin": {
"playing": "Playing", "playing": "Prehráva sa",
"transcoding": "Transcoding", "transcoding": "Prebieha prekódovanie",
"bitrate": "Bitrate", "bitrate": "Prenosová rýchlosť",
"no_active": "No Active Streams", "no_active": "Žiadne aktívne vysielania",
"movies": "Movies", "movies": "Filmov",
"series": "Series", "series": "Seriálov",
"episodes": "Episodes", "episodes": "Epizód",
"songs": "Songs" "songs": "Skladieb"
}, },
"esphome": { "esphome": {
"offline": "Offline", "offline": "Nedostupné",
"offline_alt": "Offline", "offline_alt": "Nedostupné",
"online": "Online", "online": "Online",
"total": "Celkom", "total": "Celkom",
"unknown": "Neznáme" "unknown": "Neznáme"
@@ -154,7 +154,7 @@
"uptime": "Dostupnosť", "uptime": "Dostupnosť",
"maxDown": "Max. sťahovanie", "maxDown": "Max. sťahovanie",
"maxUp": "Max. nahrávanie", "maxUp": "Max. nahrávanie",
"down": "Down", "down": "Nedostupné",
"up": "Beží", "up": "Beží",
"received": "Prijaté", "received": "Prijaté",
"sent": "Odoslané", "sent": "Odoslané",
@@ -180,7 +180,7 @@
"tautulli": { "tautulli": {
"playing": "Playing", "playing": "Playing",
"transcoding": "Transcoding", "transcoding": "Transcoding",
"bitrate": "Bitrate", "bitrate": "Prenosová rýchlosť",
"no_active": "No Active Streams", "no_active": "No Active Streams",
"plex_connection_error": "Skontroluj spojenie s Plex" "plex_connection_error": "Skontroluj spojenie s Plex"
}, },
@@ -429,7 +429,7 @@
"version": "Verzia", "version": "Verzia",
"status": "Stav", "status": "Stav",
"up": "Online", "up": "Online",
"down": "Offline" "down": "Nedostupné"
}, },
"miniflux": { "miniflux": {
"read": "Prečítané", "read": "Prečítané",
@@ -450,7 +450,7 @@
"cpu": "CPU", "cpu": "CPU",
"load": "Záťaž", "load": "Záťaž",
"wait": "Čakajte, prosím", "wait": "Čakajte, prosím",
"temp": "TEMP", "temp": "TEPL",
"_temp": "Teplota", "_temp": "Teplota",
"warn": "Upozornení", "warn": "Upozornení",
"uptime": "BEŽÍ", "uptime": "BEŽÍ",
@@ -491,13 +491,13 @@
"51-day": "Mierne mrholenie", "51-day": "Mierne mrholenie",
"51-night": "Slabé mrholenie", "51-night": "Slabé mrholenie",
"53-day": "Mrholenie", "53-day": "Mrholenie",
"53-night": "Drizzle", "53-night": "Mrholenie",
"55-day": "Silné mrholenie", "55-day": "Silné mrholenie",
"55-night": "Silné mrholenie", "55-night": "Silné mrholenie",
"56-day": "Mierne mrazivé mrholenie", "56-day": "Mierne mrazivé mrholenie",
"56-night": "Light Freezing Drizzle", "56-night": "Jemné mrznúce mrholenie",
"57-day": "Mrazivé mrholenie", "57-day": "Mrazivé mrholenie",
"57-night": "Freezing Drizzle", "57-night": "Mrznúce mrholenie",
"61-day": "Slabý dážď", "61-day": "Slabý dážď",
"61-night": "Slabý dážď", "61-night": "Slabý dážď",
"63-day": "Dážď", "63-day": "Dážď",
@@ -542,14 +542,14 @@
"child_bridges_status": "{{ok}}/{{total}}", "child_bridges_status": "{{ok}}/{{total}}",
"up": "Beží", "up": "Beží",
"pending": "Čakajúce", "pending": "Čakajúce",
"down": "Down", "down": "Nedostupné",
"ok": "Ok" "ok": "Ok"
}, },
"healthchecks": { "healthchecks": {
"new": "Nový", "new": "Nový",
"up": "Beží", "up": "Beží",
"grace": "V dodatočnej lehote", "grace": "V dodatočnej lehote",
"down": "Down", "down": "Nedostupné",
"paused": "Pozastavené", "paused": "Pozastavené",
"status": "Stav", "status": "Stav",
"last_ping": "Poslendný ping", "last_ping": "Poslendný ping",
@@ -675,7 +675,7 @@
"memory": "Využitie pamäte", "memory": "Využitie pamäte",
"wanStatus": "Stav WAN", "wanStatus": "Stav WAN",
"up": "Beží", "up": "Beží",
"down": "Down", "down": "Nedostupné",
"temp": "Temp", "temp": "Temp",
"disk": "Využitie disku", "disk": "Využitie disku",
"wanIP": "IP adresa WAN" "wanIP": "IP adresa WAN"
@@ -776,8 +776,8 @@
"targets_total": "Cieľov spolu" "targets_total": "Cieľov spolu"
}, },
"gatus": { "gatus": {
"up": "Sites Up", "up": "Dostupné stránky",
"down": "Sites Down", "down": "Nedostupné stránky",
"uptime": "Dostupnosť" "uptime": "Dostupnosť"
}, },
"ghostfolio": { "ghostfolio": {
@@ -799,7 +799,7 @@
}, },
"whatsupdocker": { "whatsupdocker": {
"monitoring": "Monitoring", "monitoring": "Monitoring",
"updates": "Updates" "updates": "Aktualizácie"
}, },
"calibreweb": { "calibreweb": {
"books": "Books", "books": "Books",
@@ -872,7 +872,7 @@
"uptime": "Dostupnosť", "uptime": "Dostupnosť",
"cpuLoad": "Záťaž CPU priem. (5m)", "cpuLoad": "Záťaž CPU priem. (5m)",
"up": "Beží", "up": "Beží",
"down": "Down", "down": "Nedostupné",
"bytesTx": "Prenesených", "bytesTx": "Prenesených",
"bytesRx": "Prijaté" "bytesRx": "Prijaté"
}, },
@@ -881,13 +881,13 @@
"uptime": "Dostupnosť", "uptime": "Dostupnosť",
"lastDown": "Posledný čas nedostupnosti", "lastDown": "Posledný čas nedostupnosti",
"downDuration": "Trvanie nedostupnosti", "downDuration": "Trvanie nedostupnosti",
"sitesUp": "Sites Up", "sitesUp": "Dostupné stránky",
"sitesDown": "Sites Down", "sitesDown": "Nedostupné stránky",
"paused": "Pozastavené", "paused": "Pozastavené",
"notyetchecked": "Neskontrolované", "notyetchecked": "Neskontrolované",
"up": "Beží", "up": "Beží",
"seemsdown": "Javí sa nedostupný", "seemsdown": "Javí sa nedostupný",
"down": "Down", "down": "Nedostupné",
"unknown": "Neznáme" "unknown": "Neznáme"
}, },
"calendar": { "calendar": {
@@ -1023,17 +1023,17 @@
"last_seen": "Last Seen", "last_seen": "Last Seen",
"status": "Stav", "status": "Stav",
"online": "Online", "online": "Online",
"offline": "Offline" "offline": "Nedostupné"
}, },
"beszel": { "beszel": {
"name": "Name", "name": "Name",
"systems": "Systems", "systems": "Systems",
"up": "Beží", "up": "Beží",
"down": "Down", "down": "Nedostupné",
"paused": "Pozastavené", "paused": "Pozastavené",
"pending": "Čakajúce", "pending": "Čakajúce",
"status": "Stav", "status": "Stav",
"updated": "Updated", "updated": "Aktualizované",
"cpu": "CPU", "cpu": "CPU",
"memory": "RAM", "memory": "RAM",
"disk": "Disk", "disk": "Disk",
@@ -1078,7 +1078,7 @@
"disconnected": "Odpojené", "disconnected": "Odpojené",
"updateStatus": "Update", "updateStatus": "Update",
"update_yes": "Dostupné", "update_yes": "Dostupné",
"update_no": "Up to Date", "update_no": "Aktuálne",
"downloads": "Downloads", "downloads": "Downloads",
"uploads": "Uploads", "uploads": "Uploads",
"sharedFiles": "Files" "sharedFiles": "Files"
@@ -1097,7 +1097,7 @@
"total": "Celkom", "total": "Celkom",
"running": "Beží", "running": "Beží",
"stopped": "Zastavené", "stopped": "Zastavené",
"down": "Down", "down": "Nedostupné",
"unhealthy": "Nezdravý", "unhealthy": "Nezdravý",
"unknown": "Neznáme", "unknown": "Neznáme",
"servers": "Servery", "servers": "Servery",

View File

@@ -40,7 +40,7 @@
}, },
"resources": { "resources": {
"cpu": "İşlemci", "cpu": "İşlemci",
"mem": "MEM", "mem": "Bellek",
"total": "Toplam", "total": "Toplam",
"free": "Boş", "free": "Boş",
"used": "Kullanımda", "used": "Kullanımda",
@@ -80,7 +80,7 @@
"unhealthy": "Sağlıksız", "unhealthy": "Sağlıksız",
"not_found": "Bulunamadı", "not_found": "Bulunamadı",
"exited": "Kapandı", "exited": "Kapandı",
"partial": "Parçalı" "partial": "Kısmi"
}, },
"ping": { "ping": {
"error": "Hata", "error": "Hata",
@@ -93,14 +93,14 @@
"http_status": "HTTPS durumu", "http_status": "HTTPS durumu",
"error": "Hata", "error": "Hata",
"response": "Yanıt", "response": "Yanıt",
"down": "Çalışmayan", "down": "İndirme",
"up": "Çalışıyor", "up": "Çalışıyor",
"not_available": "Uygun değil" "not_available": "Uygun değil"
}, },
"emby": { "emby": {
"playing": "Oynatılıyor", "playing": "Oynatılıyor",
"transcoding": "Dönüştürülüyor", "transcoding": "Dönüştürülüyor",
"bitrate": "Bit Oranı", "bitrate": "Bit Hızı",
"no_active": "Etkin akış yok", "no_active": "Etkin akış yok",
"movies": "Filmler", "movies": "Filmler",
"series": "Diziler", "series": "Diziler",
@@ -108,14 +108,14 @@
"songs": "Şarkılar" "songs": "Şarkılar"
}, },
"jellyfin": { "jellyfin": {
"playing": "Playing", "playing": "Oynatılıyor",
"transcoding": "Transcoding", "transcoding": "Dönüştürülüyor",
"bitrate": "Bitrate", "bitrate": "Bit Hızı",
"no_active": "No Active Streams", "no_active": "Aktif Yayın Yok",
"movies": "Movies", "movies": "Filmler",
"series": "Series", "series": "Diziler",
"episodes": "Episodes", "episodes": "Bölümler",
"songs": "Songs" "songs": "Şarkılar"
}, },
"esphome": { "esphome": {
"offline": "Çevrimdışı", "offline": "Çevrimdışı",
@@ -135,8 +135,8 @@
"flood": { "flood": {
"download": "İndirme", "download": "İndirme",
"upload": "Yükleme", "upload": "Yükleme",
"leech": "Tüketici", "leech": "İndirilen",
"seed": "Sağlayıcı" "seed": "Gönderilen"
}, },
"freshrss": { "freshrss": {
"subscriptions": "Abonelikler", "subscriptions": "Abonelikler",
@@ -152,10 +152,10 @@
"connectionStatusDisconnected": "Bağlı değil", "connectionStatusDisconnected": "Bağlı değil",
"connectionStatusConnected": "Bağlı", "connectionStatusConnected": "Bağlı",
"uptime": "Çalışma Süresi", "uptime": "Çalışma Süresi",
"maxDown": "Max. Indirme", "maxDown": "Maks. İndirme",
"maxUp": "Max. Gönderme", "maxUp": "Maks. Gönderme",
"down": "Çalışmayan", "down": "İndirme",
"up": "Çalışıyor", "up": "Yükleme",
"received": "Alınan", "received": "Alınan",
"sent": "Gönderilen", "sent": "Gönderilen",
"externalIPAddress": "Harici IP", "externalIPAddress": "Harici IP",
@@ -180,7 +180,7 @@
"tautulli": { "tautulli": {
"playing": "Oynatılıyor", "playing": "Oynatılıyor",
"transcoding": "Dönüştürülüyor", "transcoding": "Dönüştürülüyor",
"bitrate": "Bit Oranı", "bitrate": "Bit Hızı",
"no_active": "Etkin akış yok", "no_active": "Etkin akış yok",
"plex_connection_error": "Plex Bağlantısı Kontrol Ediliyor" "plex_connection_error": "Plex Bağlantısı Kontrol Ediliyor"
}, },
@@ -209,20 +209,20 @@
}, },
"rutorrent": { "rutorrent": {
"active": "Etkin", "active": "Etkin",
"upload": "Yükleme", "upload": "Gönderme",
"download": "İndirme" "download": "İndirme"
}, },
"transmission": { "transmission": {
"download": "İndirme", "download": "İndirme",
"upload": "Yükleme", "upload": "Gönderme",
"leech": "Tüketici", "leech": "İndirilen",
"seed": "Sağlayıcı" "seed": "Gönderilen"
}, },
"qbittorrent": { "qbittorrent": {
"download": "İndirme", "download": "İndirme",
"upload": "Yükleme", "upload": "Gönderme",
"leech": "Tüketici", "leech": "İndirilen",
"seed": "Sağlayıcı" "seed": "Gönderilen"
}, },
"qnap": { "qnap": {
"cpuUsage": "İşlemci Kullanımı", "cpuUsage": "İşlemci Kullanımı",
@@ -234,9 +234,9 @@
}, },
"deluge": { "deluge": {
"download": "İndirme", "download": "İndirme",
"upload": "Yükleme", "upload": "Gönderme",
"leech": "Leech", "leech": "İndirilen",
"seed": "Seed" "seed": "Gönderilen"
}, },
"develancacheui": { "develancacheui": {
"cachehitbytes": "Önbellek İsabetli Byte", "cachehitbytes": "Önbellek İsabetli Byte",
@@ -244,14 +244,14 @@
}, },
"downloadstation": { "downloadstation": {
"download": "İndirme", "download": "İndirme",
"upload": "Yükleme", "upload": "Gönderme",
"leech": "Tüketici", "leech": "İndirilen",
"seed": "Sağlayıcı" "seed": "Gönderilen"
}, },
"sonarr": { "sonarr": {
"wanted": "İstendi", "wanted": "İstendi",
"queued": "Kuyrukta", "queued": "Kuyrukta",
"series": "Seriler", "series": "Diziler",
"queue": "Kuyruk", "queue": "Kuyruk",
"unknown": "Bilinmeyen" "unknown": "Bilinmeyen"
}, },
@@ -286,10 +286,10 @@
"pending": "Bekleyen", "pending": "Bekleyen",
"approved": "Onaylı", "approved": "Onaylı",
"available": "Uygun", "available": "Uygun",
"issues": "Open Issues" "issues": "ık Sorunlar"
}, },
"overseerr": { "overseerr": {
"pending": "Pending", "pending": "Beklemede",
"processing": "İşleniyor", "processing": "İşleniyor",
"approved": "Onaylı", "approved": "Onaylı",
"available": "Uygun" "available": "Uygun"
@@ -307,7 +307,7 @@
"gravity": "Gravity" "gravity": "Gravity"
}, },
"adguard": { "adguard": {
"queries": "Queries", "queries": "Sorgular",
"blocked": "Engellenen", "blocked": "Engellenen",
"filtered": "Filtrelendi", "filtered": "Filtrelendi",
"latency": "Gecikme" "latency": "Gecikme"
@@ -448,9 +448,9 @@
}, },
"glances": { "glances": {
"cpu": "İşlemci", "cpu": "İşlemci",
"load": "Load", "load": "Yük",
"wait": "Lütfen bekleyin", "wait": "Lütfen bekleyin",
"temp": "TEMP", "temp": "Sıcaklık",
"_temp": "Sıcaklık", "_temp": "Sıcaklık",
"warn": "Uyarı", "warn": "Uyarı",
"uptime": "ÇALIŞIYOR", "uptime": "ÇALIŞIYOR",
@@ -463,7 +463,7 @@
"read": "Okundu", "read": "Okundu",
"write": "Yazma", "write": "Yazma",
"gpu": "GPU", "gpu": "GPU",
"mem": "Hafıza", "mem": "Bellek",
"swap": "Swap" "swap": "Swap"
}, },
"quicklaunch": { "quicklaunch": {
@@ -543,7 +543,7 @@
"up": "Çalışıyor", "up": "Çalışıyor",
"pending": "Bekleyen", "pending": "Bekleyen",
"down": "Çalışmayan", "down": "Çalışmayan",
"ok": "Ok" "ok": "Tamam"
}, },
"healthchecks": { "healthchecks": {
"new": "Yeni", "new": "Yeni",
@@ -598,7 +598,7 @@
"signalStrength": "Sağlamlık", "signalStrength": "Sağlamlık",
"signalQuality": "Kalite", "signalQuality": "Kalite",
"symbolQuality": "Kalite", "symbolQuality": "Kalite",
"networkRate": "Bit Oranı", "networkRate": "Bit Hızı",
"clientIP": "Alıcı" "clientIP": "Alıcı"
}, },
"scrutiny": { "scrutiny": {
@@ -611,13 +611,13 @@
"total": "Toplam" "total": "Toplam"
}, },
"pangolin": { "pangolin": {
"orgs": "Orgs", "orgs": "Kuruluşlar",
"sites": "Sites", "sites": "Siteler",
"resources": "Resources", "resources": "Kaynaklar",
"targets": "Targets", "targets": "Hedefler",
"traffic": "Traffic", "traffic": "Trafik",
"in": "In", "in": "Gelen",
"out": "Out" "out": "Giden"
}, },
"peanut": { "peanut": {
"battery_charge": "Pil Yüzdesi", "battery_charge": "Pil Yüzdesi",
@@ -676,7 +676,7 @@
"wanStatus": "WAN Durumu", "wanStatus": "WAN Durumu",
"up": "Çalışıyor", "up": "Çalışıyor",
"down": "Çalışmayan", "down": "Çalışmayan",
"temp": "Temp", "temp": "Sıcaklık",
"disk": "Disk Kullanımı", "disk": "Disk Kullanımı",
"wanIP": "WAN IP" "wanIP": "WAN IP"
}, },
@@ -697,7 +697,7 @@
"down": "Çalışmayan site", "down": "Çalışmayan site",
"uptime": "Çalışma süresi", "uptime": "Çalışma süresi",
"incident": "Olay", "incident": "Olay",
"m": "m" "m": "dk"
}, },
"atsumeru": { "atsumeru": {
"series": "Diziler", "series": "Diziler",
@@ -716,8 +716,8 @@
"volumeAvailable": "Uygun" "volumeAvailable": "Uygun"
}, },
"dispatcharr": { "dispatcharr": {
"channels": "Channels", "channels": "Kanallar",
"streams": "Streams" "streams": "Akışlar"
}, },
"mylar": { "mylar": {
"series": "Diziler", "series": "Diziler",
@@ -771,12 +771,12 @@
"nodes": "Düğümler" "nodes": "Düğümler"
}, },
"prometheus": { "prometheus": {
"targets_up": "Hedef Çalışıyor", "targets_up": "Çalışan Hedef",
"targets_down": "Çalışmayan hedef", "targets_down": "Çalışmayan hedef",
"targets_total": "Toplam Hedef" "targets_total": "Toplam Hedef"
}, },
"gatus": { "gatus": {
"up": "Sites Up", "up": "Çalışan Siteler",
"down": "Çalışmayan site", "down": "Çalışmayan site",
"uptime": "Çalışma süresi" "uptime": "Çalışma süresi"
}, },
@@ -784,7 +784,7 @@
"gross_percent_today": "Bugün", "gross_percent_today": "Bugün",
"gross_percent_1y": "Bir yıl", "gross_percent_1y": "Bir yıl",
"gross_percent_max": "Tüm zaman", "gross_percent_max": "Tüm zaman",
"net_worth": "Net Worth" "net_worth": "Net Değer"
}, },
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcast", "podcasts": "Podcast",
@@ -805,13 +805,13 @@
"books": "Kitaplar", "books": "Kitaplar",
"authors": "Yazarlar", "authors": "Yazarlar",
"categories": "Kategoriler", "categories": "Kategoriler",
"series": "Seriler" "series": "Diziler"
}, },
"booklore": { "booklore": {
"libraries": "Libraries", "libraries": "Kütüphaneler",
"books": "Books", "books": "Kitaplar",
"reading": "Reading", "reading": "Okunuyor",
"finished": "Finished" "finished": "Bitti"
}, },
"jdownloader": { "jdownloader": {
"downloadCount": "Kuyruk", "downloadCount": "Kuyruk",
@@ -820,7 +820,7 @@
"downloadSpeed": "Hız" "downloadSpeed": "Hız"
}, },
"kavita": { "kavita": {
"seriesCount": "Seriler", "seriesCount": "Diziler",
"totalFiles": "Dosyalar" "totalFiles": "Dosyalar"
}, },
"azuredevops": { "azuredevops": {
@@ -865,7 +865,7 @@
"total": "Toplam", "total": "Toplam",
"running": "Çalışıyor", "running": "Çalışıyor",
"stopped": "Durdu", "stopped": "Durdu",
"passed": "Passed", "passed": "Başarılı",
"failed": "Başarısız" "failed": "Başarısız"
}, },
"openwrt": { "openwrt": {
@@ -874,7 +874,7 @@
"up": "Çalışıyor", "up": "Çalışıyor",
"down": "Çalışmayan", "down": "Çalışmayan",
"bytesTx": "İletilen", "bytesTx": "İletilen",
"bytesRx": "Received" "bytesRx": "Alınan"
}, },
"uptimerobot": { "uptimerobot": {
"status": "Durum", "status": "Durum",
@@ -924,7 +924,7 @@
}, },
"gitea": { "gitea": {
"notifications": "Bildirimler", "notifications": "Bildirimler",
"issues": "Issues", "issues": "Sorunlar",
"pulls": "Değişiklik İstekleri", "pulls": "Değişiklik İstekleri",
"repositories": "Depolar" "repositories": "Depolar"
}, },
@@ -1006,21 +1006,21 @@
"lubelogger": { "lubelogger": {
"vehicle": "Taşıt", "vehicle": "Taşıt",
"vehicles": "Taşıtlar", "vehicles": "Taşıtlar",
"serviceRecords": "Service Records", "serviceRecords": "Servis Kayıtları",
"reminders": "Hatırlatıcılar", "reminders": "Hatırlatıcılar",
"nextReminder": "Sonraki hatırlatıcı", "nextReminder": "Sonraki hatırlatıcı",
"none": "None" "none": "Hiçbiri"
}, },
"vikunja": { "vikunja": {
"projects": "Etkin projeler", "projects": "Etkin projeler",
"tasks7d": "Bitişi Bu Hafta Olan Görevler", "tasks7d": "Bitişi Bu Hafta Olan Görevler",
"tasksOverdue": "Overdue Tasks", "tasksOverdue": "Gecikmiş Görevler",
"tasksInProgress": "Tasks In Progress" "tasksInProgress": "Devam Eden Görevler"
}, },
"headscale": { "headscale": {
"name": "Ad", "name": "Ad",
"address": "Adres", "address": "Adres",
"last_seen": "Last Seen", "last_seen": "Son Görülme",
"status": "Durum", "status": "Durum",
"online": "Çevrimiçi", "online": "Çevrimiçi",
"offline": "Çevrimdışı" "offline": "Çevrimdışı"
@@ -1031,21 +1031,21 @@
"up": "Çalışıyor", "up": "Çalışıyor",
"down": "Çalışmayan", "down": "Çalışmayan",
"paused": "Durduruldu", "paused": "Durduruldu",
"pending": "Pending", "pending": "Beklemede",
"status": "Durum", "status": "Durum",
"updated": "Güncellendi", "updated": "Güncellendi",
"cpu": "İşlemci", "cpu": "İşlemci",
"memory": "Bellek", "memory": "Bellek",
"disk": "Disk", "disk": "Depolama",
"network": "NET" "network": "NET"
}, },
"argocd": { "argocd": {
"apps": "Uygulamalar", "apps": "Uygulamalar",
"synced": "Synced", "synced": "Senkron",
"outOfSync": "Out Of Sync", "outOfSync": "Senkron Değil",
"healthy": "Sağlıklı", "healthy": "Sağlıklı",
"degraded": "Degraded", "degraded": "Sorunlu",
"progressing": "Progressing", "progressing": "Uygulanıyor",
"missing": "Eksik", "missing": "Eksik",
"suspended": "Askıya Alındı" "suspended": "Askıya Alındı"
}, },
@@ -1053,22 +1053,22 @@
"loading": "Yükleniyor" "loading": "Yükleniyor"
}, },
"gitlab": { "gitlab": {
"groups": "Groups", "groups": "Gruplar",
"issues": "Issues", "issues": "Sorunlar",
"merges": "Merge Requests", "merges": "Birleştirme İstekleri",
"projects": "Projects" "projects": "Projeler"
}, },
"apcups": { "apcups": {
"status": "Durum", "status": "Durum",
"load": "Load", "load": "Yük",
"bcharge": "Battery Charge", "bcharge": "Pil Yüzdesi",
"timeleft": "Kalan zaman" "timeleft": "Kalan zaman"
}, },
"karakeep": { "karakeep": {
"bookmarks": "Yer imleri", "bookmarks": "Yer imleri",
"favorites": "Gözdeler", "favorites": "Gözdeler",
"archived": "Archived", "archived": "Arşivlenen",
"highlights": "Highlights", "highlights": "Öne Çıkanlar",
"lists": "Listeler", "lists": "Listeler",
"tags": "Etiketler" "tags": "Etiketler"
}, },
@@ -1090,8 +1090,8 @@
"other": "Diğer" "other": "Diğer"
}, },
"checkmk": { "checkmk": {
"serviceErrors": "Service issues", "serviceErrors": "Hizmet Sorunları",
"hostErrors": "Host issues" "hostErrors": "Sunucu Sorunları"
}, },
"komodo": { "komodo": {
"total": "Toplam", "total": "Toplam",
@@ -1101,8 +1101,8 @@
"unhealthy": "Sağlıksız", "unhealthy": "Sağlıksız",
"unknown": "Bilinmeyen", "unknown": "Bilinmeyen",
"servers": "Sunucular", "servers": "Sunucular",
"stacks": "Stacks", "stacks": "Yığınlar",
"containers": "Containers" "containers": "Konteynerler"
}, },
"filebrowser": { "filebrowser": {
"available": "Uygun", "available": "Uygun",
@@ -1120,11 +1120,11 @@
"STARTED": "Başladı", "STARTED": "Başladı",
"STOPPED": "Durdu", "STOPPED": "Durdu",
"NEW_ARRAY": "Yeni dizi", "NEW_ARRAY": "Yeni dizi",
"RECON_DISK": "Reconstructing Disk", "RECON_DISK": "Disk Yeniden Oluşturuluyor",
"DISABLE_DISK": "Disk devre dışı", "DISABLE_DISK": "Disk devre dışı",
"SWAP_DSBL": "Swap devre dışı", "SWAP_DSBL": "Swap devre dışı",
"INVALID_EXPANSION": "Invalid Expansion", "INVALID_EXPANSION": "Geçersiz Genişletme",
"PARITY_NOT_BIGGEST": "Parity Not Biggest", "PARITY_NOT_BIGGEST": "Parity En Büyük Disk Değil",
"TOO_MANY_MISSING_DISKS": "Çok fazla disk eksik", "TOO_MANY_MISSING_DISKS": "Çok fazla disk eksik",
"NEW_DISK_TOO_SMALL": "Yeni disk çok küçük", "NEW_DISK_TOO_SMALL": "Yeni disk çok küçük",
"NO_DATA_DISKS": "Veri diski yok", "NO_DATA_DISKS": "Veri diski yok",
@@ -1139,37 +1139,37 @@
"poolFree": "{{pool}} boş" "poolFree": "{{pool}} boş"
}, },
"backrest": { "backrest": {
"num_plans": "Plans", "num_plans": "Planlar",
"num_success_30": "Successes", "num_success_30": "Başarılılar",
"num_failure_30": "Failures", "num_failure_30": "Başarısızlıklar",
"num_success_latest": "Succeeding", "num_success_latest": "Başarılı",
"num_failure_latest": "Failing", "num_failure_latest": "Başarısız",
"bytes_added_30": "Bytes Added" "bytes_added_30": "Eklenen Veri"
}, },
"yourspotify": { "yourspotify": {
"songs": "Songs", "songs": "Şarkılar",
"time": "Time", "time": "Zaman",
"artists": "Artists" "artists": "Sanatçılar"
}, },
"arcane": { "arcane": {
"containers": "Containers", "containers": "Konteynerler",
"images": "Images", "images": "İmajlar",
"image_updates": "Image Updates", "image_updates": "İmaj Güncellemeleri",
"images_unused": "Unused", "images_unused": "Kullanılmayan İmajlar",
"environment_required": "Environment ID Required" "environment_required": "Ortam Kimliği Gerekli"
}, },
"dockhand": { "dockhand": {
"running": "Running", "running": "Çalışan",
"stopped": "Stopped", "stopped": "Durdurulan",
"cpu": "CPU", "cpu": "İşlemci",
"memory": "Memory", "memory": "Bellek",
"images": "Images", "images": "İmajlar",
"volumes": "Volumes", "volumes": "Birimler",
"events_today": "Events Today", "events_today": "Bugünkü Olaylar",
"pending_updates": "Pending Updates", "pending_updates": "Bekleyen Güncellemeler",
"stacks": "Stacks", "stacks": "Yığınlar",
"paused": "Paused", "paused": "Duraklatılan",
"total": "Total", "total": "Toplam",
"environment_not_found": "Environment Not Found" "environment_not_found": "Ortam Bulunamadı"
} }
} }

View File

@@ -1059,10 +1059,10 @@
"projects": "项目" "projects": "项目"
}, },
"apcups": { "apcups": {
"status": "Status", "status": "状态",
"load": "Load", "load": "负载",
"bcharge": "Battery Charge", "bcharge": "电池电量",
"timeleft": "Time Left" "timeleft": "剩余供电时间"
}, },
"karakeep": { "karakeep": {
"bookmarks": "书签", "bookmarks": "书签",

8
pyproject.toml Normal file
View File

@@ -0,0 +1,8 @@
[project]
name = "homepage-docs"
version = "1.0.0"
description = "Documentation for the Homepage project"
requires-python = ">=3.13"
dependencies = [
"zensical>=0.0.21",
]

View File

@@ -1,47 +0,0 @@
Babel==2.12.1
backrefs==5.9
cairocffi==1.7.1
CairoSVG==2.7.1
certifi==2023.7.22
cffi==1.17.1
cfgv==3.4.0
charset-normalizer==3.2.0
click==8.1.7
colorama==0.4.6
cssselect2==0.7.0
defusedxml==0.7.1
distlib==0.3.9
filelock==3.17.0
ghp-import==2.1.0
identify==2.6.7
idna==3.4
Jinja2==3.1.2
Markdown==3.4.4
MarkupSafe==2.1.3
mergedeep==1.3.4
mkdocs==1.6.0
mkdocs-get-deps==0.2.0
mkdocs-material==9.6.18
mkdocs-material-extensions==1.3.1
mkdocs-redirects==1.2.1
nodeenv==1.9.1
packaging==23.1
paginate==0.5.6
pathspec==0.11.2
pillow==10.4.0
platformdirs==3.10.0
pre-commit==3.5.0
pycparser==2.22
Pygments==2.16.1
pymdown-extensions==10.3
python-dateutil==2.8.2
PyYAML==6.0.1
pyyaml_env_tag==0.1
regex==2023.8.8
requests==2.31.0
six==1.16.0
tinycss2==1.4.0
urllib3==2.0.5
virtualenv==20.29.2
watchdog==3.0.0
webencodings==0.5.1

View File

@@ -6,7 +6,7 @@ export function formatApiCall(url, args) {
if (key === "url") { if (key === "url") {
value = value.replace(/\/+$/, ""); // remove trailing slashes value = value.replace(/\/+$/, ""); // remove trailing slashes
} }
return value || ""; return value?.toString() || "";
}; };
return url.replace(find, replace).replace(find, replace); return url.replace(find, replace).replace(find, replace);

View File

@@ -24,7 +24,8 @@ export default function Component({ service }) {
const { data: images, error: imagesError } = useWidgetAPI(widget, "images"); const { data: images, error: imagesError } = useWidgetAPI(widget, "images");
const { data: updates, error: updatesError } = useWidgetAPI(widget, "updates"); const { data: updates, error: updatesError } = useWidgetAPI(widget, "updates");
const error = containersError ?? imagesError ?? updatesError; const error =
containersError ?? imagesError ?? updatesError ?? containers?.detail ?? images?.detail ?? updates?.detail;
if (error) { if (error) {
return <Container service={service} error={error} />; return <Container service={service} error={error} />;
} }

View File

@@ -34,6 +34,16 @@ describe("widgets/arcane/component", () => {
expect(screen.getByText("arcane.environment_required")).toBeInTheDocument(); expect(screen.getByText("arcane.environment_required")).toBeInTheDocument();
}); });
it("shows an error when API calls return detail errors", () => {
useWidgetAPI.mockImplementation(() => ({ data: { detail: "Specific API error" }, error: undefined }));
renderWithProviders(<Component service={{ widget: { type: "arcane", env: "prod" } }} />, {
settings: { hideErrors: false },
});
expect(screen.getByText("Specific API error")).toBeInTheDocument();
});
it("renders placeholders while loading data", () => { it("renders placeholders while loading data", () => {
useWidgetAPI.mockImplementation(() => ({ data: undefined, error: undefined })); useWidgetAPI.mockImplementation(() => ({ data: undefined, error: undefined }));

139
uv.lock generated Normal file
View File

@@ -0,0 +1,139 @@
version = 1
revision = 1
requires-python = ">=3.13"
[[package]]
name = "click"
version = "8.3.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
]
sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274 },
]
[[package]]
name = "colorama"
version = "0.4.6"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
]
[[package]]
name = "deepmerge"
version = "2.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/a8/3a/b0ba594708f1ad0bc735884b3ad854d3ca3bdc1d741e56e40bbda6263499/deepmerge-2.0.tar.gz", hash = "sha256:5c3d86081fbebd04dd5de03626a0607b809a98fb6ccba5770b62466fe940ff20", size = 19890 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/2d/82/e5d2c1c67d19841e9edc74954c827444ae826978499bde3dfc1d007c8c11/deepmerge-2.0-py3-none-any.whl", hash = "sha256:6de9ce507115cff0bed95ff0ce9ecc31088ef50cbdf09bc90a09349a318b3d00", size = 13475 },
]
[[package]]
name = "homepage-docs"
version = "1.0.0"
source = { virtual = "." }
dependencies = [
{ name = "zensical" },
]
[package.metadata]
requires-dist = [{ name = "zensical", specifier = ">=0.0.21" }]
[[package]]
name = "markdown"
version = "3.10.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/b7/b1/af95bcae8549f1f3fd70faacb29075826a0d689a27f232e8cee315efa053/markdown-3.10.1.tar.gz", hash = "sha256:1c19c10bd5c14ac948c53d0d762a04e2fa35a6d58a6b7b1e6bfcbe6fefc0001a", size = 365402 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/59/1b/6ef961f543593969d25b2afe57a3564200280528caa9bd1082eecdd7b3bc/markdown-3.10.1-py3-none-any.whl", hash = "sha256:867d788939fe33e4b736426f5b9f651ad0c0ae0ecf89df0ca5d1176c70812fe3", size = 107684 },
]
[[package]]
name = "pygments"
version = "2.19.2"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 },
]
[[package]]
name = "pymdown-extensions"
version = "10.20.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "markdown" },
{ name = "pyyaml" },
]
sdist = { url = "https://files.pythonhosted.org/packages/1e/6c/9e370934bfa30e889d12e61d0dae009991294f40055c238980066a7fbd83/pymdown_extensions-10.20.1.tar.gz", hash = "sha256:e7e39c865727338d434b55f1dd8da51febcffcaebd6e1a0b9c836243f660740a", size = 852860 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/40/6d/b6ee155462a0156b94312bdd82d2b92ea56e909740045a87ccb98bf52405/pymdown_extensions-10.20.1-py3-none-any.whl", hash = "sha256:24af7feacbca56504b313b7b418c4f5e1317bb5fea60f03d57be7fcc40912aa0", size = 268768 },
]
[[package]]
name = "pyyaml"
version = "6.0.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669 },
{ url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252 },
{ url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081 },
{ url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159 },
{ url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626 },
{ url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613 },
{ url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115 },
{ url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427 },
{ url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090 },
{ url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246 },
{ url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814 },
{ url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809 },
{ url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454 },
{ url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355 },
{ url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175 },
{ url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228 },
{ url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194 },
{ url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429 },
{ url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912 },
{ url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108 },
{ url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641 },
{ url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901 },
{ url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132 },
{ url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261 },
{ url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272 },
{ url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923 },
{ url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062 },
{ url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341 },
]
[[package]]
name = "zensical"
version = "0.0.21"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "click" },
{ name = "deepmerge" },
{ name = "markdown" },
{ name = "pygments" },
{ name = "pymdown-extensions" },
{ name = "pyyaml" },
]
sdist = { url = "https://files.pythonhosted.org/packages/8a/50/2655b5f72d0c72f4366be580f5e2354ff05280d047ea986fe89570e44589/zensical-0.0.21.tar.gz", hash = "sha256:c13563836fa63a3cabeffd83fe3a770ca740cfa5ae7b85df85d89837e31b3b4a", size = 3819731 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/1d/98/90710d232cb35b633815fa7b493da542391b89283b6103a5bb4ae9fc0dd9/zensical-0.0.21-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:67404cc70c330246dfb7269bcdb60a25be0bb60a212a09c9c50229a1341b1f84", size = 12237120 },
{ url = "https://files.pythonhosted.org/packages/97/fb/4280b3781157e8f051711732192f949bf29beeafd0df3e33c1c8bf9b7a1a/zensical-0.0.21-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:d4fd253ccfbf5af56434124f13bac01344e456c020148369b18d8836b6537c3c", size = 12118047 },
{ url = "https://files.pythonhosted.org/packages/74/b3/b7f85ae9cf920cf9f17bf157ae6c274919477148feb7716bf735636caa0e/zensical-0.0.21-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:440e40cdc30a29bf7466bcd6f43ed7bd1c54ea3f1a0fefca65619358b481a5bc", size = 12473440 },
{ url = "https://files.pythonhosted.org/packages/d8/ac/1dc6e98f79ed19b9f103c88a0bd271f9140565d7d26b64bc1542b3ef6d91/zensical-0.0.21-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:368e832fc8068e75dc45cab59379db4cefcd81eb116f48d058db8fb7b7aa8d14", size = 12412588 },
{ url = "https://files.pythonhosted.org/packages/bd/76/16a580f6dd32b387caa4a41615451e7dddd1917a2ff2e5b08744f41b4e11/zensical-0.0.21-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4ab962d47f9dd73510eed168469326c7a452554dfbfdb9cdf85efc7140244df", size = 12749438 },
{ url = "https://files.pythonhosted.org/packages/95/30/4baaa1c910eee61db5f49d0d45f2e550a0027218c618f3dd7f8da966a019/zensical-0.0.21-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b846d53dfce007f056ff31848f87f3f2a388228e24d4851c0cafdce0fa204c9b", size = 12514504 },
{ url = "https://files.pythonhosted.org/packages/76/77/931fccae5580b94409a0448a26106f922dcfa7822e7b93cacd2876dd63a8/zensical-0.0.21-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:daac1075552d230d52d621d2e4754ba24d5afcaa201a7a991f1a8d57e320c9de", size = 12647832 },
{ url = "https://files.pythonhosted.org/packages/5b/82/3cf75de64340829d55c87c36704f4d1d8c952bd2cdc8a7bc48cbfb8ab333/zensical-0.0.21-cp310-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:7b380f545adb6d40896f9bd698eb0e1540ed4258d35b83f55f91658d0fdae312", size = 12678537 },
{ url = "https://files.pythonhosted.org/packages/77/91/6f4938dceeaa241f78bbfaf58a94acef10ba18be3468795173e3087abeb6/zensical-0.0.21-cp310-abi3-musllinux_1_2_i686.whl", hash = "sha256:5c2227fdab64616bea94b40b8340bafe00e2e23631cc58eeea1e7267167e6ac5", size = 12822164 },
{ url = "https://files.pythonhosted.org/packages/a2/4e/a9c9d25ef0766f767db7b4f09da68da9b3d8a28c3d68cfae01f8e3f9e297/zensical-0.0.21-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2e0f5154d236ed0f98662ee68785b67e8cd2138ea9d5e26070649e93c22eeee0", size = 12785632 },
{ url = "https://files.pythonhosted.org/packages/8d/76/8627548f6d00e676009a129be49bb22ca2aa3c938df9b642eea18c381c98/zensical-0.0.21-cp310-abi3-win32.whl", hash = "sha256:0b72e1f8a880c130cbd52335e3bc5dff666291cec40eaf09061d5d7a5a9f8068", size = 11832998 },
{ url = "https://files.pythonhosted.org/packages/c1/9a/7767cfcf70a2022b2b4d49c48f022fde3feb3d3360ac084c111e75df96cf/zensical-0.0.21-cp310-abi3-win_amd64.whl", hash = "sha256:eec08ff6fa335c11b81599032aaeda91c65d31ef03b97aa9239074bf19963a98", size = 12033476 },
]