mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-05 01:14:58 +03:00
🚚 chore(repo): вернуть выпавшие при переносе корня файлы
При переносе корня в code/chatballs под версионным контролем остались только CI-файлы старого корня. AGENTS.md, pack.bat, resources/ и .claude/launch.json физически уцелели, но перестали версионироваться. - AGENTS.md, pack.bat, resources/ и .claude/launch.json перенесены в корень; - launch.json: cwd теперь «.», корень репозитория и есть корень приложения; - pack.bat снова работает — он требует запуска из корня git-репозитория; - README: после клона нужен «cd chatballs», вложенного пути больше нет; - .gitignore: Chatballs.zip, архив pack.bat, снова игнорируется. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
53129701a2
commit
b601a72608
10 files changed
+180
-2
No files matched your search
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"version": "0.0.1",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "internal-ui",
|
||||
"runtimeExecutable": "npm",
|
||||
"runtimeArgs": ["run", "dev", "--workspace", "@chatballs/internal-ui", "--", "--host", "127.0.0.1"],
|
||||
"cwd": ".",
|
||||
"port": 5173
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -23,3 +23,6 @@ test-results/
|
||||
data/
|
||||
.env.bak-*
|
||||
**/staticfiles/
|
||||
|
||||
# Архив, создаваемый pack.bat
|
||||
Chatballs.zip
|
||||
@@ -0,0 +1,52 @@
|
||||
Если в окружении не доступен инструмент, например - Python, PHP, попробуй docker, если в проекте есть его файлы.
|
||||
|
||||
Без моего явного указания не меняй ничего!
|
||||
Если я задал вопросы, это не значит что ты можешь менять файлы!
|
||||
Любые правки только после моего явного указания, например - "делай".
|
||||
Соблюдай инструкцию по коммитам.
|
||||
Используй glab, gh если доступны.
|
||||
|
||||
Учетные данные / доступы:
|
||||
- Без явного указания владельца не менять, не сбрасывать, не bootstrap-ить и не пересоздавать никакие учетные данные, пароли, TOTP, recovery-коды, сессии и права доступа.
|
||||
- Если для проверки нужен вход в приложение, использовать только уже существующие учетные данные, предоставленные владельцем, и не выполнять команды, которые могут изменить пароль или состояние аккаунта.
|
||||
- Любые команды управления аккаунтами, включая `bootstrap_owner`, password reset/change, seed пользователей и изменение ролей, требуют отдельного явного подтверждения владельца перед запуском.
|
||||
|
||||
Production deployment / миграция:
|
||||
- Не принимать самостоятельно решения о способе переноса production-данных, bind mounts, путях хранения, переключении каталогов или удалении старого deployment.
|
||||
- Перед любым изменяющим действием в production сначала представить владельцу точный план миграции и получить его явное согласование. Разрешение на диагностику или общая просьба «исправить» не являются разрешением самостоятельно выбирать архитектуру миграции.
|
||||
|
||||
UI / дизайн:
|
||||
- Никакой отсебятины в UI: не добавлять экраны, блоки, карточки, иконки, тексты, анимации, цвета, layout-решения и состояния, которых нет в утвержденной документации или design-system.
|
||||
- Если UI-этап еще не наступил, UI не считается реализованным и не должен маскироваться под готовый продуктовый интерфейс.
|
||||
- Для построения UI использовать существующие компоненты и их стили, если они уже реализованы; если подходящего компонента нет, создавать переиспользуемый компонент в рамках существующей системы.
|
||||
- Не упрощать UI, анимации, иконки, состояния или поведение по своему усмотрению. Любое отклонение от baseline требует явного согласования до правок.
|
||||
- Технические временные заглушки UI не считать готовой реализацией и не использовать как основу продуктового UI без отдельного явного разрешения.
|
||||
|
||||
Один стандарт на один элемент:
|
||||
- Ссылки во всём приложении выглядят одинаково. Единая база — класс `.link` из `shared/links.css`, одинаковый и для `<a>`, и для `<button>`. Роль задаётся модификатором: `.is-strong` (имя сущности), `.is-neutral` (тёмное имя, синее при наведении), `.is-muted` (второстепенная, «Назад», «Отмена»), `.is-mono` (идентификаторы), `.has-icon` (с иконкой). Заводить в фиче свой `*-name-link`, `*-meta-link`, `*-link-button` запрещено.
|
||||
- Действие, а не переход, оформляется `<button className="link">`, а не `<a href="#">` с `preventDefault`.
|
||||
- Выпадающие меню — только antd `Dropdown` с `overlayClassName="app-dropdown"` и триггером `.row-menu-button`. Своих меню на `position: absolute/fixed`, ручном расчёте координат и подложек-скримов не делать: портал закрывается по клику вне и по Esc сам и не обрезается `overflow`.
|
||||
- Перед тем как написать свой элемент, искать существующий в `shared/` и в соседних фичах. Второй стандарт того же элемента — это дефект, а не свобода реализации.
|
||||
|
||||
Никаких служебных записок в продукте:
|
||||
- В продуктовом UI не должно быть служебной лексики. Запрещены на экране: коды спек и решений (SPEC-HUB-*, ADR-HUB-*, DG-*), номера правил (P1-P5 и любые другие), слова «инвариант», «констрейнт», «миграция», «scope» в техническом смысле, имена таблиц, полей и enum-значений БД и API (`allowCheckoutActions`, `Conversation.channel`, `PROTECT`, `OK`/`ERROR` как есть), ссылки на внутренние документы и любые пометки для разработчика.
|
||||
- Пользователю показывается следствие и способ исправить, а не внутреннее правило. «Коммерческие действия недоступны непродуктовому каналу. Назначьте продукт» — да. «Запрещено инвариантом P1» — нет.
|
||||
- Технические коды остаются в коде, комментариях, логах и API-ответах, но не в текстах интерфейса.
|
||||
- Это относится и к baseline-макетам: служебный текст, попавший в макет, не является основанием выводить его на экран. Макет реализуется, дополняется по указанию владельца, служебная лексика в реализацию не переносится.
|
||||
- Правило действует на прод в первую очередь: ни одна служебная пометка не должна доезжать до пользователя.
|
||||
|
||||
Engineering rules / обязательные практики:
|
||||
- Соблюдать DRY, KISS, SRP, separation of concerns и NO GOD FILES.
|
||||
- Не реализовывать полноценную страницу, feature или крупный workflow одним большим компонентом/файлом.
|
||||
- Если компонент превышает примерно 200 строк или смешивает layout, state, data/model и subviews, разделить его до завершения задачи.
|
||||
- Если новый или измененный файл превышает примерно 300 строк из-за текущей работы, остановиться и вынести части в меньшие модули до финального ответа или коммита.
|
||||
- Page-компоненты должны быть преимущественно composition-only: subviews выносить в соседние компоненты, демо/static data в model/data файл, повторяемый UI в shared/local reusable components.
|
||||
- Не инлайнить сложный UI повторно. Выносить компонент, если структура повторяется или секция имеет отдельную ответственность.
|
||||
- Если реализация по задаче конфликтует с этими правилами, остановиться и явно сообщить blocker вместо поставки плохой структуры.
|
||||
|
||||
Definition of Done:
|
||||
- Запускать только тесты, относящиеся к изменениям текущей итерации. Полный прогон всех тестов выполнять только по явному указанию владельца.
|
||||
- Измененные файлы должны быть проверены на NO GOD violations.
|
||||
- Новый компонент не должен владеть несвязанными ответственностями.
|
||||
- Не должно быть придуманных текстов, иконок, layout-решений или состояний вне design/docs.
|
||||
- Любое отклонение от design/docs должно быть явно указано.
|
||||
@@ -13,7 +13,7 @@ Windows (PowerShell):
|
||||
|
||||
```powershell
|
||||
git clone <URL репозитория> chatballs
|
||||
cd chatballs/code/chatballs
|
||||
cd chatballs
|
||||
.\scripts\start.ps1
|
||||
```
|
||||
|
||||
@@ -21,7 +21,7 @@ Linux / macOS:
|
||||
|
||||
```bash
|
||||
git clone <URL репозитория> chatballs
|
||||
cd chatballs/code/chatballs
|
||||
cd chatballs
|
||||
./scripts/start.sh
|
||||
```
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
@echo off
|
||||
setlocal EnableExtensions
|
||||
chcp 65001 >nul
|
||||
|
||||
REM Архивирует текущую папку с сохранением структуры.
|
||||
REM Исключает только то, что задано в .gitignore.
|
||||
REM Требует установленный git и запуск из корня git-репозитория.
|
||||
|
||||
echo.
|
||||
echo === Packaging current folder using .gitignore rules... Please wait ===
|
||||
echo.
|
||||
|
||||
where git >nul 2>nul
|
||||
if errorlevel 1 (
|
||||
echo !!! ERROR: git not found in PATH
|
||||
echo Install Git and try again.
|
||||
echo.
|
||||
echo Press any key to close...
|
||||
pause >nul
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
git rev-parse --show-toplevel >nul 2>nul
|
||||
if errorlevel 1 (
|
||||
echo !!! ERROR: current folder is not inside a git repository
|
||||
echo Run this script from the repository root.
|
||||
echo.
|
||||
echo Press any key to close...
|
||||
pause >nul
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||
"& { " ^
|
||||
" $ErrorActionPreference = 'Stop'; " ^
|
||||
" Add-Type -AssemblyName System.IO.Compression; " ^
|
||||
" Add-Type -AssemblyName System.IO.Compression.FileSystem; " ^
|
||||
"" ^
|
||||
" $root = (git rev-parse --show-toplevel).Trim(); " ^
|
||||
" if([string]::IsNullOrWhiteSpace($root)){ throw 'Не удалось определить корень git-репозитория.' } " ^
|
||||
" Set-Location -LiteralPath $root; " ^
|
||||
"" ^
|
||||
" $folderName = Split-Path -Leaf $root; " ^
|
||||
" if([string]::IsNullOrWhiteSpace($folderName)){ $folderName = 'archive' } " ^
|
||||
" $dest = Join-Path $root ($folderName + '.zip'); " ^
|
||||
"" ^
|
||||
" $gitArgs = @(" ^
|
||||
" 'ls-files'," ^
|
||||
" '--cached'," ^
|
||||
" '--others'," ^
|
||||
" '--exclude-per-directory=.gitignore'," ^
|
||||
" '-z'" ^
|
||||
" ); " ^
|
||||
"" ^
|
||||
" $raw = & git @gitArgs; " ^
|
||||
" if($LASTEXITCODE -ne 0){ throw 'git ls-files завершился с ошибкой.' } " ^
|
||||
"" ^
|
||||
" $files = @(); " ^
|
||||
" if($raw){ " ^
|
||||
" $files = ($raw -split [char]0) | Where-Object { $_ -and -not [string]::IsNullOrWhiteSpace($_) }; " ^
|
||||
" } " ^
|
||||
"" ^
|
||||
" $files = $files | Where-Object { (Join-Path $root $_) -ne $dest }; " ^
|
||||
"" ^
|
||||
" if(-not $files -or $files.Count -eq 0){ throw 'Нет файлов для архивации после применения .gitignore.' } " ^
|
||||
"" ^
|
||||
" if(Test-Path -LiteralPath $dest){ Remove-Item -LiteralPath $dest -Force } " ^
|
||||
"" ^
|
||||
" $zip = [System.IO.Compression.ZipFile]::Open($dest, [System.IO.Compression.ZipArchiveMode]::Create); " ^
|
||||
" try { " ^
|
||||
" foreach($rel in $files){ " ^
|
||||
" $fullPath = Join-Path $root $rel; " ^
|
||||
" if(-not (Test-Path -LiteralPath $fullPath -PathType Leaf)){ continue } " ^
|
||||
" $entryName = ($rel -replace '\\','/'); " ^
|
||||
" [System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile(" ^
|
||||
" $zip, $fullPath, $entryName, [System.IO.Compression.CompressionLevel]::Optimal" ^
|
||||
" ) | Out-Null; " ^
|
||||
" } " ^
|
||||
" } finally { " ^
|
||||
" $zip.Dispose(); " ^
|
||||
" } " ^
|
||||
"" ^
|
||||
" Write-Host ('Created: ' + $dest); " ^
|
||||
"} "
|
||||
|
||||
set "RC=%ERRORLEVEL%"
|
||||
echo.
|
||||
if not "%RC%"=="0" (
|
||||
echo !!! ERROR: powershell exit code %RC%
|
||||
echo (Scroll up to see the PowerShell error text.)
|
||||
) else (
|
||||
echo Done.
|
||||
)
|
||||
|
||||
echo.
|
||||
echo Press any key to close...
|
||||
pause >nul
|
||||
|
||||
endlocal
|
||||
exit /b %RC%
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 557 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 583 KiB |
@@ -0,0 +1,11 @@
|
||||
<svg width="1386" height="1386" viewBox="0 0 1386 1386" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_2_3)">
|
||||
<rect width="1386" height="1386" rx="300" fill="#1677FF"/>
|
||||
<path d="M691.947 175C743.896 176.004 775.161 202.368 793.419 230.289C802.544 244.243 808.421 258.585 812.018 270.347C815.61 282.096 816.938 291.306 816.938 295.001C816.938 309.524 816.93 372.653 744.438 407.813V460.002H904.938V540.99L904.45 541.002L744.445 544.989L749.937 882.48C749.937 882.489 749.939 882.5 749.94 882.514C749.944 882.549 749.949 882.602 749.955 882.672C749.968 882.812 749.988 883.021 750.016 883.295C750.071 883.842 750.157 884.648 750.278 885.681C750.521 887.746 750.905 890.716 751.471 894.334C752.601 901.571 754.457 911.395 757.356 921.745C760.257 932.098 764.196 942.963 769.489 952.29C774.619 961.33 780.998 968.885 788.895 973.156L789.664 973.56L789.699 973.577L789.731 973.601C793.751 976.524 799.835 978.199 806.771 979.04C813.693 979.879 821.395 979.88 828.599 979.506C835.8 979.132 842.489 978.384 847.379 977.729C849.823 977.401 851.817 977.097 853.199 976.875C853.89 976.764 854.428 976.673 854.793 976.61C854.975 976.579 855.115 976.555 855.208 976.538C855.255 976.53 855.29 976.524 855.313 976.52C855.323 976.518 855.33 976.516 855.336 976.515C855.345 976.512 855.36 976.509 855.379 976.505C855.418 976.495 855.477 976.481 855.556 976.461C855.713 976.421 855.948 976.36 856.258 976.276C856.878 976.109 857.797 975.851 858.986 975.491C861.365 974.771 864.827 973.639 869.151 971.999C877.801 968.719 889.899 963.401 903.684 955.262C931.141 939.048 965.281 911.632 992.18 866.791C981.29 863.394 967.013 860.713 955.359 858.873C949.428 857.937 944.183 857.218 940.421 856.734C938.54 856.492 937.03 856.309 935.99 856.187C935.471 856.125 935.069 856.079 934.797 856.048C934.661 856.032 934.557 856.02 934.487 856.013C934.453 856.009 934.427 856.006 934.409 856.004C934.401 856.003 934.394 856.002 934.39 856.002C934.388 856.002 934.386 856.002 934.385 856.002L934.384 856.001H934.383L933.401 855.894L934.069 855.166L1073.57 703.165L1074.13 702.559L1074.41 703.333C1090.68 748.154 1096.94 802.964 1099.12 846.542C1100.22 868.336 1100.3 887.331 1100.1 900.879C1100 907.653 1099.84 913.065 1099.7 916.784C1099.63 918.644 1099.56 920.081 1099.51 921.053C1099.49 921.539 1099.47 921.909 1099.46 922.157C1099.45 922.282 1099.45 922.376 1099.44 922.438C1099.44 922.47 1099.44 922.494 1099.44 922.51C1099.44 922.517 1099.44 922.523 1099.44 922.527C1099.44 922.529 1099.44 922.531 1099.44 922.532C1099.43 922.533 1099.39 922.531 1098.94 922.505L1099.44 922.534L1099.39 923.361L1098.68 922.933L1048.66 892.726C1003.9 993.99 945.911 1044.08 883.83 1083.43C821.626 1122.85 755.486 1151.41 694.283 1209.87L693.948 1210.19L693.604 1209.88C626.889 1149.91 559.114 1118.72 497.414 1078.36C435.832 1038.08 380.46 988.73 338.686 892.68C328.31 897.648 315.933 905.371 306.086 911.902C301.091 915.215 296.752 918.217 293.662 920.391C292.117 921.478 290.883 922.358 290.037 922.966C289.614 923.269 289.288 923.505 289.067 923.665C288.957 923.745 288.874 923.806 288.817 923.847C288.789 923.867 288.768 923.883 288.754 923.894C288.747 923.899 288.741 923.903 288.737 923.905C288.736 923.906 288.734 923.907 288.733 923.907L288.732 923.908L288.048 924.408L287.941 923.567L288.438 923.505C287.942 923.568 287.942 923.567 287.941 923.566C287.941 923.566 287.941 923.564 287.94 923.562C287.94 923.559 287.94 923.555 287.939 923.549C287.938 923.537 287.936 923.518 287.933 923.494C287.927 923.446 287.918 923.373 287.906 923.277C287.884 923.086 287.851 922.8 287.81 922.424C287.727 921.67 287.611 920.551 287.478 919.085C287.21 916.153 286.872 911.834 286.587 906.28C286.016 895.173 285.656 879.126 286.5 859.358C288.189 819.824 294.695 765.402 313.962 705.85L314.224 705.041L314.803 705.662L455.303 856.163L455.976 856.884L454.997 857.001L397.147 863.923C397.186 864.016 397.228 864.119 397.276 864.232C397.53 864.832 397.917 865.718 398.445 866.858C399.502 869.139 401.127 872.437 403.397 876.495C407.939 884.612 415.061 895.773 425.381 907.932C446.013 932.242 479.425 960.545 530.546 976.515C553.481 979.493 570.422 978.743 581.621 977.252C587.224 976.506 591.391 975.575 594.151 974.832C595.531 974.461 596.561 974.137 597.242 973.906C597.583 973.791 597.836 973.699 598.004 973.637C598.088 973.606 598.151 973.581 598.191 973.565C598.211 973.558 598.227 973.552 598.236 973.548C598.241 973.546 598.244 973.544 598.246 973.543C598.249 973.542 598.254 973.54 598.26 973.537C598.274 973.531 598.297 973.521 598.326 973.508C598.386 973.48 598.477 973.436 598.598 973.376C598.839 973.256 599.199 973.068 599.661 972.8C600.586 972.264 601.923 971.408 603.553 970.142C606.812 967.608 611.246 963.425 615.904 956.842C625.218 943.678 635.442 920.895 638.938 882.477L642.432 544.989L482.925 541.002L482.438 540.99V460.002H642.483C642.506 459.763 642.536 459.433 642.572 459.019C642.654 458.09 642.768 456.741 642.895 455.058C643.147 451.691 643.45 446.988 643.652 441.648C644.054 431.045 644.053 417.961 642.48 407.824C603.762 387.517 586.111 359.35 578.152 336.227C574.167 324.647 572.613 314.338 572.056 306.921C571.777 303.212 571.748 300.226 571.788 298.164C571.808 297.133 571.846 296.333 571.8Line truncated
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_2_3">
|
||||
<rect width="1386" height="1386" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
Binary file not shown.
Binary file not shown.
Reference in new issue
Block a user