{"id":50472354,"url":"https://github.com/semcod/regres","last_synced_at":"2026-06-01T11:03:14.122Z","repository":{"id":354426026,"uuid":"1223578879","full_name":"semcod/regres","owner":"semcod","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-13T15:10:34.000Z","size":5547,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-13T17:18:01.248Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/semcod.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-28T13:06:03.000Z","updated_at":"2026-05-13T15:25:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/semcod/regres","commit_stats":null,"previous_names":["semcod/regres"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/semcod/regres","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fregres","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fregres/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fregres/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fregres/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/semcod","download_url":"https://codeload.github.com/semcod/regres/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fregres/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33771630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-01T11:03:12.394Z","updated_at":"2026-06-01T11:03:14.107Z","avatar_url":"https://github.com/semcod.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# regres\n![img.png](img.png)\n\nNarzędzia do analizy regresji, refaktoryzacji i duplikatów kodu — z naciskiem na **autonomiczne wykrywanie regresji frontendu** (placeholder pages, broken imports, runtime 500 z Vite, niezgodność konwencji loadera modułów) i generowanie skryptów naprawczych z trybami `--preview` / `--diff` / `--apply`.\n\n## Installation\n\n```bash\npip install -e .\n```\n\n## What's new (0.1.55)\n\n- **`--runtime-log` end-to-end** — doctor_cli + regres_cli forwarding dla diagnostyki runtime z logów konsoli (np. `[IconComponent] SVG icon not found`).\n- **`runtime_icon_registry_miss` diagnosis** — wykrywa brakujące wpisy w rejestrze ikon na podstawie logów runtime (emoji-tokeny używane w UI bez definicji SVG).\n- **Fixed `DoctorOrchestrator._extract_page_token`** — poprawione parsowanie nested routes (np. `connect-test/operator-workshop`), wcześniej zwracało `None`.\n- **Rozszerzone wzorce placeholderów** — dodano generic 'w trakcie migracji' do `PLACEHOLDER_TEXT_PATTERNS`.\n- **Page-registry compliance check** (`page_registry_default_missing`) — parsuje `\u003cmodule\u003e/pages-index.ts`, weryfikuje że `defaultPage` istnieje w rejestrze stron (z pominięciem zakomentowanych wpisów). Brak → krytyczna diagnoza z gotową instrukcją naprawy.\n- **Module-loader compliance check** (`module_loader_no_class`) — wykrywa pliki `\u003cname\u003e.module.ts`, które nie eksportują klasy `*Module` ani `default`.\n- **Vite runtime probe** (`--vite-base`, autoderywowane z `--url`) — pobiera plik celu z dev-servera Vite i parsuje błędy 500.\n- **Dependency chain analysis** — BFS po relatywnych importach pliku celu (depth=1); zaznacza `BROKEN`/`STUB`.\n- **Decision-tree workflow w raporcie** — ścieżka decyzyjna, snapshot struktury, plan kroków.\n- **Patch scripts z `--preview` / `--diff` / `--apply`** + automatyczne przepisywanie ścieżek importów.\n- Nowe workflows: `.windsurf/workflows/c2004-preanalysis-predeploy.md` i `.windsurf/workflows/c2004-security-settings-baseline.md`.\n\n### What's new (0.1.40-0.1.45)\n\n- **`DoctorConfig` + `.regres/.env` loader** — 4-tier priority chain: CLI \u003e os.environ \u003e .regres/.env \u003e defaults.\n- **Startup banner** — pokazuje aktywne okno analizy (history days, max iterations, shrinkage factor, vite base).\n- **Nowe flagi CLI**: `--history-window-days`, `--history-max-iterations`, `--history-shrinkage-factor`, `--no-banner`.\n- **Defaults bumped**: `HISTORY_DEFAULT_DAYS` 2→30, `HISTORY_DEFAULT_ITERATIONS` 10→30.\n- Mapping `connect-deleted` w `MODULE_PATH_MAP`.\n\n## Usage\n\nGłówny CLI `regres` obsługuje następujące komendy:\n\n- `regres` — analiza regresji plików (historia, zmiany)\n- `regres refactor` — analiza kodu przy refaktoryzacji (duplikaty, zależności, symbole)\n- `regres defscan` — skaner duplikatów definicji klas, funkcji i modeli\n- `regres doctor` — orchestrator analizy i generator akcji naprawczych (z trybem URL)\n- `regres import-error-toon-report` — raport błędów importów TS w formacie Toon\n\n### Doctor — typowy workflow URL → naprawa\n\n```bash\n# 1) Analiza konkretnej strony, która nie wyświetla się poprawnie:\nregres doctor \\\n  --scan-root /path/to/repo \\\n  --url 'http://localhost:8100/connect-config-sitemap?...' \\\n  --all --git-history \\\n  --vite-base http://localhost:8100 \\\n  --out-md .regres/sitemap-doctor.md\n\n# Raport zawiera:\n#   - Plan kroków (decision-tree) z inputs/outputs/decision per krok\n#   - Page implementation analysis (placeholder/stub detection)\n#   - Module loader compliance (czy \u003cname\u003e.module.ts spełnia kontrakt loadera)\n#   - Dependency chain (broken/stub linki w importach celu)\n#   - Vite runtime probe (autorytatywny status 200/500 + missing import)\n#   - Patch scripts z preview/diff/apply per kandydat z historii git\n\n# 2) Każdy \"broken link\" w raporcie zawiera gotową komendę regres\n#    dla pliku, który zgłosił błąd — wystarczy ją skopiować i uruchomić,\n#    aby kontynuować naprawę łańcuchową.\n\n# 3) Po wybraniu kandydata uruchom patch script:\nbash .regres/patches/\u003cpage-token\u003e/restore-\u003chash\u003e.sh --preview   # podgląd\nbash .regres/patches/\u003cpage-token\u003e/restore-\u003chash\u003e.sh --diff      # diff\nbash .regres/patches/\u003cpage-token\u003e/restore-\u003chash\u003e.sh --apply     # zapis\n```\n\n### Examples\n\n```bash\n# Analiza regresji pliku\nregres regres --file path/to/file.py\n\n# Analiza kodu przy refaktoryzacji\nregres refactor find encoder\nregres refactor symbols encoder\nregres refactor duplicates\n\n# Skan duplikatów definicji\nregres defscan\nregres defscan --kind class --min-count 2\n\n# Orchestrator analizy i generator akcji naprawczych\nregres doctor --all\nregres doctor --import-log .regres/import-error-toon-report.raw.log --out-md .regres/doctor-report.md\nregres doctor --url http://localhost:8100/connect-deleted --vite-base http://localhost:8100\n\n# Raport błędów importów TS\nregres import-error-toon-report\n```\n\n## Diagnozy `doctor` — typy\n\n| `problem_type`               | Severity   | Wykrycie |\n|-----------------------------|------------|----------|\n| `page_content_regression`   | high       | git history pokazuje znacznie większą poprzednią wersję pliku |\n| `placeholder_page`          | high       | tekst pasuje do `PLACEHOLDER_TEXT_PATTERNS` (w tym 'w trakcie migracji') |\n| `import_resolution_failure` | high/medium| BFS po relatywnych importach — nie rozwiązany / placeholder |\n| `vite_runtime_failure`      | critical   | HTTP probe Vite zwraca 500 z `Failed to resolve import` |\n| `module_loader_no_class`    | critical   | `\u003cname\u003e.module.ts` bez `*Module` / `export default` |\n| `page_registry_default_missing` | critical | `pages-index.ts` ma `defaultPage` nieobecny w rejestrze → ryzyko nieskończonej rekurencji w `BasePageManager` |\n| `runtime_icon_registry_miss`| medium/high| Logi runtime z `[IconComponent] SVG icon not found: \u003cemoji\u003e` — brak definicji ikony w rejestrze |\n| `module_not_found`          | medium     | URL prefix bez modułu w `MODULE_PATH_MAP` (obsługa nested routes: `connect-test/operator-workshop`) |\n| `import_error`              | medium     | TS2307/TS2305 z logu kompilatora |\n\n## Documentation\n\n- [REGRES](docs/REGRES.md) — analiza regresji plików\n- [REFACTOR](docs/REFACTOR.md) — analiza kodu przy refaktoryzacji\n- [DEFSCAN](docs/DEFSCAN.md) — skaner duplikatów definicji\n- [DOCTOR](docs/DOCTOR.md) — orchestrator analizy i generator akcji naprawczych\n- [import-error-toon-report](docs/import-error-toon-report.md) — raport błędów importów TS\n\n## AI Cost Tracking\n\n![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.1.57-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)\n![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-13.2h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)\n\n- 🤖 **LLM usage:** $7.5000 (54 commits)\n- 👤 **Human dev:** ~$1315 (13.2h @ $100/h, 30min dedup)\n\nGenerated on 2026-05-01 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)\n\n---\n\n## License\n\nLicensed under Apache-2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Fregres","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemcod%2Fregres","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Fregres/lists"}