Commit Graph

145 Commits

Author SHA1 Message Date
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
335bc6aee8 feat: add CopyButton and StatusBadge components with enhanced RDAP card UX
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
2025-10-22 12:56:30 -05:00
0e9336df1d refactor: reorganize project structure and consolidate network utilities
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.
2025-10-22 12:31:08 -05:00
7073936e6c feat: migrate to Radix UI and implement dark mode with next-themes
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.
2025-10-22 11:59:52 -05:00
611074b546 feat: implement Entity and Nameserver cards with type safety improvements
- 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
2025-10-22 11:02:50 -05:00
92fcef8fe2 fix: add security-events permission to CI workflow for SARIF uploads
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.
2025-10-22 09:59:55 -05:00
8283912c50 fix: update Husky hooks for v10 compatibility and fix test scripts
- 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)
2025-10-22 09:55:34 -05:00
98ab01158e fix: correct vitest integration test script for v3.x compatibility 2025-10-22 02:51:44 -05:00
c17f733da1 ci: implement comprehensive CI/CD and workflow automation
- 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
2025-10-22 02:48:18 -05:00
2c1f882cd9 refactor: replace Google Fonts with FontSource packages and migrate to cn utility
- 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
2025-10-22 02:22:39 -05:00
771a27da29 build: upgrade Tailwind CSS from v3 to v4
- 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
2025-10-22 02:11:09 -05:00
66bf588647 feat: upgrade to Next.js 15, React 19, and migrate to ESLint 9 flat config
Major framework upgrades:
- Next.js 13 → 15.5.6
- React 18.2.0 → 19.2.0
- ESLint 8 → 9 with flat config migration

Dependency updates:
- @headlessui/react, date-fns, zod, true-myth, usehooks-ts
- @typescript-eslint packages to v8
- TypeScript to v5.9.3
- Prettier to v3.6.2

Breaking changes:
- Migrate from .eslintrc.json to eslint.config.mjs
- Remove deprecated swcMinify option from next.config.mjs
- Update all React type definitions
2025-10-22 01:53:58 -05:00
5fb095a498 test: add comprehensive testing infrastructure with critical bug fixes
- Add Vitest testing framework with 88 passing tests across 4 test files
- Fix critical entity validator bug (service array index)
- Implement validator architecture with 'matched but invalid' state support
- Add strict IPv4/IPv6 validation with detailed error messages
- Add case-insensitive domain and ASN matching
- Add explicit validator priority ordering (url→json→tld→ip→domain)
- Add integration tests with real IANA registry validation
- Add AutnumCard component for AS number display
- Update dependencies: prettier 2.8.1→2.8.8

Test coverage:
- helpers.test.ts: IPv4/IPv6 CIDR matching (27 tests)
- helpers.asn.test.ts: ASN range validation (22 tests)
- rdap.test.ts: Type detection with edge cases (36 tests)
- rdap.integration.test.ts: Real IANA registry tests (3 tests)

Bug fixes:
- Entity validator now correctly uses service[1] for tags (0=email, 1=tags, 2=urls)
- IPv4 validation rejects octets >255 with specific error messages
- IPv6 validation checks for invalid hex chars and multiple ::
- Domain regex supports multi-label domains (a.b.c.d.example.net)
- Type detection priority prevents URL/JSON false matches as domains
2025-10-22 01:23:15 -05:00
09cd0bf49b build: migrate to pnpm and add vitest testing infrastructure
- Replace Yarn with pnpm as package manager
- Add Vitest with React Testing Library and happy-dom
- Configure test setup and add test scripts (test, test:ui, test:run)
- Add IPCard component and update lookup components
- Remove unused react-ogp dependency
- Add type-check script
2025-10-22 00:34:53 -05:00
ae81ce3ba0 fml 2024-05-12 16:34:27 -05:00
bb4ba75b38 Vercel linting error, removed unused import, add getTypeEasy callback dependency 2024-05-12 16:31:56 -05:00
ea8f1ac92b Update project version to 0.2.0, improve JSON placeholder 2024-05-12 16:22:13 -05:00
b3048086c3 Add await registry-informed getTypes method with smart entity tag validation
fuck type coloring madness
2024-05-12 02:10:15 -05:00
15666716a6 Fix multi-line CSS import broken 2024-05-12 01:14:27 -05:00
c6a31f341c fix entity placeholder, pulse animate autodetected target, remove completed todo 2024-05-11 05:27:21 -05:00
88e822e286 Force nodeLinker node-modules for Yarn Berry v4 2024-05-11 02:50:42 -05:00
4acd1ae701 Fix query detection for Autnum 2024-05-11 02:50:30 -05:00
9f23ba979b Implement querying for TLD, URL, and JSON target types 2024-05-11 02:50:17 -05:00
431bb7b022 Update to yarn berry 2024-05-11 01:36:09 -05:00
abb6df7383 Add lock icon to non-autodetect target types 2024-05-11 01:33:16 -05:00
cdea57b6bf Update next to 13.5.6 2024-05-11 01:32:58 -05:00
19c3442144 type/import fixes, improve placeholder examples 2024-05-11 01:19:57 -05:00
83402d54f5 Update 'next' and '@headlessui/react'
Using latest v2 of HeadlessUI
Also removed unused text-left class on LookupInputButton
2024-05-11 01:19:35 -05:00
71a52ba2e3 Fix anchor HTML spec 2024-05-10 23:46:09 -05:00
9e48075d53 add repo/personal links to header 2024-05-10 06:05:53 -05:00
34a3c8efa6 Use placeholders constants with SimplifiedTargetType 2024-05-10 05:58:35 -05:00
e1ad2a8692 note de jure/de facto schema in README 2024-05-10 05:54:59 -05:00
ad9671c9fe implement de-facto schema 2024-05-10 05:52:05 -05:00
29e294d951 Add actions: copy to clipboard, download response file 2024-05-10 05:43:55 -05:00
597863ea70 Add metadata to ParsedGeneric submit response 2024-05-10 05:42:43 -05:00
670e8c377a Improve unexpected status code handling 2024-05-10 02:45:39 -05:00
f95e0de5bb type assert bootstrapItem as min length 1 2024-05-10 02:36:25 -05:00