Skip to content

Latest commit

 

History

History
248 lines (171 loc) · 10.6 KB

README.ru.md

File metadata and controls

248 lines (171 loc) · 10.6 KB

Cloudhood

Chrome Web Store Rating Chrome Web Store Users Chrome Web Store Version GitHub Release Date

🌐 Язык / Language


О Cloudhood

Cloudhood — это мощное браузерное расширение, которое позволяет пользователям управлять HTTP заголовками запросов, которые будут встроены во все веб-запросы. Построено на современных веб-технологиях с использованием архитектуры Feature-Sliced Design.

Основные возможности

  • Управление заголовками: Создание, редактирование и управление пользовательскими HTTP заголовками
  • Система профилей: Организация заголовков в переиспользуемые профили
  • Кроссплатформенность: Работает в Chrome и Firefox
  • Импорт/Экспорт: Обмен профилями между устройствами и участниками команды
  • Применение в реальном времени: Заголовки применяются мгновенно к веб-запросам
  • Современный UI: Чистый, интуитивный интерфейс на React и TypeScript

Как это работает

Переопределения заголовков управляются через popup расширения Chrome (React приложение), сохраняются в локальном хранилище браузера и применяются к исходящим запросам страниц с помощью Chrome Declarative Net Request API.

📚 Документация

🚀 Быстрый старт

Предварительные требования

  • Node.js >= 20.0.0
  • pnpm >= 10.10.0
  • Браузер Chrome или Firefox

Установка

# Клонирование репозитория
git clone https://github.com/cloud-ru-tech/cloudhood.git
cd cloudhood

# Установка зависимостей
pnpm install

# Запуск сервера разработки для Chrome
pnpm dev:chrome

# Запуск сервера разработки для Firefox
pnpm dev:firefox

Загрузка расширения

Chrome

  1. Откройте chrome://extensions/
  2. Включите "Режим разработчика"
  3. Нажмите "Загрузить распакованное расширение"
  4. Выберите папку build/chrome

Firefox

  1. Соберите расширение и запустите watcher для разработки:
    pnpm build:firefox
    pnpm dev:firefox
  2. Откройте about:debugging#/runtime/this-firefox
  3. Нажмите "Загрузить временное дополнение"
  4. Выберите файл build/firefox/manifest.json

Watcher пересобирает popup при изменении его исходных файлов. Автоматический reload для Firefox сейчас не поддерживается, поэтому после пересборки нажмите "Перезагрузить" для Cloudhood на странице about:debugging. Если изменился src/background.ts, остановите watcher, выполните pnpm build:firefox и снова запустите pnpm dev:firefox.

🧪 Тестирование

Unit тесты

# Запуск unit тестов
pnpm test:unit

# Запуск с покрытием
pnpm test:unit --coverage

E2E тесты

# Установка браузеров (только первый раз)
pnpm exec playwright install

# Запуск E2E тестов
pnpm test:e2e

# Запуск в CI режиме
pnpm test:e2e:ci

Для E2E тестов всегда импортируйте фикстуры:

import { expect, test } from './fixtures';

🛠️ Разработка

Команды разработки

# Разработка для Chrome с hot reload
pnpm dev:chrome

# Watcher для разработки под Firefox
pnpm dev:firefox

# Сборка для Chrome
pnpm build:chromium

# Сборка для Firefox
pnpm build:firefox

# Сборка для всех браузеров
pnpm build

# Линтинг кода
pnpm lint

Архитектура

Проект следует архитектуре Feature-Sliced Design:

src/
├── app/          # Инициализация приложения
├── pages/        # Страницы (композиция виджетов)
├── widgets/      # UI блоки высокого уровня
├── features/     # Пользовательские функции
├── entities/     # Бизнес-сущности
└── shared/       # Общие ресурсы

Технологический стек

  • Frontend: React 18 + TypeScript
  • Управление состоянием: Effector
  • UI библиотека: @cloud-ru/ds-* (дизайн-система Cloud.ru)
  • Сборщик: Vite
  • Тестирование: Vitest + Playwright
  • Архитектура: Feature-Sliced Design

📦 Сборка расширений

Chrome Extension

pnpm build:chromium

Расширение будет собрано в директории build/chrome.

Firefox Extension

pnpm build:firefox

Расширение будет собрано в директории build/firefox.

Архив исходного кода Firefox

npm run build:firefox-sources

Создает ZIP архив с исходным кодом, необходимым для подачи в Firefox Add-ons. Mozilla требует предоставления исходного кода для расширений, использующих инструменты сборки или минификацию.

🚀 Релизы

Запустите workflow Release из ветки main, чтобы опубликовать синхронный релиз. Workflow:

  1. Определяет следующую общую версию по коммитам после последнего тега v*
  2. Применяет одинаковую версию к package.json и manifest-файлам обоих браузеров
  3. Собирает расширения для Chrome и Firefox
  4. Создает ZIP архивы для обеих платформ
  5. Создает архив исходного кода для подачи в Firefox Add-ons
  6. Публикует в Chrome Web Store и Firefox Add-ons (с исходным кодом)
  7. Создает GitHub Release со всеми архивами и списком коммитов

См. настройку релизов для подробностей автоматизации.

🤝 Контрибьюция

Процесс разработки

  1. Создайте feature branch от main
  2. Внесите изменения следуя архитектуре FSD
  3. Добавьте тесты для новой функциональности
  4. Запустите pnpm lint и исправьте ошибки
  5. Запустите pnpm test:unit && pnpm test:e2e
  6. Создайте Pull Request

Стандарты кода

  • Используйте TypeScript строго
  • Следуйте архитектуре Feature-Sliced Design
  • Добавляйте комментарии к сложной логике
  • Используйте Effector для управления состоянием
  • Пишите тесты для новой функциональности

Коммиты

Используйте conventional commits:

feat: добавить функциональность экспорта профилей
fix: исправить ошибку сохранения заголовков
docs: обновить документацию
test: добавить тесты для утилит

🔗 Ссылки

📄 Лицензия

Apache License 2.0


🏢 О Cloud.ru

Cloudhood разработан командой Cloud.ru — ведущего российского облачного провайдера, предлагающего комплексные облачные решения и сервисы.

Сделано с ❤️ командой Cloud.ru