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

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

v3.0.0
Мажорний
14 травня 2026 р.
  • Додано AI Assistant як експериментальну функцію для пояснення коду та підтримки перекладу, з покращеними fallback-сценаріями завантаження моделей і зрозумілішими підказками щодо runtime-помилок.
  • Додано аналітику з пріоритетом приватності та явною згодою користувача: діалог згоди та окрему панель Налаштування -> Аналітика, включно з ручною синхронізацією та мобільним режимом «лише Wi-Fi».
  • Реалізовано повний аналітичний конвеєр (черга подій на клієнті, фонову синхронізацію через service worker, API прийому, схему бази даних і CLI-звіти) для аналітики якості продукту.
  • Розширено покриття аналітики для навчальних сценаріїв і стабільності: старти сесій, результати та тривалість запусків коду, імпортовані пакети, класи Python-помилок, завантаження прикладів, використання функцій і зміни налаштувань.
  • Покращено спостережуваність runtime: структуровані класи Python-помилок тепер надсилаються і з main-thread, і з worker-сценаріїв виконання, що дає безпечніший моніторинг без збору коду користувача.
v2.11.0
Мінорний
4 травня 2026 р.
  • Додано Reading Comfort Setup як повноцінний покроковий майстер і інтегровано швидкі точки входу прямо в Onboarding та Release Notes, з автоматичним поверненням у попередній сценарій після закриття.
  • Впроваджено поведінку кастомної теми читання в Preferences: верхній перемикач теми тепер керується налаштуваннями Reading Comfort, має окрему кнопку Custom і повертає режим Auto після відновлення стандартних параметрів.
  • Розширено типографіку Reading Comfort на елементи інтерфейсу: пункти меню, діалоги меню, заголовки панелей, плейсхолдери введення в консолі та кнопки Send/toolbar тепер наслідують шрифт і міжрядкові параметри профілю.
  • Покращено візуальну узгодженість і доступність оверлеїв та елементів керування: картки release/onboarding тепер поважають кастомні light/warm/high-contrast теми, меню підтримує прокрутку для довгого контенту, а кнопки дій preview мають узгоджені заокруглення.
  • Додано інтеграцію fallback-шрифтів для pygame canvas у профілях Reading Comfort: у рантайм додано шрифтові assets (TTF/OTF) з автоматичним застосуванням, коли приклади використовують стандартні pygame-шрифти.
  • Поліпшено мобільний досвід Reading Comfort завдяки налаштуванню компактного layout майстра: покращено відступи, адаптивну сітку карток, нижні елементи керування та зменшено накладання/обрізання на малих екранах.
v2.10.2
Патч
1 травня 2026 р.
  • Виправлено завантаження прикладу Mini Tetris: тепер при виборі прикладу вміст редактора Monaco надійно оновлюється перед запуском.
  • Покращено керування Mini Tetris у різних браузерах завдяки точнішій обробці клавіш (включно з Linux/Firefox), щоб поворот і рух працювали стабільно.
  • Покращено фокус SDL-canvas і очищення обробників клавіатури після виходу з гри, що зменшує залипання клавіш і небажаний скрол сторінки після закриття прикладів.
  • Додано повільнішу стандартну швидкість анімації turtle та плавніший видимий рух у прев’ю, щоб кроки малювання було легше відстежувати в реальному часі.
v2.10.1
Патч
27 квітня 2026 р.
  • Виправлено проблеми виконання Python runtime у Firefox і Safari для асинхронних скриптів ігрового типу (включно з прикладами pygame).
  • Покращено повідомлення про runtime-помилки з чіткою підказкою, коли Safari має обмеження WebAssembly stack-switching (використовуйте top-level await замість asyncio.run(...)).
v2.10.0
Мінорний
27 квітня 2026 р.
  • Оновлено інтерфейс Playground: додано окремі стилі сторінки, покращено адаптивні макети для десктопу та мобайлу, а також відшліфовано керування консоллю, прев’ю та панеллю дій.
  • Перероблено структуру меню з чіткими секціями (Дії, Додатково, Параметри), підменю для Поширення/Ресурсів/Налаштувань і покращеною поведінкою мобільного debug-меню.
  • Розширено мовну підтримку інтерфейсу: додано й уточнено локалізовані підписи в меню, поширенні та сценаріях роботи із завданнями для англійської, української, іспанської, німецької та французької мов.
  • Покращено UX поширення: додано зрозумілі підказки для офлайн/онлайн режимів, оновлено підписи копіювання повних посилань і додано генерацію QR для коротких онлайн-посилань.
  • Покращено модель захисту завдань: додано явні стани блокування (Редагується/Заблоковано/PIN-захист), швидші дії блокування/розблокування та зрозуміліші перемикачі режимів teacher/student.
  • Додано перемикач синхронізації назви завдання у модальному вікні поширення: можна тримати назву синхронізованою з панеллю завдань або задати разову назву лише для поточного поширення, із підказкою щодо PIN між пристроями.
  • Розширено метадані історії та узгодженість відновлення: тепер в історії та метаданих payload поширення зберігаються стан блокування/захисту завдання та інформація про автора.
  • Розширено сумісність Turtle API для інтерактивних занять: додано Screen().textinput(), Screen().numinput(), обробники кліків (onscreenclick/onclick), таймерні колбеки через ontimer() та клавіатурні псевдоніми onkeypress()/onkeyrelease() з підтримкою у worker і main-thread runtime.
v2.9.0
Мінорний
20 квітня 2026 р.
  • Додано інтерактивний режим налагодження для запусків Python: увімкніть дебаг, ставте брейкпоінти прямо в полі Monaco та зупиняйте виконання на вибраних рядках.
  • Додано елементи керування налагодженням Continue і Step Over для десктопу та мобільного інтерфейсу, включно з окремими діями в тулбарі/меню та швидкими мобільними кнопками.
  • Додано панель змінних під час паузи: переглядайте поточні локальні змінні, фільтруйте «усі» або лише змінні з вашого коду та розгортайте вкладені значення для зручнішого аналізу.
  • Покращено точність крокування в дебагері: додано відстеження на рівні opcode, облік глибини викликів для коректного step-over та стабільну синхронізацію поточного рядка в редакторі.
  • Локалізовано підписи й дії дебагера для багатомовного сценарію роботи, а також очищено знімки змінних — службові константи фреймворку приховано з перегляду локальних.
  • Розширено сумісність Turtle runtime для інтерактивних програм: реалізовано Screen().tracer(), Screen().update(), Screen().listen() і Screen().onkey(), додано опитування подій клавіатури та покращено проксування методів у worker plugin-shim для повного набору Turtle.
  • Додано живий рендер Turtle-спрайтів у Preview: об'єкти turtle тепер відображаються як видимі фігури (включно з shape/color/shapesize, напрямком, видимістю та рухом), тож ігрові цикли з ручним оновленням кадру відображаються коректно.
v2.8.0
Мінорний
3 квітня 2026 р.
  • Додано функцію Завдань: створюйте навчальні завдання з назвою, описом та стартовим кодом. Опис підтримує редагування у режимах WYSIWYG, Markdown і Перегляд.
  • Завдання можна захистити PIN-кодом: PIN блокує назву та опис завдання, але залишає редактор коду доступним — учні можуть виконувати завдання, не змінюючи його умов.
  • Завдання повністю інтегровані з поширенням: метадані завдання та стан захисту зберігаються при поширенні через посилання або QR-код — отримувач одразу бачить готове завдання.
  • Оновлено панель Історії: записи тепер показують більші прев'ю коду та чіткіші дії Відновити / Видалити. Завдання та їх стан захисту зберігаються в історії разом із кодом і коректно відновлюються.
  • Історія тепер автоматично зберігає знімок щоразу, коли ви запускаєте код, — можна повернутися до будь-якої попередньої версії без ручного збереження.
  • Функція input() тепер працює в консолі: коли програма викликає input(), рядок введення підсвічується жовтим і чекає на відповідь — без спливаючих діалогових вікон браузера.
  • Введені дані в консолі тепер правильно передаються програмі, що очікує на введення, замість виконання як нового виразу Python.
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 для створення графічних інтерфейсів безпосередньо в браузері.
  • Створено основну архітектуру: редактор коду, введення та виведення консолі, панель візуального перегляду.