- Split type checking into two separate conditions for clarity
- Add early return when output contains non-string objects
- Ensure structured output like MikrotikBGPRouteTable passes through unchanged
- Prevent AttributeError on .strip() for tuple containing structured data
Resolves remaining crashes when processing already-structured BGP route data.
- Add type checking to handle already-processed structured output
- Skip processing when output is not raw strings (e.g., BGPRouteTable objects)
- Prevents AttributeError when trying to call .strip() on tuple/structured data
Fixes crash when MikroTik garbage plugin runs after structured parsing plugins.
- Change MikrotikGarbageOutput to apply to ALL MikroTik platform commands using common=True
- Add specialized traceroute output cleaning to handle progressive output and paging prompts
- Remove interactive paging prompts (-- [Q quit|C-z pause])
- Deduplicate traceroute hops to show only final results
- Clean up command echoes and empty progress lines
- Apply to custom directives automatically without manual configuration
Fixes messy traceroute output with repeated progress updates and interactive prompts.
- Add complete configuration reference (complete-config.mdx) with detailed parameter documentation, examples, and descriptions for all config.yaml options
- Add user guide (user-guide.mdx) explaining hostname resolution, 'My IP' feature, query types, and troubleshooting for end users
- Add quick-start configuration examples (quick-start.mdx) with 8 real-world scenarios: minimal, corporate, privacy-focused, high-performance, ISP, enterprise, development, and monitoring setups
- Update navigation structure (_meta.tsx files) to integrate new documentation sections
- Provide comprehensive coverage of DNS-over-HTTPS hostname resolution, myip.wtf IP detection, web UI customization, logging/webhooks, structured output, and theme configuration
- Include practical examples, use cases, troubleshooting tips, and best practices throughout
This addresses documentation gaps by providing both technical reference material for administrators and user-focused guidance for end users, with extensive real-world configuration examples.
- Update MikroTik parser to return -1 for unavailable age data instead of "0"
- Change age property return type from string to int for consistency
- Enhance frontend Age component to display "N/A" when age is -1
- Improve MonoField component to handle empty/undefined values gracefully
- Add appropriate tooltips and styling for missing data indicators
This addresses the issue where MikroTik devices don't provide route age
and source RID information, ensuring the UI displays user-friendly
indicators instead of potentially misleading placeholder values.
- Add new 'name' mode for BGP communities to append friendly names
- New configuration option `structured.communities.mode: name`
- Community mappings via `structured.communities.names` dictionary
- Communities display as "65000:1000 - Upstream Any" in UI
- Backward compatible with existing permit/deny modes
- Enhance RPKI configuration documentation
- Document both Cloudflare and Routinator backend options
- Add `structured.rpki.backend` and `structured.rpki.rpki_server_url` parameters
- Clarify Routinator web API endpoint usage vs RTR port
- Add comprehensive configuration examples
- Update structured output platform support
- Document all supported platforms: Arista EOS, FRRouting, Huawei VRP, Juniper Junos, Mikrotik RouterOS/SwitchOS
- Frontend enhancements
- Parse comma-separated community format in UI components
- Display friendly names alongside community codes
- Maintain existing functionality for communities without names
- Add validation and examples
- Validate that 'name' mode has community mappings configured
- Include example configuration and test cases
- Generic examples using ASN 65000 instead of specific networks
Expanded params config for rpki server URL and backend type for query switching and lookup handling.
Initial support for routinator server API endpoint.