Skip to main content

Crate cbtop

Crate cbtop 

Source
Expand description

cbtop - Compute Block Top

Real-time load testing and hardware monitoring TUI built on the Brick Architecture.

§Design Philosophy

  • Test-as-Interface: Every component is a falsifiable Brick (PROBAR-SPEC-009)
  • presentar-terminal: All widgets and canvas from presentar-terminal (no custom reimplementation)
  • Toyota Way: Jidoka, Poka-Yoke, Genchi Genbutsu principles throughout

§Architecture

Layer 4: Load Generators  → SimdLoadBrick, CudaLoadBrick, WgpuLoadBrick
Layer 3: Panels           → Overview, CPU, GPU, PCIe, Memory, Thermal
Layer 2: Analyzers        → Throughput, Bottleneck, Thermal
Layer 1: Collectors       → CPU, GPU, PCIe, Memory, Thermal

§Widget Source Policy

All widgets and canvas implementations come from presentar-terminal. cbtop does NOT implement its own widgets. If a widget is missing, it MUST be added to presentar-terminal FIRST, then used here.

Re-exports§

pub use brick::Brick;
pub use brick::BrickAssertion;
pub use brick::BrickBudget;
pub use brick::BrickVerification;
pub use brick::BrickGrade;
pub use brick::BrickScore;
pub use brick::Scorable;
pub use brick::fnv1a_f32;
pub use brick::BrickProfiler;
pub use brick::DivergenceReport;
pub use brick::KernelTrace;
pub use app::CbtopApp;
pub use config::Config;
pub use error::CbtopError;
pub use headless::Benchmark;
pub use headless::BenchmarkBuilder;
pub use headless::BenchmarkConfig;
pub use headless::BenchmarkResult;
pub use headless::BenchmarkResults;
pub use headless::ComparisonResult;
pub use headless::LatencyStats;
pub use headless::OutputFormat;
pub use headless::RegressionResult;
pub use headless::ScoreInfo;
pub use headless::SystemInfo;
pub use config::ComputeBackend;
pub use config::WorkloadType;
pub use optimize::AnalysisSummary;
pub use optimize::BaselineEntry;
pub use optimize::BaselineReport;
pub use optimize::BottleneckAnalysis;
pub use optimize::BottleneckEntry;
pub use optimize::BottleneckSeverity;
pub use optimize::CpuCapabilities;
pub use optimize::OptimizationSuite;
pub use optimize::OptimizationValidator;
pub use optimize::RegressionDetector;
pub use optimize::RegressionEntry;
pub use optimize::RegressionReport;
pub use optimize::ValidationResult;
pub use optimize::WorkloadConfig;
pub use baseline::BaselineComparison;
pub use baseline::BaselineValidator;
pub use baseline::GpuClass;
pub use baseline::ServerBaseline;
pub use baseline::SingleComparison;
pub use baseline::SmHealth;
pub use baseline::ThroughputGrade;
pub use baseline::ValidationSummary;
pub use baseline::INDUSTRY_BASELINES;
pub use baseline::TGI_BASELINE;
pub use baseline::TRITON_BASELINE;
pub use baseline::VLLM_BASELINE;
pub use quantize::ggml_type_to_format;
pub use quantize::DequantStrategy;
pub use quantize::GgufError;
pub use quantize::GgufHeader;
pub use quantize::GgufLoader;
pub use quantize::GgufResult;
pub use quantize::GgufTensorInfo;
pub use quantize::GgufValue;
pub use quantize::LayerQuantStats;
pub use quantize::QuantFormat;
pub use quantize::QuantStats;
pub use quantize::QuantizedBrick;
pub use quantize::QuantizedWeights;
pub use paged_kv::BlockId;
pub use paged_kv::CacheStats;
pub use paged_kv::EvictionStrategy;
pub use paged_kv::KvBlock;
pub use paged_kv::PagedKvCache;
pub use paged_kv::PagedKvError;
pub use paged_kv::PagedKvResult;
pub use paged_kv::SeqId;
pub use paged_kv::SequenceInfo;
pub use continuous_batcher::BatchSchedule;
pub use continuous_batcher::BatcherStats;
pub use continuous_batcher::ContinuousBatcher;
pub use continuous_batcher::ExponentialMovingAverage;
pub use continuous_batcher::InferenceRequest;
pub use continuous_batcher::Priority;
pub use continuous_batcher::SchedulingPolicy;
pub use continuous_batcher::SequenceGroup;
pub use continuous_batcher::SpeculativeDecoder;
pub use continuous_batcher::SpeculativeOutput;
pub use continuous_batcher::Token;
pub use continuous_batcher::TokenOutput;
pub use ironman::full_validate;
pub use ironman::quick_validate;
pub use ironman::GateCategory;
pub use ironman::GateResult;
pub use ironman::IronmanScorecard;
pub use ironman::IronmanValidator;
pub use ironman::QualityGate;
pub use ironman::IRONMAN_GATES;
pub use grammar::BuiltComputeBlock;
pub use grammar::ByteSize;
pub use grammar::CompositionMode;
pub use grammar::ComputeBlock;
pub use grammar::ComputeBlockBuilder;
pub use grammar::CpuAffinity;
pub use grammar::DataTransform;
pub use grammar::DataType;
pub use grammar::Dimensions;
pub use grammar::ExecutionContext;
pub use grammar::ExecutionPolicy;
pub use grammar::ExecutionResult;
pub use grammar::ExecutionStrategy;
pub use grammar::GpuDevice;
pub use grammar::GrammarError;
pub use grammar::GrammarResult;
pub use grammar::KernelSpec;
pub use grammar::LinearResourceScale;
pub use grammar::LogResourceScale;
pub use grammar::ObservabilityConfig;
pub use grammar::Operation;
pub use grammar::QosLevel;
pub use grammar::QuantScheme;
pub use grammar::ResourceLimits;
pub use grammar::ResourceMapping;
pub use grammar::ResourceScale;
pub use grammar::RetryPolicy;
pub use grammar::ScaleBinding;
pub use grammar::SimdWidth;
pub use grammar::StrategyLayer;
pub use grammar::TensorSpec;
pub use grammar::WorkloadSpec;
pub use adversarial::AdversarialError;
pub use adversarial::AdversarialResult;
pub use adversarial::AdversarialTactic;
pub use adversarial::AdversarialTestSummary;
pub use adversarial::BitFlipInjector;
pub use adversarial::CancellationToken;
pub use adversarial::CheckedArithmetic;
pub use adversarial::ConfigValidator;
pub use adversarial::InputValidator;
pub use adversarial::MonotonicClock;
pub use adversarial::RecoveryHandler;
pub use adversarial::ResourceLimiter;
pub use adversarial::ResourceUsage;
pub use double_blind::AuditEntry;
pub use double_blind::BlackBoxArtifact;
pub use double_blind::FalsificationClaim;
pub use double_blind::FalsificationCriterion;
pub use double_blind::ReleaseDecision;
pub use double_blind::Role;
pub use double_blind::ScorecardComponent;
pub use double_blind::ScorecardV2;
pub use double_blind::SessionState;
pub use double_blind::VerificationAttempt;
pub use double_blind::VerificationReport;
pub use double_blind::VerificationResult;
pub use double_blind::VerificationSession;
pub use tracing_escalation::EscalationReason;
pub use tracing_escalation::EscalationThresholds;
pub use tracing_escalation::OtlpSpanAttributes;
pub use tracing_escalation::SyscallBreakdown;
pub use tracing_escalation::TraceResult;
pub use tracing_escalation::TracingEscalation;
pub use roofline::BatchRooflineAnalysis;
pub use roofline::BatchSummary;
pub use roofline::BottleneckType;
pub use roofline::HardwareProfile;
pub use roofline::RooflineAnalysis;
pub use roofline::RooflinePlot;
pub use roofline::RooflinePlotPoint;
pub use roofline::WorkloadMetrics;
pub use fuzz::bound_value;
pub use fuzz::checked_add_u64;
pub use fuzz::checked_mul_u64;
pub use fuzz::safe_div;
pub use fuzz::sanitize_float;
pub use fuzz::test_float_edge_cases;
pub use fuzz::test_u64_edge_cases;
pub use fuzz::FuzzFailure;
pub use fuzz::FuzzInputValidator;
pub use fuzz::FuzzResult;
pub use fuzz::FuzzSuite;
pub use fuzz::FuzzSummary;
pub use fuzz::FuzzTargetConfig;
pub use fuzz::FuzzValidationError;
pub use statistics::bootstrap_ci;
pub use statistics::percentile;
pub use statistics::trimmed_mean;
pub use statistics::ComparisonResult as StatisticalComparison;
pub use statistics::EffectCategory;
pub use statistics::EffectSize;
pub use statistics::MannWhitneyResult;
pub use statistics::OutlierFilter;
pub use statistics::StatisticalAnalysis;
pub use cache_analysis::elementwise_working_set;
pub use cache_analysis::matrix_working_set;
pub use cache_analysis::optimal_matmul_tile;
pub use cache_analysis::AccessPattern;
pub use cache_analysis::BandwidthPrediction;
pub use cache_analysis::CacheConfig;
pub use cache_analysis::CacheLevel;
pub use cache_analysis::WorkingSetAnalysis;
pub use latency_distribution::DistributionShape;
pub use latency_distribution::HistogramBucket;
pub use latency_distribution::LatencyDistribution;
pub use latency_distribution::LatencyHistogram;
pub use latency_distribution::TailSeverity;
pub use variance_analysis::VarianceAnalysis;
pub use variance_analysis::VarianceInput;
pub use variance_analysis::VarianceSource;
pub use profile_persistence::BackendConfig as ProfileBackend;
pub use profile_persistence::ProfileConfig;
pub use profile_persistence::ProfileError;
pub use profile_persistence::ProfileManager;
pub use profile_persistence::ProfileOverlay;
pub use profile_persistence::ProfileResult;
pub use profile_persistence::WorkloadConfig as ProfileWorkload;
pub use golden_trace::GoldenComparator;
pub use golden_trace::GoldenTrace;
pub use golden_trace::GoldenTraceError;
pub use golden_trace::GoldenTraceManager;
pub use golden_trace::GoldenTraceResult;
pub use golden_trace::SyscallBreakdown as TraceSyscallBreakdown;
pub use golden_trace::SyscallBreakdownDelta;
pub use golden_trace::TraceComparison;
pub use golden_trace::TraceMetrics;
pub use thermal_prediction::analyze_thermal;
pub use thermal_prediction::assess_throttle_risk;
pub use thermal_prediction::CooldownRecommendation;
pub use thermal_prediction::RiskCategory;
pub use thermal_prediction::ThermalAnalyzer;
pub use thermal_prediction::ThermalCorrelation;
pub use thermal_prediction::ThermalPrediction;
pub use thermal_prediction::ThermalSample;
pub use thermal_prediction::ThermalVariance;
pub use thermal_prediction::ThrottleRisk;
pub use thermal_prediction::DEFAULT_THROTTLE_THRESHOLD_C;
pub use thermal_prediction::MIN_SAMPLES_FOR_ANALYSIS;
pub use backend_regression::Backend;
pub use backend_regression::BackendComparison;
pub use backend_regression::BackendMeasurement;
pub use backend_regression::BackendRecommendation;
pub use backend_regression::BackendRegressionDetector;
pub use backend_regression::BackendSummary;
pub use backend_regression::SizeCliff;
pub use backend_regression::TransferAnalysis;
pub use backend_regression::WorkloadType as BackendWorkload;
pub use correlation_analysis::CorrelationAnalyzer;
pub use correlation_analysis::CorrelationResult;
pub use correlation_analysis::EventSample;
pub use correlation_analysis::EventType;
pub use correlation_analysis::InterferenceCategory;
pub use correlation_analysis::InterferenceResult;
pub use correlation_analysis::IsolationAction;
pub use correlation_analysis::IsolationRecommendation;
pub use correlation_analysis::PerformanceSample;
pub use correlation_analysis::SystemSnapshot;
pub use performance_prediction::DataPoint;
pub use performance_prediction::FittedModel;
pub use performance_prediction::ModelType;
pub use performance_prediction::PerformancePredictor;
pub use performance_prediction::Prediction;
pub use performance_prediction::MIN_SAMPLES_FOR_FIT;
pub use anomaly_detection::Anomaly;
pub use anomaly_detection::AnomalyDetector;
pub use anomaly_detection::AnomalyReport;
pub use anomaly_detection::AnomalySeverity;
pub use anomaly_detection::AnomalyType;
pub use anomaly_detection::ChangePoint;
pub use anomaly_detection::DEFAULT_IQR_MULTIPLIER;
pub use anomaly_detection::DEFAULT_ZSCORE_THRESHOLD;
pub use anomaly_detection::MIN_SAMPLES_FOR_DETECTION;
pub use workload_characterization::ClassificationResult;
pub use workload_characterization::RecommendedBackend;
pub use workload_characterization::WorkloadCategory;
pub use workload_characterization::WorkloadCharacterizer;
pub use workload_characterization::WorkloadFeatures;
pub use export_reporting::BenchmarkMetric;
pub use export_reporting::BenchmarkReport;
pub use export_reporting::ComparisonEntry;
pub use export_reporting::ComparisonReport;
pub use export_reporting::ExportFormat;
pub use export_reporting::ReportBuilder;
pub use export_reporting::ReportExporter;
pub use export_reporting::ReportType;
pub use adaptive_threshold::LearnedThreshold;
pub use adaptive_threshold::ThresholdCheck;
pub use adaptive_threshold::ThresholdDirection;
pub use adaptive_threshold::ThresholdLearner;
pub use adaptive_threshold::DEFAULT_CONFIDENCE_LEVEL;
pub use adaptive_threshold::DEFAULT_OUTLIER_THRESHOLD;
pub use adaptive_threshold::MIN_SAMPLES_FOR_LEARNING;
pub use frequency_control::CpuFrequencyInfo;
pub use frequency_control::CpuGovernor;
pub use frequency_control::FrequencyController;
pub use frequency_control::FrequencyLock;
pub use frequency_control::FrequencyReading;
pub use frequency_control::FrequencyVariance;
pub use context_regression::BaselineEntry as ContextBaselineEntry;
pub use context_regression::ContextRegressionPredictor;
pub use context_regression::RegressionCheck;
pub use context_regression::RegressionThreshold;
pub use context_regression::SystemContext;
pub use context_regression::Trend;
pub use context_regression::DEFAULT_COLD_START_MARGIN;
pub use context_regression::DEFAULT_STALENESS_SEC;
pub use context_regression::MIN_SAMPLES_FOR_CONTEXT;
pub use alerting::alert_from_anomaly;
pub use alerting::Alert;
pub use alerting::AlertChannel;
pub use alerting::AlertRouter;
pub use alerting::AlertRouterConfig;
pub use alerting::AlertSeverity;
pub use alerting::DeliveryResult;
pub use alerting::MessageTemplate;
pub use prometheus::validate_metric_name;
pub use prometheus::CounterValue;
pub use prometheus::GaugeValue;
pub use prometheus::HistogramBuckets;
pub use prometheus::HistogramValue;
pub use prometheus::Labels;
pub use prometheus::MetricDef;
pub use prometheus::MetricType;
pub use prometheus::MetricsRegistry;
pub use prometheus::DEFAULT_BUCKETS;
pub use prometheus::DEFAULT_MAX_LABELS;
pub use cost_tracker::default_gpu_pricing;
pub use cost_tracker::BudgetAlert;
pub use cost_tracker::CloudProvider;
pub use cost_tracker::CostComparison;
pub use cost_tracker::CostResult;
pub use cost_tracker::CostTracker;
pub use cost_tracker::EnergyMeasurement;
pub use cost_tracker::GpuPricing;
pub use cost_tracker::DEFAULT_CARBON_INTENSITY;
pub use cost_tracker::JOULES_PER_KWH;
pub use event_streaming::compress_data;
pub use event_streaming::event_from_sample;
pub use event_streaming::EventBatch;
pub use event_streaming::EventStreamer;
pub use event_streaming::MetricEvent;
pub use event_streaming::RetryConfig;
pub use event_streaming::SinkHealth;
pub use event_streaming::SinkType;
pub use event_streaming::DEFAULT_BATCH_SIZE;
pub use event_streaming::SCHEMA_VERSION;
pub use remote_agent::AggregatedResult;
pub use remote_agent::AggregationStrategy;
pub use remote_agent::AuthMethod;
pub use remote_agent::CommandResult;
pub use remote_agent::HostBenchmark;
pub use remote_agent::HostConfig;
pub use remote_agent::HostHealth;
pub use remote_agent::HostState;
pub use remote_agent::RemoteAgent;
pub use remote_agent::RemoteAgentConfig;
pub use remote_agent::RemoteError;
pub use remote_agent::RemoteResult;
pub use remote_agent::DEFAULT_HEALTH_CHECK_INTERVAL_SEC;
pub use remote_agent::DEFAULT_MAX_CONCURRENT;
pub use remote_agent::DEFAULT_RETRY_DELAY_MS;
pub use profile_compare::BenchmarkProfile;
pub use profile_compare::ChangeDirection;
pub use profile_compare::CompareConfig;
pub use profile_compare::CompareError;
pub use profile_compare::CompareResult;
pub use profile_compare::ComparisonVerdict;
pub use profile_compare::EffectMagnitude;
pub use profile_compare::EffectSizeResult;
pub use profile_compare::MetricComparison;
pub use profile_compare::MetricSamples;
pub use profile_compare::ProfileComparator;
pub use profile_compare::ProfileComparison;
pub use profile_compare::WelchTestResult;
pub use profile_compare::DEFAULT_CONFIDENCE_LEVEL as COMPARE_DEFAULT_CONFIDENCE_LEVEL;
pub use profile_compare::DEFAULT_REGRESSION_THRESHOLD as COMPARE_DEFAULT_REGRESSION_THRESHOLD;
pub use profile_compare::MIN_COMPARISON_SAMPLES;
pub use observability_backend::format_dogstatsd;
pub use observability_backend::BackendHealth;
pub use observability_backend::DatadogConfig;
pub use observability_backend::ExportMetric;
pub use observability_backend::ExportResult;
pub use observability_backend::HoneycombConfig;
pub use observability_backend::MetricExportType;
pub use observability_backend::NewRelicConfig;
pub use observability_backend::ObservabilityBackend;
pub use observability_backend::ObservabilityConfig as ObsBackendConfig;
pub use observability_backend::ObservabilityError;
pub use observability_backend::ObservabilityExporter;
pub use observability_backend::ObservabilityResult;
pub use observability_backend::OtlpConfig;
pub use observability_backend::WebhookConfig;
pub use observability_backend::DEFAULT_BATCH_SIZE as OBS_DEFAULT_BATCH_SIZE;
pub use observability_backend::DEFAULT_FLUSH_INTERVAL_MS;
pub use regression_pipeline::BenchmarkMetric as PipelineBenchmarkMetric;
pub use regression_pipeline::BenchmarkResults as PipelineBenchmarkResults;
pub use regression_pipeline::GitRef;
pub use regression_pipeline::MetricRegression;
pub use regression_pipeline::PipelineConfig;
pub use regression_pipeline::PipelineError;
pub use regression_pipeline::PipelineResult;
pub use regression_pipeline::PipelineStatus;
pub use regression_pipeline::RegressionAnalysis;
pub use regression_pipeline::RegressionPipeline;
pub use regression_pipeline::StatusCheck;
pub use regression_pipeline::DEFAULT_REGRESSION_THRESHOLD as PIPELINE_REGRESSION_THRESHOLD;
pub use regression_pipeline::DEFAULT_TIMEOUT_SEC;
pub use regression_pipeline::DEFAULT_WARNING_THRESHOLD;
pub use federated_metrics::AggregatedMetrics;
pub use federated_metrics::FederatedHost;
pub use federated_metrics::FederationConfig;
pub use federated_metrics::GCounter;
pub use federated_metrics::LwwRegister;
pub use federated_metrics::MetricsFederation;
pub use federated_metrics::OrSet;
pub use adaptive_ml::AdaptiveThresholdMl;
pub use adaptive_ml::AnomalyResult as MlAnomalyResult;
pub use adaptive_ml::ClassificationMetrics as MlClassificationMetrics;
pub use adaptive_ml::LearnedWorkloadThreshold;
pub use adaptive_ml::MlThresholdConfig;
pub use adaptive_ml::MlThresholdError;
pub use adaptive_ml::TimeSeriesFeatures;
pub use adaptive_ml::WorkloadClass;
pub use incremental_snapshot::DeltaMetric;
pub use incremental_snapshot::DeltaSnapshot;
pub use incremental_snapshot::IncrementalSnapshotStore;
pub use incremental_snapshot::MetricData;
pub use incremental_snapshot::ProfileSnapshot;
pub use incremental_snapshot::RetentionTier;
pub use incremental_snapshot::SnapshotConfig;
pub use incremental_snapshot::SnapshotError;
pub use incremental_snapshot::SnapshotIndex;
pub use incremental_snapshot::SnapshotQuery;
pub use predictive_scheduler::HostProfile;
pub use predictive_scheduler::InstanceType;
pub use predictive_scheduler::PredictiveScheduler;
pub use predictive_scheduler::PredictiveSchedulerConfig;
pub use predictive_scheduler::SchedulerMetrics;
pub use predictive_scheduler::SchedulingDecision;
pub use predictive_scheduler::WorkloadSpec as SchedulerWorkloadSpec;

Modules§

adaptive_ml
Dynamic Adaptive Thresholds with ML (PMAT-049)
adaptive_threshold
Adaptive Threshold Learning System (PMAT-037)
adversarial
Adversarial Falsification Testing (PMAT-019)
alerting
Real-Time Alert Integration System (PMAT-040)
anomaly_detection
Anomaly Detection Engine (PMAT-034)
app
cbtop Application State Machine
backend_regression
Cross-Backend Regression Detector (PMAT-031)
baseline
Industry Baseline Validation (PMAT-016)
brick
Core Brick trait and types (PROBAR-SPEC-009 alignment)
bricks
Brick implementations for cbtop
cache_analysis
Cache Efficiency Analysis Module (PMAT-025)
config
Configuration for cbtop
context_regression
Context-Aware Regression Predictor (PMAT-039)
continuous_batcher
ContinuousBatcher Implementation (PMAT-015)
correlation_analysis
Multi-Metric Correlation Analysis (PMAT-032)
cost_tracker
Cost and Energy Efficiency Tracker (PMAT-042)
double_blind
Double-Blind Verification Framework (PMAT-020)
error
Error types for cbtop
event_streaming
Structured Event Streaming (PMAT-043)
export_reporting
Multi-Format Export System (PMAT-036)
federated_metrics
Federated Metrics Aggregation (PMAT-048)
frequency_control
CPU Frequency Control Backend (PMAT-038)
fuzz
Fuzz Testing Integration (PMAT-023)
golden_trace
Golden Trace Comparison (PMAT-029)
grammar
Grammar of ComputeBlock (§32)
headless
Headless benchmark mode for CI/CD and AI agent integration
incremental_snapshot
Incremental Profile Snapshots (PMAT-050)
ironman
Ironman Falsification Suite (F901-F920)
latency_distribution
Latency Distribution Analysis Module (PMAT-026)
observability_backend
Observability Backend Integrations (PMAT-046)
optimize
Optimization identification tooling for cbtop
paged_kv
PagedKvCache Implementation (PMAT-014)
performance_prediction
Performance Prediction Model (PMAT-033)
predictive_scheduler
PMAT-051: Predictive Scheduling Optimizer
profile_compare
Profile Diffing and A/B Comparison (PMAT-045)
profile_persistence
Profile Persistence and Rotation (PMAT-028)
prometheus
Prometheus Metrics Exporter (PMAT-041)
quantize
QuantizedBrick Implementation (PMAT-013)
regression_pipeline
CI/CD Regression Detection Pipeline (PMAT-047)
remote_agent
Remote SSH/Headless Agent Integration (PMAT-044)
ring_buffer
SIMD-optimized ring buffer for time-series data
roofline
Roofline Model Analyzer (PMAT-022)
statistics
Statistical Analysis Module (PMAT-024)
thermal_prediction
Thermal Trend Prediction (PMAT-030)
tracing_escalation
Tracing Escalation Framework (PMAT-021)
variance_analysis
Variance Source Analysis Module (PMAT-027)
workload_characterization
Workload Characterization System (PMAT-035)

Structs§

BrailleGraph
Time-series graph widget.
CellBuffer
Buffer of terminal cells with dirty tracking.
Color
RGBA color with values in the range [0.0, 1.0].
Constraints
Layout constraints that specify minimum and maximum sizes.
DiffRenderer
Differential renderer that minimizes terminal I/O.
DirectTerminalCanvas
Direct terminal canvas that implements presentar’s Canvas trait.
Meter
Horizontal meter widget displaying a percentage value.
Point
A 2D point with x and y coordinates.
Rect
A rectangle defined by position and size.
Size
A 2D size with width and height.
Table
Scrollable table widget with headers and rows.
TextStyle
Text style for rendering.

Enums§

ColorMode
Terminal color capability mode.
GraphMode
Render mode for the graph.

Traits§

Canvas
Canvas trait for paint operations.