Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
5b5c06f
przygotowanie pola pod nową wersje
Mar 14, 2026
cda000f
(new: new tui)
Mar 15, 2026
66e26f7
(new: lib)
Mar 15, 2026
fc51cac
(new: example)
Mar 15, 2026
46b8e33
(new: added context to the matcher function)
Mar 15, 2026
bd727a5
fix
Mar 15, 2026
f7e249f
(new : @/$)
Mar 15, 2026
bc83f27
(fix&cleaning)
Mar 15, 2026
1d0248e
fix
Mar 15, 2026
00f43fb
(add: sort)
Mar 15, 2026
9569e27
(add: many corrections)
Mar 16, 2026
84c10a3
(fix)
Mar 16, 2026
3360648
(finish: the basics)
Mar 16, 2026
5ca9a2c
(fix: correct finish)
Mar 16, 2026
002e708
(add: tree)
Mar 16, 2026
aac40b3
(add: view mode)
Mar 16, 2026
6a69a5f
(refactoring)
Mar 16, 2026
7373670
(refactoring)
Mar 16, 2026
4d2af1e
(refactoring)
Mar 16, 2026
d7a756b
(refactoring)
Mar 16, 2026
be294e6
(fmt)
Mar 16, 2026
f56ae13
(add: hide info)
Mar 17, 2026
a9be699
(add: plot doc/code)
Mar 17, 2026
4a99654
(refactoring)
Mar 17, 2026
56174b2
(fmt)
Mar 17, 2026
3972696
(version: v2.0.0-alpha.1)
Mar 17, 2026
1fc5c09
(fix: name)
Mar 17, 2026
b92ca9d
(fix)
Mar 17, 2026
2ea11ef
(fix: save)
Mar 17, 2026
31fa438
(add h1)
Mar 17, 2026
152d391
fix
Mar 17, 2026
ded0e9f
(add: tui)
Mar 17, 2026
10533e6
(add: fast path in TUI - cli)
Mar 18, 2026
6c5c6b0
(add: gui)
Mar 19, 2026
6206612
fix
Mar 19, 2026
d472df4
(fix gui)
Mar 20, 2026
2167a57
(update: system save)
Mar 20, 2026
d0eed6e
(add: i18n to GUI)
Mar 20, 2026
3ccaaba
(update: gui)
Mar 21, 2026
a635022
(fix: foot)
Mar 21, 2026
b6dcc59
(on finish)
Mar 21, 2026
5aba453
(add: new flag `-a` & `-u`
Mar 21, 2026
28c69d7
fix
Mar 21, 2026
cf26500
(finish)
Mar 21, 2026
b94200a
cargo-plot v0.2.0
Mar 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/target/
*.exe
*.lock
*.lock
/.cargo-plot/
129 changes: 129 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
Oto profesjonalny, szczegółowy i dwujęzyczny plik `CHANGELOG.md`, dokumentujący ewolucję projektu **cargo-plot** z wersji **0.1.5** do przełomowej wersji **0.2.0**.

---

# CHANGELOG - cargo-plot

All notable changes to this project will be documented in this file.
Wszystkie istotne zmiany w tym projekcie będą dokumentowane w tym pliku.

---

## [0.2.0] — 2026-03-21

### "The Architecture Leap" / "Skok Architektoniczny"

#### 1. Total Architectural Refactoring / Całkowity Refaktoring Architektury

* **[ENG]** Transitioned from a flat library structure to a robust "Core + Interfaces" model. Business logic has been moved to `src/core/`, separating data processing from presentation.
* **[POL]** Przejście z płaskiej struktury biblioteki na solidny model „Core + Interfejsy”. Logika biznesowa została przeniesiona do `src/core/`, oddzielając przetwarzanie danych od prezentacji.
* **[ENG]** Introduced internal modularization: `path_matcher` for logic, `path_store` for data, and `path_view` for rendering.
* **[POL]** Wprowadzono wewnętrzną modularyzację: `path_matcher` dla logiki, `path_store` dla danych oraz `path_view` dla renderowania.

#### 2. Introduction of Graphical User Interface (GUI) / Wprowadzenie Interfejsu Graficznego (GUI)

* **[ENG]** Added a fully functional GUI powered by `eframe` and `egui`. Users can now manage patterns, preview trees, and generate reports in a dedicated window.
* **[POL]** Dodano w pełni funkcjonalny interfejs graficzny (GUI) oparty na `eframe` i `egui`. Użytkownicy mogą teraz zarządzać wzorcami, podglądać drzewa i generować raporty w dedykowanym oknie.
* **[ENG]** Features include a live "Zoom" scale, interactive file browsing using `rfd`, and real-time statistics.
* **[POL]** Funkcje obejmują skalowanie „Zoom” na żywo, interaktywne przeglądanie folderów za pomocą `rfd` oraz statystyki w czasie rzeczywistym.

#### 3. Full Internationalization (i18n) / Pełna Internacjonalizacja (i18n)

* **[ENG]** Implemented a comprehensive i18n system supporting English and Polish across all interfaces (CLI, TUI, GUI).
* **[POL]** Zaimplementowano kompleksowy system i18n wspierający język angielski i polski we wszystkich interfejsach (CLI, TUI, GUI).
* **[ENG]** Automatic language detection based on environment variables with an option for manual override via `--lang`.
* **[POL]** Automatyczna detekcja języka na podstawie zmiennych środowiskowych z opcją ręcznego wymuszenia przez `--lang`.

#### 4. Advanced Sorting: "Merge" Strategies / Zaawansowane Sortowanie: Strategie „Merge”

* **[ENG]** Introduced new sorting algorithms: `AzFileFirstMerge` and `ZaFileFirstMerge`. These group logical file-directory pairs (e.g., `mod.rs` and a directory of the same name) together.
* **[POL]** Wprowadzono nowe algorytmy sortowania: `AzFileFirstMerge` oraz `ZaFileFirstMerge`. Grupują one logiczne pary plik-katalog (np. `mod.rs` i katalog o tej samej nazwie) obok siebie.
* **[ENG]** Improved directory/file priority logic to ensure cleaner visual output in large Rust projects.
* **[POL]** Ulepszono logikę priorytetów katalogów/plików, aby zapewnić czystszy wynik wizualny w dużych projektach Rust.

#### 5. Brace Expansion in Patterns / Rozwijanie Klamer we Wzorcach

* **[ENG]** The pattern engine now supports brace expansion, e.g., `src/{lib,bin}/*.rs` expands automatically to multiple search patterns.
* **[POL]** Silnik wzorców obsługuje teraz rozwijanie klamer, np. `src/{lib,bin}/*.rs` automatycznie rozwija się do wielu wzorców wyszukiwania.
* **[ENG]** Added support for recursive expansion, allowing complex path filtering with single-line inputs.
* **[POL]** Dodano wsparcie dla rekurencyjnego rozwijania, co pozwala na złożone filtrowanie ścieżek za pomocą pojedynczej linii tekstu.

#### 6. Enhanced Weight and Size Calculation / Ulepszone Obliczanie Wagi i Rozmiaru

* **[ENG]** Added a toggle between Binary (IEC: KiB, MiB) and Decimal (SI: kB, MB) unit systems via the `-u` flag.
* **[POL]** Dodano przełącznik między binarnym (IEC: KiB, MiB) a dziesiętnym (SI: kB, MB) systemem jednostek za pomocą flagi `-u`.
* **[ENG]** Introduced the `-a` / `--all` flag to calculate the "Physical" size of directories (including hidden/ignored files) versus the "Filtered" sum.
* **[POL]** Wprowadzono flagę `-a` / `--all`, aby obliczać „Fizyczny” rozmiar katalogów (wliczając ukryte/ignorowane pliki) w przeciwieństwie do sumy „Przefiltrowanej”.

#### 7. Grid View Mode / Nowy Tryb Widoku: Siatka (Grid)

* **[ENG]** Added `ViewMode::Grid`, a new visualization style that aligns file names and their relative paths into a clean, readable table-like structure in the terminal.
* **[POL]** Dodano `ViewMode::Grid` – nowy styl wizualizacji, który wyrównuje nazwy plików i ich ścieżki relatywne w czystą, czytelną strukturę przypominającą tabelę w terminalu.
* **[ENG]** Dynamic width calculation ensures the grid adapts to the longest path in the result set.
* **[POL]** Dynamiczne obliczanie szerokości zapewnia dopasowanie siatki do najdłuższej ścieżki w zestawie wyników.

#### 8. Professional Markdown Footers / Profesjonalne Stopki Markdown

* **[ENG]** Reports now include a detailed metadata table at the end (when using the `-b` flag), containing the tool version, input path, TimeTag, and the exact CLI command used.
* **[POL]** Raporty zawierają teraz szczegółową tabelę metadanych na końcu (przy użyciu flagi `-b`), zawierającą wersję narzędzia, ścieżkę wejściową, TimeTag oraz dokładną użytą komendę CLI.
* **[ENG]** Improved report aesthetics with better use of blockquotes and horizontal rules.
* **[POL]** Ulepszono estetykę raportów dzięki lepszemu wykorzystaniu cytatów (blockquotes) i linii poziomych.

#### 9. TUI "Cockpit" Evolution / Ewolucja „Kokpitu” TUI

* **[ENG]** The Terminal User Interface has been rewritten to act as an interactive builder. It now features dynamic labels showing current configuration status before execution.
* **[POL]** Interfejs TUI został przepisany, aby działać jako interaktywny kreator. Posiada teraz dynamiczne etykiety pokazujące aktualny stan konfiguracji przed uruchomieniem.
* **[ENG]** Added a "CLI Mode" in TUI, allowing users to paste raw CLI arguments to instantly configure the interactive session.
* **[POL]** Dodano „Tryb CLI” w TUI, pozwalający użytkownikom na wklejanie surowych argumentów CLI w celu natychmiastowej konfiguracji sesji interaktywnej.

#### 10. Security and Performance / Bezpieczeństwo i Wydajność

* **[ENG]** Global implementation of `#![forbid(unsafe_code)]` to guarantee memory safety.
* **[POL]** Globalna implementacja `#![forbid(unsafe_code)]`, aby zagwarantować bezpieczeństwo pamięci.
* **[ENG]** Replaced standard manual path parsing with `walkdir` and `shlex` for better reliability across different operating systems.
* **[POL]** Zastąpiono standardowe ręczne parsowanie ścieżek bibliotekami `walkdir` i `shlex` dla lepszej niezawodności w różnych systemach operacyjnych.

#### 11. Context-Aware Path Resolution / Inteligentne Rozwiązywanie Ścieżek

* **[ENG]** New `PathContext` logic correctly identifies the relationship between the terminal's working directory and the scan target, ensuring correct `./relative/` path rendering.
* **[POL]** Nowa logika `PathContext` poprawnie identyfikuje relację między katalogiem roboczym terminala a celem skanowania, zapewniając poprawne renderowanie ścieżek `./relatywnych/`.
* **[ENG]** Improved handling of Windows extended-length paths (`\\?\`).
* **[POL]** Ulepszona obsługa długich ścieżek systemu Windows (`\\?\`).

#### 12. Refined Pattern Logic Flags / Doprecyzowane Flagi Logiki Wzorców

* **[ENG]** Clearly separated `@` (sibling), `$` (orphan), and `+` (deep/recursive) flags to give users surgical control over what is included in the documentation.
* **[POL]** Wyraźnie rozdzielono flagi `@` (rodzeństwo), `$` (sierota) oraz `+` (głęboki/rekurencyjny), aby dać użytkownikom chirurgiczną kontrolę nad tym, co znajdzie się w dokumentacji.
* **[ENG]** Negation (`!`) now acts as a "Hard Veto", overriding any positive matches for a path.
* **[POL]** Negacja (`!`) działa teraz jako „Twarde Weto”, unieważniając wszelkie pozytywne dopasowania dla danej ścieżki.

---

### [0.1.5] — 2026-03-11

#### "The Foundation" / "Fundament"

* **[ENG]** Initial stable release of the new generation documentation tool.
* **[POL]** Pierwsze stabilne wydanie nowej generacji narzędzia dokumentacyjnego.
* **[ENG]** Basic `Tree` and `Doc` commands implemented.
* **[POL]** Zaimplementowano podstawowe komendy `Tree` oraz `Doc`.
* **[ENG]** Support for automatic file identification and icons (Rust, TOML, Markdown).
* **[POL]** Wsparcie dla automatycznej identyfikacji plików i ikon (Rust, TOML, Markdown).
* **[ENG]** Simple TUI based on `cliclack`.
* **[POL]** Proste TUI oparte na `cliclack`.
* **[ENG]** Binary file blacklist to prevent Markdown corruption.
* **[POL]** Czarna lista plików binarnych zapobiegająca uszkodzeniu plików Markdown.

---

### Statistics / Statystyki (v0.2.0)

* **Lines of Code / Linii kodu:** ~4500+
* **New Modules / Nowych modułów:** 22
* **Supported Languages / Wspierane języki:** 2 (PL, EN)
* **Interface Modes / Tryby interfejsu:** 3 (CLI, TUI, GUI)

---

> 🚀 **cargo-plot** | Generated by cargo-plot v0.2.0 | [GitHub](https://github.com/j-Cis/cargo-plot)
> 🚀 **cargo-plot** | Wygenerowano przez cargo-plot v0.2.0 | [GitHub](https://github.com/j-Cis/cargo-plot)
49 changes: 15 additions & 34 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,66 +1,47 @@
[package]
name = "cargo-plot"
version = "0.1.5"
version = "0.2.0"
authors = ["Jan Roman Cisowski „j-Cis”"]
edition = "2024"
rust-version = "1.94.0"
description = "Szwajcarski scyzoryk do wizualizacji struktury projektu i generowania raportów Markdown bezpośrednio z poziomu Cargo."
description = "Szwajcarski scyzoryk do wizualizacji struktury projektu i generowania dokumentacji bezpośrednio z poziomu Cargo."
license = "MIT OR Apache-2.0"
readme = "README.md"
repository = "https://github.com/j-Cis/cargo-plot"

# Maksymalnie 5 słów kluczowych (limit crates.io) - zoptymalizowane pod SEO
keywords = [
"cargo",
"tree",
"markdown",
"filesystem",
"documentation"
]

# Rozszerzone kategorie (tutaj również jest limit max 5, my mamy 4 mocne)
categories = [
"development-tools::cargo-plugins",
"command-line-utilities",
"command-line-interface",
"text-processing",
]
keywords = [ "cargo", "tree", "markdown", "filesystem", "documentation"]
categories = [ "development-tools::cargo-plugins", "command-line-utilities", "command-line-interface", "text-processing",]
resolver = "3"

[package.metadata.cargo]
edition = "2024"


[dependencies]
# Kluczowe dla logiki
chrono = "0.4.44"
walkdir = "2.5.0"
regex = "1.12.3"

# Kluczowe dla interfejsu (CLI/TUI)
# Wykorzystanie formatowania TOML v1.1.0 (wieloliniowe tabele z trailing comma)
clap = {
version = "4.5.60",
features = ["derive"],
}
cliclack = "0.4.1"
clap = { version = "4.5.60", features = ["derive"] }
cliclack = "0.5.0"
colored = "3.1.1"
console = "0.16.3"
ctrlc = "3.5.2"
shlex = "1.3.0"
eframe = "0.33.3"
rfd = "0.17.2"

[lib]
name = "lib"
path = "src/lib/mod.rs"

# ==========================================
# Globalna konfiguracja lintów (Analiza kodu)
# ==========================================
# [lints.rust]
[lints.rust]
# Kategorycznie zabraniamy używania bloków `unsafe` w całym projekcie
# unsafe_code = "forbid"
unsafe_code = "forbid"
# Ostrzegamy o nieużywanych importach, zmiennych i funkcjach
# unused = "warn"
#
# [lints.clippy]
[lints.clippy]
# Włączamy surowsze reguły, ale jako ostrzeżenia (nie zepsują kompilacji)
# pedantic = "warn"
# Możemy tu też wyciszyć globalnie to, co nas irytuje (opcjonalnie):
# too_many_arguments = "allow"
too_many_arguments = "allow"
File renamed without changes.
Loading
Loading