Implements a synchronized date format toggle across all timestamps
with persistent user preferences. Timestamps now support three format
views (relative, absolute, ISO) with tooltips and copy functionality.
Adds automatic timezone detection and display.
Add data-cfasync attribute to next-themes script injection to disable
Cloudflare Rocket Loader for the theme script, preventing FOUC (flash
of unstyled content) when the page loads.
- Update version from 0.2.0 to 0.9.0
- Upgrade Vitest from v3 to v4 for improved testing capabilities
- Add @vitest/coverage-v8 for comprehensive code coverage reporting
- Enhance GitHub Actions CI workflow with separate unit and integration
test runs
- Integrate Codecov v5 for coverage reporting and test results tracking
- Add JUnit reporter for better test result analysis
- Configure @codecov/vite-plugin for automated coverage collection
- Add domain and IPv4 query screenshots to .media/
- Expand README with detailed feature list, installation guide, and architecture overview
- Add badges for version, license, CI, codecov, TypeScript, Next.js, and React
- Document RDAP protocol explanation, query capabilities, and supported entity types
- Include dark mode feature, shareable links, and self-hosting instructions
- Update copyright year to 2025 in LICENSE
Extracted RDAP query execution logic from useLookup hook into dedicated
rdap-query.ts service, improving code organization and reusability.
Created type-detection.ts service to centralize target type detection
and validation logic. Added HttpSecurityError class for better error
handling of HTTP security warnings. Reduced debounce delay from 150ms
to 75ms for improved responsiveness.
Add comprehensive support for JSContact (RFC 9553) format as an
alternative
to vCard in RDAP responses, along with HTTP redirect handling.
Features:
- Add query parameter support for jsContact and followReferral options
- Implement complete JSContact Zod schemas and TypeScript types
- Create JSContactDisplay component with full contact data rendering
- Add ContactDisplay wrapper for automatic format detection
- Wire up form values through lookup hook to RDAP requests
- Implement HTTP redirect handling with manual/follow modes
- Update EntityCard and EntitiesSection to support both formats
- Add Badge component to display autodetection status with color coding
- Show green "Auto" badge when type is detected, red when unknown
- Prevent badge flickering during empty-to-non-empty input transitions
- Increase lock icon size from 14x14 to 16x16 pixels with blue color
- Track input state to manage smooth badge transitions
Major improvements to RDAP card components:
- Add tooltips to action buttons in AbstractCard for better UX
- Implement dedicated section components (EntitiesSection, LinksSection,
NameserversSection, RemarksSection, SecureDNSSection, VCardDisplay)
- Add conditional rendering for optional fields across all card types
- Enhance Entity and Nameserver cards with full data display
- Add WHOIS server (port43) display to relevant cards
- Improve visual hierarchy with nested entity displays
- Fix autodetection to only run when in autodetect mode
- Add proper null/undefined checks throughout components
This commit introduces two new reusable components and significantly
improves the user experience across all RDAP cards:
New Components:
- CopyButton: Provides one-click copying functionality for handles,
addresses, and other identifiers
- StatusBadge: Displays color-coded status badges with proper type
safety
RDAP Card Enhancements:
- Replace deprecated ClipboardCopyIcon with ClipboardIcon
- Add copy buttons next to all handles, addresses, and identifiers
- Migrate status displays from PropertyList to StatusBadge components
with color coding
- Replace PropertyList with proper DataList components for roles and
public IDs
- Improve Events table layout and styling
- Wrap all copyable values in Code components for better visual
distinction
Type Safety Improvements:
- Add rdapStatusColors mapping with proper Radix UI badge color types
- Update IpNetwork and AutonomousNumber schemas to use typed
StatusEnum arrays
Major restructuring to improve codebase organization:
- Moved test files to src/__tests__/ directory
- Reorganized UI components from src/components/common to src/components/ui
- Consolidated RDAP-related code into src/rdap/ directory structure
- Split network helpers into modular files (asn.ts, ipv4.ts, ipv6.ts)
- Created centralized exports via src/lib/network/index.ts
- Migrated utility functions from src/helpers.ts to src/lib/utils.ts
- Separated RDAP services into dedicated modules (rdap-api.ts, registry.ts, url-resolver.ts)
This refactoring enhances code maintainability and follows a clearer separation of concerns.
Replace @headlessui/react and @heroicons/react with @radix-ui/themes and
@radix-ui/react-icons for a more comprehensive component library. Add
next-themes for dark mode support with a new ThemeToggle component. Update
all components to use Radix UI primitives and theming system, including
AbstractCard, DynamicDate, ErrorCard, Property, PropertyList, LookupInput,
and all card components (AutnumCard, DomainCard, EntityCard, IPCard,
NameserverCard). Update global styles and app configuration to support theme
switching.
- Add EntityCard component to display entity information with handle, roles, and public IDs
- Add NameserverCard component to display nameserver details
- Integrate new cards into Generic component for proper object rendering
- Remove unused dependencies (immutability-helper, type-fest)
- Enhance type safety in LookupInput with Zod validation
- Replace console.log statements with appropriate comments
- Initialize registryDataRef with proper typed default values
- Remove unused code and debug logging from rdap.ts and useLookup hook
- Update Object.entries type definition without external dependency
Adds security-events: write permission to the CI workflow to allow the
Security Scan job to upload Trivy SARIF results to GitHub Code Scanning.
This resolves the "Resource not accessible by integration" error.
- Remove deprecated shebang lines from Husky hooks
- Fix test:run to properly exclude integration tests
- Update test:integration to directly specify integration test file
- All test suites now working correctly (85 unit + 3 integration tests)
- Add GitHub Actions workflows for CI, release, and deployment
- Configure Renovate for automated dependency updates
- Set up Husky pre-commit hooks with lint-staged
- Add commitlint for enforcing Conventional Commits
- Configure semantic-release for automated versioning
- Add Prettier configuration for consistent formatting
- Reformat codebase with new formatting rules
- Replace Google Fonts CDN with self-hosted FontSource packages
- Add @fontsource-variable/inter for variable Inter font
- Add @fontsource/ibm-plex-mono with weight 400 for monospace font
- Create src/lib/utils.ts with shadcn's cn utility function
- Install tailwind-merge for intelligent Tailwind class merging
- Replace all clsx usages with cn utility across components
- LookupInput.tsx: 7 replacements
- ErrorCard.tsx: 1 replacement
- Property.tsx: 2 replacements
- Remove Google Fonts URL import from globals.css
- Migrate from Tailwind CSS 3.x to 4.1.15
- Replace autoprefixer with @tailwindcss/postcss 4.1.15
- Update PostCSS configuration for Tailwind v4 compatibility
- Convert globals.scss to globals.css for CSS-first configuration
- Remove legacy tailwind.config.cjs in favor of CSS-based config
- Update all component imports to use new globals.css
- Remove old.tsx.disabled file