Спасибо!

Мы очень рады, что Вам нравится данный проект и вы проголосовали за его развитие.

Работа над задачами по проекту отнимает у его разработчика самое ценное — время, так что небольшая компенсация в виде материальной поддержки поднимет интерес к разработке и позволит сделать больше задач для общей пользы :)

OK

Дополнение DashBoard Pro

Владелец задачи: golnet, Moscow - Russia
Текущий статус: Поддержка
Страница дополнения

Мощный настраиваемый дашборд для Majordomo. Создавайте неограниченное число панелей и групп, добавляйте готовые виджеты (реле, диммер, RGB, сенсоры, графики, таблицы, термостат, будильники и др.) и управляйте умным домом с одного экрана. Виджеты свободно перетаскиваются и масштабируются, каждый настраивается под ваши объекты и свойства Majordomo: иконки, цвета, фон, префиксы/суффиксы, признаки «онлайн/офлайн», действие по нажатию. Светлая и тёмная темы, гибкие настройки внешнего вида, экспорт/импорт виджетов. Полностью переведён на русский и английский.

12.10.2026

bump 01.19.23 + app v426, виджеты 266, dpbuilder v74: Таблица — колон…

(golnet)

bump 01.19.23 + app v426, виджеты 266, dpbuilder v74: Таблица — колонка-чекбокс как в MBoard (v-simple-checkbox, иконки mdi-checkbox-*), клик шлёт событие {action:'clickRow', header, widget_id} и перечитывает данные, поддержаны колбэки script/method/property; ширины колонок и обрезка текста с многоточием (одна таблица, table-layout:fixed); автообновление больше не мигает пустым списком. Исправлен системный баг зарезервированного ключа param в api.php — из-за него колбэки script/method молча падали с 'Unknown API endpoint' и в БД ничего не писалось: все виджеты (button, status, acremote, генерируемый код dpbuilder) переведены на value, scriptRun в модуле читает value. Musicplayer: эквалайзер из настроек панели. Group: сворачивание заголовка группы. Подключён шрифт Material Design Icons (mdi-иконки больше не пустые).
https://github.com/golnet1/dashboard_pro/commit/5e...

Обсуждение (0) (0)

12.10.2026

bump 01.19.22 + app v417: новый виджет «Ворота / жалюзи / шторы» (cur…

(golnet)

bump 01.19.22 + app v417: новый виджет «Ворота / жалюзи / шторы» (curtain) — картинка с текущим процентом открытия, управление перетаскиванием и двойным кликом, кнопки открыть/закрыть/стоп и ±, инверсия, картинки день/ночь, скорость анимации в секундах, переключатель показа процентов и пустое название по умолчанию (шапка скрывается без названия). Виджет добавлен в список конструктора, справку (curtain.html, widgets.html, поиск) и словари ru/default. Поднят кэш-токен виджетов до 257, app.js v417, версия модуля 01.19.22.
https://github.com/golnet1/dashboard_pro/commit/33...

Обсуждение (0) (0)

12.10.2026

bump 01.19.21 + app v401: Цветомузыка — поле «Окончание звучания» теп…

(golnet)

bump 01.19.21 + app v401: Цветомузыка — поле «Окончание звучания» теперь доступно и для простых ламп (dev_type=ports), а не только rgb/ic/megad. Исправлена передача выбранного действия в движок: cmEndAction вызывался без скобок (как ссылка на функцию), из-за чего JSON.stringify выбрасывал поле end и сервер всегда гасил свет; теперь on → реле 1 / диммер 255, keep → без записи, off → нули. Кадры анализатора принимает лёгкий endpoint cm_frame.php (без загрузки MajorDoMo), движок читает кадр из файла. Убрана временная диагностика (cmTrace и логи в .cm_run/cm.log). Поднят кэш-токен виджетов до 241, app.js v401, dpbuilder-ui v64.
https://github.com/golnet1/dashboard_pro/commit/f6...

Обсуждение (0) (0)

11.10.2026

bump 01.19.20 + app v399: Цветомузыка — контроллер Zigbee: cm_engine …

(golnet)

bump 01.19.20 + app v399: Цветомузыка — контроллер Zigbee: cm_engine обслуживает dev=zigbee по dev_type (ports мигают вкл/выкл как порт на плеере, rgb/ic рисуют цветом через свойства; значения уходят на устройство по MQTT через propertySetHandle), на старте запоминается zprev и на стопе свойства возвращаются в прежнее состояние, cmApplyEnd для zigbee блокируется; cmRun пробрасывает dev_type и пропускает zigbee. Переработан tuya-контроллер в cm_engine: лампы и ленты проверяют текущее состояние (DP20/DP21) и трогают только нужное, простая лампа без канала цвета (DP24) мигает вкл/выкл, hex зеркалится только в свойство канала цвета, на стопе restore по prev. Виджет: поле «Контроллер» (Tuya/MegaD/Zigbee), dev_type порты/rgb/ic, адресная лента ic и megad через object_md, словари cmgroup*. Конструктор: кнопка «Добавить функцию» упрощена.
https://github.com/golnet1/dashboard_pro/commit/33...

Обсуждение (0) (0)

09.10.2026

cm_engine: write values directly to pvalues (no history queue), deriv…

(golnet)

cm_engine: write values directly to pvalues (no history queue), derive ROOT from SERVER_ROOT or file location; avoid spamming phistory_queue on CM frames
https://github.com/golnet1/dashboard_pro/commit/e0...

Обсуждение (0) (0)

09.10.2026

bump 01.19.19 + app v398: Конструктор — вкладки кода показывают текст…

(golnet)

bump 01.19.19 + app v398: Конструктор — вкладки кода показывают текст с первой колонки, отступы файла подставляются автоматически (глубина секций methods/computed/watch запоминается при импорте, reindent при сборке). Имя функции синхронизируется в обе стороны: правка в коде меняет подпись вкладки, переименование на вкладке правит объявление. «Функция модуля» сразу вставляет заготовку function fn1() {}. Статическое свойство: окно показывает содержимое без скобок [], скобки и ; подставляются при сборке. Починено падение конструктора от вызова computed-свойств sectionBase/staticBase как функций — перенесены в methods. Ошибка «Укажите название виджета» убрана из вкладки кода — остаётся у поля названия и при блокировке сохранения (переводит на вкладку внешнего вида). Справка конструктора обновлена: Функция модуля, Константы, Статическое свойство, синхронизация имени; подсказка кнопки «Добавить функцию» приведена к составу меню.
https://github.com/golnet1/dashboard_pro/commit/7d...

Обсуждение (0) (0)

08.10.2026

bump 01.19.18 + app v397: Цветомузыка через движок для всех типов уст…

(golnet)

bump 01.19.18 + app v397: Цветомузыка через движок для всех типов устройств: новый cm_engine.php обслуживает ports/rgb/ic/megad (кадр для MegaD, синтетические эффекты, конечное состояние end=off/on/keep), движков может быть несколько — гасятся только при пересечении целей, стоп срабатывает и без живого процесса; эндпоинт cmRun пробрасывает dev/wr/ic_mode/pixels/end, пауза гасит свет, конец спрашивает настройка end_action, а граница трека движок больше не гасит. Dimmer: тумблер и ползунок разделены на свои поля object_level/property_level. Привязка «Свойство объекта» для MegaD — object_p8 и object_md в extraObjectKeys, поле property_md перестало быть пустым. Справка: dimmer и musicplayer обновлены вместе с поиском. Словари: cm_dev_megad, cm_pixels, cm_ch8, cm_enable/cm_disable, mu_stop. Пульты пишут отправляемые коды в dpClientLog.
https://github.com/golnet1/dashboard_pro/commit/f1...

Обсуждение (0) (0)

07.10.2026

bump 01.19.17 + app v364: Musicplayer — эквалайзер из 8 полос (60…14К…

(golnet)

bump 01.19.17 + app v364: Musicplayer — эквалайзер из 8 полос (60…14К) с пресетами и кнопкой «Своя»: своя кривая правится и сохраняется только в разделе Своя, возвращается по клику, при выборе другого пресета подсветка гаснет; громкость по умолчанию стала ползунком 0–100 (по умолчанию 50, прежние значения 0–1 пересчитываются), автозапуск сам запускает первый трек после загрузки, кнопки перемешивания и повтора загораются зелёным. При включённой цветомузыке вместо спектра показывается выбранное устройство: лампы — кружки по числу каналов с вспышками как у устройств, RGB — смена цвета по всей разметке спектра, адресные ленты — лента со сменой цветов; ЦМ по умолчанию выключена (включается кнопкой), число ламп берётся из настроек, добавлена кнопка переключения режимов/эффектов с меняющейся иконкой, исправлена подпись «Бегущая волна с разными оттенками». Ключи mueq*, cm_vol_active и обновлённый mu_field_volume в словарях ru и default.
https://github.com/golnet1/dashboard_pro/commit/af...

Обсуждение (0) (0)

07.10.2026

bump 01.19.16 + app v340: Панель-страница (URL) — адрес /index.html х…

(golnet)

bump 01.19.16 + app v340: Панель-страница (URL) — адрес /index.html хранится путём без вшитого http://IP, хост подставляется динамически при открытии; абсолютные и относительные ссылки работают одинаково. Открытая страница-адрес запоминается и восстанавливается после F5, её название показывается в шапке слева вместо предыдущей панели; клик по панели или «Домой» закрывает страницу и возвращает к панелям.
https://github.com/golnet1/dashboard_pro/commit/b6...

Обсуждение (0) (0)

07.10.2026

bump 01.19.14 + app v336: Musicplayer — плейлист снова показывается (…

(golnet)

bump 01.19.14 + app v336: Musicplayer — плейлист снова показывается (computed showPlaylist, поле show_playlist), заглушка «Плейлист пуст» теперь только при действительно пустом списке, а вместо неё при активном треке — «Выберите трек». Настройка панели: Тип иконки, поле Иконка и кнопка выбора иконки выстроены в одну строку.
https://github.com/golnet1/dashboard_pro/commit/2f...

Обсуждение (0) (0)

07.10.2026

Конструктор: вкладка CSS — стили виджета набираются отдельно от шабло…

(golnet)

Конструктор: вкладка CSS — стили виджета набираются отдельно от шаблона и сохраняются в файл виджета, при загрузке файла попадают на страницу одним style-тегом; редактор ограничен по высоте, проверка CSS ловит незакрытые скобки, кавычки и комментарии. Секции data() теперь всегда с вкладкой «до return»; пустой возврат сохранение само дополняет return {};. Проверка кода видит даже одно «голое» слово в data() (до return), mounted() и beforeUnmount(), но не трогает цепочки вида axios плюс перенесённый get(). Пустой холст готового виджета безопасно переключается между режимами, вопросы конструктора выводятся в стиле дашборда; сохранение без блоков на холсте файл виджета не трогает: разметка, код и верхнеуровневые константы (списки шаблонов часов, полосы эквалайзера) остаются как были.

Справка: новая страница виджета «Музыкальный проигрыватель» (musicplayer) со всеми полями, вкладками, цветомузыкой и уровнем включения лампы; ссылка добавлена в сайдбар всех страниц справки, в каталог виджетов (15 в «Управлении и регулировании») и в поиск; разделы конструктора дополнены про вкладки data(), проверку кода и сохранение готового виджета.

bump 01.19.11 + app v334
https://github.com/golnet1/dashboard_pro/commit/cc...

Обсуждение (0) (0)

06.10.2026

Фон виджета и цвет из свойства: адрес картинки в url() пишется в кавы…

(golnet)

Фон виджета и цвет из свойства: адрес картинки в url() пишется в кавычках, поэтому пробелы и обратные слэши пути больше не ломают фон; в режимах цвет, картинка и свойство карточка становится прозрачной (--card-alpha: 0), а радиус обёртки равен радиусу карточки — закругление видно и на залитом фоне. Цвет по свойству работает по ключу object.property: стартовое значение берётся из кэша сокета или getProperty, изменения приходят через wsApplyBgColor, dpCssColor пропускает только настоящие цвета — счётчик 123 или 123456 карточку не красит.

Списки настроек: первый вариант становится значением по умолчанию, поэтому пустого плейсхолдера «— Выберите —» больше нет, новый виджет открывается на «По умолчанию», а пустые значения старых виджетов дозаполняются в редакторе.

Выбор папки на сервере (dir_picker): поле с кнопкой и диалог дерева в редакторе, эндпоинт dirs с проверкой, что путь не выходит из корня.

Цветомузыка musicplayer: cmTargets вызывается методом (лампы на портах реально мигают 0/1), свойства пишутся одним кадром через сокет (dpSendProperties с откатом на HTTP), port_out 0/1 по умолчанию для простых ламп и порог cm_onlevel, ключи словарей cm и mu_.

bump 01.19.10 + app v333
https://github.com/golnet1/dashboard_pro/commit/a2...

Обсуждение (0) (0)

05.10.2026

Справка по виджету будильника: страница со всеми полями, параметрами,…

(golnet)

Справка по виджету будильника: страница со всеми полями, параметрами, работой звука в браузере и подсказками; пункт в списке виджетов и в поиске, ссылка в сайдбаре всех страниц справки. Виджет будильника: ползунок громкости и круглая кнопка остановки звука под временем, смена ближайшего будильника строго в момент срабатывания, звук в браузере по минутной проверке без запросов к серверу. Убран запрет на воспроизведение, если у Audio нет addEventListener: вызовы и так в try/catch, из-за него звук не запускался. bump 01.19.09 + app v330
https://github.com/golnet1/dashboard_pro/commit/03...

Обсуждение (0) (0)

05.10.2026

Виджет будильников без своего текста в коде: все подписи берутся из с…

(golnet)

Виджет будильников без своего текста в коде: все подписи берутся из словаря через t(ac_) как в остальных виджетах, хелпер tr() с русскими fallback удалён, дни недели тоже по ключам acday/acweekday; комментарии из файла убраны, кириллицы в коде нет. Тесты виджета и рендера получают настоящий словарь из languages/.php и проверяют, что ключи есть и текст приходит из словаря. bump 01.19.08 + app v329
https://github.com/golnet1/dashboard_pro/commit/f6...

Обсуждение (0) (0)

05.10.2026

Виджет будильников в списке системных: каталог пополнен записью alarm…

(golnet)

Виджет будильников в списке системных: каталог пополнен записью alarmclock, виджет отдаётся с IS_SYSTEM=1; добавлены списки звуков из папки sounds, сценариев, объектов и методов, выбор что выполнять (свой код PHP, звук, сценарий, метод объекта) вместо поля код; дни недели включённые зелёные, выключенные серые; все строки виджета и подписи его настроек переведены в ru и default. bump 01.19.07 + app v327
https://github.com/golnet1/dashboard_pro/commit/45...

Обсуждение (0) (0)

05.10.2026

API объектов из обычного дашборда: objectSave создаёт объект класса, …

(golnet)

API объектов из обычного дашборда: objectSave создаёт объект класса, пишет свойства и инжектит свой PHP-код в метод объекта, objectDelete удаляет объект с проверкой класса; работают в сессии дашборда без прав админки. bump 01.19.06
https://github.com/golnet1/dashboard_pro/commit/31...

Обсуждение (0) (0)

05.10.2026

Версия 01.19.05 вместо 01.20.02: среднее число поднимается только при…

(golnet)

Версия 01.19.05 вместо 01.20.02: среднее число поднимается только при новом разделе модуля, в 01.20.0x попал прошлый коммит с новым разделом не появившимся (и с недопустимым 00)
https://github.com/golnet1/dashboard_pro/commit/30...

Обсуждение (0) (0)

05.10.2026

Ссылка в шапке: форма значка Без фона по умолчанию, иконка в одну строку

(golnet)

Ссылка в шапке: форма значка Без фона по умолчанию, иконка в одну строку

Третий вариант формы значка - без подложки и рамки, выбран по умолчанию. Форма хранится строкой shape (none/square/circle) вместо булева circle; старые записи без shape читаются как раньше, поэтому вид настроенных ссылок не меняется.

Поле Иконка в диалоге ссылки: подпись, ввод, выбор иконки и очистка в одной строке. bump 01.20.01 + app v322 + css v154
https://github.com/golnet1/dashboard_pro/commit/c0...

Обсуждение (0) (0)

05.10.2026

Настройки сохраняются сразу: без кнопки-дискеты. bump 01.19.02 + app …

(golnet)

Настройки сохраняются сразу: без кнопки-дискеты. bump 01.19.02 + app v314
https://github.com/golnet1/dashboard_pro/commit/d9...

Обсуждение (0) (0)

04.10.2026

Настройки заголовка: единый вид элементов, ссылок и меню + общее закр…

(golnet)

Настройки заголовка: единый вид элементов, ссылок и меню + общее закругление

Индикаторы служб перенесены в карточку «Индикаторы служб»: кнопка «+» в шапке
убрана, карандаш открывает уже существующий модальный #hs-edit, рядом видно,
сколько элементов добавлено. Меню «Добавить элемент» больше не предлагает
обязательные типы edit и menu - их и раньше было нельзя убрать, но в списке они
мешали. «Выбор панели» и «Ссылка» получили режим показа (иконка, подпись, иконка
с подписью), ссылка - выбор иконки Font Awesome, адрес картинки и форму (квадрат
или круг); «Значение объекта» вернулось к обычному тексту. Общие переключатели
времени и статусов убраны: их роль теперь у элементов шапки, пустой шапки с
настройками больше не бывает. Меню пользователя и меню добавления в настройках
заголовка получили одинаковые цвета, одинаковые в светлой и тёмной теме.

Закругление везде считается от общей настройки --wpb-radius-default. Раньше часть
правил стояла ниже общего блока и перебивала его своим фиксированным радиусом
(.hsbmenu, .widget-menudropdown), поэтому меню и окна не реагировали на
переключатель. Теперь на общий радиус переведены меню, окна и диалоги, панели и
карточки, поля ввода и кнопки - включая обе вкладки редактора виджетов. Круглые
элементы (аватары, превью, логотип, бейджи, ползунки, переключатели, скроллбары)
оставлены как есть: общее закругление к ним не относится.

Полоса прокрутки списка установленных виджетов приведена к стилю dashboard_pro:
6px, прозрачный фон, ползунок rgba(255,255,255,.15) с подсветкой при наведении.

Версия 01.18.04 -> 01.19.01 (новый раздел), app.css v150, app.js v313.
https://github.com/golnet1/dashboard_pro/commit/2b...

Обсуждение (0) (0)

04.10.2026

Конструктор виджетов: системный виджет сохраняется без посторонних пр…

(golnet)

Конструктор виджетов: системный виджет сохраняется без посторонних правок

Сохранение файла виджета, пришедшего из модуля, больше не переписывает его код волшебником. ensureComputed вызывался из genSource для любой модели, и волшебник видел в панели настроек пары объект+свойство (icon_object/icon_property, object/property, bg_object/bg_property, object_alive/property_alive и другие), из-за чего дописывал в файл values и busy в data, два $watch и вызов load в mounted, 16 вычисляемых прокси в computed и метод load в methods. К тому же имена load, set и dpb* генератор считает своими (ownedName), поэтому такой же код мог заменить метод самого виджета. Теперь этот слой пишется только когда холст реально в использовании, а файл, открытый без правок, пересобирается побайтово одинаково - проверено на relay, button, dimmer, graph, chat, progressbar, select, status, thermostat.

Размер и скругление виджета доходят до файла. Панель берёт width, height и radius нового виджета из defaults файла (app.js:1207-1209, собственный radius - app.js:898-903), но importSource читал из defaults только height, width оставался от пустого холста (280), а radius принудительно обнулял, и defaultsOf добавлял только width и height. Теперь все три читаются из defaults и пишутся в него, ключ, которого в файле нет, добавляется только при реальном изменении значения (снимок srcLook при открытии), поэтому пустое сохранение файл не трогает; defaultsChanged при нечитаемом defaults сравнивает значения, а не только появление ключей.

Новая вкладка настроек больше не теряет свою группу полей: фильтр srcGroups оставлял только группы, уже бывшие в файле, и затирал fields новой вкладки.

Метаданные виджета берутся из файла, а не из компонента, зарегистрированного в странице. ensureBuilder отдавал приоритет getWidgetComponent, и после сохранения модель снова получала поля, которые были до правки: удалённые поля возвращались (28 против 0 на relay). Теперь сначала componentOf только что полученного текста, зарегистрированный компонент - запасной вариант, и свежий сразу прописывается в window.DpWidgets. После сохранения также сбрасывается токен кэша файла виджета.

У системного виджета блок Внешний вид -> Параметры -> Модуль показывает только Скругление: поля, отступы, фон, цвет, корневой класс, выравнивание, заголовок и иконка модуля применяются только к разметке, которую собирает конструктор (dpbuilder.js: innerSize, frameCss), а у файла из модуля своя разметка. Они скрыты на время htmlKept и появляются, когда холст пересобран. Ключ dpb_module_look_hint добавлен в ru и default.

Версия 01.18.04, app v290, dpbuilder v69, dpbuilder-ui v52
https://github.com/golnet1/dashboard_pro/commit/b2...

Обсуждение (0) (0)

03.10.2026

Все меню панели закругляются по общему переключателю

(golnet)

Все меню панели закругляются по общему переключателю

Меню пользователя, меню виджета и его подменю, уведомления, календарь и
всплывающие списки, а также меню функций конструктора держали собственные
радиусы - 12, 8, 4, 8 и 10 px - и выключатель «Закруглённые виджеты» на них не
влиял. Теперь они берут значение из переменной на :root, которую ставит
applySettings: включённый выключатель - общий радиус, выключенный - ноль,
то есть меню прямоугольные.

Кнопки и подсказки шапки не трогаем: это не меню, а элементы управления.
Версия 01.18.03 + css v126
https://github.com/golnet1/dashboard_pro/commit/eb...

Обсуждение (0) (0)

03.10.2026

Голосовое управление: vosk и piper_tts подключаются, если модули уста…

(golnet)

Голосовое управление: vosk и piper_tts подключаются, если модули установлены

Оба модуля в majordomo встраивают свой скрипт через prepend.php - то есть только в страницы, которые CMS собирает сама. Страница панели отдаётся как статический файл и в этот механизм не попадает, поэтому голосом в панели пользоваться было нельзя.

Добавлен запрос voiceScripts: он смотрит на наличие modules/vosk с templates/vosk/js/vosk.js и modules/piper_tts с templates/piper_tts/js/piper_tts.js и отдаёт то, что нужно подключить. Правила взяты из prepend.php модулей, а не выдуманы: vosk требует window.VOSK_CONFIG с триггерами и адресом api из modules/vosk/prepend_config.json, и этот конфиг ставится инлайном перед самим скриптом. Версия в адресе - время изменения файла, из которого модуль берёт её у себя: для vosk это prepend.php, для piper_tts сам piper_tts.js. Числа вшивать нельзя, они уезжают при каждой правке модуля, а браузер без Cache-Control по Apache продолжит отдавать старый файл.

Скрипты добавляются в конец document.body после успешной проверки прав и после входа, а не при старте: иначе они грузились бы и на форме входа. Повторная вставка невозможна - если тег с таким src уже есть в документе, новый не создаётся. Piper по своему правилу подключается только когда window.top === window.self, то есть на отдельной вкладке, и не внутри iframe админки - так же, как на остальных страницах majordomo.

Модули не установлены - запрос отдаёт пустой объект и в панель ничего не добавляется. Версия не поднималась, bump app v280.
https://github.com/golnet1/dashboard_pro/commit/a7...

Обсуждение (0) (0)

03.10.2026

Закруглённые виджеты: общий выключатель и поле скругления, тост о коп…

(golnet)

Закруглённые виджеты: общий выключатель и поле скругления, тост о копировании, справка по секциям кода

В настройках, в карточке «Макет», появились выключатель «Закруглённые виджеты» и поле «Общее скругление, px». Пока выключатель выключен, виджеты остаются прямоугольными, как раньше. Когда он включён, радиус карточки берётся из настройки самого виджета, а если там 0 или пусто - из общего поля. Настройка вида добавлена как общее поле radius на вкладке «Дополнительно»: в widget-config.js появилась секция _common.advanced, а getWidgetFields теперь дописывает общие поля к полям типа (position остаётся как был, остальные вкладки получают общий префикс с дедупликацией по ключу). Радиус ставится инлайном в widgetBgStyle, поэтому фон, картинка и цвет из свойства продолжают работать как раньше, а выпадающее меню виджета не обрезается.

Копирование виджета больше не проходит тихо: после запроса появляется тост «Виджет скопирован: <название>» на 5 секунд, имя берётся из ответа widgetCopy (res.title или res.type), ошибки остались через alert.

Справка: в builder.html добавлен раздел «Секции кода: что для чего» - таблица по data(), data() до return, computed, methods, mounted(), watch, beforeUnmount() и произвольным функциям, с примерами и вызовами Majordomo. В widgets.html исправлен счётчик группы управления (17 -> 14, всего 44 типа), в общие настройки добавлено «Скругление углов, px» и оно же в описании вкладки «Дополнительно». Версия не поднималась, только bump cache-busters: app v279, widget-config v12.
https://github.com/golnet1/dashboard_pro/commit/ed...

Обсуждение (0) (0)

03.10.2026

Редактор виджетов: значок происхождения, копирование и разбор занятос…

(golnet)

Редактор виджетов: значок происхождения, копирование и разбор занятости + свои диалоги вместо системных окон. У каждого типа перед кнопкой Конструктор появился значок: щит, если TYPE есть в widgetDefaults(), палочка - иначе (конструктор, ZIP). Признак нужен потому, что системный код при обновлении модуля возвращается к исходному, а редактировать его можно: значок предупреждает, что правка пропадёт, и предлагает сделать копию. Копирование кнопкой рядом с Конструктором дублирует запись БД и JS-файл, переименовывая в копии регистрацию DpWidgets, ключ DpBuilderModels, type в описании и верхнеуровневую const - без последнего оба файла падают на Identifier already declared; имя получает первый свободный суффикс (dimmer_1, dimmer2), название - пометку (Копия N) с тем же номером, а сама копия всегда считается конструкторной. Отказ удаления или отключения теперь называет учётные записи: countWidgetUsage разделён на widgetUsageInfo, который кроме счётчика отдаёт логин -> число размещений, обход панелей прежний (глобальные плюс все объекты DashBoard<login>), поэтому видно, у кого виджет стоит.

Новый js/dpdialog.js переопределяет window.alert: короткий текст уходит в тост в правом нижнем углу (ошибка держится 9 секунд, обычное сообщение 4, больше четырёх тостов не копится, при наведении таймер встаёт), многострочный или длинный текст открывается модальным окном - так показывается и список занятых учётных записей. Плюс dpAlert и dpConfirm на promise с фокусом на кнопке, Enter подтверждает, Esc и клик по фону отменяют. Десять confirm() в app.js переписаны на await dpConfirm, опасные действия помечены danger и подписаны своей кнопкой (Удалить, Да), три функции стали async. prompt() переопределить нельзя - он обязан вернуть значение синхронно, а своё окно асинхронно; в модуле prompt() не используется ни разу. Библиотека проверена в node на мини-DOM, четырнадцать сценариев: нашлись и починены три ошибки - кнопка OK возвращала false, лимит тостов не срабатывал, у сообщений об ошибке не было красной рамки.

Справка дополнена под эти изменения: editor.html (значок происхождения, копирование, чтение ответа о занятости, Копировать в таблице кнопок), faq.html (четыре новых вопроса, включая окно входа вместо вечной загрузки), users.html (вход открывается сам при отказе сессии). Версия 01.18.01, app v277, css v117, dpdialog.js v1.
https://github.com/golnet1/dashboard_pro/commit/be...

Обсуждение (0) (0)

03.10.2026

В редакторе виджетов перед кнопкой 'Добавить' в заголовке 'Установлен…

(golnet)

В редакторе виджетов перед кнопкой 'Добавить' в заголовке 'Установленные виджеты (...)' добавлен иконка-элемент пазла. bump версий 01.17.15 + app v272 + auth v16
https://github.com/golnet1/dashboard_pro/commit/9b...

Обсуждение (0) (0)

03.10.2026

lang: принимать словарь перевода, даже если в нём есть ключ 'error'. …

(golnet)

lang: принимать словарь перевода, даже если в нём есть ключ 'error'. Реальный словарь содержит строку перевода 'Ошибка соединения', dpHttp распаковывает apiHandleResult, поэтому dpAPI('lang') возвращает словарь с ключом error; прежний фильтр !d.error блокировал его. Теперь словарём считаем объект без массива с >20 ключами. Заодно фонового опроса достаточно. Версия 01.17.14, app v271, auth v15
https://github.com/golnet1/dashboard_pro/commit/47...

Обсуждение (0) (0)

02.10.2026

Окно входа не появляется, пока не пришёл перевод. loadTranslations по…

(golnet)

Окно входа не появляется, пока не пришёл перевод. loadTranslations после неудачных попыток выставлял langReady в true - словаря при этом не было, и форма выходила ровно тем, чего видеть нельзя: sign_in, login, password вместо текста. Теперь langReady ставится только по настоящему словарю: пустой ответ, {error} или отсутствие ответа оставляют форму закрытой, а запрос повторяется в фоне раз в 2 секунды, пока перевод не придёт. Плюс v-cloak на #app: до монтирования Vue шаблон лежит в DOM как есть, и все ветви v-if/v-else были видны разом - вместе с карточкой входа и её неотрендеренными подстановками; вместо этого показывается обычная загрузка. bump версии 01.17.13 + app v270 + auth v14
https://github.com/golnet1/dashboard_pro/commit/62...

Обсуждение (0) (0)

02.10.2026

Экран авторизации не показывается авторизованному пользователю. Форма…

(golnet)

Экран авторизации не показывается авторизованному пользователю. Форма входа открывалась по отсутствию authenticated, то есть и по неудачному запросу: dpHttp не бросает исключение, а отдаёт объект с error, и такой ответ читался как 'не авторизован'. Теперь введено authDenied - форма рисуется только на прямой ответ сервера об отказе. Пока ответа нет (проверка идёт, api не отвечает, язык не загружен) показывается ожидание, а вопрос продолжает повторяться в фоне, так что авторизованный пользователь попадает в панель, как только сервер ответит, а не получает форму входа. Выход по кнопке по-прежнему открывает форму сразу. bump версии 01.17.10 + app v267 + auth v11
https://github.com/golnet1/dashboard_pro/commit/71...

Обсуждение (0) (0)

02.10.2026

Конструктор: заголовок больше не наезжает на иконку. Стандартный заго…

(golnet)

Конструктор: заголовок больше не наезжает на иконку. Стандартный заголовок отступает по выражению icon ? 50 : 2, а icon было вычисляемым только от поля icon - в режимах url и property это поле пустое, и заголовок уезжал налево поверх иконки. Теперь это вычисляемое отвечает тем же, что и сама иконка (dpbWidgetIcon): выбирает url, значение свойства или глиф. Регрессия по 49 виджетам без сбоев, повторные сохранения побайтово стабильны. bump версии 01.17.07 + dpbuilder v66
https://github.com/golnet1/dashboard_pro/commit/00...

Обсуждение (0) (0)

02.10.2026

Конструктор: пустой виджет без блоков, иконка как картинка или значен…

(golnet)

Конструктор: пустой виджет без блоков, иконка как картинка или значение свойства (isPicValue), свой размер и шрифт компонента, выбор компонента на холсте, X/Y и хук, закрепление шапки и поиска в окне добавления, счётчик использования вида в списке редактора; справка конструктора/редактора/FAQ и пультов; правки иконок button, clock, colorslider, gauge, gradient-slider, panellink, roundslider; удалено 14 дублей блока dpbraw* в обоих языковых файлах, bump версии 01.17.05 + dpbuilder v64 + dpbuilder-ui v51 + app v264
https://github.com/golnet1/dashboard_pro/commit/9c...

Обсуждение (0) (0)

01.10.2026

Конструктор: X/Y для компонента, убрать подсказку о фиксированной поз…

(golnet)

Конструктор: X/Y для компонента, убрать подсказку о фиксированной позиции, два стандартных компонента нового виджета в справке, bump версии 01.17.04 + dpbuilder-ui v38
https://github.com/golnet1/dashboard_pro/commit/b4...

Обсуждение (0) (0)

01.10.2026

Конструктор и редактор виджетов: select_default у полей Объект/Свойст…

(golnet)

Конструктор и редактор виджетов: select_default у полей Объект/Свойство/Метод, адреса методов, простой формат архива, растяжение блока, подсветка иконки, клавиатура; версия 01.17.03

select_default при добавлении виджета (app.js)

  • Дефолты полей, значение которых читается только через объект (property, method), больше не пишутся прямо в форму: список свойств и методов строится из выбранного объекта, поэтому до его выбора он пуст и значение не совпадало ни с одной option — select показывал пустую рамку вместо select_default. Дефолты ждут объект в pendingFieldDefaults; на добавлении все поля пустые.
  • setMethodField() подставляет отложенный метод при выборе объекта; applyPendingObjectFields() ставит отложенное свойство, как только назван его объект (вотчеры на object, object_level, object_alive, object_info, icon_object, bg_object). Поле, заполненное пользователем, дефолт не получает — запись удаляется из ожидания, а не висит.
  • objectKeyOfField() — единственная карта «свойство → его объект» (property→object, property_level→object_level, property_info→object_info, icon_property→icon_object, bg_property→bgobject, property→object_); getFieldOptions() переведён на неё. editWidget() сбрасывает ожидание.
  • Тест methdef.js расширен до 31 проверки (было 14) на реальных функциях app.js; node --check чисто, 24 JS-набора зелёные.

Адрес метода (app.js)

  • Значение метода хранится как Объект/Метод, но дефолт из файла приходит голым именем (например switch), и старый код считал его объектом: getMethodObj() на значении без слеша возвращает пусто, getMethodName() — само значение, поэтому выбор объекта больше не затирает дефолтный метод. setMethodField() собирает адрес целиком; сохранение и пересчёт изменений (saveChangeObject, widgetHasChangeObject, openChangeObject) больше не теряют метод.

Формат архива виджета (dashboard_pro.class.php)

  • Архив и БД разделены: в архиве только TYPE/ICON/TITLE/DESCRIPTION, readWidgetArchive() не нормализует и не продвигает служебные поля; widgetInstall() назначает PRIORITY = MAX+1, FILE = js/widgets/<type>.js, ENABLED = 1.
  • widgetModel(), widgetDelete(), widgetDefaultHeight(), widgetExport(), widgetBuild() берут путь из типа виджета. Отчёт auditWidgetsReport и список виджетов по-прежнему читают PRIORITY/FILE из БД — это служебные поля таблицы, они остались.
  • Регресс: desctest 16/16, importtest 22/22, ziptest 25/25; PHP lint на 7.4 и 8.5 чистый.

Растяжение блока (dpbuilder.js, dpbuilder-ui.js, app.css, help/builder.html)

  • Блок компонента можно растянуть мышью; размеры пишутся в стиль виджета, резиновый layout и сохранение панелей это учитывают; подпись и справка дополнены.

Подсветка иконки

  • Клик по иконке виджета выбирает иконку вместо запуска метода; перегенерированы виджеты dimmer_palette, dimmer_visual, thermostat_visual (WIDGET_TOKEN_BASE 165→166).

Клавиатура

  • keysmount/keydel: неверный порядок обработчиков и потеря выделения при удалении; поведение закреплено тестами.

Прочее

Обсуждение (0) (0)

30.09.2026

Конструктор и редактор виджетов: select_default у полей Объект/Свойст…

(golnet)

Конструктор и редактор виджетов: select_default у полей Объект/Свойство/Метод, адреса методов, простой формат архива, растяжение блока, подсветка иконки, клавиатура; версия 01.17.03

select_default при добавлении виджета (app.js)

  • Дефолты полей, значение которых читается только через объект (property, method), больше не пишутся прямо в форму: список свойств и методов строится из выбранного объекта, поэтому до его выбора он пуст и значение не совпадало ни с одной option — select показывал пустую рамку вместо select_default. Дефолты ждут объект в pendingFieldDefaults; на добавлении все поля пустые.
  • setMethodField() подставляет отложенный метод при выборе объекта; applyPendingObjectFields() ставит отложенное свойство, как только назван его объект (вотчеры на object, object_level, object_alive, object_info, icon_object, bg_object). Поле, заполненное пользователем, дефолт не получает — запись удаляется из ожидания, а не висит.
  • objectKeyOfField() — единственная карта «свойство → его объект» (property→object, property_level→object_level, property_info→object_info, icon_property→icon_object, bg_property→bgobject, property→object_); getFieldOptions() переведён на неё. editWidget() сбрасывает ожидание.
  • Тест methdef.js расширен до 31 проверки (было 14) на реальных функциях app.js; node --check чисто, 24 JS-набора зелёные.

Адрес метода (app.js)

  • Значение метода хранится как Объект/Метод, но дефолт из файла приходит голым именем (например switch), и старый код считал его объектом: getMethodObj() на значении без слеша возвращает пусто, getMethodName() — само значение, поэтому выбор объекта больше не затирает дефолтный метод. setMethodField() собирает адрес целиком; сохранение и пересчёт изменений (saveChangeObject, widgetHasChangeObject, openChangeObject) больше не теряют метод.

Формат архива виджета (dashboard_pro.class.php)

  • Архив и БД разделены: в архиве только TYPE/ICON/TITLE/DESCRIPTION, readWidgetArchive() не нормализует и не продвигает служебные поля; widgetInstall() назначает PRIORITY = MAX+1, FILE = js/widgets/<type>.js, ENABLED = 1.
  • widgetModel(), widgetDelete(), widgetDefaultHeight(), widgetExport(), widgetBuild() берут путь из типа виджета. Отчёт auditWidgetsReport и список виджетов по-прежнему читают PRIORITY/FILE из БД — это служебные поля таблицы, они остались.
  • Регресс: desctest 16/16, importtest 22/22, ziptest 25/25; PHP lint на 7.4 и 8.5 чистый.

Растяжение блока (dpbuilder.js, dpbuilder-ui.js, app.css, help/builder.html)

  • Блок компонента можно растянуть мышью; размеры пишутся в стиль виджета, резиновый layout и сохранение панелей это учитывают; подпись и справка дополнены.

Подсветка иконки

  • Клик по иконке виджета выбирает иконку вместо запуска метода; перегенерированы виджеты dimmer_palette, dimmer_visual, thermostat_visual (WIDGET_TOKEN_BASE 165→166).

Клавиатура

  • keysmount/keydel: неверный порядок обработчиков и потеря выделения при удалении; поведение закреплено тестами.

Прочее

Обсуждение (0) (0)

30.09.2026

Конструктор: живые значения в палитре, выключатель и ползунок темы, 0…

(golnet)

Конструктор: живые значения в палитре, выключатель и ползунок темы, 01.17.02

dpbuilder.js:

  • живые свойства expr/vif у текста, иконки, выключателя и ползунка; выражения
    проходят через safeExpr (двойные кавычки, скобки, <, обратный слэш и
    комментарии отвергаются — значение идёт в атрибут шаблона)
  • оформление "Тема": выключатель как .v-input--switch, ползунок как .v-slider
    с полосой и бегунком, оба живые; у ползунка живые минимум/максимум/шаг,
    заливка в процентах и блокировка
  • val(...,N) || N больше не мешает: явный 0 не превращается в значение по
    умолчанию, поэтому pad:0 и radius:0 задаются, а card шириной 320 не
    обрезается до 300 (затронуты innerSize, card и шаблон внешнего вида)
  • размер текста и иконки принимает единицы измерения (1.49rem) — так
    повторяются шрифты готовой карточки
  • новое поле "Класс корня" (appearance.cls): класс widget-v-card даёт виджету
    фон, цвета темы и размеры выключателя карточки 36x14 вместо 34x18
  • у ползунка min/max/step: число остаётся атрибутом, имя или путь становятся
    живой привязкой, любое выражение пишется в lomin/himax/stepexpr

dpbuilder-ui.js: редактор свойства типа expr.
Переводы: dpb_expr, dpb_vif, dpb_skin, dpb_v_builder, dpb_v_v, dpb_min_expr,
dpb_max_expr, dpb_step_expr, dpb_fill_expr, dpb_disabled_expr, dpb_icon_cls,
dpb_icon_hl, dpb_root_cls. Подписи вариантов через valLabel ищутся по
dpbv<значение>, поэтому dpbskin* не подходит.
Справка: разделы "Живые значения" и "Внешний вид как у готовой карточки",
поправлено устаревшее утверждение что выключатель всегда только картинка.
Версия 01.17.01 -> 01.17.02, cache 30/32.
https://github.com/golnet1/dashboard_pro/commit/0b...

Обсуждение (0) (0)

30.09.2026

Конструктор: изменение размера блока мышью и привязка компонента к ст…

(golnet)

Конструктор: изменение размера блока мышью и привязка компонента к стороне виджета

dpbuilder-ui.js: у выбранного блока восемь квадратиков по краям (углы и середины сторон) с курсором нужного направления; за угол меняются обе стороны, за середину стороны — только она, за середину верхней/нижней — только высота; противоположная сторона на месте, блок не выходит за границы виджета и не сжимается меньше 20 px (resizeStart/resizeMove/resizeEnd, состояние rs); перетаскивание не начинается за квадратики. В блоке «Позиция» — привязка по горизонтали и по вертикали («Не привязан», слева/по центру/справа, сверху/по центру/снизу). Новый виджет без содержимого открывает вкладку кода на data() — единственной, что есть сразу. Иконка в блоке «Модуль» выбирается пикером.

dpbuilder.js: resizeItem() — расчёт новой рамки по восьми направлениям с ограничениями; anchorCss() — раскладка на панели: при привязке компонент держит расстояние до своей стороны (left/right/center, top/bottom/center), без привязки координаты редактора сохраняются и меняется только свободное место справа и снизу; корень 100%x100%; фон не задаётся принудительно, иначе inline transparent перекрывал бы фон карточки темы; размер из редактора попадает в значения по умолчанию (width/height), иначе виджет на панели терял свой размер.

app.css: .dpb-fit — элемент занимает прямоугольник выделения, а начертание внутри (шрифт, отступы) остаётся прежним; стили .dpb-root/.dpb-item под тему; квадратики растягивания с невидимой зоной захвата.

api.js: dpHttp больше не падает на пустом или не-JSON ответе — возвращает {error, status, raw} с началом ответа, иначе вызывающий видел только ошибку разбора; сохранён прежний unwrap apiHandleResult.

dashboard_pro.class.php: при импорте виджета из ZIP поле FILE берётся из $relFile — имя существующего файла сохраняется, а не собирается заново из типа.

Переводы: dpb_anchor_x/y, dpb_anchor_hint, dpb_anchor_none, dpb_v_top, dpb_v_bottom, dpb_system_field; удалён задвоенный блок dpbraw*.
Справка: раздел «Размер блока» (квадратики, привязка, что меняет размер виджета) и абзац про вкладку data() у нового виджета.
bump cache app.css 102/105, api.js 19, dpbuilder.js 29, dpbuilder-ui.js 31; версия 1.17.01
https://github.com/golnet1/dashboard_pro/commit/d9...

Обсуждение (0) (0)

30.09.2026

Конструктор виджетов (dpbuilder.js, dpbuilder-ui.js): визуальный реда…

(golnet)

Конструктор виджетов (dpbuilder.js, dpbuilder-ui.js): визуальный редактор — палитра компонентов, холст, блоки «Виджет»/«Модуль», вкладки кода (data/computed/methods/mounted/watch/beforeUnmount), «Добавить функцию», «Произвольная функция», генерация кода и проверка синтаксиса/разметки; кнопка «Конструктор» в строке виджета и в списке виджетов редактора; импорт/экспорт ZIP (loadWidgetArchive/saveWidgetArchive с проверкой архива, widgetLoad только на чтение), DpBuilder.componentOf для готовых виджетов без DpBuilderModels (dimmer — 2 вкладки, 34 поля, load+save без изменений); в списке виджетов показывается название, а не технический ключ widget_type (widgetName); палитра: «Переключатель» -> «Выключатель», «Переключатели» -> «Радиокнопки»; справка: новая страница «Конструктор» (8 разделов, 33 строки таблиц), пункт в меню всех 52 страниц, кнопка «Конструктор» в разделе «Редактор виджетов», перечень всех 32 компонентов по группам и 15 типов полей, описания выключателя и чекбокса приведены в соответствие с кодом; график: подпись поля периода — field_period_hours; версия 1.17
https://github.com/golnet1/dashboard_pro/commit/d0...

Обсуждение (0) (0)

28.09.2026

Stream PTZ: панель пресетов и кнопка обновления видна всегда (с подск…

(golnet)

Stream PTZ: панель пресетов и кнопка обновления видна всегда (с подсказкой 'Пресеты не найдены' при пустом списке), пресеты грузятся при первом наведении; диагностика ptz_err/ptz_net в hls_debug; bump cache 162/238
https://github.com/golnet1/dashboard_pro/commit/b7...

Обсуждение (0) (0)

28.09.2026

Stream: перемотка истории через перезапуск ffmpeg (удален дублирующий…

(golnet)

Stream: перемотка истории через перезапуск ffmpeg (удален дублирующий histSeek), syncToLive не мешает истории, восстановление при otherError; версия 1.16
https://github.com/golnet1/dashboard_pro/commit/bf...

Обсуждение (0) (0)

28.09.2026

Справка: 44 подстраницы по виджетам, кнопка 'Помощь' в модалке 'Добав…

(golnet)

Справка: 44 подстраницы по виджетам, кнопка 'Помощь' в модалке 'Добавить виджет', аккордеон-подменю 'Виджеты', живой поиск по разделам (индекс help/js/help-search.js, кэш Object.create(null)); Stream: поле качество/разрешение (720/480/360) и ограничение FPS, живой HLS (перезапуск ffmpeg при остановке, перезапуск-цикл sh, восстановление сети hls.js), версия 1.15
https://github.com/golnet1/dashboard_pro/commit/62...

Обсуждение (0) (0)

28.09.2026

Виджет Stream: показ камеры (полный экран/Камера 1/Камера 2, ffmpeg-к…

(golnet)

Виджет Stream: показ камеры (полный экран/Камера 1/Камера 2, ffmpeg-кроп), убран повтор, живой HLS (ключевые кадры каждые 2 c, без ENDLIST, live-конфиг hls.js, версионирование кэша) и переводы; версия 1.14
https://github.com/golnet1/dashboard_pro/commit/d5...

Обсуждение (0) (0)

28.09.2026

Виджет «Потоковое видео» (Stream): источники URL/свойство/go2rtc (спи…

(golnet)

Виджет «Потоковое видео» (Stream): источники URL/свойство/go2rtc (список камер с go2rtc)/ONVIF (проброс через class.ponvif GetStreamUri), серверный hls_bridge (ffmpeg->HLS с переписанными сегментами) и onvif_rtsp, поле пароля, переводы; обновление виджета Видео (autoplay/loop/muted/nocontrols) и кэш-версий; версия 1.13
https://github.com/golnet1/dashboard_pro/commit/c7...

Обсуждение (0) (0)

28.09.2026

Все рабочие виджеты переведены на первую вкладку «Основная» (вкладка …

(golnet)

Все рабочие виджеты переведены на первую вкладку «Основная» (вкладка «Параметры» скрыта, кроме Слайдшоу с отдельной вкладкой «Слайды»).

Новый виджет «Чат»: история SAY, отправка команд, опрос раз в 10 секунд. Сообщения пишутся от учётки, под которой выполнен вход в панель; в ответе API возвращается текущий пользователь, свои сообщения помечаются именем. Добавлена настройка «Показывать, кто пишет и кто отвечает» (по умолчанию включена); для системных реплик подпись берётся так же, как в уведомлениях — site_title, иначе «Алиса». Убрана вставка в module_notifications, которая публиковала чужие системные сообщения как ваши.

Картинка уведомлений теперь задаётся в Настройках («Картинка уведомлений») вместо жёстко прописанного Alice.jpg. Пустое поле — человечек user.png, как в чате; поддерживаются имя файла в /cms/avatars, абсолютный путь, URL и data-строка, при ошибке загрузки подставляется человечек.

Карта переведена на локальную копию Leaflet (js/lib/leaflet.js, css/leaflet.css, css/images), чтобы не зависеть от внешнего CDN. Удалён неиспользуемый виджет bargraph.js.

Версия 1.12
https://github.com/golnet1/dashboard_pro/commit/e8...

Обсуждение (0) (0)

25.09.2026

Обновление RGB и iframe, версия 1.11

(golnet)

Обновление RGB и iframe, версия 1.11
https://github.com/golnet1/dashboard_pro/commit/ce...

Обсуждение (0) (0)

25.09.2026

Исправления настроек, шрифтов и SessionID; версия 1.11

(golnet)

Исправления настроек, шрифтов и SessionID; версия 1.11
https://github.com/golnet1/dashboard_pro/commit/47...

Обсуждение (0) (0)

25.09.2026

Редактор виджетов: отключение/включение типа виджета (поле ENABLED в …

(golnet)

Редактор виджетов: отключение/включение типа виджета (поле ENABLED в dashboard_widgets, endpoint widgetSetEnabled с защитой от отключения используемых виджетов, кнопка-переключатель перед Удалить, перечёркивание + красная рамка для отключённых, скрытие из списка добавления); версия 1.10
https://github.com/golnet1/dashboard_pro/commit/44...

Обсуждение (0) (0)

25.09.2026

Справка: папка help/ с документацией (обзор, панели, виджеты, редакто…

(golnet)

Справка: папка help/ с документацией (обзор, панели, виджеты, редактор, настройки, права, FAQ), пункт меню 'Помощь' для админов; перевод help; версия 1.09
https://github.com/golnet1/dashboard_pro/commit/65...

Обсуждение (0) (0)

25.09.2026

Версия 1.08

(golnet)

Версия 1.08
https://github.com/golnet1/dashboard_pro/commit/a4...

Обсуждение (0) (0)

25.09.2026

График: ширина поля шкалы зависит от числа шкал и ширины надписей, от…

(golnet)

График: ширина поля шкалы зависит от числа шкал и ширины надписей, отступ от края 18px
https://github.com/golnet1/dashboard_pro/commit/39...

Обсуждение (0) (0)

25.09.2026

График: ширина поля шкалы зависит от числа шкал и ширины надписей, от…

(golnet)

График: ширина поля шкалы зависит от числа шкал и ширины надписей, отступ от края 18px; версия 1.07
https://github.com/golnet1/dashboard_pro/commit/31...

Обсуждение (0) (0)

24.09.2026

изоляция авторизации панели от сессии админки Majordomo (свои ключи D…

(golnet)

изоляция авторизации панели от сессии админки Majordomo (свои ключи DPPRO*), версия 1.04
https://github.com/golnet1/dashboard_pro/commit/22...

Обсуждение (0) (0)

23.09.2026

статусы служб в шапке с WS-обновлением, окно настройки в стиле виджет…

(golnet)

статусы служб в шапке с WS-обновлением, окно настройки в стиле виджетов, О программе с ссылками и разделителями, версия 1.03
https://github.com/golnet1/dashboard_pro/commit/db...

Обсуждение (0) (0)

22.09.2026

fix: widget editor improvements - default field values for selects, c…

(golnet)

fix: widget editor improvements - default field values for selects, cancel removes new widget, translated Create button, collision-free auto-placement
https://github.com/golnet1/dashboard_pro/commit/f9...

Обсуждение (0) (0)

 
(0)
 
Подписаться на обновления (2)
 

Идеи по развитию

Вы можете помочь в развитии проекта, сообщив об ошибках, поделившись своими идеями или проголосовав за уже добавленные. В случае добавления ошибок, обязательно указывайте детали окружения (ОС, версия ПО и т.п.), сообщения об ошибках без деталей будут игнорироваться.

Другие задачи пользователя

Дополнение Piper TTS
Дополнение OpenCode
Дополнение PHP Manager
Дополнение Котел Stout Plus
Модуль MCP XiaoZhi AI