Skip to content
Merged
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
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ body:
attributes:
label: Row-Template version
description: Output of `row-template version`.
placeholder: "1.3.0"
placeholder: "1.3.1"
validations:
required: true
- type: input
Expand Down
35 changes: 31 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ All notable changes to this project are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
## [1.3.1] - Unreleased

Fixes found while hardening 1.3.0 against the panels' own source. Nothing changes
for an existing 3X-UI install, and no adapter or panel-behaviour change is
involved.
A hotfix release: everything fixed after v1.3.0 was published, packaged as one
small upgrade. The PasarGuard and Rebecca pages now name themselves after the
subscriber instead of the generic word "Subscription", a node name that carries
an ISO 3166-1 alpha-2 code now draws that country's flag, and the release
validation is reproducible and fully green on Linux. No installer adapter
changes behaviour, and nothing changes for an existing 3X-UI install.

### Fixed

Expand Down Expand Up @@ -82,6 +85,29 @@ involved.
and the pongo2 harness), **Python 3 with Jinja2** (the PasarGuard harness) and
**ShellCheck**. Each command reports its own result even when an earlier one
fails, because the point of the job is the four results.
- **The panel life-cycle tests are offline, and no longer validate a published
release.** Both installer panel suites built a two-design payload while the
release registry names seventeen, so `rt_complete_install` always judged the
install short of what its own version ships and downloaded the release pinned
to that version — the published v1.3.0 tarball. On a host with network the
download succeeded, the template store was rebuilt from that release, and
`verify` then compared it against the working tree: `FAIL canonical artifact
does not match the selected template (row)`. The payload is now the complete
release, so the download is never reached, and `curl` and `wget` are denied in
every fake host and record the attempt, so a regression fails the suite loudly
instead of quietly reaching the internet.
- **`sqlite: false` now means sqlite3 is *unavailable*, not merely
unimplemented.** The adapters gate on `command -v sqlite3`, and `ubuntu-latest`
ships a real one, so the manual-activation test read `outcome=auto` where it
expected `manual`. Every directory holding a sqlite3 is now removed from the
child's `PATH`, replaced by a mirror of itself so nothing else on the host
stops resolving; a new test plants a real-looking sqlite3 and proves it cannot
reach the child.
- **The release validation is reproducible and fully green.** With both leaks
closed, the four release commands pass on `ubuntu-latest` — `npm test` with no
failures, `npm run verify` all checks passed, `npm run lint:sh` 12 scripts
clean, `npm run build:panels` 51 shells — and the result no longer depends on
whether the host has network or happens to ship a `sqlite3`.

## [1.3.0] - 2026-09-26

Expand Down Expand Up @@ -481,6 +507,7 @@ First stable release.
- Requires 3X-UI (MHSanaei) **>= 3.6.0**; validated against stock 3.7.0.
- Recommended operating system: Ubuntu 24.04 LTS (x86_64).

[1.3.1]: https://github.com/iitzSeriZdev/Row-Template/compare/v1.3.0...v1.3.1
[1.3.0]: https://github.com/iitzSeriZdev/Row-Template/releases/tag/v1.3.0
[1.2.1]: https://github.com/iitzSeriZdev/Row-Template/compare/v1.2.0...v1.3.0
[1.2.0]: https://github.com/iitzSeriZdev/Row-Template/releases/tag/v1.2.0
Expand Down
7 changes: 4 additions & 3 deletions README.ar.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@

## التصاميم

يأتي Row-Template 1.3.0 بسبعة عشر تصميمًا، والتصميم الافتراضي هو Row.
يأتي Row-Template 1.3.1 بسبعة عشر تصميمًا، والتصميم الافتراضي هو Row.

<table>
<tr>
Expand Down Expand Up @@ -117,13 +117,14 @@

تستخدم اللوحات الثلاث ثلاثة محرّكات قوالب مختلفة — `html/template` في Go وJinja2 وpongo2 — لذا يُبنى كل تصميم مرة لكل لوحة، ويُختبر كل إصدار منه بعرضه بمحرّك تلك اللوحة الحقيقي. يكتشف المثبّت اللوحة الموجودة على الخادم؛ وعلى خادم فيه أكثر من لوحة يسألك (أو يقرأ `RT_PANEL`). **مدعومة** تعني توفّر القدرات السبع كلها على تلك اللوحة — الاكتشاف والتثبيت والتفعيل والتحقق والنسخ الاحتياطي والاستعادة وإلغاء التثبيت — ويختبر كلًّا منها مجموعة الاختبارات. راجع [التوافق](https://iitzseridev.github.io/Row-Template/ar/compatibility/) لتفاصيل كل لوحة.

**حدود الإصدار 1.3.0:**
**حدود الإصدار 1.3.1:**

- **التحديث الحي في 3X-UI فقط.** في PasarGuard وRebecca تعرض الصفحة الاستهلاك وتاريخ الانتهاء كما كانا عند فتحها.
- **صورة Docker الخاصة بـ Rebecca مرفوضة.** ما زالت 0.0.x، أي إصدار Python؛ والأمر `rebecca migrate-binary` الخاص بـ Rebecca ينقل تثبيت Docker إلى 1.x.
- **إعداد واحد يدويًا** حين يتعذّر التفعيل التلقائي: 3X-UI دون `sqlite3`، وRebecca مع MySQL/MariaDB أو دون `sqlite3`.
- **إعدادات اللوحة تبقى لها الأولوية** في PasarGuard وRebecca: قالب الاشتراك الخاص بمشرف ما، وإعداد **disable subscription template** في PasarGuard. ويُبلغ `row-template verify` عن كليهما.
- **عنوان صفحة PasarGuard** (`subTitle`) و**قوالب Clash** لا تُنتَج؛ تُنتَج صفحة الاشتراك فقط.
- **قوالب Clash** لا تُنتَج؛ تُنتَج صفحة الاشتراك فقط.
- **الأعلام تأتي من رمز أو من إيموجي، لا من اسم.** رمز ISO 3166-1 alpha-2 في اسم العقدة (`TR | Istanbul`، `RU-01`، `GB-LON-1`، `DE`) يرسم علم تلك الدولة، وكذلك إيموجي العلم. أما أسماء الدول وأسماء المدن (`Turkey - Istanbul`، `Finland Helsinki`) فلا تُستنتَج وتبقى بشارة الأحرف الأولى (monogram).
- **لوحة واحدة لكل خادم.** يخدم التثبيت اللوحة التي ثُبّت لها؛ ولخدمة لوحة أخرى، شغّل `row-template uninstall` أولًا.

## البنية
Expand Down
7 changes: 4 additions & 3 deletions README.fa.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@

## طرح ها

Row-Template 1.3.0 با هفده طرح عرضه می شود. طرح پیش فرض Row است.
Row-Template 1.3.1 با هفده طرح عرضه می شود. طرح پیش فرض Row است.

<table>
<tr>
Expand Down Expand Up @@ -118,13 +118,14 @@ Row-Template 1.3.0 با هفده طرح عرضه می شود. طرح پیش فر

این سه پنل از سه موتور قالب متفاوت استفاده می کنند — `html/template` زبان Go، Jinja2 و pongo2 — پس هر طرح برای هر پنل یک بار ساخته می شود و هر نسخه با رندر شدن توسط موتور واقعی همان پنل آزموده می شود. نصب کننده تشخیص می دهد کدام پنل روی سرور است؛ روی سروری با بیش از یک پنل، از شما می پرسد (یا `RT_PANEL` را می خواند). **پشتیبانی‌شده** یعنی هر هفت توانایی روی آن پنل موجود است — تشخیص، نصب، فعال‌سازی، بررسی، پشتیبان‌گیری، بازگردانی و حذف نصب — و هر کدام توسط مجموعهٔ آزمون آزموده می شود. برای جزئیات هر پنل، [سازگاری](https://iitzseridev.github.io/Row-Template/fa/compatibility/) را ببینید.

**محدودیت های 1.3.0:**
**محدودیت های 1.3.1:**

- **به روزرسانی زنده فقط در 3X-UI.** در PasarGuard و Rebecca، صفحه مصرف و انقضا را همان طور نشان می دهد که هنگام باز شدن صفحه بود.
- **ایمیج Docker مربوط به Rebecca رد می شود.** این ایمیج هنوز 0.0.x، یعنی نسخهٔ پایتونی است؛ دستور `rebecca migrate-binary` خود Rebecca یک نصب Docker را به 1.x منتقل می کند.
- **یک تنظیم دستی** وقتی فعال سازی خودکار ممکن نیست: 3X-UI بدون `sqlite3`، و Rebecca با MySQL/MariaDB یا بدون `sqlite3`.
- **تنظیمات پنل همچنان اولویت دارند** در PasarGuard و Rebecca: قالب اشتراک اختصاصی یک ادمین، و تنظیم **disable subscription template** در PasarGuard. `row-template verify` هر دو را گزارش می دهد.
- **عنوان صفحهٔ PasarGuard** (`subTitle`) و **قالب های Clash** ساخته نمی شوند؛ فقط صفحهٔ اشتراک ساخته می شود.
- **قالب های Clash** ساخته نمی شوند؛ فقط صفحهٔ اشتراک ساخته می شود.
- **پرچم ها از یک کد یا ایموجی می آیند، نه از یک نام.** کد ISO 3166-1 alpha-2 در نام گره (`TR | Istanbul`، `RU-01`، `GB-LON-1`، `DE`) پرچم آن کشور را می کشد، و ایموجی پرچم نیز همین طور. نام کشورها و نام شهرها (`Turkey - Istanbul`، `Finland Helsinki`) استنباط نمی شوند و نشان حروف (monogram) باقی می مانند.
- **یک پنل برای هر سرور.** هر نصب به پنلی سرویس می دهد که برای آن نصب شده است؛ برای سرویس دادن به پنل دیگر، ابتدا `row-template uninstall` را اجرا کنید.

## معماری
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ It ships as one self-contained HTML file per design, with every style, script, f

## Designs

Row-Template 1.3.0 ships seventeen designs. Row is the default.
Row-Template 1.3.1 ships seventeen designs. Row is the default.

<table>
<tr>
Expand Down Expand Up @@ -118,13 +118,14 @@ Choose a design during a fresh interactive install, set `RT_TEMPLATE` for a scri

The three panels use three different template engines — Go `html/template`, Jinja2 and pongo2 — so every design is built once per panel, and each version is tested by rendering it with that panel's real engine. The installer detects which panel is on the server; on a server with more than one, it asks (or reads `RT_PANEL`). **Supported** means all seven capabilities are present on that panel — detect, install, activate, verify, backup, restore and uninstall — and each one is exercised by the test suite. See [Compatibility](https://iitzseridev.github.io/Row-Template/compatibility/) for the details of each panel.

**Limitations in 1.3.0:**
**Limitations in 1.3.1:**

- **Live refresh is 3X-UI only.** On PasarGuard and Rebecca the page shows usage and expiry as of when it was opened.
- **Rebecca's Docker image is refused.** It is still 0.0.x, the Python edition; Rebecca's own `rebecca migrate-binary` moves a Docker install to 1.x.
- **One setting by hand** when automatic activation is not possible: 3X-UI without `sqlite3`, and Rebecca on MySQL/MariaDB or without `sqlite3`.
- **Panel settings still take precedence** on PasarGuard and Rebecca: an admin's own subscription template, and PasarGuard's **disable subscription template** setting. `row-template verify` reports both.
- **PasarGuard's page title** (`subTitle`) and **Clash templates** are not produced; only the subscription page is.
- **Clash templates** are not produced; only the subscription page is.
- **Flags come from a code or an emoji, never from a name.** An ISO 3166-1 alpha-2 code in the node name (`TR | Istanbul`, `RU-01`, `GB-LON-1`, `DE`) draws that country's flag, as does a flag emoji. Country *names* and *city names* (`Turkey - Istanbul`, `Finland Helsinki`) are **not** inferred and keep the monogram.
- **One panel per server.** An installation serves the panel it was installed for; to serve a different one, run `row-template uninstall` first.

## Architecture
Expand Down
7 changes: 4 additions & 3 deletions README.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@

## Дизайны

Row-Template 1.3.0 поставляется с семнадцатью дизайнами. Дизайн по умолчанию — Row.
Row-Template 1.3.1 поставляется с семнадцатью дизайнами. Дизайн по умолчанию — Row.

<table>
<tr>
Expand Down Expand Up @@ -118,13 +118,14 @@ Row-Template 1.3.0 поставляется с семнадцатью дизай

Три панели используют три разных шаблонизатора — Go `html/template`, Jinja2 и pongo2, — поэтому каждый дизайн собирается отдельно для каждой панели, и каждая версия проверяется отрисовкой настоящим движком этой панели. Установщик определяет, какая панель стоит на сервере; если их несколько, он спрашивает (или читает `RT_PANEL`). **Поддерживается** означает, что для этой панели есть все семь возможностей — обнаружение, установка, активация, проверка, резервная копия, восстановление и удаление, — и каждая из них покрыта тестами. Подробности по каждой панели — в разделе [Совместимость](https://iitzseridev.github.io/Row-Template/compatibility/).

**Ограничения 1.3.0:**
**Ограничения 1.3.1:**

- **Живое обновление — только в 3X-UI.** В PasarGuard и Rebecca страница показывает расход и срок действия на момент открытия.
- **Образ Docker для Rebecca отклоняется.** Это всё ещё 0.0.x, версия на Python; собственная команда Rebecca `rebecca migrate-binary` переводит установку Docker на 1.x.
- **Одна настройка вручную**, когда автоматическая активация невозможна: 3X-UI без `sqlite3`, а также Rebecca с MySQL/MariaDB или без `sqlite3`.
- **Настройки панели по-прежнему имеют приоритет** в PasarGuard и Rebecca: собственный шаблон подписки администратора и настройка PasarGuard **disable subscription template**. `row-template verify` сообщает о них.
- **Заголовок страницы PasarGuard** (`subTitle`) и **шаблоны Clash** не создаются — только страница подписки.
- **Шаблоны Clash** не создаются — только страница подписки.
- **Флаг берётся из кода или эмодзи, но не из названия.** Код ISO 3166-1 alpha-2 в имени узла (`TR | Istanbul`, `RU-01`, `GB-LON-1`, `DE`) рисует флаг этой страны, как и эмодзи флага. Названия стран и городов (`Turkey - Istanbul`, `Finland Helsinki`) **не** распознаются и остаются монограммой.
- **Одна панель на сервер.** Установка обслуживает панель, для которой она выполнена; чтобы обслуживать другую, сначала выполните `row-template uninstall`.

## Архитектура
Expand Down
7 changes: 4 additions & 3 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@

## 设计

Row-Template 1.3.0 提供十七种设计,默认设计为 Row。
Row-Template 1.3.1 提供十七种设计,默认设计为 Row。

<table>
<tr>
Expand Down Expand Up @@ -117,13 +117,14 @@ Row-Template 1.3.0 提供十七种设计,默认设计为 Row。

三个面板使用三种不同的模板引擎 —— Go `html/template`、Jinja2 和 pongo2 —— 因此每种设计都会为每个面板分别构建,并用该面板真实的引擎渲染来测试每个版本。安装程序会检测服务器上是哪一个面板;如果有多个,它会询问你(或读取 `RT_PANEL`)。**支持**意味着该面板具备全部七项能力 —— 检测、安装、激活、校验、备份、还原和卸载 —— 并且每一项都由测试套件覆盖。各面板的详细信息见[兼容性](https://iitzseridev.github.io/Row-Template/compatibility/)。

**1.3.0 的限制:**
**1.3.1 的限制:**

- **实时刷新仅限 3X-UI。** 在 PasarGuard 和 Rebecca 上,页面显示的是打开时的用量和到期时间。
- **Rebecca 的 Docker 镜像会被拒绝。** 它仍是 0.0.x,即 Python 版本;Rebecca 自带的 `rebecca migrate-binary` 可以把 Docker 安装迁移到 1.x。
- **无法自动激活时需手动设置一项:** 没有 `sqlite3` 的 3X-UI,以及使用 MySQL/MariaDB 或没有 `sqlite3` 的 Rebecca。
- **面板设置仍然优先**(PasarGuard 和 Rebecca):管理员自己的订阅模板,以及 PasarGuard 的 **disable subscription template** 设置。`row-template verify` 会报告这两种情况。
- **PasarGuard 的页面标题**(`subTitle`)和 **Clash 模板**不会生成;只生成订阅页面。
- **Clash 模板**不会生成;只生成订阅页面。
- **旗帜来自国家代码或旗帜表情,而不是名称。** 节点名中的 ISO 3166-1 alpha-2 代码(`TR | Istanbul`、`RU-01`、`GB-LON-1`、`DE`)会绘制该国旗帜,旗帜表情同样如此。国家**名称**和城市**名称**(`Turkey - Istanbul`、`Finland Helsinki`)**不会**被推断,仍显示首字母徽章。
- **每台服务器一个面板。** 一次安装只为安装时所选的面板提供页面;若要改为另一个面板,请先运行 `row-template uninstall`。

## 架构
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.3.0
1.3.1
Loading