diff --git a/.gitignore b/.gitignore index 5596a4d..51cbc66 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,10 @@ dist/ __pycache__/ *.py[cod] -# Distribution staging folders (built per-version, attached to GitHub Releases) +# Local build cache (prod/test/old portable folders per version) +builds/ + +# Legacy staging folders (kept for compatibility with old checkouts) portable-v*/ # Local backup of release archives (kept locally for history, not in repo) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c2d2d8..10c380b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and ## [Unreleased] +## [1.2.1] - 2026-05-18 +### Changed +- The `Update available (vX.Y.Z)` hint in the header is now a clickable hyperlink that opens the GitHub releases page (OSC 8 terminal hyperlink). Modern terminals (Windows Terminal, VS Code, WezTerm, most Linux/macOS terminals) render it as a link — `Ctrl+Click` to follow. Older consoles show the plain text, so nothing breaks. +- Russian tagline tightened: dropped the `для инженера` phrase, the wording was carried over from an earlier draft and felt out of place. + ## [1.2.0] - 2026-05-18 ### Added - Russian UI translation. On first launch the application asks which language to use (`1) English`, `2) Русский`) and writes the answer to a fresh `config.ini` next to `dhcpsrv.exe`. To change the language later, edit `language = en` / `language = ru` in that file — the comment at the top of the file explains how, in both languages. @@ -46,7 +51,8 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and - Scrollback cleared on startup so mouse-wheel doesn't expose pre-launch text. - MIT licensed. -[Unreleased]: https://github.com/Engelgardt23/dhcpsrv/compare/v1.2.0...HEAD +[Unreleased]: https://github.com/Engelgardt23/dhcpsrv/compare/v1.2.1...HEAD +[1.2.1]: https://github.com/Engelgardt23/dhcpsrv/compare/v1.2.0...v1.2.1 [1.2.0]: https://github.com/Engelgardt23/dhcpsrv/compare/v1.1.3...v1.2.0 [1.1.3]: https://github.com/Engelgardt23/dhcpsrv/compare/v1.1.2...v1.1.3 [1.1.2]: https://github.com/Engelgardt23/dhcpsrv/compare/v1.1.1...v1.1.2 diff --git a/src/dhcpsrv/__init__.py b/src/dhcpsrv/__init__.py index ae69b4c..1121b0f 100644 --- a/src/dhcpsrv/__init__.py +++ b/src/dhcpsrv/__init__.py @@ -6,5 +6,5 @@ The single source of truth for the project version. Bump this before tagging a release; CI reads the tag, the code reads this constant. """ -__version__ = "1.2.0" +__version__ = "1.2.1" GITHUB_REPO = "Engelgardt23/dhcpsrv" diff --git a/src/dhcpsrv/app.py b/src/dhcpsrv/app.py index 43e7ff5..68018d1 100644 --- a/src/dhcpsrv/app.py +++ b/src/dhcpsrv/app.py @@ -11,7 +11,7 @@ from rich.console import Console from rich.prompt import Confirm, Prompt from rich.table import Table -from . import __version__ +from . import __version__, GITHUB_REPO from .platform_win import enable_vt, require_admin from .update_check import check_for_update from .network import list_adapters, set_static_ip, revert_to_dhcp @@ -53,10 +53,12 @@ def main() -> None: title = f"[bold cyan]dhcpsrv v{__version__}[/] {t('tagline')}" latest = check_for_update() if latest: + release_url = f"https://github.com/{GITHUB_REPO}/releases/latest" + notice = t("update_available", tag=latest) header = Table.grid(expand=True) header.add_column(justify="left", ratio=1) header.add_column(justify="right") - header.add_row(title, f"[dim]{t('update_available', tag=latest)}[/]") + header.add_row(title, f"[dim][link={release_url}]{notice}[/link][/]") console.print(header) else: console.print(title) diff --git a/src/dhcpsrv/i18n.py b/src/dhcpsrv/i18n.py index 7766163..abe561d 100644 --- a/src/dhcpsrv/i18n.py +++ b/src/dhcpsrv/i18n.py @@ -20,7 +20,7 @@ STRINGS: dict[str, dict[str, str]] = { "en": { # app.py / startup "tagline": "- portable laptop-side DHCP server", - "update_available": "update available ({tag})", + "update_available": "Update available ({tag})", "available_adapters": "Available adapters", "no_adapters": "No suitable wired adapters found.", "select_adapter": "Select adapter number", @@ -57,7 +57,7 @@ STRINGS: dict[str, dict[str, str]] = { }, "ru": { "tagline": "— портативный DHCP-сервер", - "update_available": "доступно обновление ({tag})", + "update_available": "Доступно обновление ({tag})", "available_adapters": "Доступные адаптеры", "no_adapters": "Подходящие проводные адаптеры не найдены.", "select_adapter": "Введите номер адаптера",