Skip to content

Direct download link - #79

Closed
CyrilleB79 wants to merge 37 commits into
nvdaaddons:masterfrom
CyrilleB79:directDownloadLink
Closed

CyrilleB79 wants to merge 37 commits into
nvdaaddons:masterfrom
CyrilleB79:directDownloadLink

Conversation

@CyrilleB79

Copy link
Copy Markdown
Contributor

Issue

The link for l10nUtils.exe in translators documentation leads to a GitHub release webpage. Translators may not be used to GitHub and may have difficulties to find the tool in the page, among the assets to download.

Solution

Rather provide a direct link to the file to download, as documented on GitHub's Linking to releases page.


Cc @nvdaes, @abdel792

CyrilleB79 and others added 30 commits November 28, 2025 11:00
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This pull request introduces a new pyproject.toml configuration for the addonTemplate project, establishing modern Python project metadata, build settings, and development dependencies. It also updates and refines linting and static analysis configurations to improve code quality and development workflow.
    Fix ruff in pyproject
    Fix pyproject excluding siteScons from pyright
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@v7...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the uv group with 3 updates in the / directory: [filelock](https://github.com/tox-dev/py-filelock), [urllib3](https://github.com/urllib3/urllib3) and [virtualenv](https://github.com/pypa/virtualenv).


Updates `filelock` from 3.20.1 to 3.20.3
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](tox-dev/filelock@3.20.1...3.20.3)

Updates `urllib3` from 2.6.2 to 2.6.3
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](urllib3/urllib3@2.6.2...2.6.3)

Updates `virtualenv` from 20.35.4 to 20.36.1
- [Release notes](https://github.com/pypa/virtualenv/releases)
- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)
- [Commits](pypa/virtualenv@20.35.4...20.36.1)

---
updated-dependencies:
- dependency-name: filelock
  dependency-version: 3.20.3
  dependency-type: indirect
  dependency-group: uv
- dependency-name: urllib3
  dependency-version: 2.6.3
  dependency-type: indirect
  dependency-group: uv
- dependency-name: virtualenv
  dependency-version: 20.36.1
  dependency-type: indirect
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ries (NVDA 2026.2) (nvdaaddons#19)

Closes nvdaaddons#15

This pull request add support for building custom speech pronunciation dictionaries via the add-on template. Changes made:

    Adds "speechDictionraies" sectoin to buildVars
    Adds speech dictionaries manifest key type and generation rules (borrowing custom symbol dictionaries)
…ons#21)

Currently, checks are run with GitHub Actions regardless of files which have been changed.

This PR makes checks to be run just for add-ons. Additionally, Python and dependencies are installed using uv and pyproject.toml.
Co-authored-by: Cyrille Bougot <cyrille.bougot@laposte.net>
Various CI fixes and improvements:

    Do not try to build / make release if the workflow is run from this add-on template repo, since it fails and the template is not meant to be used as a release. Fixes: Do not restrict workflow triggers to addon path nvdaaddons#22 (comment).
    Modernized uv usage with "uv sync", fixing the failure on previously used "uv pip install". Discussed in Do not restrict workflow triggers to addon path nvdaaddons#22 (comment).
    Use uv for each command using Python so that the correct environment is used
    Added .egg-info to .git-ignore
    Updated readme
nvdaaddons#25)

Bumps the uv group with 1 update in the / directory: [requests](https://github.com/psf/requests).


Updates `requests` from 2.32.5 to 2.33.0
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](psf/requests@v2.32.5...v2.33.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.33.0
  dependency-type: direct:production
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…aaddons#26)

Bumps the uv group with 1 update in the / directory: [uv](https://github.com/astral-sh/uv).


Updates `uv` from 0.9.11 to 0.11.6
- [Release notes](https://github.com/astral-sh/uv/releases)
- [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)
- [Commits](astral-sh/uv@0.9.11...0.11.6)

---
updated-dependencies:
- dependency-name: uv
  dependency-version: 0.11.6
  dependency-type: direct:production
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 3.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](softprops/action-gh-release@v2...v3)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…aaddons#29)

Bumps the uv group with 1 update in the / directory: [lxml](https://github.com/lxml/lxml).


Updates `lxml` from 6.0.2 to 6.1.0
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](lxml/lxml@lxml-6.0.2...lxml-6.1.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-version: 6.1.0
  dependency-type: direct:production
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update link to the GetText build for Windows

* Apply suggestion from @seanbudd

---------

Co-authored-by: Sean Budd <seanbudd123@gmail.com>
…vdaaddons#32)

Bumps the uv group with 1 update in the / directory: [urllib3](https://github.com/urllib3/urllib3).


Updates `urllib3` from 2.6.3 to 2.7.0
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](urllib3/urllib3@2.6.3...2.7.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.7.0
  dependency-type: indirect
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ddons#33)

Bumps the uv group with 1 update in the / directory: [idna](https://github.com/kjd/idna).


Updates `idna` from 3.11 to 3.15
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md)
- [Commits](kjd/idna@v3.11...v3.15)

---
updated-dependencies:
- dependency-name: idna
  dependency-version: '3.15'
  dependency-type: indirect
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…daaddons#34)

Bumps the uv group with 1 update in the / directory: [uv](https://github.com/astral-sh/uv).


Updates `uv` from 0.11.6 to 0.11.15
- [Release notes](https://github.com/astral-sh/uv/releases)
- [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)
- [Commits](astral-sh/uv@0.11.6...0.11.15)

---
updated-dependencies:
- dependency-name: uv
  dependency-version: 0.11.15
  dependency-type: direct:production
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…th Crowdin (nvdaaddons#1)

This pull request introduces a complete, automated workflow for synchronizing translations with Crowdin, including new scripts, a scheduled GitHub Actions workflow, and supporting documentation. The main changes add Python and PowerShell scripts for translation status checking and synchronization, a workflow for scheduled and manual Crowdin sync, language mapping configuration, and documentation updates. These improvements enable seamless translation management for add-on projects.

Specifically:

    The .github/scripts folder includes:
    setOutputs.py: Allows to write the addonId, extracted from buildVars.py, to the github output environment variable in GitHub Actions.
        checkTranslation.py: Makes possible to calculate the score (percentage of translated strings) of files (.po, .xliff or .md), using the Crowdin API. This is useful to prevent untranslated files to be included in the add-on folder, reducing the add-on size and avoiding that poor documentation can be accessed when the Help button is pressed from the store.
    crowdinSync.ps1: This script generates/updates an xliff file from the readme.md, creates the pot file and upload these updated source files to Crowdin; commits the updated xliff file to the add-on repo; exports translations from Crowdin, imports translated files with a score/percentage of 50 % or more including these to the addon/locale/lc_messages (po files) or addon/doc (documentation) in the corresponding languages. If translatied files are poor (with low percentages), and a translated file is available inside the add-on, it's considered caming from an old translation produced with the legacy translation system, and it's uploaded to Crowdin. Then changes in the add-on repo are commited to a dedicated branch.
    languageMappings.json: these are mappings between folders used in the add-on, like es, and Crowdin languages, like es-ES (this may need reviewed with advice from NV Access, since for example ne or ga aren't well mapped).
    markdownTranslate.py: Used to generate the xliff file.
Description

This PR adds two separate files explaining how to translate add-ons, one for add-on authors, and the other one for add-on translators.
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Summary of the issue:

The locale mapping used during Crowdin synchronization is missing an entry for Nepali. NVDA uses the locale code ne, while Crowdin identifies the same locale as ne-NP. As a result, the Nepali locale cannot be matched during synchronization.
Description of user facing changes:

None.
Description of developer facing changes:

The Crowdin synchronization workflow can now correctly map the NVDA locale ne to the corresponding Crowdin locale ne-NP.
Description of development approach

Added the missing entry to languageMappings.json, which is used by crowdinSync.ps1 in the crowdinL10n.yml workflow to translate NVDA locale identifiers into their corresponding Crowdin locale identifiers during translation synchronization.

This follows the existing approach used for other locale identifiers whose naming differs between NVDA and Crowdin (for example af_ZA → af and pt_BR → pt-BR).
Description

Documentation about integration of the add-on template in add-ons using git.
Related issues

Fixes nvdaaddons#37
LeonarddeR and others added 7 commits July 14, 2026 13:54
Closes nvdaaddons#28.
Summary

Switches the template from pre-commit + the
pre-commit.ci service to prek,
a fast, drop-in alternative written in Rust. As discussed in nvdaaddons#28, this goes further than
NVDA's swap by also migrating the config from .pre-commit-config.yaml to prek's native
prek.toml. Maintainers confirmed disabling pre-commit.ci on this repo is preferred.
Changes

    pyproject.toml: dev dependency pre-commit==4.2.0 -> prek==0.4.8 (+ uv.lock).
    Config: .pre-commit-config.yaml removed, replaced by prek.toml (generated with
    prek util yaml-to-toml, then hand-adjusted).
        Dropped the pre-commit.ci ci: block and the check-pre-commit-ci-config hook.
        Moved the file-oriented pre-commit-hooks to prek's builtin repo (no clone / no rev).
        Kept check-ast, debug-statements and check-illegal-windows-names on the upstream
        pre-commit-hooks repo: the first two have no builtin equivalent, and the builtin
        check-illegal-windows-names only matches files that already have illegal names, which
        check-hooks-apply flags as unused on a clean repo.
    CI (build_addon.yml): the "Code checks" step now runs uv run prek run --all-files
    (the SKIP env var is still honored).
    readme.md: replaced the pre-commit.ci recommendation with prek usage
    (uv run prek install / uv run prek run --all-files).
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6 to 7.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ddons#45)

Summary of the issue:

The repository lacked an organized unit testing directory structure and initial test execution setup for template development.
Description of developer facing changes:

    Adds a minimal unit testing structure under tests/unit/template/.
    Includes a basic sanity test (test_sanity.py) verifying both passing and failing test detection.
    Excludes tests/ from static analysis in pyproject.toml (ruff and pyright).
    Adds dedicated unit testing documentation in docs/unitTesting.md.

Description of development approach:

    Structured the tests/ directory into tests/unit/template/ to support future unit and system/integration test expansion without conflicting with user-defined tests.
    Added a basic unittest.TestCase in tests/unit/template/test_sanity.py using @unittest.expectedFailure for failure verification.
    Added a dedicated documentation file docs/unitTesting.md with test execution commands using uv.

Testing strategy:

Executed unit tests locally using uv:

uv run python -m unittest discover -s tests -v

Verified that the test runner correctly executes test_sanity.py and that ruff / pyright ignore the tests/ directory.
…daaddons#47)

* docs: add Crowdin token scope requirements and secret setup guide

- Add 'Required Token Scope & Permissions' section detailing minimal Crowdin API token settings:
  - Limit to selected project
  - Grant: projects (read), source-files (read/write), translations (read/write)
- Advise leaving other scopes unchecked for security.
- Replace brief secret note with step-by-step instructions for adding the CROWDIN_TOKEN repository secret.

* Apply suggestions from code review

Co-authored-by: Sean Budd <seanbudd123@gmail.com>

* Apply suggestion from @seanbudd

---------

Co-authored-by: Sean Budd <seanbudd123@gmail.com>
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 9.0.0 to 10.0.1.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](astral-sh/setup-uv@v9.0.0...v10.0.1)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@nvdaes

nvdaes commented Sep 1, 2026 via email

Copy link
Copy Markdown
Contributor

@CyrilleB79

Copy link
Copy Markdown
Contributor Author

Oops. Thanks for advising me. The default target repo is still this one since nvaccess one is a fork of this one unfortunately and I had not checked it. I've just opened a new PR there.

@CyrilleB79 CyrilleB79 closed this Sep 1, 2026
@CyrilleB79
CyrilleB79 deleted the directDownloadLink branch September 24, 2026 12:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

8 participants