Giter Club home page Giter Club logo

eugene-serb / wavelovers Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 8.42 MB

Wavelovers is a vibration test tool for gamepads and mobile devices that can also turn them into vibration massagers. It has free vibration templates, template editor and manual control mode.

Home Page: https://wavelovers.ru/

License: GNU General Public License v3.0

HTML 28.67% JavaScript 0.20% Vue 30.67% TypeScript 31.15% SCSS 9.30%
bem css gamepad gamepad-controls html javascript oop vibration vibration-control vue

wavelovers's Introduction

wavelovers's People

Contributors

dependabot[bot] avatar eugene-serb avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

wavelovers's Issues

Release 1.29.0

Задачи

  • Перевести проект на новый create-vue с node20.
  • Обновить список с рекомендуемыми плагинами для vscode в проекте.
  • Перенести html страниц в папку страниц внутри директории src/pages.

Перед публикацией

  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.29.0.

Release 1.23.3

Задачи

  • Заблокировать ветку master от прямых пушей, требовать прохождения экшенов и завершённых диалогов.

Перед публикацией

  • Обновить тексты на информационных страницах.
  • Обновить SEO мета информации страниц.
  • Обновить README.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.23.3.

Release 1.25.0

Задачи

  • #96
  • Прогнать анонсы через типограф повторно. Убедиться, что ссылка переносится целиком.

Перед публикацией

  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.25.0.

Release 1.30.0

Задачи

  • Исправить сборку проекта в dev режиме.
  • Подключить шрифты локально. Если Google Fonts не будет отвечать по тем или иным причинам, то будет проблема со шрифтами. Надо разместить их локально в проекте.
  • Изменить дизайн состояний кнопок. Плохо видно, когда кнопка выделена.

Перед публикацией

  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.30.0.

Release 1.18.0

Задачи

  • Добавить публичные константы с контактами.
  • Обновить MDiagnosticItem, поменяв имя мокового геймпада на "Gamepad is missing".
  • Обновить MDiagnosticItem, убрав missing для стиков, когда геймпад моковый.
  • Переименовать MDiagnosticItem в MDiagnosticPanel.
  • Провести ревью соответствия компонентов атомарному подходу.
  • Провести ревью соответствия имён компонентов самим компонентам.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.18.0.

Баги

  • Исправить в MDiagnosticItem ошибку, когда при смене окон пропадает цифра у стиков сменяясь на 'missing'.

Release 1.16.0

  • Сделать показ текущего года динамическим.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.16.0.

Release 1.26.0

Задачи

Перед публикацией

  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.26.0.

Release 1.8.0

  • убрать CNAME из папки public.
  • сборку чанков перенести в папку '~/chunks/...'.
  • типизировать context внутри модулей Vuex стора.
  • разобраться с ошибками в использовании типов vue-meta-tag-updater.
  • доисправлять оставшиеся ошибки типов команды type-check.
  • добавить воркфлоу для проверки типов.
  • перенести статичные css стили в папку assets внутри src, подключить глобально в main.ts.
  • отформатировать код.
  • обновить карты сайта.
  • обновить зависимости.
  • поднять версию до 1.8.0.

Release 1.7.0

  • перевести компоненты на атомарный дизайн
  • сделать базовый лейаут
  • сделать структуру документов vue в порядке сверху-вниз: script, template, style
  • раскидать тесты по папкам компонентов
  • навести порядок в импортах компонентов
  • типизировать пропы компонентов
  • навести порядок в моделях
  • обновить зависимости
  • поднять версию до 1.7.0

Release 1.10.0

Задачи

  • Заменить самописные модели геймпада, событий геймпада, кнопок, устройства вибрации, параметров вибрации, на нативные модели TypeScript.
  • Описать jsdoc для моделей.
  • Отчистить от избыточной типизации.
  • Отформатировать код.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.10.0

Ошибки:

  • если отключить геймпад физически при подключённом геймпаде, то будет гоняться воркер и сыпаться ошибки в консоль
  • если включить паттерн при подключённом геймпаде, а потом его отключить, то будет ошибка в консоле, что не может найти vibrationActuator

Release 1.14.0

  • Сделать систему для динамической смены лейаутов.
  • Сделать лейаут для части приложения с меню выбора режима и списком геймпадов.
  • Описать JSDoc для композабла лейаутов.
  • Переименовать стор useGamepads в useGamepadsStore.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.14.0.

Release 1.24.1

Задачи

  • Исправить AAnnouncement на мобильных экранах.

Перед публикацией

  • Обновить анонсы.
  • Обновить тексты на информационных страницах.
  • Обновить SEO мета информации страниц.
  • Обновить README.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.24.1.

Релиз 1.3.0

  • Добавить bug, features и custom report templates
  • Обновить сайтмап и пакеты

Release 1.23.0

Задачи

  • Переделать всё SEO на сайте.
  • Обновить README.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.23.0.

Release 1.28.0

Задачи

  • Описать @template в jsdoc для дженериков, где имеется.
  • Описать значения по умолчанию в jsdoc, где имеется.

Перед публикацией

  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.28.0.

Release 1.11.0

  • Подключить шаблоны вибраций напрямую, а не тянуть с сервера.
  • Переименовать модули с шаблона M${ИмяМодуля} на шаблон use${ИмяМодуля} и перенести в ту же директорию, где находится корень хранилища.

Release 1.15.0

  • Рефакторинг useGamepadStore.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.15.0.

Release 1.27.0

Задачи

  • Навести порядок в 404.md.
  • Убрать информацию о twitter из robots.txt.
  • Добавить описание и остальные иконки в site.webmanifest.
  • Убрать скрипты format fix для src и public, оставить только глобальный.
  • Скрипт format check сделать как и fix для src и public.
  • Поставить год 2024 в копирайте в мете.

Перед публикацией

  • Обновить README.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.27.0.

Сделать анонсы закрываемыми

Описание

У анонсов должен появиться крестик, по нажатию которого должен пропадать анонс. Анонс должно быть можно закрыть, если в параметрах анонса это указано. После закрытия анонса, анонс вновь показываться не должен.

Гипотеза решения

Должен появиться композабл, который принимает оригинальный массив с анонсами, а также, при хуке onMounted стучится в localStorage, берет оттуда информацию по анонсам и объединяет с оригинальным списком анонсов, на основании которых появляется список анонсов с отключёнными пользователем анонсами.

При складывании и взятии списка анонсов из localStorage данные должны проходить процесс сериализации и десериализации.

Изменения в компонентах.

  1. Компонент анонса AAnnouncement. Должен содержать слот для сообщения, а также кнопку крестика, если поле closable анонса истинно. По нажатии на кнопку крестика, анонс должен закрываться, но сам компонент только эмитит событие close. Логика закрытия находится в родительском компоненте. После закрытия анонса и перезагрузки страницы, анонс не должен появиться вновь.
  2. Компонент списка анонсов MAnnouncement. В этом компоненте будет подключаться композабл.

Интерфейсы

Анонс в рамках задачи изменяется, и теперь имеет следующий интерфейс:

interface Announcement {
  id: string; // Уникальный идентификатор анонса.
  enabled: boolean; // Включён ли анонс.
  message: string; // Сообщение текстом или в формате HTML.
  closable?: boolean; // Можно ли анонс закрывать нажимая на кнопку крестика.
  routes?: string[]; // Паттерны regex маршрутов, по которым надо показывать анонс.
  excludeRoutes?: string[]; // Паттерны regex, по которым не надо показывать анонс.
}

В localeStorage достаточно хранить объект со следующим интерфейсом:

interface AnnouncementSavedData {
  id: string; // Уникальный идентификатор анонса.
  enabled: boolean; // Включён ли анонс.
}

Release 1.22.0

Задачи

  • Реализовать поддержку вибрации для мобильных телефонов.
  • Сделать режим "patterns" для телефона.
  • Сделать режим "custom" для телефона.
  • Вытащить ссылки из MHeaderMenu и MToolsMenu на уровень выше и прокидывать через пропы для большей гибкости.
  • Сделать мета данные для новых страниц.
  • Добавить новые страницы в карты сайта.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.22.0.

Release 1.20.0

Задачи

  • Декомпозировать MNavbar на MNavbar, ATextLogo и MHeaderMenu.
  • Переименовать MToolsNavbar в MToolsMenu.
  • MToolsMenu сделать, как MHeaderMenu.
  • Навести порядок в лейаутах.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.20.0.

Release 1.23.2

Задачи

  • Актуализировать тексты на страницах About и FAQ. Рассказать о том, какие устройства и браузеры поддерживаются. Рассказать, что с беззвучным режимом может не работать вибрация на телефоне. Рассказать, что разряженный геймпад и геймпад с отключённой вибрацией может не вибрировать.

Перед публикацией

  • Обновить SEO мета информацию страниц.
  • Обновить README.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.23.2.

Release 1.13.0

  • Удалить миксин computedGamepads.
  • Перевести с Option API в Composition API.
  • Описать всё в JSDoc.
  • Обновить карты сайта.
  • Обновить зависимости проекта.
  • Поднять версию до 1.13.0

Release 1.23.1

Задачи

  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.23.1

Release 1.3.2

  • обновить пакеты
  • обновить сайтмапы
  • мелкие фиксы
  • новый билд

Release 1.24.0

Задачи

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

Перед публикацией

  • Обновить анонсы.
  • Обновить тексты на информационных страницах.
  • Обновить SEO мета информации страниц.
  • Обновить README.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.24.0.

Release 1.22.1

Задачи

  • Добавить страницы mobile и mobile-custom в сборку внутри vite.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.22.1.

Release 1.4.1

  • принять исправления от dependabot

Сделать Storage слой для взаимодействия с хранилищами браузера

Описание

Нужно отделить взаимодействия с хранилищами данных браузера в отдельный слой storage. Для начала хватит взаимодействия с localStorage.

Гипотеза решения

Описание на примере хранилища для announcements.

Взаимодействие с хранилищем из любого места в коде должно происходить через вызов функции контроллера наподобие storage.announcements.get для операций получения, записи и удаления, внутри метода которого должен быть вызов общей функции с переданной моделью данных, включая ключ хранилища, сериализатор и десериализатор.

Каждый конкретный контроллер описывает реализацию get, set и remove.

Каждая конкретная модель описывает реализацию id, serializer и deserializer.

Изменения в текущих компонентах

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

Компонент MAnnoncements соответственно, больше не должен хранить ключ для стора анонсов и передавать его в композабл.

Интерфейсы

interface CommonStorageModel<T> {
  id: string; // ключ хранилища.
  serializer: (object: T) => string; // сериализатор. вызывается при записи.
  deserializer: (dto: string) => T; // десериализатор. вызывается при извлечении.
};
interface CommonStorageController<T> {
  get: () => T; // получить данные.
  set: (object: T) => void; // сохранить данные.
  remove: () => void; // удалить данные.
};

Release 1.21.2

Задачи

  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.21.2.

Release 1.21.1

Задачи

  • Обновить vue-meta-tag-updater.
  • Добавить jsdoc для моделей Router.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.21.1.

Release 1.21.0

Задачи

  • Обновить vue-meta-tag-updater до версии 2.0.3.
  • Удалить файл деклараций для vue-meta-tag-updater.
  • Исправить тег nav в теге nav в хедере.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.21.0.

Release 1.4.3

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

Release 1.23.4

Задачи

Перед публикацией

  • Обновить тексты на информационных страницах.
  • Обновить SEO мета информации страниц.
  • Обновить README.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.23.4.

Release 1.17.0

  • В диагностике сделать моковый интерфейс, когда отсутствуют подключенные геймпады.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.17.0.

Release 1.6.0

Описание

Необходимо переехать с vue-cli, т.к. он уже не поддерживается. Вместе с тем, приходят уведомления от dependabot, которые он автоматически починить не может. Сам обновлять не хочу, т.к. лучше переехать, чем обновлять и тестить, не отвалилось ли чего. Выбор пал на новый vue с vite.

Задача: только меняем рельсы, всё остальное без изменений. Минимальными усилиями сделать все перечисленные далее пункты.

  • Переехать с Vue-CLI на vite@latest.
  • Обновить Vue 3.
  • Обновить Vue Router 4.
  • Переехать с Jest на Vitest.
  • Обновить TypeScript.
  • Обновить ESLint.
  • Обновить Prettier.
  • Установить обновлённый SASS.
  • Установить Vuex. Стором оставить его же. На Pinia переедем позже.
  • Настроить Rollup в Vite на сборку MPA.
  • Обновить и все остальные зависимости.
  • Обновить README.
  • Обновить карту сайта.
  • Поднять версию до 1.6.0.

Release 1.5.0

  • Сделать проект MPA
  • Удалить Vue Query Router из проекта
  • Удалить лишние статические html файлы
  • Обновить карту сайта
  • Обновить зависимости
  • Поднять версию до 1.5.0

Release 1.4.2

  • В README поправить в ссылках рамки. Должны быть у каждой ссылки свои рамки.
  • В README поправить команды. Сейчас не актуальные.
  • Добавить gitattributes.
  • Настроить файл конфигураций ESLint.
  • Настроить файл конфигураций Jest.
  • Посмотреть и донастроить остальные файлы конфигураций.
  • Отформатировать скриптом src и public.
  • Проревьюить src и public на code style и отформатировать по мелочи.
  • Обновить карту сайта.
  • Заменить – на —.
  • Поменять 2022 на 2023 в футере и мета-хеде.
  • Поднять версию.

Сделать MVP версию системы для показа анонсов

Описание

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

Анонс должен показываться на всех страницах, если не указан маршрут страницы, по которому должен показываться анонс.

Гипотеза решения

Анонс должен состоять из двух компонентов.

  1. Компонент анонса AAnnouncement. Должен содержать слот для сообщения.
  2. Компонент списка анонса MAnnouncement. Должен через v-for рендерить список анонсов (список из первых компонентов). Должен вставлять сообщение в слот AAnounce в формате html через соответствующую директиву v-html. Имеет функцию, которая отфильтровывает анонсы, которые не соответствуют текущей странице, основываясь на данных в полях routes и excludeRoutes.

Компонент списка анонсов должен подключаться внутри лейаута LDefault внутри контейнера страницы выше всех элементов.

Конфигурация анонсов должна храниться в отдельном json файле в папке assets.

Интерфейсы

Анонс имеет следующий интерфейс:

interface Announcement {
  id: string; // Уникальный идентификатор анонса.
  enabled: boolean; // Включён ли анонс.
  message: string; // Сообщение текстом или в формате HTML.
  routes?: string[]; // Паттерны regex маршрутов, по которым надо показывать анонс.
  excludeRoutes?: string[]; // Паттерны regex, по которым не надо показывать анонс.
}

Release 1.9.1

  • обновить зависимости
  • обновить карту сайта
  • поднять версию до 1.9.1

Release 1.19.0

Задачи

  • Переименовать LICENSE.md в LICENSE.txt.
  • Описать стили в компонентах с помощью SCSS.
  • Переделать общие стили в SCSS.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.19.0.

Release 1.9.0

Задачи

  • Типизировать emit'ы.
  • Проверить структуру компонентов на соответствие атомарному подходу.
  • Обновить карту сайта.
  • Обновить зависимости.
  • Поднять версию до 1.9.0

Release 1.31.0

Задачи

  • Установить SEO мета информацию внутрь html страниц с атрибутами для удаления.

Перед публикацией

  • Обновить README.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.31.0.

Вытащить ссылки из MHeader

Описание

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

Release 1.12.0

Задачи

  • Сделать новый стор на Pinia.
  • Описать JSDoc для нового стора.
  • Удалить из проекта Vuex.
  • Обновить README.md.
  • Обновить карты сайта.
  • Обновить зависимости.
  • Поднять версию до 1.12.0.

Release 1.4.0

  • переименовать ветки main в master и development в dev
  • добавить prettier
  • отлинтить и отформатировать скриптом проект
  • удалить docs
  • добавить workflows для проверки ПР и деплоя проекта
  • обновить карту сайта
  • обновить зависимости
  • обновить gitignore
  • обновить README
  • поднять версию до 1.4.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.