Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions .github/workflows/link_check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
name: "Check documentation links"

on:
push:
branches:
- master
- "[0-9]+.[0-9]+"
workflow_dispatch:
inputs:
force_recheck:
description: "Clear lychee cache and recheck all links from scratch"
type: boolean
default: false
devdoc_50_branch:
description: "ibexa/documentation-developer branch for 5.0"
type: string
default: "5.0"
devdoc_46_branch:
description: "ibexa/documentation-developer branch for 4.6"
type: string
default: "4.6"
userdoc_50_branch:
description: "ibexa/documentation-user branch for 5.0"
type: string
default: "5.0"
userdoc_46_branch:
description: "ibexa/documentation-user branch for 4.6"
type: string
default: "4.6"
connect_branch:
description: "ibexa/documentation-connect branch"
type: string
default: "main"
pull_request: ~
schedule:
- cron: "0 6 * * *"

jobs:
link-check:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.13]

steps:
- uses: actions/checkout@v4

- name: Generate token
id: generate_token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.AUTOMATION_CLIENT_ID }}
private-key: ${{ secrets.AUTOMATION_CLIENT_SECRET }}
owner: ${{ github.repository_owner }}

- name: Configure git credentials for private repositories
run: |
git config --global url."https://x-access-token:${{ steps.generate_token.outputs.token }}@github.com/ibexa/documentation-connect".insteadOf \
"https://github.com/ibexa/documentation-connect"

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install MkDocs dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Build documentation
run: mkdocs build --strict

- name: Clone and build versioned repositories for link remap
run: >-
bash tools/clone-repositories.sh
"${{ inputs.devdoc_50_branch || '5.0' }}"
"${{ inputs.devdoc_46_branch || '4.6' }}"
"${{ inputs.userdoc_50_branch || '5.0' }}"
"${{ inputs.userdoc_46_branch || '4.6' }}"
"${{ inputs.connect_branch || 'main' }}"

- name: Restore lychee cache
if: ${{ !inputs.force_recheck }}
uses: actions/cache@v4
with:
path: .lycheecache
key: lychee-${{ github.ref_name }}-${{ hashFiles('lychee.toml') }}
restore-keys: |
lychee-${{ github.ref_name }}-
lychee-

- name: Check links
uses: lycheeverse/lychee-action@v2
with:
args: >-
--config lychee.toml
--cache
--cache-exclude-status "400.."
site
output: lychee-report.md
jobSummary: false
fail: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload link-check report
if: always()
uses: actions/upload-artifact@v4
with:
name: lychee-report
path: lychee-report.md
if-no-files-found: ignore
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,7 @@ auth.json
yarn.lock
docs/css/*.map
.deptrac.cache
.lycheecache
lychee.toml
/repositories/
lychee-report.md
162 changes: 162 additions & 0 deletions .lycheeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
# URLs excluded from lychee link checking.
# Each line is a regular expression matched against the full URL.
#
# Add external URLs here when they produce false positives (redirects, bot-blocks,
# JS-rendered anchors, etc.). Structural file:// exclusions that depend on the
# build path live in lychee.toml.dist instead, as they require __BASE_DIR__ substitution.

# Localhost / loopback — not real content links
^https?://localhost
^https?://127\.0\.0\.1

# Placeholder domain used in examples
^https?://example\.com

# Known intentional redirects (302)
^https://support\.ibexa\.co/
^https://redocly\.com/redoc/
^https://updates\.ibexa\.co
^https://console\.cloud\.google\.com

# Hosts that block automated requests (403)
^https?://(www\.)?linkedin\.com
^https?://(www\.)?openai\.com
^https?://help\.openai\.com
^https?://(www\.)?paypal\.com
^https://support\.qualifio\.com/
^https://unsplash\.com/
https://support.deepl.com/hc/en-us/articles/360020695820-API-key-for-DeepL-API

# AI provider consoles — redirect to login pages (302/307)
https://aistudio\.google\.com/app/api-keys
https://console\.anthropic\.com/login
https://docs\.claude\.com/en/docs/about-claude/models/overview

# AWS console — redirects unauthenticated requests (302)
https://console\.aws\.amazon\.com/

# EU legislation portal — fragment (#d1e...) is a JavaScript-rendered anchor
https://eur-lex\.europa\.eu/

# GitHub release tag URLs with unresolved MkDocs macro (releases/tag/ with no version)
# These come from snippets using [[= version =]] which does not expand during link-check builds.
https://github\.com/ibexa/(commerce|experience|headless)/releases/tag/$

# Webarchive links
https://web.archive.org/web/20140911035812/https://doc.ez.no/display/EZP/Legacy+code+and+features
https://web.archive.org/web/20150920231014/https://doc.ez.no/display/EZP/Upgrade
https://web.archive.org/web/20201015232625/https://ezsystems.github.io/ezplatform-rest-reference/

# Doc links older than 4.6
https://doc.ibexa.co/en/2.2/releases/updating_ez_platform/
https://doc.ibexa.co/en/2.2/releases/updating_ez_platform/#migrate-landing-pages
https://doc.ibexa.co/en/2.5/api/field_types_reference/imageassetfield/
https://doc.ibexa.co/en/2.5/api/field_types_reference/matrixfield/
https://doc.ibexa.co/en/2.5/api/field_types_reference/richtextfield/
https://doc.ibexa.co/en/2.5/api/graphql/
https://doc.ibexa.co/en/2.5/api/public_php_api_browsing/#getting-content-from-a-location
https://doc.ibexa.co/en/2.5/api/public_php_api_browsing/#siteaccess-aware-repository
https://doc.ibexa.co/en/2.5/community_resources/translations/#how-to-translate-the-interface-using-crowdin
https://doc.ibexa.co/en/2.5/getting_started/install_ez_platform/
https://doc.ibexa.co/en/2.5/getting_started/install_ez_platform/
https://doc.ibexa.co/en/2.5/getting_started/install_ez_platform/
https://doc.ibexa.co/en/2.5/getting_started/install_ez_platform/
https://doc.ibexa.co/en/2.5/getting_started/requirements/
https://doc.ibexa.co/en/2.5/getting_started/requirements/
https://doc.ibexa.co/en/2.5/getting_started/requirements/
https://doc.ibexa.co/en/2.5/getting_started/requirements/
https://doc.ibexa.co/en/2.5/getting_started/requirements/
https://doc.ibexa.co/en/2.5/guide/config_back_office/#content-tree
https://doc.ibexa.co/en/2.5/guide/config_repository/#user-identifiers
https://doc.ibexa.co/en/2.5/guide/content_management/#location-visibility
https://doc.ibexa.co/en/2.5/guide/databases/#using-postgresql
https://doc.ibexa.co/en/2.5/guide/design_engine/
https://doc.ibexa.co/en/2.5/guide/design_engine/#default-designs
https://doc.ibexa.co/en/2.5/guide/extending/extending_back_office/#custom-content-type-icons
https://doc.ibexa.co/en/2.5/guide/extending/extending_form_builder/
https://doc.ibexa.co/en/2.5/guide/extending/extending_online_editor/#custom-data-attributes-and-classes
https://doc.ibexa.co/en/2.5/guide/extending/extending_online_editor/#custom-plugins
https://doc.ibexa.co/en/2.5/guide/extending/extending_online_editor/#custom-tags
https://doc.ibexa.co/en/2.5/guide/extending/extending_online_editor/#custom-tags
https://doc.ibexa.co/en/2.5/guide/extending/extending_online_editor/#example-factbox-tag
https://doc.ibexa.co/en/2.5/guide/extending/extending_online_editor/#inline-custom-tags
https://doc.ibexa.co/en/2.5/guide/extending/extending_online_editor/#link-tag
https://doc.ibexa.co/en/2.5/guide/images/#reusing-images
https://doc.ibexa.co/en/2.5/guide/images/#setting-placeholder-generator
https://doc.ibexa.co/en/2.5/guide/internationalization/
https://doc.ibexa.co/en/2.5/guide/limitation_reference/#state-limitation
https://doc.ibexa.co/en/2.5/guide/search/solr/
https://doc.ibexa.co/en/2.5/guide/search/solr/#solrcloud
https://doc.ibexa.co/en/2.5/guide/url_management/#regenerating-url-aliases
https://doc.ibexa.co/en/2.5/guide/url_management/#url-alias-patterns
https://doc.ibexa.co/en/2.5/guide/url_management/#url-wildcards
https://doc.ibexa.co/en/2.5/guide/workflow/
https://doc.ibexa.co/en/2.5/guide/workflow/#permissions
https://doc.ibexa.co/en/2.5/update_and_migration/from_1.x_2.x/update_app_to_2.5/#c-fix-other-conflicts
https://doc.ibexa.co/en/2.5/update_and_migration/from_1.x_2.x/update_db_to_2.5/#a-update-to-v22
https://doc.ibexa.co/en/3.0/api/rest_api_guide/
https://doc.ibexa.co/en/3.1/guide/url_management/
https://doc.ibexa.co/en/3.3/api/public_php_api_search/#additional-search-result-data
https://doc.ibexa.co/en/3.3/extending/extending_udw/
https://doc.ibexa.co/en/3.3/getting_started/install_ez_platform/
https://doc.ibexa.co/en/3.3/guide/cache/http_cache/
https://doc.ibexa.co/en/3.3/guide/content_rendering/queries_and_controllers/content_queries/#content-query-field
https://doc.ibexa.co/en/3.3/guide/data_migration/data_migration/
https://doc.ibexa.co/en/3.3/guide/image_editor/
https://doc.ibexa.co/en/3.3/guide/images/image_editor/
https://doc.ibexa.co/en/3.3/guide/search/sort_clause_reference/contenttranslatedname_sort_clause/
https://doc.ibexa.co/en/3.3/guide/search/sort_clause_reference/customfield_sort_clause/
https://doc.ibexa.co/en/3.3/guide/search/sort_clause_reference/score_sort_clause/
https://doc.ibexa.co/en/4.3/api/rest_api/rest_api_reference/rest_api_reference.html#product-catalog-create-catalog
https://doc.ibexa.co/en/4.3/api/rest_api/rest_api_reference/rest_api_reference.html#product-catalog-filter-catalogs
https://doc.ibexa.co/en/4.3/api/rest_api/rest_api_reference/rest_api_reference.html#product-catalog-load-catalog-filters
https://doc.ibexa.co/en/4.3/api/rest_api/rest_api_reference/rest_api_reference.html#product-catalog-update-catalog
https://doc.ibexa.co/en/4.3/pim/pim_configuration/#catalog-filters
https://doc.ibexa.co/en/4.3/update_and_migration/from_4.2/update_from_4.2/
https://doc.ibexa.co/en/4.4/commerce/commerce/
https://doc.ibexa.co/en/4.4/commerce/storefront/storefront/
https://doc.ibexa.co/en/4.4/content_management/data_migration/data_migration_actions/#data-migration-actions
https://doc.ibexa.co/en/4.4/content_management/images/fastly_io/
https://doc.ibexa.co/en/4.4/infrastructure_and_maintenance/clustering/clustering/#configuring-the-dfs-io-handler
https://doc.ibexa.co/en/4.5/api/rest_api/rest_api_usage/rest_requests/#expected-user
https://doc.ibexa.co/en/4.5/cdp/cdp_activation/#configuration
https://doc.ibexa.co/en/4.5/commerce/commerce/
https://doc.ibexa.co/en/4.5/content_management/pages/react_app_block/
https://doc.ibexa.co/en/4.5/content_management/pages/react_app_block/#react-app-block-configuration
https://doc.ibexa.co/en/4.5/customer_management/cp_page_builder/
https://doc.ibexa.co/en/4.5/search/aggregation_reference/product_attribute_aggregations/
https://doc.ibexa.co/en/4.5/search/aggregation_reference/productavailabilityterm_aggregation/
https://doc.ibexa.co/en/4.5/search/aggregation_reference/productpricerange_aggregation/
https://doc.ibexa.co/en/4.5/search/aggregation_reference/productstockrange_aggregation/
https://doc.ibexa.co/en/4.5/search/aggregation_reference/producttypeterm_aggregation/
https://doc.ibexa.co/en/4.5/search/aggregation_reference/taxonomyentryid_aggregation/
https://doc.ibexa.co/en/4.5/search/criteria_reference/productstock_criterion/
https://doc.ibexa.co/en/4.5/search/criteria_reference/productstockrange_criterion/
https://doc.ibexa.co/en/4.5/users/passwords/#breached-passwords
https://doc.ibexa.co/projects/userguide/en/2.5/content_model/#content-tree
https://doc.ibexa.co/projects/userguide/en/2.5/creating_content_advanced/#forms
https://doc.ibexa.co/projects/userguide/en/2.5/multi_file_content_management/#multi-file-content-management
https://doc.ibexa.co/projects/userguide/en/2.5/publishing/advanced_publishing_options/
https://doc.ibexa.co/projects/userguide/en/2.5/publishing/flex_workflow/#reviewing-a-draft
https://doc.ibexa.co/projects/userguide/en/2.5/search/#simplified-filtered-search
https://doc.ibexa.co/projects/userguide/en/3.1/publishing/publishing/#comparing-versions
https://doc.ibexa.co/projects/userguide/en/3.2/publishing/publishing/#autosave
https://doc.ibexa.co/projects/userguide/en/4.0/publishing/editorial_workflow/#releasing-locked-drafts
https://doc.ibexa.co/projects/userguide/en/4.0/site_organization/working_with_page/#configure-block-display
https://doc.ibexa.co/projects/userguide/en/4.1/site_organization/working_with_page/#dynamic-targeting-block
https://doc.ibexa.co/projects/userguide/en/4.2/user_management/manage_users/#invite-users
https://doc.ibexa.co/projects/userguide/en/4.2/user_management/manage_users/#register-as-a-user
https://doc.ibexa.co/projects/userguide/en/4.4/content_management/block_reference/#catalog-block
https://doc.ibexa.co/projects/userguide/en/4.4/content_management/block_reference/#last-purchased-block
https://doc.ibexa.co/projects/userguide/en/4.4/content_management/block_reference/#last-viewed-block
https://doc.ibexa.co/projects/userguide/en/4.4/content_management/block_reference/#product-collection-block
https://doc.ibexa.co/projects/userguide/en/4.4/content_management/block_reference/#recently-added-block
https://doc.ibexa.co/projects/userguide/en/4.4/personalization/enable_personalization/#request-access-to-the-server
https://doc.ibexa.co/projects/userguide/en/4.4/personalization/recommendation_models/#predictive
https://doc.ibexa.co/projects/userguide/en/4.4/personalization/recommendation_models/#recently-added
https://doc.ibexa.co/projects/userguide/en/4.4/personalization/recommendation_models/#recurring-purchase
https://doc.ibexa.co/projects/userguide/en/4.5/content_management/block_reference/#bestsellers-block
https://doc.ibexa.co/projects/userguide/en/4.5/content_management/translate_content/#translation-comparison
https://doc.ibexa.co/projects/userguide/en/4.5/customer_management/build_customer_portal/
https://doc.ibexa.co/projects/userguide/en/4.5/personalization/recommendation_models/#b2b-model
https://doc.ibexa.co/projects/userguide/en/4.5/personalization/segment_management/
43 changes: 43 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,49 @@
vendor/bin/deptrac --formatter=baseline
```

## Checking links

External links in the built documentation are checked using [lychee](https://lychee.cli.rs).

### Running the link checker

```bash
# 1. Build the main docs site
mkdocs build --strict

# 2. Clone and build versioned repositories, and generate lychee.toml
./tools/clone-repositories.sh

# 3. Check links
lychee --config lychee.toml --cache --cache-exclude-status "400.." site
```

Check notice on line 112 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L112

[Ibexa.SentenceCapitalizationInHeadings] Use sentence-style capitalization in headings
Raw output
{"message": "[Ibexa.SentenceCapitalizationInHeadings] Use sentence-style capitalization in headings", "location": {"path": "README.md", "range": {"start": {"line": 112, "column": 4}}}, "severity": "INFO"}
After fixing any reported links, run `mkdocs build --strict` before rerunning `lychee`.

Check failure on line 113 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L113

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 113, "column": 25}}}, "severity": "ERROR"}

#### Using non-standard brancges

Check notice on line 115 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L115

[Ibexa.SentenceCapitalizationInHeadings] Use sentence-style capitalization in headings
Raw output
{"message": "[Ibexa.SentenceCapitalizationInHeadings] Use sentence-style capitalization in headings", "location": {"path": "README.md", "range": {"start": {"line": 115, "column": 4}}}, "severity": "INFO"}

The script accepts optional branch names before cloning repositories:

Check notice on line 118 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L118

[Ibexa.SentenceLength] Keep your sentences to less than 30 words.
Raw output
{"message": "[Ibexa.SentenceLength] Keep your sentences to less than 30 words.", "location": {"path": "README.md", "range": {"start": {"line": 118, "column": 1}}}, "severity": "INFO"}

Check failure on line 118 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L118

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 118, "column": 5}}}, "severity": "ERROR"}

Check failure on line 118 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L118

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 118, "column": 43}}}, "severity": "ERROR"}
```bash

Check notice on line 119 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L119

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "README.md", "range": {"start": {"line": 119, "column": 53}}}, "severity": "INFO"}
./tools/clone-repositories.sh [DEVDOC_50] [DEVDOC_46] [USERDOC_50] [USERDOC_46] [CONNECT]

Check failure on line 120 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L120

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 120, "column": 1}}}, "severity": "ERROR"}

Check notice on line 120 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L120

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "README.md", "range": {"start": {"line": 120, "column": 11}}}, "severity": "INFO"}

Check failure on line 120 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L120

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 120, "column": 40}}}, "severity": "ERROR"}
```

Check failure on line 122 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L122

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 122, "column": 14}}}, "severity": "ERROR"}

Check notice on line 122 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L122

[Ibexa.Please] Avoid using 'please', unless referring to an inconvenience for the user causes by an issue in the product.
Raw output
{"message": "[Ibexa.Please] Avoid using 'please', unless referring to an inconvenience for the user causes by an issue in the product.", "location": {"path": "README.md", "range": {"start": {"line": 122, "column": 38}}}, "severity": "INFO"}
| Argument | Repository | Default |

Check notice on line 123 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L123

[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.
Raw output
{"message": "[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.", "location": {"path": "README.md", "range": {"start": {"line": 123, "column": 1}}}, "severity": "INFO"}
|--------------|---------------------------------|---------|

Check notice on line 124 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L124

[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.
Raw output
{"message": "[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.", "location": {"path": "README.md", "range": {"start": {"line": 124, "column": 1}}}, "severity": "INFO"}
| `DEVDOC_50` | `ibexa/documentation-developer` | `5.0` |
| `DEVDOC_46` | `ibexa/documentation-developer` | `4.6` |
| `USERDOC_50` | `ibexa/documentation-user` | `5.0` |
| `USERDOC_46` | `ibexa/documentation-user` | `4.6` |

Check notice on line 128 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L128

[Ibexa.SentenceLength] Keep your sentences to less than 30 words.
Raw output
{"message": "[Ibexa.SentenceLength] Keep your sentences to less than 30 words.", "location": {"path": "README.md", "range": {"start": {"line": 128, "column": 1}}}, "severity": "INFO"}

Check failure on line 128 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L128

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 128, "column": 5}}}, "severity": "ERROR"}

Check failure on line 128 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L128

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 128, "column": 45}}}, "severity": "ERROR"}
| `CONNECT` | `ibexa/documentation-connect` | `main` |

Check notice on line 129 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L129

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "README.md", "range": {"start": {"line": 129, "column": 53}}}, "severity": "INFO"}

Check notice on line 130 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L130

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "README.md", "range": {"start": {"line": 130, "column": 11}}}, "severity": "INFO"}

Check failure on line 130 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L130

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 130, "column": 25}}}, "severity": "ERROR"}

Check failure on line 130 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L130

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 130, "column": 45}}}, "severity": "ERROR"}
Example — checking link for release PRs:

Check failure on line 131 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L131

[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'
Raw output
{"message": "[Ibexa.VariablesGlobal] Use global variable '[[= product_name_base =]]' instead of 'Ibexa'", "location": {"path": "README.md", "range": {"start": {"line": 131, "column": 14}}}, "severity": "ERROR"}

Check notice on line 131 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L131

[Ibexa.Please] Avoid using 'please', unless referring to an inconvenience for the user causes by an issue in the product.
Raw output
{"message": "[Ibexa.Please] Avoid using 'please', unless referring to an inconvenience for the user causes by an issue in the product.", "location": {"path": "README.md", "range": {"start": {"line": 131, "column": 38}}}, "severity": "INFO"}

Check notice on line 132 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L132

[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.
Raw output
{"message": "[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.", "location": {"path": "README.md", "range": {"start": {"line": 132, "column": 1}}}, "severity": "INFO"}
```bash

Check notice on line 133 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L133

[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.
Raw output
{"message": "[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.", "location": {"path": "README.md", "range": {"start": {"line": 133, "column": 1}}}, "severity": "INFO"}
./tools/clone-repositories.sh release-5.0.10 release-4.6.70 4.6 4.6 main
```

The same parameters are available as inputs when triggering the GitHub Actions workflow manually.

## Where to View

https://doc.ibexa.co
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ ibexa:
default:
provider: remote
options:
url_pattern: 'https://placekitten.com/%%width%%/%%height%%'
url_pattern: 'https://picsum.photos/%%width%%/%%height%%'
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fastly is behind this solution (https://github.com/DMarby/picsum-photos/blob/60d20d8f20bafbe727bbd37f03d2cb22dc7d4309/README.md?plain=1#L9), so should be safe to use this one.

2 changes: 1 addition & 1 deletion docs/administration/project_organization/bundles.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ When overriding files, the path inside your application has to correspond to the

### Removing bundles

To remove a bundle (either one you created yourself, or an out-of-the-box one that you don't need), see the [How to Remove a Bundle]([[= symfony_doc =]]/bundles/remove.html) instruction in Symfony doc.
To remove a bundle (either one you created yourself, or an out-of-the-box one that you don't need), remove the bundle entry from `config/bundles.php`.

## Core packages

Expand Down
2 changes: 1 addition & 1 deletion docs/ai_actions/extend_ai_actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@

[[= product_name =]] comes with a built-in connector to OpenAI services, but you're not limited to it and can add support for additional AI services in your application.

The following example adds a new Action Handler connecting to a local AI run using [the llamafile project](https://github.com/Mozilla-Ocho/llamafile) which you can use to execute Text-To-Text Actions, such as the built-in "Refine Text" Action.
The following example adds a new Action Handler connecting to a local AI run using [the llamafile project](https://github.com/mozilla-ai/llamafile) which you can use to execute Text-To-Text Actions, such as the built-in "Refine Text" Action.

Check notice on line 105 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L105

[Ibexa.SentenceLength] Keep your sentences to less than 30 words.
Raw output
{"message": "[Ibexa.SentenceLength] Keep your sentences to less than 30 words.", "location": {"path": "docs/ai_actions/extend_ai_actions.md", "range": {"start": {"line": 105, "column": 1}}}, "severity": "INFO"}

Check notice on line 105 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L105

[Ibexa.ByUsing] Prefer 'by using' or 'with' to plain 'using'.
Raw output
{"message": "[Ibexa.ByUsing] Prefer 'by using' or 'with' to plain 'using'.", "location": {"path": "docs/ai_actions/extend_ai_actions.md", "range": {"start": {"line": 105, "column": 74}}}, "severity": "INFO"}

Check failure on line 105 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L105

[Ibexa.Spellcheck] Did you really mean 'llamafile'?
Raw output
{"message": "[Ibexa.Spellcheck] Did you really mean 'llamafile'?", "location": {"path": "docs/ai_actions/extend_ai_actions.md", "range": {"start": {"line": 105, "column": 89}}}, "severity": "ERROR"}

When creating an Action Handler for [[= product_name_connect =]], add the new handler identifier to the [`Ibexa AI handler` custom property](configure_ai_actions.md#initiate-integration) in [[= product_name_connect =]] user interface.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@
The `router.generate` renders a URI based on the name of the route and its parameters.
The parameter values can be a real value or a placeholder.
For example, `'router.generate("ibexa.rest.load_location", {locationPath: "1/2"})'` results in `/api/ibexa/v2/content/locations/1/2` while `'router.generate("ibexa.rest.load_location", {locationPath: "{locationPath}"})'` gives `/api/ibexa/v2/content/locations/{locationPath}`.
This syntax is based on Symfony's [expression language]([[= symfony_doc =]]/components/expression_language/index.html), an extensible component that allows limited/readable scripting to be used outside the code context.
This syntax is based on Symfony's [expression language]([[= symfony_doc =]]/components/expression_language.html), an extensible component that allows limited/readable scripting to be used outside the code context.

Check notice on line 193 in docs/api/rest_api/extending_rest_api/creating_new_rest_resource.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/rest_api/extending_rest_api/creating_new_rest_resource.md#L193

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/rest_api/extending_rest_api/creating_new_rest_resource.md", "range": {"start": {"line": 193, "column": 13}}}, "severity": "INFO"}

Check notice on line 193 in docs/api/rest_api/extending_rest_api/creating_new_rest_resource.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/rest_api/extending_rest_api/creating_new_rest_resource.md#L193

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/rest_api/extending_rest_api/creating_new_rest_resource.md", "range": {"start": {"line": 193, "column": 181}}}, "severity": "INFO"}

In this example, `app.rest.greeting` is available in every SiteAccess (`default`):

Expand Down
Loading
Loading