Commit Graph

181 Commits

Author SHA1 Message Date
renovate[bot]
27fb354800 chore(deps): update dependency @posthog/nextjs-config to v1.3.9 (#17)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-05 07:54:58 +00:00
renovate[bot]
b7c2a6a14c chore(deps): update dependency react-hook-form to v7.66.0 (#16)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 04:37:40 +00:00
renovate[bot]
60677a2efa chore(deps): update testing packages to v4.0.5 (#15)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-03 04:58:43 +00:00
renovate[bot]
4d03b92688 chore(deps): update dependency sass to v1.93.3 (#14)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-03 01:42:05 +00:00
renovate[bot]
f59293167b chore(deps): update dependency happy-dom to v20.0.10 (#13)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-02 20:31:20 +00:00
renovate[bot]
507f903139 chore(deps): update dependency @types/node to v24.9.2 (#12)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-02 18:08:09 +00:00
renovate[bot]
1c80fb3cd6 chore(deps): update dependency @posthog/nextjs-config to v1.3.8 (#11)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-02 13:13:44 +00:00
renovate[bot]
ae4ba813b9 chore(deps): update dependency @mantine/hooks to v8.3.6 (#10)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-02 10:32:59 +00:00
ed1b1e1598 chore(config): format renovate config for consistency
Reformat .github/renovate.json arrays to single-line format for
better readability and consistency with common JSON formatting
practices.
2025-10-27 02:24:44 -05:00
renovate[bot]
19e646ca0d chore(deps): update tailwind css packages to v4.1.16 (#9)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-27 05:37:31 +00:00
renovate[bot]
fd6c23e44f chore(config): migrate config .github/renovate.json 2025-10-26 19:42:53 -05:00
renovate[bot]
2d6366aca1 chore(deps): update github/codeql-action action to v4 2025-10-26 19:41:45 -05:00
renovate[bot]
08ac97861c chore(deps): update actions/setup-node action to v6 2025-10-26 19:41:38 -05:00
renovate[bot]
c1955e2c6e chore(deps): update actions/checkout action to v5 2025-10-26 19:41:08 -05:00
b8b4b619ce ci: use pnpm version from packageManager field
Remove explicit PNPM_VERSION environment variable and version
specification from pnpm/action-setup@v4. The action now
automatically reads the version from package.json's
packageManager field, eliminating version duplication.
2025-10-26 19:38:16 -05:00
renovate[bot]
d296068f9b chore(deps): update dependency lint-staged to v16 (#7)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-25 13:28:06 +00:00
renovate[bot]
0af52f5d10 chore(deps): update commitlint monorepo to v20 (#6)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-25 09:34:10 +00:00
renovate[bot]
359b9da7ae chore(deps): update pnpm to v9.15.9 (#2)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 07:13:36 +00:00
5fde7d249f feat: add PostHog telemetry with privacy-focused tracking
Integrate optional PostHog telemetry to track page views, RDAP queries,
user interactions, and errors while maintaining user privacy.

Key features:
- Type-safe event tracking with discriminated unions
- Automatic source map upload for production error tracking
- Privacy protections (query targets excluded from successful lookups)
- Do Not Track (DNT) header support
- Optional telemetry (disabled by default without environment variables)
- Error boundary with automatic error tracking
- Context-based telemetry integration throughout UI components

Environment variables required for telemetry:
- NEXT_PUBLIC_POSTHOG_KEY: PostHog project API key (client-side)
- NEXT_PUBLIC_POSTHOG_HOST: PostHog API endpoint (client-side)
- POSTHOG_PERSONAL_API_KEY: Source map upload key (server-side)
2025-10-23 18:00:24 -05:00
5fcf9dd94b refactor: reorganize project structure and consolidate test files
Consolidate test files into centralized __tests__ directory with clearer
naming. Rename utility modules for improved clarity and consistency.
Rename Generic component to RdapObjectRouter to better reflect purpose.
2025-10-23 16:34:05 -05:00
2f23dd33e9 refactor: simplify npm scripts and streamline CI workflow
Consolidate package.json scripts from 17 to 10 by removing
redundant test variants and combining type-check + lint into
a single 'check' command. Update CI workflow to use simplified
commands and merge separate unit/integration test steps into
unified test execution. Update documentation to reflect new
script structure.
2025-10-23 16:05:11 -05:00
5c9c6defc4 ci: remove unnecessary build artifact upload step
Remove the upload-artifacts step from the CI workflow as it was
not being utilized and adds unnecessary complexity to the pipeline.
2025-10-23 15:56:13 -05:00
31706a1623 refactor: introduce unified contact parsing and display system
Extracts contact information parsing logic into reusable parsers for
both JSContact and vCard formats. Introduces ContactTable component
for consistent contact rendering across both formats, reducing code
duplication and improving maintainability.

- Add contact-parser.ts with parseJSContact() and parseVCard()
- Add ContactTable component for unified contact display
- Refactor JSContactDisplay and VCardDisplay to use new parsers
- Add comprehensive test suite for contact parsers (488 test cases)
- Move WHOIS Server field to DataList in EntitiesSection
- Fix DynamicDate tooltip to avoid duplicate time display
- Standardize import paths to use @ alias
- Update tooltip text for RDAP URL button clarity
2025-10-23 15:41:55 -05:00
2c67f49e2f refactor: introduce EmDash component and improve table semantics
Created a reusable EmDash component to standardize placeholder rendering
across tables. Updated DynamicDate to use semantic <time> element instead
of Button wrapper. Improved table alignment with proper left/center/right
positioning in LinksSection and NameserversSection. Enhanced typography in
RemarksSection with medium font weight for headings.
2025-10-23 15:14:57 -05:00
704b8380f6 refactor: replace HoverCard with Tooltip in StatusBadge
Simplifies the status information display by using the lighter-weight
Tooltip component instead of HoverCard, providing more immediate
feedback on hover while maintaining the same functionality.
2025-10-23 15:02:54 -05:00
a257675bf7 refactor: improve icon handling with component-based approach
Replace ReactNode icon props with IconComponent type for better
type safety and consistency. Add configurable iconSize prop to
control icon dimensions. Update ShareButton to pass icon
components instead of JSX elements.
2025-10-23 14:58:26 -05:00
9350864929 test: add comprehensive edge case tests and fix IPv6/domain validation
Enhances type detection validation to prevent false positives from
ambiguous inputs. IPv6 validation now requires at least one colon and
rejects invalid patterns like ":::" or single characters. Domain
validation rejects pure numeric strings that are likely incomplete IP
addresses. Includes 274 new test cases covering single characters,
short hex strings, incomplete IPs, and boundary conditions.
2025-10-23 14:51:16 -05:00
5646fd8006 feat: add entity lookup support and administrative/reserved status types
Implements RDAP entity lookups with service provider tag resolution
and adds support for two additional IANA-defined status types
(administrative and reserved) to improve RDAP compliance and coverage.
2025-10-23 14:31:26 -05:00
0fa8abf490 refactor: unify copy-to-clipboard functionality with enhanced UX
Consolidate clipboard copy logic into a reusable CopyButton component with
visual feedback (checkmark, tooltip, color change). Replace inline clipboard
code in AbstractCard and ShareButton with the new component. Add type guards,
memoization, and improved error handling throughout.
2025-10-23 14:23:57 -05:00
698328f445 refactor: simplify ThemeToggle with config-driven approach
Replace imperative theme toggling logic with declarative
THEME_CONFIG object for cleaner, more maintainable code.
Add type safety with Theme type and isTheme type guard.
2025-10-23 13:10:00 -05:00
a51d21df83 feat: add shareable URL functionality with copy-to-clipboard button
Implement URL parameter serialization for sharing RDAP queries with
deep linking support. Add ShareButton component with clipboard
integration and visual feedback. Queries are automatically restored
from URL parameters on page load, enabling direct navigation to
specific RDAP lookups.
2025-10-23 11:59:33 -05:00
ada17fc9a9 feat: add dynamic filename generation for RDAP JSON downloads
Implement context-aware filename generation for downloaded RDAP
responses, replacing the generic "response.json" with descriptive
names based on object type, identifier, and query timestamp.
Filenames follow the pattern: rdap-{type}-{identifier}-{timestamp}.json,
with automatic CIDR conversion for IP networks and proper sanitization
of special characters.
2025-10-23 11:12:58 -05:00
9635098102 feat: add three-way theme toggle with system preference support
Enhanced ThemeToggle component to cycle through light, dark, and system
themes instead of just toggling between light and dark. Added DesktopIcon
for system theme state and improved accessibility with descriptive labels
showing current and next theme states.
2025-10-23 11:01:02 -05:00
a2a83e9593 feat: add OverlayScrollbars for improved scrolling UI
Replace native ScrollArea with OverlayScrollbars library in
AbstractCard raw view and main page layout. Provides consistent,
customizable scrollbars with auto-hide behavior across the
application.
2025-10-23 10:21:48 -05:00
d1b27a734a refactor: remove JSContact and referral UI controls
Remove interactive checkbox controls for JSContact and referral
options from LookupInput component. These features are now enabled
by default in form configuration. Cleanup includes removing unused
Controller import and simplifying form state management.
2025-10-23 10:11:15 -05:00
ec9509e880 refactor: replace lucide-react with Radix icons and add GitHub link
Replace lucide-react dependency with Radix UI's native icon system.
Increase theme toggle icon size from 18px to 22px for better visibility.
Add GitHub repository link with icon button in the navigation header.
2025-10-23 10:06:54 -05:00
83556e950b feat: add global date format preferences with timezone support
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.
2025-10-23 09:58:09 -05:00
0f5e3ea56a fix: prevent theme flashing with Cloudflare Rocket Loader
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.
2025-10-23 01:06:55 -05:00
852277d648 ci: enhanced CI/CD and test coverage
- 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
2025-10-23 01:04:52 -05:00
c7852ddab4 docs: add comprehensive README with screenshots and feature documentation
- 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
2025-10-23 00:49:48 -05:00
07e1334173 style: prevent word-breaking in table header cells
Add CSS rules to prevent word-breaking, overflow-wrapping, and hyphenation
in Radix UI table column headers to maintain proper text formatting.
2025-10-23 00:00:43 -05:00
72c88fb719 refactor: extract RDAP query and type detection into separate services
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.
2025-10-22 23:37:36 -05:00
abbde855ed feat: implement JSContact and follow referral features
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
2025-10-22 22:12:58 -05:00
a0d3933c02 feat: maintain input focus after invoking search 2025-10-22 21:55:14 -05:00
2c458e0fcf fix: show href not value for links 2025-10-22 18:32:57 -05:00
86b7b5779e chore: remove top padding from abstract card 2025-10-22 18:27:40 -05:00
9e4c008680 feat: enhance LookupInput with visual badges and flicker-free detection
- 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
2025-10-22 17:19:29 -05:00
99b65363b4 fix: address code quality issues and critical bugs
- Fix getBestURL HTTPS prioritization bug (critical security issue)
- Standardize equality operators to === for status code checks
- Add JSON parsing error handling with try-catch
- Improve IP address validation with explicit error messages
- Fix ARIA label accessibility (add id="search" to TextField)
- Remove unused callback hook in useLookup
- Add type detection debouncing (150ms) using @mantine/hooks
- Remove duplicate LookupInput component from src/components/form/
2025-10-22 16:56:42 -05:00
3ff347b81f feat: enhance RDAP component rendering with comprehensive data display
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
2025-10-22 16:19:04 -05:00
48eb1c630b chore: remove semantic-release configuration and dependencies
Remove semantic-release workflow, configuration, and related dependencies as
they are no longer needed for this project's release process.
2025-10-22 13:00:35 -05:00