Skip to content

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Каталог проектов Hxape

Репозиторий Лицензия MPL 2.0

Открыть сайт

Open in GitHub Codespaces

Сайт помогает найти проект Hxape, прочитать его опубликованные документы и посмотреть структуру кода Haxe. Проекты сгруппированы в дерево; выбранная строка ведёт к соответствующей странице на GitHub. Каталог работает как статический сайт на GitHub Pages.

Возможности

  • Дерево показывает разделы организации, репозитории и, где это разрешено, каталоги, файлы .hx, объявления и HXDoc.
  • Для проектов Hxape доступны опубликованные README, CONTRIBUTING, AGENTS и LICENSE. Набор документов и глубина дерева задаются отдельно для каждого проекта.
  • Раздел .haxelib показывает структуру самой новой числовой установки либо .dev, если числовой установки нет. Для heaps, hashlink, hlsdl и hlopenal обязателен .dev общей среды. Подписи версий начинаются в общей колонке после имён, без слова installed; перед номером стоит знак Haxelib для версии из Haxelib либо один знак ветки для версии из ветки или тега GitHub. Тип Git-ссылки и её имя остаются в доступной подписи установленной версии. Опубликованную версию проверяют по источнику установки; акцент получает только строго более новая сопоставимая версия. Публичные документы загружаются с GitHub при открытии просмотра.
  • Панель позволяет читать документы как оформленную страницу или исходный текст. На уровне 4 файл, тип и метод или поле открываются с переключателем DOCUMENTATION | SOURCE CODE. При незакреплённом виде (pin.slash) выбранная вкладка сохраняется для следующих файлов на любой ширине и после перезагрузки. Без сохранённого выбора первой показывается документация. D или стрелка вправо на методе и поле сразу открывают исходник у строки объявления и не меняют сохранённый выбор. Обычное открытие файла в SOURCE CODE показывает его с начала без подсветки первой строки. Полный .hx запрашивается с GitHub при переходе к исходнику. Нижняя ссылка открывает выбранный проект, файл или документ на GitHub.
  • Деревом можно пользоваться мышью, касанием и клавиатурой. Сайт поддерживает узкий экран, выбор темы, размера текста, акцента и цвета выделений mark. При поддержке браузером Document Picture-in-Picture каталог или панель можно вынести в отдельное окно.
  • Кнопка с ключом открывает управление GitHub-токенами. С токеном, имеющим право чтения репозитория, каталог показывает его закрытое дерево и HXDoc, если в репозитории подготовлен .private/site.json.

Как пользоваться

Короткое нажатие на строку раскрывает или сворачивает ветвь. Удержание строки либо Enter открывает её документы или HXDoc; время удержания выбирается ползунком от 250 до 500 мс и сохраняется. Стрелки или W, A, S, D перемещают выбор и управляют ветвями; на методе или поле уровня 4 стрелка вправо или D сразу открывает исходник. В дереве E открывает информацию; внутри открытого просмотра файла D выбирает документацию, короткое E — исходник, а удержание E переносит панель в Picture-in-Picture. Q или Escape закрывает панель. Нижний адрес обозначает выбранный материал; способ открытия ссылок выбирается общим режимом.

Панель чтения находится справа от дерева на широком экране и открывается поверх него на узком. Длинные строки дерева остаются на одной строке: каталог можно прокручивать вправо и влево. На телефоне направление прокрутки выбирается первым движением пальца и не меняется, пока прокрутка не закончится; обычный жест масштабирования страницы блокируется. Преференсы открываются одним всплывающим экраном из верхней панели; на узком экране та же кнопка находится в раскрываемом нижнем блоке. Размер шрифта и акцент выбираются внутри преференсов. Тема доступна там же и отдельной кнопкой панели. Выбор четырёх групп значков, темы, цветов, размера текста и времени удержания сохраняется в браузере. Файлы и объявления используют векторные Codicons, а кнопки — доступные SF-глифы либо встроенные SVG. Репозитории отмечены знаком Git из Bootstrap Icons. При запуске сайт проверяет SHA ветки main и показывает доступное обновление; загрузка начинается только по нажатию. На широком экране кнопка обновления стоит между преференсами и ключом: при доступной новой версии она приглушена, иначе появляется при наведении или фокусе верхней панели. На узком экране и в Picture-in-Picture та же кнопка остаётся между преференсами и ключом внутри раскрываемых нижних настроек. В раскрытых нижних настройках показаны SHA последней успешной установки и © 2026 Yerumaku; на компьютере они видны в подсказке верхней кнопки при наведении или фокусе. При загрузке появляется плашка с ходом работы и повтором при ошибке. Нижние настройки и подсказки клавиатуры по умолчанию раскрыты; явный выбор открытости сохраняется отдельно для каждого блока.

Для закрытых данных откройте кнопку с ключом и вставьте личный токен GitHub с правом Contents: Read-only на нужные репозитории. Для шифрования по умолчанию предлагается ключ доступа; можно выбрать пароль. Список токенов показывает дату добавления и активный токен. Нажатие на его открытый замок снова блокирует токен, сохраняя зашифрованную запись. Одна галочка, включённая по умолчанию и сохранённая в localStorage, управляет запуском Octocat и запросом ключа доступа при открытии сайта и после потери воркера. Запрос появляется только для сохранённого токена с ключом доступа, если открытого сеанса уже нет; вручную заблокированный токен немедленно не открывается. Клик по затемнению закрывает окно токенов. Строка в окне отдельно показывает запуск, подключение SharedWorker или DedicatedWorker и недоступность воркера. Подключение воркера само по себе не означает, что PAT открыт, и не гарантирует, что браузер оставит воркер работающим. Закрытый просмотр позволяет открыть управление токенами; с активным токеном можно повторить загрузку репозитория.

На смартфоне сайт можно добавить на главный экран через меню браузера. Значок с $hx и @pe открывает каталог в отдельном окне; для загрузки данных по-прежнему требуется соединение с сетью.

Переходы, история и закладки

Этот раздел определяет договор новых возможностей; состояние исполнения и проверки указано в CONTRIBUTING.

Ссылки на GitHub разбираются по назначению: репозиторий, каталог, документ, исходник и строка. Во внутреннем режиме ссылка сразу выбирает репозиторий и раскрывает путь до него; при необходимости в строке видна загрузка. Глубокая цель открывается после загрузки, если фокус не уходил с репозитория. Уже раскрытые ветви остаются раскрытыми. Удержание ссылки открывает информацию о её цели и подавляет последующий короткий клик. Подчёркивание без наведения едва заметно; при наведении значок слева с тенью показывает вид цели. Ссылки на другие сайты, включая страницы Haxelib, сохраняют внешнее назначение. Имена игр и редакторов в каталоге скрыты умышленно.

В DOCUMENTATION имена объявлений файла ведут к их строкам: внутренний переход выбирает SOURCE CODE, прокручивает исходник и выделяет строку. Ссылка Markdown открывает соответствующий доступный документ или файл в той же панели, в том числе из другого репозитория. Загруженный Markdown временно кэшируется; явное обновление перечитывает его с GitHub. Доступ к закрытому материалу проверяется при каждом повторном открытии сохранённого адреса.

Если подготовить материал не удалось, R или действие повтора заново открывает тот же адрес с проверкой доступа. Неуспех не создаёт просмотр в истории. Прежний открытый материал сохраняется; при отсутствии прежнего просмотра панель показывает повтор. Сообщение ошибки исчезает через 3 секунды.

Кнопка режима ссылок и B циклически выбирают переход внутри сайта, установленный VS Code или GitHub. Удержание кнопки открывает ввод местного пути к каталогу организации с сохранением и сбросом; тот же путь доступен в настройках. Все репозитории и .haxelib считаются его содержимым. Начальный путь пуст; пока он не заполнен, режим VS Code не включается. Путь хранится только в этом браузере. Для библиотек местное расположение выбранной установки приходит из экспорта как относительный путь. Нижняя ссылка в режиме VS Code остаётся адресом vscode://… и на мобильном устройстве, чтобы её можно было передать через буфер.

Просмотры записываются в отдельную историю сайта. Z и X либо стрелки открывают предыдущую и следующую записи; удержание стрелки или H показывает историю, сгруппированную по файлам. Выбор только переводит курсор на запись. Репозиторий и вид материала обозначены значками у имени и относительного пути. Корзина справа удаляет запись без подтверждения; отмена доступна 4 секунды, пока она остаётся видимой. Успешное открытие удаляемой записи переносит её в конец и переводит туда курсор. Записи можно также переставлять и добавлять в закладки. История сайта не изменяет историю браузера.

В шапке истории выберите способ сбора: все переходы внутри файлов, объединение последовательных переходов одного файла либо только уникальные файлы. По умолчанию переходы одного файла объединяются, а новый вход после другого материала получает своё последнее положение чтения. В уникальном режиме оно хранится у единственной записи файла. Смена SOURCE/HTML или DOCUMENTATION/SOURCE CODE по умолчанию не считается переходом; включённый учёт подчиняется выбранному объединению. Предел — 50 элементов по умолчанию, до 500. Настройка «Автоматически собирать историю» сохраняет накопленные записи при выключении и останавливает новые; остальные настройки скрываются. Корзина полной очистки остаётся видимой и неактивна только при пустой истории.

При первом открытии истории настройки свёрнуты. Кнопка в шапке показывает и скрывает весь блок вместе со списком исключённых репозиториев; панель помнит открытость до перезагрузки страницы. Кнопка полной очистки находится в шапке и видна также при скрытых настройках.

Стрелки истории в виджете информации остаются и при выключенном автоматическом сборе. В ручном режиме после стрелок и перед обновлением стоит отдельная + / −: она добавляет текущий файл либо удаляет его из истории, в том числе после возврата назад. Удаление можно отменить за 4 секунды. В автоматическом режиме то же место занимает plus.diamond / minus.diamond: разрешить или запретить последующий сбор текущего репозитория. Прежние записи сохраняются. В истории можно открыть список запрещённых репозиториев и снять запрет. Эти действия не закрывают материал и не меняют закладки или GitHub-доступ. Удержание стрелки открывает историю с настройками и при пустом списке.

В настройках выберите, как история действует на дерево: оставляет ветви свёрнутыми, раскрывает временно либо сохраняет раскрытие. По умолчанию текущее место показывается временно; при следующем переходе ветви, открытые историей, сворачиваются. Ранее открытые пользователем ветви сохраняются. Выбор режима хранится в этом браузере.

C обновляет текущий файл или документ, V переключает DOCUMENTATION/SOURCE CODE либо TEXT/HTML. Обновление не добавляет переход; смену вида учитывает настройка истории. Панель появляется справа и закрывается чевроном слева с короткой анимацией ухода вправо. Справа от закрытия имя и значок находятся в верхней области; имя может занимать две строки, подпись установленной версии здесь не показывается. Сразу под именем — назад, вперёд, обновление и вид. У правого края расположены поиск, закладки и режим ссылок, перечисленные справа налево и по высоте центрированные как левый чеврон. Сворачивание действий из панели убрано. Кнопки имеют подсказки; ошибка перехода исчезает через 3 секунды. Элемент с удержанием подсвечивается при достижении порога и выполняет действие после отпускания.

У Haxe-файла кнопка вида закрепляет способ следующих обычных открытий: всегда документация, всегда исходник либо последний выбранный вид (pin.slash). Начальная незакреплённая политика использует прежний выбор, а без него — документацию. Кнопка меняет настройку, текущую вкладку выбирают вкладками или V. Удержание и Enter учитывают закрепление; явная строка, стрелка вправо и E сохраняют прежние команды. История восстанавливает записанный вид. У Markdown кнопка продолжает переключать HTML и исходный текст.

Нажатие на номер строки исходника добавляет закладку на эту строку; повторное нажатие её сохраняет. Метку можно захватить с запасом над строкой и под ней, перемещать вдоль номеров, пропуская занятые строки, либо удалить уводом влево/вправо за столбец. Подсвечивается только строка текущего жеста. N открывает закладки; панель показывает имя сущности, репозиторий со значком и относительный путь со значком вида материала, а также одну кнопку удаления на запись. Для подтверждённого источника ветки используется значок ветки. В ней V переключает список и дерево. < и > переходят к предыдущей и следующей закладкам, / открывает последнюю открытую или созданную, Shift+/ удаляет закладку, совпадающую с текущим адресом нижней панели. В истории кнопка закладки добавляет её и удаляет повторным нажатием: контур означает отсутствие, заливка — наличие; при наведении цвет становится акцентным, а имеющаяся закладка зачёркивается. Переходы между строками одного готового файла сохраняют текст и оболочку без мигания. Для незагруженного материала переход сначала выполняет необходимую загрузку.

История и закладки сохраняются после перезагрузки в этом браузере, включая имена, пути и строки закрытых материалов. Записи не содержат текстов файлов, PAT или подтверждения доступа. Смена токена очищает закрытый текст; сохранённый адрес остаётся и при следующем открытии требует действующего доступа.

Панель закладок поддерживает именованные группы. Новые закладки добавляются в выбранную группу; прежние записи сохраняются в начальной. Перестановка мышью, пальцем или клавиатурой ограничена текущей группой. Имена групп и выбранная группа сохраняются в браузере.

Кнопки в шапке выбирают добавление или переименование группы; поле имени заменяет строку выбора группы только после выбора режима. Значок рядом с полем и Enter применяют выбранную операцию, отмена возвращает выбор группы. При ошибке имя остаётся для исправления. Удаление группы с её закладками требует подтверждения; единственную группу удалить нельзя. Справа у закладки показано одно действие: удаление либо перенос в другую группу. Переключатель появляется при нескольких группах; начальный режим — удаление. Нажатие на корзину запускает отсчёт 3 секунды, повторное нажатие отменяет удаление. Закрытие области отменяет незавершённый отсчёт.

Стрелки рядом с выбранной группой выгружают или загружают её JSON; двойной квадрат в шапке обозначает все группы. Выгрузка открывается с отступами и переносами строк в поле для копирования. Загрузка предлагает объединение либо замену и проверяет весь JSON до изменения данных. Одна группа определяется именем из JSON: существующая принимает закладки, отсутствующая создаётся. Замена затрагивает только её; замена всех групп требует отдельного подтверждения. При объединении для уже сохранённого адреса остаётся прежняя закладка и её группа.

Кнопки со значком лотка в истории выгружают адресные записи вместе с завершёнными поисковыми запросами. Загрузка заменяет адресную историю после подтверждения и объединяет запросы без повторов, сохраняя действующий предел 50 запросов. Текущий ввод поиска и настройки сбора остаются прежними.

На мобильном экране режим ссылок доступен в раскрываемых нижних настройках, без повторной кнопки в шапке информации. Поиск и закладки открываются из шапки информации либо клавишами M и N. Пока верхние кнопки доступны, их нижние копии скрыты; в режиме дерева без открытого документа нижние кнопки снова показаны.

История, закладки, поиск и ввод местного пути остаются поверх документа при смене ширины окна; их данные и фокус сохраняются.

F или M открывает поиск в сфокусированной области и передаёт фокус полю. Поиск каталога проходит по загруженным узлам, включая свёрнутые ветви; поиск файла — по показанному материалу. Оба поиска могут быть открыты одновременно и хранят отдельные запросы и истории. В преференсах отдельно выбирается раскрытие дерева при переходе к совпадению: не раскрывать, раскрывать временно или сохранять раскрытым. Временные ветви сворачиваются при уходе от совпадения и закрытии поиска, ручные раскрытия сохраняются. История каждого поиска поддерживает выгрузку и загрузку JSON; загрузка объединяет запросы без повторов, сохраняя предел 50 и текущий ввод. В открытом файле компактная полоса расположена между панелью вкладок и содержимым, счётчик совпадений — справа от поля, закрытие — у правого края. Буквальный запрос без учёта регистра ищется только в показанном материале; отдельная кнопка ограничивает его выделением файла. В поле вверх/вниз выбирают прежние запросы, при фокусе на кнопках — совпадения. Переходы по совпадениям круговые. Поиск ничего не загружает ради запроса.

Введённая строка сохраняется в браузере и переносится между файлами. История поисков собирается по умолчанию: circle.badge.plus включает сбор, circle.badge.minus выключает. Ввод обновляет результаты сразу; завершённый запрос записывается при Enter, переходе к совпадению или закрытии, поэтому обрывки медленного ввода не становятся отдельными записями. delete.left очищает поле и удаляет этот запрос из истории. Удержание кнопки поиска открывает отдельный список запросов с удалением. Нативное выделение и область поиска в нём на другой файл не переносятся. Горячие клавиши сохраняют ввод в полях и действуют также в PiP.

В преференсах выберите, через сколько начинать затухание подсветки строки кода: от 0 до 3 секунд с шагом 0.5 секунды либо ∞. Начальный срок — 3 секунды, выбор сохраняется в браузере. Полоса затухает за 360 мс. Срок меняет только выделение; ссылка, закладка и место чтения сохраняются. Под текстом и номерами оставлен отступ, чтобы полоса прокрутки не закрывала последнюю строку.

Текст можно выделять и копировать в содержимом документов, исходников и других областей чтения. Служебные подписи, вкладки, кнопки и значки не выделяются. Поля ввода сохраняют обычное редактирование.

Данные и применимость

Деревья Hxape и установленных библиотек заранее подготовлены из локальных файлов и публикуются вместе с сайтом. Поэтому они отражают состояние последнего экспорта. Документы и исходники публичных библиотек читаются из ветки по умолчанию их репозитория на GitHub и могут отличаться от показанной установленной версии; показанный номер опубликованной версии не обозначает ревизию локального дерева. Полные тексты .hx сайт не публикует в JSON. На уровне 4 исходник открывается через SOURCE CODE либо сразу у строки метода или поля по D или стрелке вправо. Режим проверен интеграционными сценариями; настоящий браузер подтвердил публичный исходник библиотеки, переход к строке, закрепление вида и E.

Для установки из Haxelib кандидат новой версии ищут среди версий GitHub и подтверждают точной страницей на lib.haxe.org; неподтверждённый там кандидат может быть обозначен только как GitHub. Сведения с датой проверки обновляет отдельная команда ruby cli/refresh-haxelib-publications.rb. Сейчас public/json/haxelib/publications.json пуст: до успешного сетевого обновления он не подтверждает ни одной публикации, а отказ сети не означает, что публикации нет.

Состав опубликованных данных зависит от public/json/site.json и последнего экспорта. Сначала показывается опубликованная часть дерева, затем доступный с токеном полный снимок. Сохранённый закрытый снимок помечается до проверки обновления по GitHub; без связи он может устареть. Закрытые README и CONTRIBUTING читаются из ветки main, если для репозитория не задана другая ветка. Закрытое дерево не мешает читать опубликованный документ, если его разрешение включено. Справа от нижней ссылки замок скрыт для .haxelib и подтверждённо публичного репозитория. Для репозитория, который сайт считает закрытым, он открывается после подтверждения доступа, показа закрытого дерева из GitHub или сохранённой копии при активном PAT либо успешного чтения текущего документа или исходника; при выборе другого адреса сбрасывается только результат чтения файла. Если публичность не удалось проверить, действует настройка private сайта. Доступ определяет GitHub.

При разблокировке сохранённого токена ключом доступа окно вызывает navigator.credentials.get, чтобы показать системное подтверждение. Полученный результат PRF переносится в авторизационный воркер Octocat; исходный буфер в странице после передачи отсоединён. Воркер расшифровывает запись, держит PAT и ключ шифрования в своей памяти и сам выполняет разрешённые запросы с PAT к GitHub API. Страница получает только состояние сеанса, метаданные токена и данные разрешённых ответов: PAT, ключ и заголовок Authorization воркер ей не возвращает. При добавлении нового токена введённый PAT, а при выборе пароля — и пароль, кратко находятся в форме страницы до передачи воркеру.

На устройстве PAT хранится в зашифрованной записи; рядом лежат метаданные для списка токенов. Обычно используется IndexedDB, а при отсутствии API — localStorage. Пока SharedWorker жив, короткая перезагрузка вкладки может восстановить её сеанс без повторного подтверждения. Браузер может завершить воркер в любой момент; тогда включённая галочка предлагает ключ доступа для сохранённого токена, а пароль вводится вручную. Если SharedWorker недоступен, используется DedicatedWorker, чей сеанс не переживает перезагрузку. Вкладка помнит только факт ранее активного сеанса DedicatedWorker без PAT и ключа: после перезагрузки это позволяет предложить восстановление по той же галочке; ручная блокировка сбрасывает этот признак. Код воркера открыт для чтения, а внедрённый скрипт того же сайта может вызвать разрешённое чтение и увидеть ответ; замыкание воркера не даёт полной защиты от XSS. Service Worker сайт не регистрирует. Публичные файлы каталога, стили и проверка выпуска по SHA загружаются страницей напрямую. Ключ доступа может подтвердиться Face ID, отпечатком или кодом устройства. Токены на hxape.github.io и localhost хранятся отдельно; установленное приложение на iPhone также может иметь отдельное хранилище от Safari. Сайт остаётся статическим на GitHub Pages; для него нужны HTTP, JavaScript и сеть. Picture-in-Picture доступен только в браузерах с соответствующим API.

Разметка закладок, истории и преференсов редактируется в bookmarks.html, history.html и preferences.html. Общий компонент поиска редактируется в search.html. Каждый HTML читается при первом открытии соответствующего экрана или поиска. Данные и правила работают независимо от разметки; ошибка её загрузки показывает отдельный повтор.

index.html загружает исходные фрагменты из public/html/ и собранный Bun код из public/js/. Код запуска находится в src/app/. Молекулы и организмы общего назначения лежат в src/component/: они получают готовые данные и обработчики действий. Блоки в src/bloc/ обогащают компоненты данными и бизнес-логикой каталога, просмотра, настроек, токенов, обновления и страницы. У каждого компонента и блока своя папка с index.mjs и README, описывающим его название и функционал.

Постоянный принцип интерфейса — композиция атомов, молекул и организмов. Атом задаёт одну обязанность оформления CSS-классом; молекула реализует одну самостоятельную функцию интерфейса; организм объединяет компоненты в завершённую область. Общие роли дизайн-системы описаны в public/css/README.md, границы компонентов и блоков — в архитектуре.

Общие механизмы лежат в src/common/, доступ к GitHub — в src/auth/github/, опубликованные данные — в public/json/, значки установленного приложения — в public/icons/. Устройство сайта, подготовка данных и порядок изменения описаны в CONTRIBUTING.md.

Сборка через Bun

Требуется Bun версии 1.4.2 или новее. Из каталога hxape.github.io/ выполните:

bun cli/build.mjs

Сборка записывает браузерные модули в public/js/ и манифест сборки в public/json/build.json. Для ручного выпуска затем выполните ruby cli/export-resources.rb, чтобы обновить public/json/resources.json; подробности — в CONTRIBUTING.md.

Для автоматической сборки при сохранении исходных .mjs и HTML запустите из того же каталога:

ruby cli/watch-build.rb

Команда сначала собирает сайт, затем отслеживает изменения, добавление и удаление файлов src/**/*.mjs, cli/build.mjs и public/html/**/*.html. После успешной сборки обновляется список ресурсов. Несколько быстрых сохранений объединяются; при ошибке команда ждёт следующей правки. Оставьте её работающей в терминале; остановка — Ctrl+C. Чтобы увидеть изменения на сайте, обновите страницу браузера.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages