Plan wdrożenia funkcji w kolejności priorytetów. Każda faza kończy się wydaniem nowej wersji.
| Metryka | Wartość |
|---|---|
| Aktualna wersja | 1.0.0 |
| Python | 3.10+ |
| Zależności core | 0 (zero-dependency) |
| Zależności opcjonalne | click>=8.0, rich>=13.0 |
Cel: Ustabilizowanie core i dodanie brakujących podstawowych funkcji
- Implementacja
table()- renderowanie tabel ASCII/Unicode - Auto-wykrywanie szerokości kolumn
- Wsparcie dla alignmentu (left/center/right)
- Obsługa tabel z Markdown (
| col1 | col2 |) - Konfigurowalny styl ramek (ascii, unicode, minimal, none)
- Implementacja
panel(content, title=None, style="default") - Predefiniowane style: info, warning, error, success
- Wsparcie dla zagnieżdżonych paneli
- Responsywność do szerokości terminala
- Wsparcie dla checklist
- [ ]/- [x] - Numerowane listy z auto-inkrementacją
- Zagnieżdżone listy (wielopoziomowe)
- Listy definicji (term: definition)
- Dodanie
md_file(path)- renderowanie pliku Markdown - Wsparcie dla
---(horizontal rule) - Obsługa blockquote
> - Inline code z backticks w tekście ciągłym
Cel: Głęboka integracja z frameworkiem Click - Unique Selling Point
- Dekorator
@clickmd.markdown_helpparsujący docstringi jako MD -
MarkdownCommand/MarkdownGroupklasy - Wsparcie dla
**bold**,*italic*w opisach opcji - Renderowanie list w help text
- Kolorowanie nagłówków sekcji help
-
clickmd.echo_md(text)- dedykowana funkcja dla Markdown -
clickmd.success(msg)- zielony panel sukcesu -
clickmd.warning(msg)- żółty panel ostrzeżenia -
clickmd.error(msg)- czerwony panel błędu -
clickmd.info(msg)- niebieski panel informacyjny
- Automatyczne kolorowanie
--optionw tekście - Highlighting ścieżek plików
- Formatowanie URL jako klikalne linki (gdzie terminal wspiera)
- Grupowanie opcji z nagłówkami Markdown
- Przykłady użycia w blokach kodu
- Sekcja "See Also" z linkami
Cel: Dynamiczne elementy UI w terminalu
-
clickmd.progress(iterable, label="Processing") - Wsparcie dla nieokreślonej długości (spinner)
- Customowalny format (procent, ETA, prędkość)
- Nested progress bars
- Integracja z
click.progressbar
- Kolekcja animowanych spinnerów (dots, line, arc, etc.)
- Context manager:
with clickmd.spinner("Loading..."): - Wsparcie dla statusu końcowego (✓/✗)
-
clickmd.live(renderable)- aktualizacja w miejscu - Tabele z live-update danymi
- Log streaming z auto-scroll
-
clickmd.confirm_md("Czy **na pewno** chcesz kontynuować?") - Prompt z podpowiedziami w Markdown
- Multi-select z opisami MD
Cel: Pełna kontrola nad wyglądem
- Predefiniowane motywy: default, monokai, dracula, nord, solarized
-
clickmd.set_theme("monokai") - Eksport/import motywów jako JSON/YAML
- Dziedziczenie motywów (base + overrides)
- API do definiowania własnych stylów kolorów
- Wsparcie dla 256 kolorów i True Color (24-bit)
- Graceful degradation dla terminali 16-kolorowych
- Wykrywanie możliwości terminala
- Plik konfiguracyjny
.clickmdrclubpyproject.toml - Zmienne środowiskowe (
CLICKMD_THEME,CLICKMD_NO_COLOR) - Wsparcie dla NO_COLOR standard (https://no-color.org/)
- Dodanie języków: Rust, Go, C/C++, SQL, Dockerfile
- Highlighting diffów (
+ added,- removed) - Numerowanie linii w code blocks
- Highlighting konkretnych linii (np. linia 5-7)
Cel: Ułatwienie debugowania i development
- Automatyczne formatowanie tracebacków
- Syntax highlighting kodu źródłowego w traceback
- Lokalne zmienne w kontekście błędu
- Skrócone ścieżki (relative paths)
-
clickmd.debug(obj)- pretty-print obiektów Python - Inspekcja dict/list z kolorowaniem
- Diff między dwoma obiektami
- Tree view dla zagnieżdżonych struktur
-
ClickmdHandlerdla modułulogging - Formatowanie logów jako Markdown
- Poziomy logowania z ikonami/kolorami
- Structured logging support
-
strip_ansi()publiczne API - Capture output helpers dla testów
- Snapshot testing dla renderowanego output
Cel: Rozszerzalność i integracje
- Entry points dla custom renderers
- Hook system dla pre/post processing
- Rejestracja custom języków syntax highlighting
- Opcjonalna integracja z Rich (fallback do Rich jeśli dostępny)
- Export do HTML
- Export do PNG (via headless browser lub pillow)
- Integracja z Typer
- Mini template engine dla powtarzalnych formatów
- Predefiniowane szablony (report, changelog, table)
- Jinja2-like składnia (opcjonalna zależność)
- Wsparcie dla RTL (arabski, hebrajski)
- Unicode box-drawing characters
- Poprawne liczenie szerokości dla CJK
- Wydzielenie
Parserjako osobnej klasy - Wzorzec Visitor dla renderowania elementów
- Lazy loading modułów (zmniejszenie import time)
- Type hints dla 100% public API
- Benchmark suite
- Caching skompilowanych regex
- Optymalizacja dla długich dokumentów
- Async support dla streaming output
- Sphinx docs z przykładami
- Cookbook z real-world examples
- Video tutorials
- Porównanie z Rich/mdv
- Matrix testing (Python 3.10-3.13)
- Windows/macOS/Linux CI
- Auto-publish do PyPI
- Changelog generation
| Faza | Wersja | Szacowany czas | Status |
|---|---|---|---|
| 1 - Fundament | v1.1.0 | 2-3 tygodnie | 🔲 Planowane |
| 2 - Click Integration | v1.2.0 | 3-4 tygodnie | 🚧 W trakcie |
| 3 - Interaktywność | v1.3.0 | 4-5 tygodni | 🔲 Planowane |
| 4 - Theming | v1.4.0 | 2-3 tygodnie | 🔲 Planowane |
| 5 - Dev Tools | v1.5.0 | 3-4 tygodnie | 🔲 Planowane |
| 6 - Ekosystem | v2.0.0 | 6-8 tygodni | 🔲 Planowane |
- Zero-dependency core - działa bez instalowania niczego więcej
- Click-first - jedyna biblioteka z natywnym wsparciem Markdown dla Click
- Progressive enhancement - podstawy działają, zaawansowane funkcje opcjonalne
- Lightweight - nie wymaga Rich dla prostych przypadków
- Drop-in replacement -
import clickmd as clicki gotowe - Optional Rich backend - najlepszy rendering gdy Rich dostępny
- Integrować Rich jako opcjonalną zależność (
clickmd[rich]) - Wspierać Windows Terminal (nowoczesny) + legacy cmd.exe (degradacja)
- Strategia NO_COLOR: respektować standard https://no-color.org/
- Nazewnictwo:
md()dla prostego,echo_md()dla Click-aware