Нотатки до релізів

Історія оновлень та покращень Pyroom.

v2.7.1
Патч
10 березня 2026 р.
  • Покращено поведінку введення в консолі: автоматичні текстові виправлення вимкнено, щоб введення команд було стабільнішим на різних пристроях і мовних розкладках.
v2.7.0
Мінорний
9 березня 2026 р.
  • Додано онлайн-поширення через збережені на сервері payload: поділіться проєктом за 8-символьним кодом або коротким посиланням (pyroom.app/s/…), яке відкривається прямо в playground.
  • Оновлено діалог поширення з вкладками «Офлайн (QR)» та «Онлайн» — QR-поширення повністю працює без інтернету, онлайн-поширення підтримує payload до 20 КБ.
  • Додано налаштування терміну дії для онлайн-поширення: від 1 години до 1 року; спільні проєкти автоматично видаляються після закінчення терміну.
  • Додано пункт меню «Введіть код доступу», який відкриває окремий діалог для імпорту проєкту за 8-символьним кодом.
  • Короткі посилання (pyroom.app/s/…) автоматично переспрямовують до playground і відкривають діалог підтвердження імпорту з метаданими проєкту.
v2.6.1
Патч
26 лютого 2026 р.
  • Виправлено проблему редактора на Windows, коли під час введення пробілу символи могли вставлятися на кілька позицій далі від видимого курсора в Monaco.
  • Оновлено параметри рендерингу тексту та введення в Monaco для Windows, щоб покращити вирівнювання курсора і точність набору при дробному масштабуванні екрана.
  • Ізольовано приховане textarea-введення Monaco від глобальних стилів форм, щоб побічні CSS-ефекти не впливали на поведінку курсора.
v2.6.0
Мінорний
23 лютого 2026 р.
  • Розширено навігацію в англійській та українській версіях, включно з підтримкою мобільного меню та швидкими посиланнями для аудиторій і сценаріїв роботи.
  • Покращено взаємодію з інтерфейсом: оновлено активні стани кнопок, анімації інтерактивних елементів і поведінку виділення тексту Monaco на мобільних пристроях.
  • Додано підказки мови для українських користувачів і покращено видимість у пошуку завдяки оновленому sitemap та очищенню метаданих robots.txt.
v2.5.0
Мінорний
20 лютого 2026 р.
  • Виправлено витік пам'яті PyProxy: persistCallback() тепер відстежує кожен .copy() для кнопок, прапорців, перемикачів, bind() і команд меню кожного віджета; destroy() та reset() викликають .destroy() для всіх відстежених копій.
  • Розширено парсинг індексів Text: parseTextIndex() тепер підтримує 'end-1c', 'end+Nc', 'end-Nl' (зсув рядків), 'insert' (позиція курсора), 'sel.first', 'sel.last' та складені індекси на зразок '1.0+2c'. textGet/textInsert/textDelete/textTagAdd/textTagRemove передають живий контекст курсора та виділення.
  • Функціональний Scrollbar: декоративний div замінено на стилізований віджет із доріжкою та повзунком. Параметр command викликає Python-callback із часткою прокрутки при перетягуванні. Додано Scrollbar.set(first, last) для переміщення повзунка при прокрутці пов'язаного віджета.
  • Замінено window.alert/window.confirm у messagebox на власний асинхронний DOM-модал: стилізоване накладення із заголовком, іконкою, текстом повідомлення та кнопками OK/Скасувати. Усі функції messagebox тепер async def і повертають awaitable результати. Клавіші Enter/Escape працюють коректно.
  • Виправлено автоматичне розміщення grid: grid() тепер оновлює grid-template-columns та grid-template-rows на батьківському елементі після кожного розміщення, автоматично розширюючи 'auto'-доріжки на нову комірку з урахуванням span та наявних налаштувань columnconfigure/rowconfigure.
  • Виправлено витік пам'яті змінних: gcVariableIfUnbound() видаляє значення змінної з мапи variables, коли видаляється остання прив'язка (entry, text, scale, listbox, check, radio) та всі трасування, запобігаючи необмеженому зростанню в тривалих сесіях.
v2.4.0
Мінорний
20 лютого 2026 р.
  • Додано віджет LabelFrame: контейнер із заголовком і рамкою, реалізований через <fieldset>/<legend>, підтримує розміщення дочірніх віджетів, параметри bg/fg/font/relief та компонування grid/pack.
  • Додано віджет OptionMenu: стандартний випадаючий список tkinter із двостороннім зв'язуванням зі StringVar/Variable — вибір оновлює змінну, а зміна змінної оновлює відображений варіант.
  • Додано віджет ttk.Notebook з методами add(), select(), index() та tabs(): підтримує кілька панелей вкладок із клікабельною панеллю вкладок і коректним перемиканням показу/приховування.
  • Додано віджет ttk.Treeview з повним API insert/delete/heading/column/item/set/selection, відображеним як HTML-таблиця з підтримкою вкладених дочірніх елементів, ширини стовпців і вибору рядків.
  • Додано columnconfigure() та rowconfigure() з параметром weight на Frame, Tk та всіх віджетах: зважені стовпці/рядки розширюються через CSS fr-одиниці, minsize відображається на minmax().
  • Додано after_idle() на Tk та всіх віджетах: планує виклик на наступному циклі простою через requestIdleCallback (з резервним setTimeout(0)), відповідно до стандартної семантики Tkinter.
  • Додано winfo_children(), winfo_exists() та winfo_parent() для програмної інтроспекції дерева віджетів — winfo_exists() повертає False після destroy(), winfo_children() повертає лише прямих нащадків.
  • Додано підтримку configure() для relief (sunken/raised/ridge/groove/solid/flat), bd/borderwidth, cursor (з відображенням імен курсорів Tkinter→CSS), justify, anchor та wraplength на всіх віджетах.
  • Додано state='readonly' для Entry та Text: встановлює HTML-атрибут readOnly (дозволяє виділення та копіювання тексту, але забороняє редагування), відрізняється від state='disabled'.
  • Додано систему тегів для Text: tag_add(), tag_config()/tag_configure(), tag_remove() та tag_delete() — теги відображаються через прозорий накладний div із кольоровими/стилізованими span поруч із textarea.
  • Додано псевдонім ttk.LabelFrame у підмодулі ttk. Розширено набір тестів Tkinter shim з 159 до 225, що охоплюють усі нові віджети та API.
v2.3.0
Мінорний
20 лютого 2026 р.
  • Виправлено збереження координат елементів полотна: create_line, create_rectangle, create_oval, create_arc, create_polygon і create_text тепер зберігають координати при створенні, тому canvas.coords(), canvas.move(), canvas.bbox() та canvas.find_overlapping() повертають правильні результати.
  • Виправлено canvas.itemconfigure(): зміни fill, outline, width та інших візуальних параметрів тепер застосовуються при наступному перемалюванні, а не ігноруються.
  • Виправлено систему тегів полотна: теги, задані через параметр tags при створенні, тепер зберігаються і доступні для пошуку. Додано canvas.addtag_withtag(), canvas.addtag_all(), canvas.dtag(), canvas.gettags() та підтримку find_withtag('all').
  • Виправлено pack(side=LEFT/RIGHT/TOP/BOTTOM): віджети з side= тепер коректно розміщуються горизонтально (LEFT/RIGHT) або вертикально (TOP/BOTTOM) через flexbox-напрямок батьківського контейнера.
  • Виправлено прив'язку подій: <FocusIn>, <FocusOut>, <MouseWheel>, <Configure> та <Button-3> тепер відповідають правильним DOM-подіям. Payload події тепер містить поля widget, state (бітова маска модифікаторів), delta (прокрутка), button, char, x_root, y_root та width/height.
  • Розширено відображення keysym: F1–F12, Home, End, Delete, BackSpace, Escape, Tab, Return, PageUp, PageDown, Insert, пробіл і клавіші стрілок тепер перетворюються на правильні рядки keysym Tkinter. Прив'язки конкретних клавіш на кшталт <Key-a> тепер фільтруються коректно.
  • Додано variable.trace_add(), trace_remove(), trace_info() та застарілі псевдоніми trace() і trace_variable() — стандартний патерн для реактивних UI тепер працює без опитування.
  • Розширено набір тестів Tkinter shim з 88 до 159, що охоплюють координати полотна, систему тегів, pack side, відображення подій, повний payload події, трансляцію keysym та трасування змінних.
v2.2.0
Мінорний
20 лютого 2026 р.
  • Розширено прив'язку змінних Tkinter між віджетами: Entry, Label, Text, Scale, Checkbutton, Radiobutton і Listbox тепер коректно синхронізуються зі StringVar/IntVar/DoubleVar/BooleanVar.
  • Додано виправлення сумісності Tkinter у браузерному runtime: експортовано tk.Variable, нормалізовано аргументи RPC у воркері та усунуто DataCloneError при передачі змінних/списків в опціях віджетів.
  • Покращено поведінку Tkinter API: Text підтримує індекси рядок.стовпець і 'end', опції pack() тепер застосовуються (padding/fill/expand), а обробка подій точніша для <Return> та <B1-Motion>.
  • Додано ширше покриття тестами для Tkinter shim, щоб зафіксувати поведінку та запобігти регресіям у синхронізації змінних, подіях, опціях розкладки й операціях з текстом/списками.
v2.1.0
Мінорний
19 лютого 2026 р.
  • Видалено застарілі посилання на маніфест з HTML-файлів для очищення застарілих посилань PWA.
  • Додано логування інформації про збірку в консоль: номер версії, хеш коміту та часова мітка збірки для спрощеного налагодження.
  • Покращено стратегію кешування фонового обробника з обробкою помилок та резервною логікою для повної підтримки офлайн-режиму.
v2.0.0
Мажорний
18 лютого 2026 р.
  • Додано багаторівневе завантаження для Pyodide та Monaco Editor з автоматичним перемиканням (основний сервер → локальний кеш → резервна мережа доставки).
  • Додано кнопку завантаження результатів перегляду на мобільних пристроях із покращеним відображенням візуального вмісту, наприклад графіків Matplotlib.
  • Розширено кешування у фоновому обробнику для підтримки піддоменів ресурсів, що забезпечує повний доступ до Pyodide та Monaco Editor без з'єднання з інтернетом.
  • Додано панель керування бібліотеками Python із встановленням одним кліком, оновленням та очищенням кешу для пакетів на зразок NumPy, Matplotlib і Pandas.
  • Додано систему звітів про помилки на вебсайті pyroom.app з автоматичним створенням GitHub issues для відстеження відгуків користувачів та запитів функцій.
  • Додано функцію підписки на email на pyroom.app для сповіщень про релізи, що дозволяє користувачам слідкувати за новими версіями.
v1.1.0
Мінорний
15 лютого 2026 р.
  • Додано кнопку Оновити (клавіша F5) для швидкого перезавантаження сторінки та скидання сесії виконання Python.
  • Розширено навчальний посібник покроковими інструкціями для дії Оновити на комп'ютері та мобільному пристрої.
  • Покращено панель перегляду: тепер розширюється на всю доступну висоту на комп'ютері, додано повноекранний режим для кращого перегляду вмісту.
v1.0.0
Мажорний
14 лютого 2026 р.
  • Розділено примітки до випусків і навчальний посібник на незалежні вікна з окремим відстеженням переглядів.
  • Розширено навчальний посібник покроковими інструкціями для різних пристроїв, керуванням меню, діями скасування та повтору.
  • Перероблено мобільний інтерфейс: панель дій унизу, перемикання між редактором та результатами, покращена поведінка панелі виводу.
  • Покращено відображення приміток до випусків: хронологічна прокрутка та позначки версій із типом випуску (великий/малий).
v0.4.2
Патч
14 лютого 2026 р.
  • Додано адаптивні розміри шрифтів для введення та виведення в консолі на мобільних пристроях для кращої читабельності.
  • Додано кнопку «Відновити типові» в налаштуваннях для швидкого скидання всіх параметрів до початкових значень.
  • Покращено оформлення світлої теми для кнопок дій та підсвічування навчального посібника.
v0.4.1
Патч
14 лютого 2026 р.
  • Перероблено мобільне розташування з окремими екранами редактора та результатів для зрозумілішого робочого процесу.
  • Додано панель дій на мобільному пристрої для швидкого перемикання екранів і запуску коду.
  • Виправлено обробку переповнення та проблеми відображення на пристроях Apple і малих екранах.
v0.4.0
Мінорний
14 лютого 2026 р.
  • Додано режим вбудовування через iframe з налаштовуваною видимістю інтерфейсу та опціями тільки для читання при поширенні коду.
  • Розширено поширення коду: додано підтримку власних метаданих і покращено поведінку відкриття посилань.
  • Оновлено панель «Про програму» та відображення приміток до випусків для чіткішої інформації про продукт.
v0.3.0
Мінорний
13 лютого 2026 р.
  • Додано інтерактивний навчальний посібник із покроковим підсвічуванням функцій редактора та середовища виконання.
  • Замінено текстові кнопки у заголовку на піктограми для меню, скасування, повтору та запуску дій.
  • Покращено розташування панелей перегляду та консолі з узгодженими розмірами на комп'ютері та мобільному пристрої.
v0.2.1
Патч
13 лютого 2026 р.
  • Додано режим теми «Авто», який автоматично слідує системним налаштуванням світлої/темної теми.
  • Покращено стабільність перегляду Tkinter та обробку середовища виконання на мобільних пристроях.
  • Додано сповіщення про нові версії всередині застосунку з автоматичним оновленням фонового обробника.
  • Розширено підтримку роботи без підключення до інтернету через кешування файлів маніфесту та піктограм.
v0.2.0
Мінорний
13 лютого 2026 р.
  • Додано підтримку прогресивного вебзастосунку з маніфестом та фоновим обробником для можливості встановлення.
  • Додано можливості поширення коду та елементи керування скасуванням і повтором у редакторі.
  • Покращено стабільність розташування на iOS і мобільних пристроях, оновлено відображення піктограм.
v0.1.1
Патч
13 лютого 2026 р.
  • Додано налаштування застосунку з вибором мови (англійська/українська) та базовим налаштуванням інтерфейсу.
  • Додано можливість імпорту та експорту файлів коду Python (.py).
  • Додано клікабельні посилання на помилки у виведенні консолі та покращено скрипти збірки.
v0.1.0
Мажорний
12 лютого 2026 р.
  • Початковий випуск: браузерне середовище Python із редактором коду Monaco та середовищем виконання Pyodide.
  • Додано рівень підтримки Tkinter для створення графічних інтерфейсів безпосередньо в браузері.
  • Створено основну архітектуру: редактор коду, введення та виведення консолі, панель візуального перегляду.