AIMACRO — список, AIMACRO имя — запустить. Имя — одно слово (англ./цифры).DOSBox (DOS) прямо в браузере, где диск хранится в репозитории GitHub. Движок — js-dos v8, лежит локально в проекте (vendor/js-dos/). Сетевые обращения: api.github.com (сам сервис, не сторонний CDN) и аналитика — Яндекс.Метрика (mc.yandex.ru, 110203712, Вебвизор) и Google Analytics (G-QSFQDH69QV).
repo (окно «⚙️ Общие настройки» → диск C: → «Токен»). Без токена диск только читается.raw и лимит не тратит; жгут листинги (каждый «Пуск») и запись. Подожди сброса (время — в подсказке индикатора API в шапке) или работай реже. См. «Лимит GitHub API и чтение через raw».repo). Чтение приватных файлов идёт через API (тратит лимит — raw для приватных недоступен). Ссылкой «Поделиться» приватный не открыть — токен в ссылку не кладётся.?repo=owner/name + QR. Токен в ссылку не попадает.GITDOS HELP — статус, сохранение, журнал, профили, смена репозитория. См. «DOS-утилита GITDOS».Вверху окна «⚙️ Общие настройки» — профиль подключения: это сохранённый набор «главный репозиторий C: + его дополнительные диски». Можно завести несколько профилей (➕ Новый), переименовать, дублировать и удалять, а в выпадающем списке мгновенно переключаться между наборами. Активный профиль показан в шапке диска ([Имя] C: …). Переключение/удаление профиля доступно только при остановленном диске. Удаление профиля стирает только локальную запись — репозитории на GitHub не трогаются.
C:\DISKS\ (например C:\DISKS\D). js-dos монтирует только один диск, поэтому доп. диски — это папки на C:, каждая со своей синхронизацией.Для приватных репозиториев и записи нужен токен GitHub с правом repo. Токен уходит только на api.github.com, в код/репозиторий не попадает. По кнопке «Подключить и сохранить» браузер предлагает сохранить данные в менеджер паролей и подставляет их при следующем заходе.
AUTOEXEC.BAT и CONFIG.SYS — если их нет, создаются по шаблону; существующий AUTOEXEC.BAT выполняется.Окно «📤 Загрузка файлов» (или перетаскивание): файл попадает в запущенный эмулятор (диск C:) и в его репозиторий. В мини-менеджере можно выбрать/создать папку — файлы лягут туда.
Архивы (.zip) распаковываются прямо в выбранную папку с сохранением вложенных папок архива (определяется по расширению и сигнатуре PK\x03\x04; служебные __MACOSX/ и .DS_Store пропускаются). Распаковка — встроенным ZIP-ридером через DecompressionStream('deflate-raw'), без сторонних библиотек. Удобно заливать игру одним файлом вместо десятков.
В шапке справа — индикатор «API N/лимит»: сколько запросов GitHub осталось (наведи — увидишь время сброса; клик — обновить через /rate_limit, этот вызов лимит не тратит). Значение обновляется автоматически из заголовков ответов API; при остатке ≤50 индикатор краснеет.
У GitHub API лимит ~5000 запросов/час (с токеном). Чтобы его не тратить, содержимое файлов читается через raw.githubusercontent.com (CDN) — для публичных репозиториев это не считается в лимит. Только листинг дерева, коммиты и запись идут через API. Приватные файлы (raw недоступен без авторизации) читаются через API по sha — приватность определяется по первому чтению и кэшируется, чтобы не делать холостых raw-запросов. Листинг дерева (git/trees) кэшируется на ~20 c, поэтому «Пуск» + лаунчер + «что монтировать» подряд тратят 1 запрос вместо трёх; кэш сбрасывается при записи/удалении и смене репозитория. При исчерпании лимита автосохранение встаёт на паузу (не спамит), а в ошибке показывается время сброса лимита. Совет: не держи в одном репозитории сотни мелких файлов — листинг и запись тратят запросы.
В окне «⚙️ Общие настройки» → блок «🗂 Что монтировать»: кнопка «Показать содержимое диска C:» читает дерево репозитория (treeInfo) и выводит папки/файлы верхнего уровня с размерами и галочками. Снятая галочка добавляет имя в github.exclude (хранится в профиле). При «Пуск» файлы с таким верхним сегментом пути не читаются и не кладутся на диск — большой диск стартует быстрее. Важно: исключённые файлы не удаляются из репозитория автосохранением (специальная защита: их нет на диске, но трогать их нельзя). Полезно, когда в репо лежит несколько игр, а запустить нужна одна.
В DOS: AI <вопрос> — спросить ассистента (модель Claude). Хост отправляет запрос напрямую в Anthropic API (api.anthropic.com/v1/messages с заголовком anthropic-dangerous-direct-browser-access), ответ печатается прямо в DOS-терминал построчно через ECHO (без перемонтирования/ребута) и дублируется в консоль (зелёный лог, 🤖 …); там же видны ошибки API — ❌ Anthropic API: … и ❌ GitHub: …. Поскольку ответ набирается в терминал клавишами, ассистент отвечает очень кратко (≤6 строк); директивы (RUN/INSTALL/ASK) в терминал не печатаются. Ключ и модель задаются в «⚙️ Общие настройки» → «🤖 Ассистент». При включённом авто-выполнении работает агент-цикл с обратной связью: ассистент выполняет команду, хост перехватывает её вывод (редирект команда > C:\AIOUT.TXT + маркер завершения AIDONE) и возвращает ассистенту следующим сообщением — тот видит результат и решает следующий шаг. Лимит шагов настраивается в «🤖 Ассистент» (по умолчанию 5; 0 = без лимита — тогда цикл идёт, пока ассистент сам не остановится, с резервным потолком 99 от зацикливания). Без авто-выполнения — один ответ-совет (без выполнения). Режим вопросов (настройка «задаёт уточняющие вопросы»): включён — ассистент может задать уточняющий вопрос (директива ASK:, всплывает диалогом, твой ответ возвращается ему и он продолжает); выключен — решает сам и делает разумные допущения, не спрашивая. Ассистент может управлять программами: в запрос подмешивается список из каталога INSTALL (что доступно и что уже установлено), а ассистент действует директивами INSTALL: <id> / UNINSTALL: <id> (хост ставит/удаляет напрямую) и RUN: <команда>. Если ассистент предлагает команды: по умолчанию первая кладётся в поле ввода под экраном — ты сам решаешь, запускать (Enter). В настройках есть тумблер «Авто-выполнение» — тогда ассистент сам запускает все предложенные команды (для автоматизации): после показа ответа диск перемонтируется, и команды выполняются по готовности DOS (очередь pendingCmds на ci-ready). ⚠️ Авто-выполнение AI-команд рискованно (ассистент может выполнить нежелательную команду) — по умолчанию выключено. Безопасность: API-ключ — секрет, хранится только в браузере (localStorage), в код/коммиты не попадает; запросы идут из браузера (ключ виден) и платные — для личного использования. Ответ — ASCII/English (DOS = CP437). Вопрос — до ~9 слов (ограничение DOS-аргументов); длинные удобнее слать через поле ввода команд или командой AIFILE — она открывает окно выбора текстового файла (.txt/.md), и его содержимое целиком уходит ассистенту как задача (обходит лимит аргументов DOS).
🎤 / 🎙️ Голосовой ввод (Web Speech API браузера, нужен Chrome/Edge и доступ к микрофону). Две кнопки у поля ввода: 🎤 — продиктовать задачу ассистенту (распознаётся по языку интерфейса RU/EN; текст сразу уходит ассистенту). 🎙️ — продиктовать команду DOS в поле ввода: распознаётся по-английски (DOS-команды английские), переводится в ВЕРХНИЙ регистр, слова-символы заменяются (backslash→\, star→*, dot→.), результат кладётся в поле — ты проверяешь и жмёшь Enter (авто-запуска нет: распознавание неидеально). Повторный клик той же кнопки отменяет запись. Из DOS голос вызывается командой VOICE (команда DOS голосом) или VOICE AI (задача ассистенту) — хост нажимает соответствующий микрофон. Вывод идёт в сам DOS-терминал: при VOICE распознанная команда печатается в терминал и сразу выполняется (её результат виден в консоли); при VOICE AI в терминал печатается и услышанный вопрос (You said: …), и ответ ассистента (через ECHO). ⚠️ Поскольку VOICE выполняет распознанное автоматически, а распознавание неидеально — будь аккуратен (через веб-кнопку 🎙️ команда не выполняется, а кладётся в поле на проверку). ⚠️ Браузеры включают микрофон обычно только по «живому» клику, поэтому запуск из DOS — best-effort: если микрофон не стартовал, нажми кнопку 🎙️/🎤 один раз (после выданного разрешения часть браузеров пускает и из команды).
⌨️ Горячие клавиши голоса. Голос можно вызвать с клавиатуры, не отрывая рук — в том числе в полноэкранном DOS: ScrollLock — команда DOS голосом, Pause/Break — задача ассистенту, ContextMenu («меню») — старт/стоп записи экрана. Перед началом прослушивания проигрывается голосовая подсказка «speak» — сигнал, что можно говорить (распознавание стартует после неё, чтобы не поймать само слово). Выбраны непечатаемые клавиши, которые DOS не использует, — поэтому они не мешают вводу и ничего не впечатывают в терминал. Ведут себя как DOS-команды VOICE / VOICE AI: результат идёт прямо в терминал (распознанная команда выполняется, ответ ассистента выводится через ECHO), что важно в полноэкранном режиме, где поле ввода под экраном не видно.
🔊 Озвучка ответов (TTS). В «🤖 Ассистент» галочка «Озвучивать ответы голосом» включает синтез речи браузера (speechSynthesis): ответ ассистента не только печатается в терминал, но и проговаривается (язык en-US — ответы английские). Вместе с голосовым вводом (🎤 / Pause) получается голосовой цикл: спросил голосом → услышал ответ голосом. Работает офлайн (синтез локальный, в отличие от распознавания). Рядом — ещё два тумблера: 🔔 Голосовые подсказки команд (сигнал «speak» перед записью голоса и старт/стоп/готовность записи экрана) и ⚠️ Озвучивать ошибки (красные сообщения лога проговариваются «Ошибка. …», язык авто, без повторов подряд). Оба по умолчанию включены. Подсказки команд также озвучивают запуск командных файлов DOS (например «команда гит», «команда установка», «команда ассистент») в момент их вызова в терминале. Мастер-тумблер «🔔 Озвучивать команды» гасит всё это разом, а под ним — выборочные галочки по каждой команде.
🗣️ Полная озвучка логов. Команда LOGVOICE в DOS (или галочка «🗣️ Полная озвучка логов» в «🤖 Ассистент») включает/выключает проговаривание всех сообщений лога подряд — удобно слушать, что происходит, не глядя на экран. Эмодзи/символы из сообщений убираются, повторяющиеся подряд строки не дублируются, язык — авто. Полезно в полноэкранном режиме.
🧠 Долговременная память. Галочка в «🤖 Ассистент» включает память: ассистент помнит факты между сессиями. Память хранится в файле AIMEMO.TXT в корне диска (автосохраняется в репозиторий — переживает перезапуск и доступна на любом устройстве). В начале каждой задачи память подмешивается в контекст; ассистент дописывает заметки директивой MEMO: <факт> (хост добавляет строку в файл). Кнопка «🧠 Показать / очистить память» — посмотреть содержимое и при желании стереть. Пример: скажешь «макс, запомни что я предпочитаю Norton Commander» → в следующих сессиях он это учтёт.
⏰ Планировщик задач. В «🤖 Ассистент» можно завести задачи, которые запускаются сами: триггер «при старте диска» (выполнится после монтирования C:) или «каждые N минут» (таймер проверяет раз в 30 с, запускает одну задачу за тик). Задача = обычный промт ассистенту (идёт через тот же агент-цикл, с учётом режимов авто-выполнения/памяти). Нужен включённый диск и API-ключ. Кнопка ▶ у задачи — запустить вручную сейчас. Пример: «каждые 60 минут — закоммить изменения» (вместе с авто-выполнением и директивой COMMIT).
💾 Само-коммит. При авто-выполнении ассистент может сам сохранять состояние диска в git директивой COMMIT: <сообщение> (то же, что GITDOS COMMIT — пуш изменённых/новых файлов с этим сообщением). Полезно в связке с планировщиком (периодические бэкапы) и в конце автоматических задач.
🛠️ AI-IDE: пиши → компилируй → чини. При авто-выполнении ассистент может разрабатывать программы прямо в DOS. Раньше записанный через MAKE файл становился виден DOS только в конце; теперь после каждого MAKE диск перемонтируется с ожиданием готовности (remountAndWait) — и на следующем шаге ассистент может скомпилировать исходник: RUN: TPC PROG.PAS (Turbo Pascal) или RUN: TCC PROG.C (Turbo C). Вывод компилятора перехватывается (как и любой команды: редирект в AIOUT.TXT + маркер AIDONE) и возвращается ассистенту — он видит ошибки компиляции, правит исходник новым MAKE и компилирует снова, пока не соберётся. Тот же цикл работает и с .BAT-скриптами (написал — перемонтировал — запустил — увидел вывод). ⚠️ Нужен установленный DOS-компилятор (через INSTALL или загрузку файлов) — GitDOS их не поставляет (лицензии/размер). Каждый MAKE = перезагрузка DOSBox (~2–3 с), поэтому держи исходники компактными и итераций — разумное число (лимит шагов агента в настройках).
👁️ Ассистент видит экран (vision). Галочка в «🤖 Ассистент». Когда включена, к запросу прикладывается снимок текущего экрана DOS (canvas → PNG, уменьшенный до 640px), и ассистент реально видит, что на экране — меню игры, сообщение об ошибке, текст программы, — а не только вывод команд. В авто-режиме ассистент может директивой LOOK: запросить свежий снимок после действия (хост перехватывает экран и отправляет картинкой следующим сообщением). Технически: js-dos рендерит в WebGL без сохранения кадра, поэтому GitDOS патчит getContext (preserveDrawingBuffer), иначе снимок был бы пустым. ⚠️ Картинки увеличивают расход токенов (стоимость) — включай по необходимости; нужна vision-модель (Claude Haiku/Sonnet/Opus её поддерживают).
📼 Запись сессии. Кнопка ⏺ у поля ввода записывает экран DOS в видео (WebM, через canvas.captureStream + MediaRecorder, 15 кадров/с). Нажми ⏺ — пошла запись (кнопка станет ⏹), нажми ещё раз — откроется окно с предпросмотром (можно проиграть прямо тут) и кнопкой скачать .webm. Готовый файл можно отправить/выложить как туториал или демо. Запись только видео (без звука DOS). Останавливается автоматически при остановке диска. Поддерживается в Chrome/Edge (нужен MediaRecorder). Из DOS: команда REC — старт/стоп записи (то же, что кнопка ⏺); горячая клавиша ContextMenu (клавиша «меню» у правого Ctrl) — тоже старт/стоп, удобно в полноэкранном режиме.
js-dos умеет соединять IPX-сеть DOSBox через WebSocket-relay, так что в DOS-игры с сетевым режимом IPX (Doom, Duke Nukem 3D, Warcraft, Descent…) можно играть по интернету. Настройка — «⚙️ Общие настройки → 🌐 Сетевая игра (IPX)»: галочка включить, комната (общий код — у всех игроков одинаковый) и relay-сервер (по умолчанию публичный wss://netherlands.dos.zone). Параметры применяются при следующем «Пуск» (передаются в эмулятор как ipx=1 / ipxBackend / room); в логе видно 🌐 Сеть IPX подключена/отключена. Игра должна быть на диске, и внутри самой игры нужно выбрать сетевой режим IPX (не модем/COM). По умолчанию сеть выключена — ничего наружу не уходит, пока ты сам не включишь. ⚠️ Публичный relay — внешний сервис: игровой трафик идёт через сторонний сервер, нужен интернет. Для приватности можно указать свой relay-сервер в том же поле.
📝 Генерация файлов (MAKE:). При включённом авто-выполнении ассистент может создавать файлы на диске: в ответе он пишет строку MAKE: путь (например MAKE: HELLO.BAT), затем содержимое файла, и завершает строкой ENDMAKE. Хост записывает файл в репозиторий и перемонтирует диск, чтобы новый файл появился в DOS (проверь DIR). Так ассистент пишет .BAT-скрипты и текстовые файлы по запросу («напиши bat, который выводит дату» и т.п.). Без авто-выполнения MAKE не исполняется (только показывается).
🎯 Макросы (AIMACRO). Сохранённые задачи-заготовки. В «🤖 Ассистент» задаёшь имя (одно слово) и текст задачи — он сохраняется в браузере (localStorage). В DOS: AIMACRO — список макросов, AIMACRO имя — запустить макрос (его текст уходит ассистенту как задача). Запустить можно и кнопкой ▶ прямо в настройках. Удобно для частых задач (бэкап, генерация отчёта, уборка временных файлов и т.п.).
Пункт меню «🏪 GitDOS Store» — визуальная витрина того же каталога, что и команда INSTALL. Навигация в глубину: сверху — три фиксированных раздела всегда (💿 Программы / 🎮 Игры / 🖴 Драйверы; определяются по верхнему сегменту пути — games/, drivers/, остальное → Программы), нажимаешь раздел → появляется список подразделов (архиваторы, файловые менеджеры, браузеры… с числом программ), нажимаешь подраздел → открывается список программ с версией, размером, описанием (кнопка «← Разделы» — назад). Если в разделе нет подразделов, программы показываются сразу. Кнопка «Установить» на карточке закрывает окно и выполняет в DOS-терминале команду INSTALL <id> — установка идёт только штатным путём пакетного менеджера (никакой отдельной установки из веба нет). INSTALL находит программу по id независимо от вложенности раздела/подраздела, так что ставит из любого из трёх разделов. Уже установленные помечены «✓ Установлено». Каталог тот же и настраивается там же («🧩 Каталог программ»); двухуровневая раскладка — это путь <раздел>/<подраздел>/<id>/install.json в репозитории. Вверху окна — 🔎 поиск по всем программам (имя/id/описание/раздел). Встроенный каталог: даже без подключения к репозиторию (или если он пуст/недоступен) Store не пустой — показываются встроенные демо-программы во всех трёх разделах (System Info, Tree View, Welcome, ASCII Art, Fortune, Driver Info). Они ставятся тем же INSTALL <id> (файлы — текстовые .BAT, пишутся на диск без скачивания, работают офлайн). Программы из настроенного каталога подмешиваются к встроенным (и перекрывают одноимённые).
📤 Публикация программ. Кнопка «📤 Опубликовать» в Store — выложить свою программу в каталог (твой репозиторий) прямо из браузера через GitHub API. Укажи раздел (Программы/Игры/Драйверы), подраздел (напр. archivers), id, название, версию, описание, чем запускать, и выбери файлы программы. GitDOS соберёт манифест install.json и запишет его вместе с файлами по пути <раздел>/<подраздел>/<id>/. Нужен «Токен каталога» с правом записи в этот репозиторий — задаётся в «🧩 Каталог программ» (хранится только в браузере, в код/коммиты не попадает). После публикации программа сразу появляется в Store и доступна команде INSTALL. ⚠️ Публикуй только в доверенный каталог: манифест может прописывать строки в AUTOEXEC/CONFIG у того, кто ставит программу.
↪ Перемещение между разделами. Если задан «Токен каталога», на карточке программы появляется кнопка ↪ — переместить программу в другой раздел/подраздел своего каталога. Выбери раздел (Программы/Игры/Драйверы) и подраздел, нажми «Переместить» — GitDOS перенесёт папку программы (все файлы + install.json) на новый путь через GitHub API (запись по новому пути и удаление по старому) и обновит витрину. Видно только для своего каталога (где есть право записи).
В DOS из любой папки: INSTALL — список доступных программ (по категориям, * = установлена); INSTALL <id> — установить. Программы берутся из репозитория проекта sementsul/GitDOS, папка programs/<категория>/<id>/ (с манифестом install.json). Установка: файлы качаются в C:\PROGRAMS\<dir>, путь добавляется в PATH (управляемый блок REM GITDOS:<id> в AUTOEXEC.BAT, идемпотентно), плюс строки autoexec/config из манифеста; затем диск перемонтируется. Установленное уходит в твой репозиторий автосохранением. Чтение каталога — через raw (лимит API не тратит). Формат и пример — в programs/README.md репозитория. INSTALL INFO <id> — карточка программы (версия, размер, описание, что пропишется в конфиги) перед установкой; в манифесте можно задать desc и version. Источник каталога настраивается в «⚙️ Общие настройки» → «🧩 Каталог программ» (owner/repo или owner/repo/подпапка, по умолчанию sementsul/GitDOS/programs) — можно держать отдельный репозиторий-каталог. ⚠️ Указывай только доверенный источник (манифест может править AUTOEXEC/CONFIG).
UNINSTALL <id> — удалить установленную программу: стирает файлы из C:\PROGRAMS\<dir> (удаление уедет в репозиторий автосохранением) и вырезает её управляемый блок REM GITDOS:<id> из AUTOEXEC.BAT и CONFIG.SYS. Папку <dir> берёт из манифеста, а если программы уже нет в каталоге — из самого блока в AUTOEXEC.
В DOS из любой папки набери UPLOADS — откроется окно «📤 Загрузка файлов» с уже выбранной текущей папкой. Технически: UPLOADS.BAT создаёт маркер GTUP в текущем каталоге (DOSBox пишет его в реальный узел ФС, поэтому путь и регистр — настоящие), хост-вотчер находит маркер, определяет папку и открывает окно загрузки на неё. Маркер исключён из синка. Работает, если в PATH есть C:\ (стандартный AUTOEXEC так и делает). Окно дополнительно пытается сразу открыть системный диалог выбора файлов — он всплывёт, если есть «живой» клик/Enter пользователя (например, если набрать UPLOADS через поле ввода команд под экраном); браузер не открывает файловый диалог без действия пользователя, поэтому при наборе внутри DOS-экрана просто открывается окно с кнопкой «выбрать».
Если окно загрузки открыто из полноэкранного режима — GitDOS выходит из него (окно поверх фуллскрина не видно) и возвращает после загрузки: сразу после выбора файлов (жест ещё свеж) или при закрытии окна (клик — надёжный жест; вход в фуллскрин браузер разрешает только по действию пользователя).
Между экраном и логом — строка C:\> с полем ввода. В терминал DOSBox нельзя вставить текст напрямую, поэтому набери/вставь команду в это поле и нажми Enter (или ▶) — GitDOS «набьёт» её в DOS клавишами (через sendKeyEvent, коды GLFW) и нажмёт Enter. Удобно для длинных путей, команд GITDOS и вставки скопированного. Поддерживаются буквы/цифры/основные символы (включая : \\ / _ . , ( ) * и т.п.). Во время набивки поле блокируется.
Командные файлы (GITDOS.BAT, INSTALL/UNINSTALL/UPLOADS/AI/VER.BAT и их данные) лежат в папке C:\COMMANDS, которая добавлена в PATH — поэтому команды вызываются из любой папки, а корень диска не захламляется. Логотип и статус (GITDOS.NFO, GITDOS.DAT) остаются в корне (печатаются при загрузке). Файлы-маркеры команд пишутся в корень и тут же удаляются хостом. Вся папка COMMANDS\ и маркеры исключены из синка с репозиторием.
При монтировании в образ кладутся GITDOS.BAT и GITDOS.DAT (служебные, в репо не синкаются). При загрузке DOS печатает статус (репозиторий, ветка, профиль, число файлов, лимит API, автосейв). Команды в DOS:
GITDOS — показать текущие настройки (на момент последней загрузки).GITDOS SAVE — сохранить диск на GitHub немедленно: BAT создаёт файл-маркер C:\GTSAVE, хост ловит его (вотчер раз в 2 c), делает pushChanges, обновляет статус и перемонтирует — после ребута DOS показывает свежий статус с пометкой.GITDOS NOW — обновить статус (маркер C:\GTNOW → перемонтирование).GITDOS VER — версия/инфо о GitDOS (сборка, автор, движок, сайт). Голый VER — встроенная команда DOS (внутренние команды в DOSBox имеют приоритет над файлами), поэтому надёжно показать инфо о GitDOS можно только через GITDOS VER; файл VER.BAT положен «на всякий случай».GITDOS PULL — перечитать диск с GitHub (подтянуть изменения, сделанные не из этого DOS).GITDOS LOG — последние коммиты (хост запрашивает commits, пишет в GITDOS.DAT, перемонтирует — после ребута виден журнал; GITDOS NOW вернёт статус).GITDOS DISKS — список дисков (C: + доп.), TYPE статического GTDISKS.TXT.GITDOS PROFILE — список профилей (GTPROFS.TXT); GITDOS PROFILE n — переключить на профиль №n и перечитать диск.GITDOS DIFF — несохранённые изменения (A/M/D) против репозитория. GITDOS FILES — файлы на диске. GITDOS WHO — аккаунт GitHub + видимость репо.GITDOS COMMIT <текст> — сохранить со своим сообщением коммита (через pushMsg). GITDOS AUTOSAVE ON|OFF — включить/выключить автосохранение (флаг autosaveOff).GITDOS BRANCHES — список веток; GITDOS BRANCH <имя> — создать ветку от текущей и переключиться; GITDOS HISTORY <файл> — коммиты файла.CHECKOUT <sha> (снимок коммита, чтение), RESTORE <файл> <sha> (восстановить файл), SHOW <sha> (детали коммита), TAG <имя> (тег), NEWREPO <имя> (создать+подключить репозиторий), MERGE <ветка> (слить в текущую). ⚠ Необратимое: DELBRANCH <имя> (удалить ветку), RESET <sha> (force-сброс ветки — теряются коммиты после). Всё через GitHub API (тег/слияние/reset/удаление — нужен токен).GITDOS SET REPO owner/name / SET BRANCH main / SET PATH subdir — сменить репозиторий/ветку/путь: BAT пишет строку в C:\GTSET, хост читает (fsReadFile, fallback через persist), применяет к cfg.github, сохраняет и перечитывает диск. Токен через DOS не задаётся — только в веб-настройках (безопасность: не светить секрет на экране/в файле).Это мост DOS↔хост через файлы: направление DOS→хост (маркеры) надёжно; обновление статуса в DOS требует перемонтирования (экран моргнёт). Текст статуса — ASCII (DOS = CP437), кириллица в именах профилей может отображаться неверно.
Окно «🖥️ Лаунчер» читает репозиторий C: (executables) и показывает все .EXE/.COM/.BAT с путём и размером. Клик «▶ Запустить» делает mount({run:путь}) — диск монтируется и DOSBox сам запускает выбранную программу (через autoexec, без автонабивки клавиш). Это надёжно, но каждый запуск перечитывает репозиторий и перемонтирует диск; чтобы было быстрее на большом диске — используй выборочное монтирование. Если задан диск с большим числом программ — список прокручивается.
В окне «⚙️ Общие настройки» → блок «📦 Экспорт / импорт диска». Экспорт: «⬇ Скачать диск (.zip)» — если диск запущен, берётся снимок живой ФС (ci.persist), иначе собирается zip из файлов репозитория (buildZip). Импорт: «⬆ Импорт .zip в диск» — выбранный архив распаковывается в корень C: тем же механизмом, что и обычная загрузка zip (большие файлы и автосейв обрабатываются как обычно). Имя файла экспорта — по имени репозитория.
В окне «⚙️ Общие настройки» → блок «🖥️ Экран и DOSBox»: cycles (скорость CPU — применяется при следующем «Пуск», манифест важнее) и звук (вкл/выкл через ci.mute()/unmute()). Настройки хранятся в cfg.dosbox.
В окне «⚙️ Общие настройки» → блок «⚙️ Загрузочные файлы» → кнопка открывает редактор. Содержимое читается из репозитория (readAt), а если репо не подключён, но диск запущен — из живой ФС (ci.fsReadFile). Сохранение: при запущенном диске пишет на диск (fsWriteFile) и, если есть токен, в репозиторий; если диск не запущен — прямо в репозиторий (нужен токен с правом repo). Переводы строк нормализуются в CRLF (DOS-формат). Изменения применяются при следующем «Пуск».
Окно «🔗 Поделиться» делает ссылку вида …/?repo=owner/name (плюс &branch=, &path= при необходимости) и QR-код к ней (библиотека qrcode-generator, MIT, локально в vendor/qrcode.js). Кто откроет ссылку — у того GitDOS сам подключит и смонтирует этот диск (applyShareLink при загрузке создаёт/выбирает профиль и вызывает «Пуск»). Только публичные репозитории и только чтение: токен в ссылку не кладётся. Можно добавить &run=ИГРА.EXE — тогда сразу запустится программа.
Необязательный файл .gitdos.json в корне диска C: настраивает запуск. Поля: name — имя диска (идёт в заголовок вкладки), run — что запустить после загрузки (путь от корня C:, напр. GAMES\\DOOM\\DOOM.EXE), cycles — скорость CPU DOSBox (auto | max | число | fixed 3000). GitDOS читает манифест при монтировании и добавляет запуск прямо в autoexec — DOSBox сам делает CD и запускает программу (без автонабивки клавиш). Кнопка «📦 Создать шаблон .gitdos.json» в окне дисков создаёт заготовку. Нет файла/битый JSON — игнорируется. cycles и run валидируются (защита от инъекций в конфиг).
Веб-интерфейс GitHub режет загрузку на 25 МБ, но через API в дерево можно класть файлы до 100 МБ. Поэтому крупные файлы (например DUKE3D.GRP ~40 МБ) надо заливать через GitDOS (окно «Загрузка файлов» или перетаскиванием в DOS), а не через сайт GitHub. Запись таких файлов идёт через Git Data API (blob → tree → commit → ref): функция writeBig включается автоматически для файлов больше 5 МБ (обычный Contents API на больших файлах ненадёжен). Чтение — через git/blobs (работает с CORS на api.github.com). Так и автосохранение, и ручная загрузка корректно отправляют большие файлы в репозиторий.
Файлы больше 100 МБ в git-дерево не помещаются. Для них есть запасной путь — GitHub Release с тегом gitdos-assets: в .gitdos.json добавляется список "assets":[ {"path":"BIG.DAT","name":"BIG.DAT","size":N} ], и при монтировании GitDOS скачивает их из релиза по API и кладёт на диск (эти файлы исключены из автосохранения). Релиз и заливку в него пока делаешь вручную на GitHub.
Окно «🕓 История диска» использует git-историю репозитория C: (GET /commits). Два режима:
git/trees/<sha>) и монтирует диск только для чтения: автосохранение выключено, в main ничего не пишется. Возврат к актуальной версии — кнопка «Пуск». Доп. диски в снимок не входят (это отдельные репозитории).readAt через contents/blobs) и пишет его новым коммитом (старое в истории не теряется). Если диск запущен — файл сразу заменяется в DOS (fsWriteFile + перемонтирование). Нужен токен с правом repo.js-dos в этой сборке: (1) монтирует только один диск C:; (2) его загрузчик образа не создаёт подпапки. Поэтому в образ кладутся только файлы корня C:, а подпапки (диск D: и вложенные каталоги) дописываются после старта через fsWriteFile, после чего диск пересобирается через persist и C: перемонтируется — так все папки видны с самого старта.
Интерфейс на русском и английском. По умолчанию выбирается язык браузера; переключатель RU/EN — в правом верхнем углу (выбор запоминается).
В окне «ℹ️ О программе» — кнопка 🗑 Сбросить данные и перезагрузить: очищает localStorage, sessionStorage и cookies (сохранённые репозитории, токен, язык, настройки) и перезагружает страницу. Полезно, если интерфейс ведёт себя странно или нужно начать с чистого листа. Файлы в репозиториях на GitHub при этом не трогаются.
GitDOS — прогрессивное веб-приложение: его можно установить на телефон/десктоп (значок «Установить» в адресной строке браузера) и запускать как обычную программу. Сервис-воркер работает по стратегии network-first: пока есть сеть — всегда отдаётся свежая версия (никакого «залипшего» кэша), а кэш используется только как офлайн-резерв (для синхронизации с GitHub всё равно нужна сеть). На localhost сервис-воркер отключён, чтобы не мешать разработке — PWA активен только на опубликованном сайте.
Все библиотеки локальные. Токены — только в браузере (localStorage/менеджер паролей). Дизайн — в стиле установщика Windows 98. На старте DOS-экрана выводится ASCII-логотип GitDOS (файл GITDOS.NFO, печатается через TYPE; в репозиторий не синхронизируется).
Автор GitDOS: Sementsul Maxim. Репозиторий: github.com/sementsul/GitDOS. GitDOS — это обёртка (UI) вокруг эмулятора. Сам эмулятор — DOSBox (GPL-2.0) через js-dos (автор caiiiycuk, JS-обвязка MIT), лежит в vendor/js-dos/ без изменений. «GitDOS» — имя нашей обёртки; авторство DOSBox/js-dos сохранено (баннер «powered by DOSBox / js-dos» + файл THIRD-PARTY.md). Подробности — в THIRD-PARTY.md.
Если GitDOS пригодился — можно поддержать развитие. Спасибо! ❤️
GitDOS — DOSBox в браузере, где диски DOS хранятся в репозиториях GitHub.
Диск C: — основной репозиторий. Дополнительные репозитории подключаются как папки в C:\DISKS\ (C:\DISKS\D, C:\DISKS\E…) — js-dos монтирует только один диск. Каждая папка синхронизируется со своим репозиторием.
Движок: js-dos v8 (локально). Аналитика: Яндекс.Метрика + Google Analytics. Автор: Sementsul Maxim.
Репозиторий: github.com/sementsul/GitDOS