Commit Graph

  • a3552970fe fix(bio): add missing url_format columns + update PublicUrl tests main boban 2026-05-17 23:32:53 +0200
  • 7d2926ce77 fix(bio): prevent page scroll-jump on slug check (#[Renderless]) boban 2026-05-17 23:30:55 +0200
  • f742b40921 feat(bio): live slug availability check while typing boban 2026-05-17 23:25:19 +0200
  • 308778b99d fix(bio): prevent duplicate slugs within same workspace boban 2026-05-17 23:09:17 +0200
  • deb5f310a1 fix(bio): plan-aware URL + plan-seeder + ulid→slug fix boban 2026-05-17 22:44:54 +0200
  • c479e46f55 fix(livewire): remove require_workspace() from action methods and render() boban 2026-05-17 15:21:15 +0200
  • 2412abcde7 fix(ui): blur label during loading so only spinner visible boban 2026-05-17 15:17:10 +0200
  • be8fdc8fe4 fix(ui): center spinner via top-1/2 left-1/2 translate instead of inset-0 flex boban 2026-05-17 15:15:52 +0200
  • 695727e321 fix(ui): spinner full opacity — remove disabled:opacity-60 from button boban 2026-05-17 15:13:55 +0200
  • 36b335819a fix(ui): button spinner overlay — text fades to 50%, no layout shift boban 2026-05-17 15:11:56 +0200
  • add7957430 fix(ui): proper 3/4-arc spinner centered in button, honest AI prompt boban 2026-05-17 15:05:31 +0200
  • 8cd46398c0 fix(ai): language-aware prompt, better insights, larger spinner boban 2026-05-17 14:44:18 +0200
  • d9f665f749 fix(ai): switch to OpenAI, add error handling in Insights boban 2026-05-17 14:40:11 +0200
  • 3eada67b9a fix(sidebar): remove collapse, fix mobile overlay and blur effect boban 2026-05-17 14:34:33 +0200
  • e36ecb1dba fix(BUG-2): sidebar pure Tailwind, revert logo, fix mobile translate boban 2026-05-17 13:47:50 +0200
  • d2d43e1097 feat(BUG-2): redesign sidebar from template — Geist font, section nav, CSS-driven collapse boban 2026-05-17 13:40:16 +0200
  • b241df93a8 fix(BUG-2): scope sidebar collapse CSS to desktop media query boban 2026-05-17 13:14:47 +0200
  • 3c24c19b19 fix: remove @persist from CSS comment to prevent Blade directive parse error boban 2026-05-17 13:09:37 +0200
  • e71bd33e63 fix(BUG-2): drive sidebar collapse/expand via CSS attribute, not Alpine reactivity boban 2026-05-17 13:05:33 +0200
  • 3897d54ba3 fix(bug-2): sidebar-aside base width outside media query + auto-close on mobile boban 2026-05-17 12:56:41 +0200
  • 0a08d0f268 fix(bug-2): sidebar width via CSS attribute — bypasses @persist Alpine reactivity issue boban 2026-05-17 12:52:57 +0200
  • fe257ef75b fix(bug-2): isCollapsed as plain reactive property — getters unreliable in Alpine stores boban 2026-05-17 12:50:11 +0200
  • d3ad4b4740 fix(bug-2): isCollapsed getter — sidebar auto-expands on mobile viewport boban 2026-05-17 12:47:38 +0200
  • e0624b5d7c fix(bug-2): collapse toggle hidden via max-md:hidden not hidden md:block boban 2026-05-17 12:43:58 +0200
  • fbb57eec81 fix(bug-2): mobile sidebar close button + desktop-only collapse toggle boban 2026-05-16 19:07:02 +0200
  • 90bf5a0c53 fix(bug-2): mobile hamburger — use CSS translate property to override Tailwind v4 boban 2026-05-16 19:01:26 +0200
  • b077c8652b fix(bug-1): adjust nim-content margins to pixel-exact values (210px / 55px) boban 2026-05-16 18:58:55 +0200
  • 326caa51ce fix(bug-1): eliminate content-area overlap on hard-reload with collapsed sidebar boban 2026-05-16 18:55:26 +0200
  • 436d80a097 fix(FIX-13): 8 bugs — sidebar flash, mobile hamburger, AI insights, button overlay, QR modal collapse, dashboard always-active, bio themes boban 2026-05-16 18:28:27 +0200
  • e211770312 fix(FIX-12): 10 bugs — AI workspace context, Alpine sidebar/theme, analytics clearFilters, link badge layout, slug suggest boban 2026-05-16 18:02:23 +0200
  • 28fbcba227 fix: bugs 1,4,5,7,8,9 — sidebar icon, theme button, copy-link, UTM computed, workspace context, theme sync boban 2026-05-16 17:30:44 +0200
  • 43ff6d6407 fix(FIX-10): 6 bugs — route ULID, QR modal, bio unique, nav active, copy btn, analytics context boban 2026-05-16 17:01:16 +0200
  • 2d231fe6b8 fix: bio public /b/{slug} route + QR types + code cleanup boban 2026-05-16 16:41:05 +0200
  • 5d90c375f7 fix(sidebar+scripts): correct CSS specificity, externalize test credentials boban 2026-05-16 15:50:07 +0200
  • 248c5100d1 fix(sidebar+types): mobile slide animation, close-on-navigate, PHPStan clean boban 2026-05-16 15:47:17 +0200
  • 6283e10072 snap boban 2026-05-16 15:30:38 +0200
  • 063da474f9 feat(design): refined dark editorial design audit across all views boban 2026-05-16 15:19:17 +0200
  • 257d1b94f1 feat: QR wizard, UTM Builder, A/B variants, AI features, analytics URL filters boban 2026-05-16 15:14:19 +0200
  • 1ff4114674 feat(sidebar+profile+buttons): sidebar active state, 3-tab profile, consistent button variants boban 2026-05-16 15:14:04 +0200
  • 278bc42b37 feat(ui): blade-heroicons, local fonts, smaller base font, no emoji boban 2026-05-16 15:13:53 +0200
  • 2510620f67 fix(modals): make create/edit/delete modals actually save + auto-refresh lists boban 2026-05-16 15:13:44 +0200
  • c67bde8fc5 feat: Toaster, button-component, 10 new modals, links-page fix, vite-tuning boban 2026-05-16 13:55:25 +0200
  • 502a777afd fix: Chart.js global, Vite 504, test DB isolation, verify script green boban 2026-05-16 13:36:40 +0200
  • 6c81dd1d48 fix: eliminate FOUC, Echo, modal duplicate, icons, test DB isolation boban 2026-05-16 13:23:44 +0200
  • ba67f67d60 fix(ui+seed): FOUC eliminated + persistent dev-user boban 2026-05-16 12:53:29 +0200
  • 5748dd3443 style: apply Pint formatting to modal files and tests boban 2026-05-16 12:42:16 +0200
  • fa9985cc33 feat: modal infrastructure + 11 modals (links, team, settings, workspace) boban 2026-05-16 12:41:14 +0200
  • 00673f3119 fix: Alpine double-load, FOUC, purple accent, logo/favicon boban 2026-05-16 12:26:14 +0200
  • d0365fd34f fix: tests green + logout route + smoke test boban 2026-05-16 11:57:32 +0200
  • ef0105098b fix: workspace membership + middleware owner fallback boban 2026-05-16 11:17:54 +0200
  • 52d52824bc feat: add profile, team, settings subpages boban 2026-05-16 11:07:31 +0200
  • b86bdd772a fix: Tailwind v4 CSS-Loading unter Vite dev mode boban 2026-05-16 11:00:17 +0200
  • 30989523cd feat: vollständiges Nimuli-Frontend Phase 1 boban 2026-05-16 10:52:52 +0200
  • 5ac6a198b4 fix: tailwind v4 plugin order + opcache revalidate_freq=0 + npm scripts boban 2026-05-16 10:26:15 +0200
  • e551fb62ac fix: Vite-HMR-Websocket via /vite-hmr path + DevUserSeeder boban 2026-05-16 09:45:40 +0200
  • c0f9ee4427 fix: trust proxies + tailwind v4 + debugbar off boban 2026-05-16 09:08:03 +0200
  • fc5ab16f02 fix(routes): move auth.php require before slug catch-all boban 2026-05-16 08:57:12 +0200
  • 2924ec4bf6 chore(vite): remove PostCSS, route HMR through app.nimuli.com boban 2026-05-16 08:47:25 +0200
  • ea9274be49 fix(quality): PHPStan level 6 compliance, Pint formatting boban 2026-05-16 08:28:10 +0200
  • 96ec518200 feat(domains): Domain model, DNS TXT verification action, pending verifier job boban 2026-05-16 08:14:33 +0200
  • a394e0ff18 fix(bio): add BioPageFactory, newFactory() override on BioPage boban 2026-05-16 08:12:54 +0200
  • e9623b9b31 feat(bio): Link-in-Bio pages with translatable fields, public render boban 2026-05-16 08:10:59 +0200
  • d7ca84dd2e feat(auth): TOTP 2FA enable/disable with recovery codes boban 2026-05-16 08:08:31 +0200
  • c193e482ac feat(ai): AiService (Anthropic adapter), GenerateSlug action boban 2026-05-16 08:06:11 +0200
  • 79da7502cd feat(analytics): live dashboard with Reverb WebSocket, click event broadcasting boban 2026-05-16 08:04:08 +0200
  • 61718fa867 feat(ui): links index page with search, filter, delete; workspace route group boban 2026-05-16 07:59:42 +0200
  • 3929c48ea1 feat(ui): app layout with sidebar and topbar boban 2026-05-16 07:54:31 +0200
  • a3930b5d25 test(security): assert Permissions-Policy header boban 2026-05-16 07:52:20 +0200
  • 3f6b281c62 feat(security): add HSTS, X-Frame-Options, Referrer-Policy, Permissions-Policy headers boban 2026-05-16 07:51:33 +0200
  • e33a1fafde fix(webhooks): HMAC integrity fix (send raw body), IPv6 SSRF protection boban 2026-05-16 07:49:25 +0200
  • c8a6325a77 feat(webhooks): outgoing webhooks with HMAC signature, SSRF protection, retry boban 2026-05-16 07:46:57 +0200
  • 69ca1ab058 fix(link): evict cache after delete, not before boban 2026-05-16 07:44:21 +0200
  • 3568e67ca0 fix(api): use DeleteLink action for cache invalidation, fix validation, add delete tests boban 2026-05-16 07:42:56 +0200
  • 1375519cdb feat(api): REST API v1 — links CRUD with Sanctum auth boban 2026-05-16 07:38:45 +0200
  • 8f1398380f fix(billing): pm_type/pm_last_four migration, narrow CSRF exclusion, EU paper size boban 2026-05-16 01:46:54 +0200
  • 06dbb1dffb feat(billing): Cashier Billable on Workspace, Stripe webhook route boban 2026-05-16 01:35:11 +0200
  • 5c5ddbbe83 fix(i18n): remove stale redis del pattern, drop dead singleton boban 2026-05-16 01:29:45 +0200
  • b121520ed6 fix(i18n): include namespace in cache key/query, clean up singleton, test isolation boban 2026-05-16 01:27:10 +0200
  • ce9e53d206 feat(i18n): database-backed translation loader with Redis cache boban 2026-05-16 01:20:48 +0200
  • 15f4b2c0d8 fix(qr): wifi/vcard injection protection, remove dead code boban 2026-05-16 01:16:47 +0200
  • d3b777d8e8 feat(qr): QR code renderer (SVG + PNG), model, generate action boban 2026-05-16 01:13:41 +0200
  • dd89ee395c feat(billing): plan limits service, plan factory, seeder (free/pro/business/agency) boban 2026-05-16 01:06:01 +0200
  • f757f43926 feat(analytics): hourly/daily rollups, 90-day raw click prune, schedule boban 2026-05-16 01:03:49 +0200
  • 7d47222591 fix(routing): defensive fallback, between bounds check, condition key guard boban 2026-05-16 01:02:37 +0200
  • e06db03320 feat(routing): smart routing engine with condition evaluator (device, country, UTM) boban 2026-05-16 01:01:47 +0200
  • 86f767a626 fix(analytics): UTM from query string, iOS before macOS detection, remove dead referer fallback boban 2026-05-16 01:00:10 +0200
  • 66e559173c feat(analytics): click recording job with IP hashing, device detection, Redis counters boban 2026-05-16 00:56:52 +0200
  • ebdcd141bb feat(redirect): hot-path redirect controller with Redis cache, 302/404/410 boban 2026-05-16 00:52:16 +0200
  • b59dbfd95b fix(link): nullable field update, redis test key isolation boban 2026-05-16 00:48:15 +0200
  • 69e6318db5 feat(link): cache service, create/update/delete actions, slug generation boban 2026-05-16 00:46:06 +0200
  • 587aa09b40 fix(workspace): unique slug generation, null-safe middleware auth guard boban 2026-05-16 00:43:55 +0200
  • 49f2e3b00f feat(workspace): create action, middleware, policies boban 2026-05-16 00:41:32 +0200
  • ee0824302a fix(auth): remove dummy login route, validate locale allowlist boban 2026-05-16 00:38:32 +0200
  • 9d5d5af24d feat(auth): argon2id hashing, locale middleware, login rate limiting boban 2026-05-16 00:32:26 +0200
  • 6a96b8e0a3 fix(models): null-guard isExpired, remove FK from guarded, add return types and casts boban 2026-05-16 00:27:15 +0200
  • dc6ed34357 fix(models): auto-generate ulid on creating for Workspace and Link boban 2026-05-16 00:23:33 +0200
  • d0bb8f92ee feat(models): add core domain models boban 2026-05-16 00:19:51 +0200
  • 3b19bbe88f fix(db): null-safe unique keys on rollup tables, workspace slug unique, link slug scoping boban 2026-05-16 00:11:39 +0200
  • 23fd5a5e30 feat(db): add all Phase 1 migrations boban 2026-05-16 00:04:01 +0200
  • 25dddf5293 feat: initial Nimuli scaffold with Laravel 12, Livewire 3, Octane, Reverb, Docker boban 2026-05-15 23:51:57 +0200