Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

feat(brand): иконка продукта — favicon в браузере, иконка окна лаунчера, ассет для ярлыка

Open
#1,217 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
html, python

Research direction

Start with the design guidance in docs/dev/design/web-design.md and inspect web/static/index.html, web/server.py, and launcher.py, plus the package configuration and scripts/check_wheel_contents.py. The issue leaves the icon design for the owner to decide and requires checking the browser and live launcher as well as packaging. Done means the shared-source assets work on both surfaces, are included in the installed wheel, and the listed checks pass.

Written by the indexing model from the issue text.

Description

area/cli area/web difficulty/medium enhancement

Что предлагается

Своя иконка продукта — один SVG-источник и три производных ассета: favicon вкладки браузера, иконка окна лаунчера, файл для ярлыка в системе.

Зачем / проблема

Во вкладке браузера у веб-интерфейса стоит дефолтная иконка — глобус. Выглядит как случайная страница, а не как приложение (замечено на живом прогоне).

Проверил: иконки нет нигде.

  • web/static/index.html — ни одного <link rel="icon">;
  • в web/static/ нет ни одного .svg / .png / .ico;
  • логотип в шапке — эмодзи внутри текста: <span class="topbar-logo">🐍 Stepik Python Grader</span> (index.html:15), то есть графического знака у проекта не существует;
  • лаунчер иконку окна не ставит — iconphoto / iconbitmap в launcher.py не встречаются, окно получает стандартное перо Tk;
  • в docs/assets/ только скриншоты и gif.

Третий потребитель уже заявлен: ярлык на рабочем столе (#1185) без своего файла получит дефолтный значок Python — то есть проблема повторится ещё раз.

Scope

Дизайн (решение за владельцем, ниже заготовка).

  • Фирменный цвет уже есть: --color-primary: #01696f (app.css:63).
  • Требования к знаку жёсткие, потому что главный размер — 16×16: один силуэт, максимум два цвета, ни текста, ни мелких деталей.
  • Предлагаемая идея: змейка, изгиб которой образует галочку — Python и «проверено» в одном силуэте. В 16 px читается как галочка, с 32 px видно змейку. Альтернативы слабее: чистая галочка безлика, монограмма «SG» ничего не говорит, >_ отсылает к CLI, хотя веб уже основная поверхность.
  • Знак должен читаться и на светлой, и на тёмной вкладке: без белой подложки, с контрастом, проверенным на обоих фонах. Вариант со prefers-color-scheme внутри SVG работает неровно по браузерам — надёжнее один нейтральный.

Реализация.

  • favicon.svg в web/static/ + <link rel="icon" type="image/svg+xml"> в index.html.
  • PNG 32×32 как fallback для старых браузеров и как источник для tkinter: iconphoto принимает PhotoImage, то есть PNG/GIF, SVG не понимает.
  • Маршруты: сервер раздаёт статику по явным словарям — SVG в _STATIC_ROUTES, PNG в _STATIC_BINARY_ROUTES (web/server.py:64 и :92). Просто положить файл в каталог недостаточно, он не станет доступен.
  • Лаунчер: iconphoto с путём через importlib.resources — иначе в установленном wheel файл не найдётся.
  • Ассеты должны попасть в wheel: в конфигурацию пакета их нужно внести явно, иначе scripts/check_wheel_contents.py покажет расхождение либо (хуже) иконка молча не доедет до пользователя, поставившего через pipx.
  • ICO для ярлыка Windows — как задел под #1185; либо там же, либо отдельным шагом, но из того же источника.

Non-goals

  • Не рисовать полноценный логотип с текстом и не менять шапку интерфейса — эмодзи в topbar-logo остаётся, речь только об иконке.
  • Не тянуть иконку с внешнего CDN: CSP запрещает, и ассет обязан быть локальным.
  • Не заводить PWA-манифест и набор иконок под все платформы — SVG + один PNG + ICO закрывают текущие поверхности.
  • Не менять фирменный цвет.

Критерии приёмки

  • Во вкладке браузера видна своя иконка вместо глобуса — проверено на светлой и тёмной теме браузера
  • Знак различим в 16 × 16 (не «пятно») — проверено на реальной вкладке, а не в макете
  • Окно лаунчера показывает ту же иконку вместо пера Tk
  • Иконка приезжает в установленный пакет: после pip install / pipx install она на месте, scripts/check_wheel_contents.py чист
  • Все ассеты собраны из одного SVG-источника, лежащего в репозитории
  • Внешних запросов за иконкой нет (CSP не нарушается)
  • Проверено в браузере и в живом окне лаунчера — обе поверхности вне досягаемости CI
  • ruff / mypy чисто, python scripts/preflight.py зелёный
  • Запись changelog.d/<slug>.added.md

Ссылки

  • Потребитель ассета: #1185 (ярлык в системе, файлы быстрого запуска)
  • Поверхности: #661 (лаунчер), веб-интерфейс --serve
  • Каноны: docs/dev/design/web-design.md, docs/use/web-interface.md
Dominant language
Python
Stars
3
Forks
6
Avg merge
2h 41m
Merged PRs (30d)
48

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ArtVsMark/Stepik-Python-Grader

All issues in ArtVsMark/Stepik-Python-Grader

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.