Skip to content

Conversation

@timweine
Copy link
Owner

@timweine timweine commented Nov 3, 2025

Note

Removes Tailwind config, adds two packages to onlyBuiltDependencies, and performs minor code/comment and JSON formatting updates.

  • Build/Tooling:
    • Remove tailwind.config.js.
    • Update pnpm-workspace.yaml onlyBuiltDependencies to include @tailwindcss/oxide and maplibre-gl.
  • Server:
    • Adjust UAParser option typings in server/utils/access-log.ts using @ts-expect-error.
  • Data:
    • Reformat public/colos.json to pretty JSON.

Written by Cursor Bugbot for commit 342da35. This will update automatically on new commits. Configure here.

WuChenDi and others added 30 commits August 7, 2025 22:11
- Upgrade Nuxt from 3.17.4 to 4.0.3
- Remove future.compatibilityVersion configuration
build(nuxt): upgrade Nuxt version
Added instructions for naming datasets and updating wrangler.jsonc.
Streamlines project documentation by replacing verbose AGENT.md with a more focused AGENTS.md guide that:

- Simplifies project structure explanation
- Clarifies development workflow and commands
- Updates coding standards and conventions
- Provides clearer testing and PR guidelines
- Reorganizes security and configuration guidance

Removes redundant symlinks to create a single source of truth for project guidelines.
Updates package version for next release iteration.
miantiao-me and others added 30 commits February 8, 2026 19:00
Replaces standard and deep watchers with throttled watchers across all analytics components to reduce API call frequency during rapid filter/date range changes.

Implements 500ms throttle with both leading and trailing execution to balance immediate feedback with performance optimization.

Removes manual AbortController logic from heatmap and views components as throttling provides sufficient request management.
Adds proper autocomplete attributes and hidden username field to enhance password manager integration for the login form.

Password managers require a username field to properly associate and save credentials. Includes a hidden, read-only username field with appropriate ARIA attributes to satisfy password manager requirements without affecting the UI.

Adds autocomplete attributes to the password field to ensure proper credential recognition and autofill behavior across different browsers and password managers.
Removes query parameters from URLs before storing them in metadata to ensure cleaner URL storage and prevent potential issues with query string variations.

Introduces a utility function to parse URLs and strip their query strings, then applies this transformation consistently across link storage operations.
Replaces CSS class-based responsive behavior with Vue reactive media query detection for cleaner conditional rendering.

Uses VueUse's useMediaQuery to determine desktop breakpoint, enabling proper v-if/template directives instead of CSS hidden classes. Improves maintainability by consolidating mobile/desktop layout logic and reducing class verbosity.
Improves error handling in redirect middleware by explicitly throwing a 404 error when a requested link is not found.

Previously, the code would silently fail or fall through without proper error feedback when a link lookup returned no results. Now returns a clear "Link not found" error with proper HTTP status code, improving API consistency and debugging experience.
Removes centralized HeaderActions component and distributes actions directly into each page component using Vue's Teleport feature. Each page now manages its own header controls, improving component locality and reducing prop drilling.

Benefits include better component isolation, simplified layout logic, and more maintainable code structure. The responsive behavior for mobile/desktop views is now handled within each page context rather than through conditional props.
Introduces link cloaking functionality that masks destination URLs by displaying the short link domain in the browser address bar. The target page loads in a full-screen iframe instead of performing a traditional redirect.

Adds cloaking toggle option in link editor with multi-language support across all locales (EN, DE, FR, VI, ZH-CN, ZH-TW). Includes comprehensive FAQ documentation covering usage instructions, limitations with iframe-blocking sites, HTTPS requirements, and priority behavior with device redirects.

Implements cloaking HTML template generation with proper meta tags and sandbox attributes for security. Updates API schema to support the new boolean cloaking field.
Introduces a new `redirectWithQuery` field that allows individual links to override the global `NUXT_REDIRECT_WITH_QUERY` setting. When enabled, query parameters from the short link are appended to the destination URL.

Adds toggle control in the link editor UI under "Link Settings" section, with proper internationalization support across all supported languages (EN, DE, FR, VI, ZH-CN, ZH-TW).

Updates API documentation and FAQs to explain the feature and precedence rules: per-link settings take priority over global configuration, with fallback to global when not specified.

Implements the logic in redirect middleware to check link-specific setting before applying global default.
Reduces code duplication by extracting shared meta tag building logic into a reusable helper function. Both HTML generation functions now use the same meta tag construction, ensuring consistency and easier maintenance.

Also enhances Open Graph and Twitter Card meta tags in the cloaking HTML variant to match the full set of tags previously only available in the OG HTML variant.
Implements password protection feature allowing users to secure their short links with a password. When enabled, visitors must enter the correct password before accessing the destination URL.

Adds password field to link schema with validation (1-128 characters), along with UI components in the link editor under advanced settings. Includes middleware to handle password verification via POST request or custom header.

Provides a clean password prompt page displayed to users when accessing protected links. Includes translations for password protection labels and descriptions across all supported locales (en-US, de-DE, fr-FR, vi-VN, zh-CN, zh-TW).
Displays visit, visitor, and referer counts on each link card in the dashboard by fetching counter data from a new stats API endpoint.

Implements batch fetching of statistics for newly loaded links to avoid redundant API calls. Provides counter data through Vue's provide/inject pattern to child components and shows skeleton loaders while data is pending.

Modifies the stats API to support multiple link IDs in a single request and groups results by link ID for efficient bulk queries.

Enhances link card layout to accommodate the new statistics badges with responsive flexbox positioning.
Moves date/time range logic and URL synchronization from components into their respective stores (analysis and realtime). Components now directly call store methods instead of emitting events and managing local state.

Introduces init() method in stores to handle restoration from URL parameters with proper initialization order (URL > Store > Default). Adds watch() to automatically sync store state to URL after initialization.

Replaces event-based communication with direct store method calls (selectPreset, updateDateRange). Extracts time range computation into dedicated functions outside stores.

Removes lazy loading from frequently used components and cleans up unused imports across multiple files.

Simplifies counters query by making id column conditional based on query parameters.
Moves filter initialization from internal URL parsing to parent component responsibility. The Filters component now receives filters as props from the store, eliminating the need for local URL parameter handling and the safeDestr dependency.

Improves component separation of concerns by making the parent pages (analysis and realtime) responsible for passing filter state from their respective stores to the Filters component.

Removes the restoreFilters function and onBeforeMount hook as filter restoration is now handled upstream.
Automates duplicate issue detection using AI to help maintainers identify and manage redundant issue submissions.

When new issues are opened, the workflow uses opencode with configurable AI models to search through existing issues and identify potential duplicates based on titles, descriptions, error messages, and related functionality.

Automatically comments on new issues with links to similar existing issues when duplicates are found, encouraging users to check related discussions before proceeding.

Restricts AI permissions to only allow specific GitHub CLI commands for security, preventing arbitrary bash execution and web requests.
Implements automatic version checking to notify users when a new release is available.

Adds a composable that fetches the latest version from GitHub via CDN and compares it against the current version. When an update exists, displays an icon with animated indicator in the sidebar that links to the releases page.

Includes translations for the update notification message across all supported locales (English, German, French, Vietnamese, Chinese Simplified, and Chinese Traditional).
feat: add optional custom 404 redirect when slug is not found
Replaces intersection observer with requestIdleCallback for simpler deferred globe initialization, reducing complexity and improving initial page load.

Extracts sphere tessellation logic into a separate module and prebuilds geometry at build time, loading it as a binary asset at runtime. This eliminates redundant computation during page initialization.

Scales texture resolution based on container size to avoid generating unnecessarily large textures on smaller viewports, reducing memory usage and GPU processing time.

Adds OffscreenCanvas support for texture generation where available, enabling background rendering without blocking the main thread.

Fixes texture seam artifacts by adjusting shader UV wrapping and clamping horizontal wrap mode to edge instead of repeat.

Adds build:sphere script to generate precomputed sphere geometry binary.
Sets notFoundRedirect to empty string by default instead of reading from environment variable, effectively disabling custom 404 redirects unless explicitly configured.

Updates example configuration to show a placeholder value and removes redundant documentation example to simplify configuration guidance.
Synchronizes filter selection with URL parameters to ensure proper state restoration when filters are cleared or updated from the store. Prevents desync between UI and URL state.

Corrects date range restoration logic to prioritize custom time ranges over presets, preventing preset values from overriding explicit time selections.

Adds cache headers for static geographic data files to improve performance and reduce server load for immutable resources.

Prevents infinite redirect loops by bypassing redirect check when already on the not-found redirect path.

Updates cache control for cloaking responses to use no-store directive for better privacy compliance.

Expands API documentation to include missing link configuration options for cloaking, query parameter handling, and password protection.
Increments package version for new release
Replaces invalid 'ubuntu-slim' runner with 'ubuntu-latest' to ensure the duplicate issues workflow executes properly.

The ubuntu-slim runner type does not exist in GitHub Actions, causing workflow failures.
Enhances the version update notification by displaying both the available new version and the currently installed version. This provides users with complete context about their upgrade path, making it easier to understand the version delta at a glance.

Updates all locale files (de-DE, en-US, fr-FR, vi-VN, zh-CN, zh-TW) to include a {current} placeholder in the update message string, and modifies the sidebar component to pass the current version value to the translation function.
Replaces the duplicate-issues workflow with a more comprehensive issue-assistant that combines multiple functions into one.

The new workflow checks both documentation and existing issues, then posts a single consolidated comment when relevant information is found. This reduces noise by avoiding multiple comments and provides a better user experience with documentation references alongside duplicate detection.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants