46 Commits

Author SHA1 Message Date
Bartłomiej Janczak
e3f5480dea docs: minor formatting fix in README 2026-06-10 06:46:52 +02:00
Bartłomiej Janczak
db53540952 docs: update README with asset registration details and new migrations 2026-06-08 16:20:07 +02:00
Bartłomiej Janczak
9c4d693b25 release: v5.2.3 - Redis optimizations, stats scaling, DNS and CSP fixes 2026-06-08 16:11:47 +02:00
Bartłomiej Janczak
dd3e289be0 docs: add filament-hidden class to first image in README 2026-06-06 13:40:37 +02:00
Bartłomiej Janczak
4d1ea3c9bb docs: bake border-radius into screenshots, replace table with inline images 2026-06-06 10:59:32 +02:00
Bartłomiej Janczak
76019c8107 docs: rename hero image to bust GitHub CDN cache 2026-06-06 10:56:48 +02:00
Bartłomiej Janczak
4156269279 docs: full-width hero image with border-radius 2026-06-06 10:52:51 +02:00
Bartłomiej Janczak
68194fb81b docs: replace logo with plugin-filament.png, remove video walkthrough 2026-06-06 10:51:35 +02:00
Bartłomiej Janczak
043920836d Optimize redirect request lifecycle, bypass web middleware group, add stateful /s-auth/{key} route and fix test suites 2026-06-06 09:35:42 +02:00
Bartłomiej Janczak
73b8b875a8 video add 2026-06-06 08:35:44 +02:00
Bartłomiej Janczak
9493431017 docs: upgrade screenshots to version v3 and clean up old v2 files 2026-06-06 08:29:54 +02:00
Bartłomiej Janczak
822a3e6fa3 docs: use github hosted asset URL for inline video walkthrough 2026-06-06 08:16:06 +02:00
Bartłomiej Janczak
964a7364ef docs: add video walkthrough preview to README 2026-06-06 08:02:33 +02:00
Bartłomiej Janczak
e0602e80ef fix: correct comparison table with accurate competitor feature data
- Dub.co has A/B testing (they DO have it)
- Dub.co is open-source/partial self-hosted (AGPLv3, but needs Tinybird+PlanetScale)
- Bitly has deep linking on Premium/Enterprise (not completely missing)
- Bitly has webhooks on Enterprise (was missing)
- Rebrandly has retargeting pixels, deep linking, webhooks on paid plans
- Fixed Rebrandly pricing (zsh-49+ not zsh-499+)
- Added 'Filament/Laravel admin panel' row as unique differentiator
2026-06-06 02:57:21 +02:00
Bartłomiej Janczak
3592828ab3 feat: replace external logo with custom logo-fism.png 2026-06-06 02:52:47 +02:00
Bartłomiej Janczak
7082db495d fix: correct PHP to 8.3+ and Laravel to 11+ in README 2026-06-06 02:30:18 +02:00
Bartłomiej Janczak
f73803017f docs: README overhaul — natural language, SEO, comparison table, fixed requirements
- Rewrote intro: clear one-sentence summary + one-paragraph feature overview
- Removed AI-sounding 'Why choose' bullet list, replaced with prose
- Fixed duplicate emojis (two , two 🎯, two 🛡️, two 🎨, two 🔗, two 📊)
- Removed old '(new in v1.x.0)' markers from feature list
- Added vs. Bitly / Dub.co / Rebrandly comparison table (SEO: competitor keywords)
- Compressed 'Publishing Package Assets' from 4 h3 headers into a single code block
- Corrected PHP 8.3+ → 8.5+, Laravel 11+ → 13+
- Improved alt text on all screenshot img tags
- Better subtitle tagline under H1 for GitHub SEO
2026-06-06 02:28:54 +02:00
Bartłomiej Janczak
2107a3e6c8 feat: v5.0.0 — Live Feed page, Folders & Tags, Link Archiving, API scopes
## Analytics — Live Activity Feed
- Dedicated /stats/live standalone page (mirrors /stats/logs pattern)
- Consistent 3-tab navigation across Statistics / Live Feed / Visit Logs
- checkForUpdates() with skipRender(): O(1) MAX(id) poll — ~100-byte response on no-change
- latestVisitId sentinel (-1) prevents unnecessary first-poll re-render
- Cache key versioned by latestVisitId — fixes bug where concurrent users
  could permanently miss a visit due to stale thundering-herd cache
- 3-second thundering-herd cache (key: url_id + date + filters + latestVisitId)
- Country flags via flagcdn.com (precomputed in PHP, Alpine.js CSP-safe onerror)
- time_ago precomputed in PHP — no Carbon::parse() double-instantiation in Blade
- SELECT only 12 needed columns instead of SELECT *; limit 25 rows
- wire:poll.5s.visible — polling stops when widget is off-screen

## Link Organization
- Folders: one folder per link, clickable → filtered link list, link count badge
- Tags: up to 5 tags per link, clickable → filtered link list, link count badge
- Archiving: soft-archive links instead of permanent deletion; restorable

## REST API
- Per-key API scopes: links:read-only (GET) / links:read-write (full CRUD)
- Per-key rate limiting: individual requests/minute per API key

## Translations
- Added stats_live_feed_poll_interval (EN: 'Updates every 5s', PL: 'Aktualizacja co 5s')

## Docs
- README.md: corrected API scopes/rate-limiting docs (features were already implemented)
- README.md: added Folders, Tags, Archiving to features list
- README.md: added v5.0.0 changelog entry
2026-06-06 02:16:07 +02:00
Bartłomiej Janczak
aa05f026b5 feat: speed optimization, portability fixes, and documentation update for DNS resolution 2026-06-05 09:15:04 +02:00
Bartłomiej Janczak
15d992c5ad v3.3.0: Advanced Multi-Filter Targeting, Strict API Validation, Clean Configs, UX Improvements 2026-06-04 15:45:14 +02:00
Bartłomiej Janczak
719901d4c6 feat: expand developer REST API, modularize logo controller, and update README for v3.2.0 2026-06-04 14:29:07 +02:00
Bartłomiej Janczak
3b9411808e feat: Release v3.1.0 - Performance, Security, and Scalability updates 2026-06-04 12:53:54 +02:00
Bartłomiej Janczak
325a38bfe8 Update license badge color to violet in README 2026-06-04 12:09:40 +02:00
Bartłomiej Janczak
1cd85af0a1 Update license to proprietary source-available and add copyright headers 2026-06-04 12:07:31 +02:00
Bartłomiej Janczak
137a81dcab feat: Release v3.0.0 — Native App Linking, Deep Linking, Pixels Registry, and Custom Expiry Pages 2026-06-03 17:21:03 +02:00
Bartłomiej Janczak
276b75ad9f docs: Update README for v2.1.0 registry and language features 2026-06-03 14:57:45 +02:00
Bartłomiej Janczak
0d4eab2016 docs/feat: Add targeting and security fields support to API and README docs 2026-06-03 14:28:57 +02:00
Bartłomiej Janczak
0349825890 Add browser language-based redirect targeting strategy, localize language names, and clean up translations 2026-06-03 14:24:08 +02:00
Bartłomiej Janczak
e1e6ded015 Update README to document empty route prefix and automatic scheduler registration 2026-06-03 14:12:05 +02:00
Bartłomiej Janczak
26247fd94a Release v2.0.0: SVG QR Code Designer, visit counter buffering, Geo-IP and browser language tracking, dashboard redesign 2026-06-03 13:52:31 +02:00
Bartłomiej Janczak
48ecb8ed28 docs: add authorizeSettingsUsing documentation and v1.7.0 changelog entry 2026-06-02 20:39:19 +02:00
Bartłomiej Janczak
d1eb322cb6 Add visit logs screenshot (5.png) to README 2026-06-02 18:21:56 +02:00
Bartłomiej Janczak
34e4339c7c Release v1.6.0: Google Safe Browsing integration, VPN/Proxy/Bot filtering, and Visitor World Map widget 2026-06-02 17:56:16 +02:00
Bartłomiej Janczak
911e98a2e3 Release v1.5.1: Rest API toggle, webhook fault tolerance, time-boundary aggregation fix, pixel loading UI, and resolveRedirectUrl targeting rules alignment 2026-06-02 13:17:42 +02:00
Bartłomiej Janczak
bdef0b6687 feat: add api_enabled on/off toggle in settings + update README for v1.5 2026-06-02 11:10:10 +02:00
Bartłomiej Janczak
59e4fc0e6b v1.4.0: Add validity ranges, visit limit counters, custom redirects, and reactive controls 2026-06-02 09:16:47 +02:00
Bartłomiej Janczak
e5437dd0a6 Audit fixes: device targeting, query index optimizations, translation gaps, rate-limiting, and path consistency 2026-06-02 07:51:45 +02:00
Bartłomiej Janczak
65a1b126df feat: global overview widget, optimized cache, CSS asset docs
- Add ShortUrlGlobalOverview StatsOverviewWidget with split cache strategy:
  link counts cached forever (invalidated on create/delete), click stats
  with short TTL (geo_ip.stats_cache_ttl config)
- Fix visited_at column in ShortUrlVisit queries (was created_at)
- Disable Livewire polling (pollingInterval = null)
- Add cache invalidation for global overview in ShortUrl::booted()
- Rewrite README asset section: user-facing install instructions clarified,
  post-autoload-dump tip added, developer recompile notes separated
2026-06-01 18:59:17 +02:00
Bartłomiej Janczak
eda4794cac feat: v1.2.0 — password protection, warning pages, smart targeting, rate limiting, daily stats aggregation
- Add password-protected links with session-based unlock flow
- Add redirect warning (interstitial) pages before external URLs
- Add smart targeting rules: device-based, country/geo, A/B weighted rotation
- Add configurable per-IP rate limiting with 429 + Retry-After headers
- Add daily stats aggregation & log pruning (short-url:aggregate-and-prune)
- Add IncrementVisitJob as queue-based counter buffering fallback
- Add ShortUrlDailyStats model with JSON stat columns per day
- Add two new migrations: targeting/security fields, daily_stats table
- Add password-prompt.blade.php and warning.blade.php views
- Extend Settings GUI with Performance & Security tab (aggregation + rate limiting)
- Extend ShortUrlForm with Targeting & Security section
- Add POST route for password form submission (was GET-only → 405)
- Replace enum(device_type) with string(20) for cross-DB compatibility
- Remove ->after() MySQL-only hints from ALTER TABLE migrations
- Fix aggregation test: use whereDate() instead of assertDatabaseHas for date column
- Extend en/pl translations for all new features
- Expand README.md with full v1.2.0 documentation (476 lines)
2026-06-01 13:54:13 +02:00
Bartłomiej Janczak
f518d4dae9 chore: Update license badge URL in README 2026-06-01 13:07:55 +02:00
Bartłomiej Janczak
bdbe9b2ffd v1.2.0: Added counter buffering (write-back caching), CDN trust headers toggle, full UI localization, dynamic Filament routes, and high-concurrency fixes 2026-06-01 13:05:48 +02:00
Bartłomiej Janczak
7035e5b84b Update README.md 2026-06-01 12:35:17 +02:00
Bartłomiej Janczak
a5f5afa198 docs: improve README layout with centered 3D logo and Shields.io status badges 2026-06-01 12:08:14 +02:00
Bartłomiej Janczak
429896d8e3 docs: complete README documentation for all settings, builders, env parameters, and bot filtering 2026-06-01 12:06:04 +02:00
Bartłomiej Janczak
985aa43155 docs: update README with navigationLabel and navigationIcon, fix composer require username 2026-06-01 10:28:39 +02:00
Bartłomiej Janczak
20a75bc72a feat: initial release v1.0.0 2026-06-01 10:10:26 +02:00