39 Commits
Author SHA1 Message Date
NetworkCatsandClaude Opus 5.5 c05b71e33b Raise rate limits
Each IP may now make 120 requests per minute instead of 60. Under
load the limit drops to 60 RPM once the site reaches 600 RPS and to
30 RPM at 1000 RPS, instead of 30 and 15 RPM at 200 and 300 RPS.

One page load makes three or four requests, and many visitors share
an IP behind carrier-grade NAT or an office gateway, so the old
limits throttled real users. The old global thresholds were also far
below what the host can serve. Update the FAQ in every locale to
match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:33:39 +08:00
NetworkCats afb5bd4c9b downgrade to Vultr Regular Performance 1vCPU/1GB and tighten resource limits
Switch from High Frequency 2vCPU/2GB ($18/mo) to Regular Performance
1vCPU/1GB ($5/mo). Tighten HAProxy rate limits from 100/50/30 RPM to
60/30/15 RPM with lower global RPS thresholds (200/300 instead of
300/500). Reduce maxconn, socket buffers, file descriptor limits, and
Docker resource settings to fit within 1GB RAM constraints. Update all
user-facing content and translations across 14 locales.
2026-04-03 21:18:09 +08:00
NetworkCats ab66dba48c fix: self-host Simple Line Icons and improve info table spacing
Replace the cdnjs CDN dependency with locally hosted font files and a
minimal CSS file containing only the 4 icons used (check, minus,
magnifier, social-github). Remove the CDN preconnect links.

Also reduce the gap between the IP display and the info table divider,
fix vertical alignment of icon and text rows by switching to
vertical-align: middle, and override the icon line-height to match
table text.
2026-03-23 19:33:55 +08:00
NetworkCats 0ee38b44df fix: ensure city label is available for JS-rendered alt IP rows
When the primary IP lacks city data, the conditional <tr data-label="city">
row is absent from the DOM, so readLabels() cannot scrape the translated
label. Embed translated labels as data-l-* attributes on the <table> element
so they are always available regardless of which rows are rendered.
2026-03-23 18:23:42 +08:00
NetworkCats 991fd289a2 fix: improve accessibility to meet WCAG 2.2 AA/AAA standards
- Remove disruptive alert() on error pages, rely on role="alert" banner
- Add skip navigation link for keyboard users (WCAG 2.4.1)
- Fix heading hierarchy on error page (sr-only status text in h1)
- Add "opens in a new tab" screen reader hint on external links
- Wrap language selector in form with noscript submit button (WCAG 3.2.2)
- Add aria-label to copy-to-clipboard buttons and footer landmarks
- Use h2 for alt-IP section to maintain single h1 per page
- Add persistent underline on links for non-color identification (WCAG 1.4.1)
- Fix footer attribution contrast ratio to ~5.5:1 (WCAG 1.4.3)
- Add aria-busy/role=status loading announcements for skeleton state
- Add translations for new accessibility strings across all 14 locales
- Update integration tests to assert role="alert" instead of alert()
2026-03-22 18:21:29 +08:00
NetworkCats b76410abf4 modernize JS to ES2022+ module and fix CSS logical property consistency
Rewrite script.js from ES5 (IIFEs, var, .then() chains) to modern ES2022+:
const/let, arrow functions, template literals, async/await, optional
chaining, for...of, .includes(), AbortSignal.timeout(), and DOM APIs
for dynamic HTML construction. Fix unhandled clipboard rejection, abort
timeout leak, and global scope pollution. Update script tag to
type="module" and fix CSS: top -> inset-block-start, flex-start -> start,
and indentation in media query block.
2026-03-22 18:01:05 +08:00
NetworkCats 5af03bf9b9 fix: PO parser escape order, proxy endpoint consistency, and accessibility bugs 2026-03-22 17:52:25 +08:00
NetworkCats ab7fb7c3c6 refactor: migrate templates to Askama custom i18n filter syntax
Replace all {{ t_field_name }} template variables with {{ "msgid"|t(locale) }}
filter calls across all 6 template files. This works with the #[askama::filter_fn]
defined in handlers/html.rs, which calls i18n::translate() directly.

Templates updated: index.html, error_alert.html, error_page.html,
_footer.html, _footer_lang.html, _search_form.html
2026-03-22 17:33:55 +08:00
NetworkCats bf3d96ac9c fix: use semantic data-label keys for alt-IP table row labels
The JS used fragile numeric indices to look up localized labels from the
server-rendered table. When optional rows (ASN, Org, Country, City) were
missing for the primary IP, the indices shifted, causing 'Proxy' to appear
as the City label. Add data-label attributes to each <tr> in the template
and key the label map by name instead of position.
2026-03-22 16:23:14 +08:00
NetworkCats d236302b09 fix: skip alt-IP detection when querying another IP address
The detectAltIp() function was unconditionally fetching the viewer's own
IPv6/IPv4 address and displaying it alongside queried IP results. Pass
the is_query flag to the client via a data attribute and guard the
alt-IP detection so it only runs when viewing your own IP.
2026-03-22 11:58:44 +08:00
NetworkCats ec91cd7738 refactor: remove FAQPage JSON-LD structured data block 2026-03-20 06:20:50 +08:00
NetworkCats 1872142bbb feat: add JS dual-stack IP detection with full info display 2026-03-11 04:40:05 +08:00
NetworkCats 2ed0bf3b6d feat: add click-to-copy IP address with localized tooltip 2026-03-07 03:56:05 +08:00
NetworkCats 30b65d5b25 refactor: extract inline JS into external static file with versioned caching 2026-03-07 03:28:23 +08:00
NetworkCats 79161773b6 feat: add JSON-LD and Microdata structured data for SEO 2026-03-06 21:03:19 +08:00
NetworkCats afc64ca809 feat: add Open Graph and Twitter image meta tags 2026-03-06 20:52:14 +08:00
NetworkCats 512455bf72 feat: add noindex meta tag to IP query result pages 2026-03-06 20:28:03 +08:00
NetworkCats d256834dd2 feat: link ASN to bgp.tools page 2026-03-06 05:27:49 +08:00
NetworkCats 42aa256f43 css 2026-03-06 04:24:32 +08:00
NetworkCats 199384a280 fix: resolve trailing slash 404 and untranslated escaped-quote strings 2026-03-04 20:48:59 +08:00
NetworkCats 17ea2a4c6a style: move language selector to right side of footer layout 2026-03-04 20:34:13 +08:00
NetworkCats 7e5a05b35a feat: add full i18n support for 14 languages with gettext PO translations
- Add i18n module with Locale enum, PO parser, and Accept-Language negotiation
- Create gettext .po translation files for en, es, de, ja, ko, id, fr, ru, pt, it, zh-Hant, zh-Hans, nl, ar
- Route HTML pages under /{lang}/ prefix using IETF language tags
- Auto-detect browser language and redirect from / to /{lang}/
- Add language selector dropdown in footer
- Localize geo names (country, city) from MMDB where available
- Add hreflang alternate links and multilingual sitemap for SEO
- Support RTL layout for Arabic
- Update integration tests for new routing structure
2026-03-04 20:11:16 +08:00
NetworkCats 503cb15674 edit html 2026-03-04 19:41:43 +08:00
NetworkCats 0f1d894d36 fix: hide empty IP info fields in HTML output 2026-03-04 03:41:23 +08:00
NetworkCats a7899354c1 refactor: extract base template, search form, and footer partials to eliminate duplication 2026-03-04 03:27:22 +08:00
NetworkCats 71c4c902c4 edit footer 2026-03-04 03:00:07 +08:00
NetworkCats cd762b33ab style: add GitHub icons to footer repository links 2026-03-04 01:44:20 +08:00
NetworkCats 675c8d3c2c feat: add site footer with license, repo links, and data attribution 2026-03-04 01:41:39 +08:00
NetworkCats 8e3bd95676 feat: add collapsible FAQ section to home page 2026-03-04 01:10:37 +08:00
NetworkCats a068e382ae feat: add security headers, caching headers, and static file versioning 2026-03-03 03:36:22 +08:00
NetworkCats e1570ddfbf perf: add preconnect hint for cdnjs.cloudflare.com 2026-03-03 03:22:35 +08:00
NetworkCats 5bc601e6e5 feat: improve SEO meta tags, robots.txt, sitemap.xml, and table accessibility 2026-03-03 03:14:40 +08:00
NetworkCats f480131809 style: modernize CSS with light-dark(), nesting, logical props, and fix a11y 2026-03-03 03:04:51 +08:00
NetworkCats b45e44c8e3 style: refine layout, soften dark mode colors, and lighten IP font 2026-03-03 02:56:33 +08:00
NetworkCats 3284c0281a refactor: remove search submit button in favor of Enter key 2026-03-03 02:20:35 +08:00
NetworkCats 4a19f9dd70 feat: adopt Apple color palette, dark mode, icons, and Google Fonts 2026-03-03 02:00:51 +08:00
NetworkCats 4415ed3ddc feat: update page title to static descriptive text 2026-03-03 01:25:14 +08:00
NetworkCats bfc1e213b9 fix: capitalize boolean values in HTML to match mockup 2026-03-02 20:14:55 +08:00
NetworkCats 9f3b38acac feat: add route handlers, router, SSR template, and CSS 2026-03-02 20:02:45 +08:00