<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/vendor/feed/atom.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
                        <id>https://laravel.io/index.php/forum/feed</id>
                                <link href="https://laravel.io/index.php/forum/feed" rel="self"></link>
                                <title><![CDATA[Laravel.io Forum RSS Feed]]></title>
                    
                                <subtitle>The RSS feed for the Laravel.io forum contains a list of all threads posted by community members.</subtitle>
                                                    <updated>2026-04-10T06:47:43+00:00</updated>
                        <entry>
            <title><![CDATA[Fresh Laravel 13 install reports as Laravel 12]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/fresh-laravel-13-install-reports-as-laravel-12" />
            <id>https://laravel.io/index.php/30813</id>
            <author>
                <name><![CDATA[Peter Kidson]]></name>
            </author>
            <summary type="html">
                <![CDATA[Laravel Framework 12.53.0
Is this to be expected?]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[🚀 Introducing DBStan – Static Analysis for Database Queries]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/introducing-dbstan-static-analysis-for-database-queries" />
            <id>https://laravel.io/index.php/30812</id>
            <author>
                <name><![CDATA[Dhanik Keraliya]]></name>
            </author>
            <summary type="html">
                <![CDATA[Hi everyone 👋

I’d like to share a package I’ve been working on called DBStan, designed to improve the reliability and quality of database interactions in Laravel applications.

🔍 Problem

While Laravel provides excellent tools for working with databases, it’s still easy to:

Write inefficient or problematic queries

Miss potential issues before runtime

Lack visibility into query structure during development

💡 Solution

DBStan aims to bring static analysis for database queries, similar to what Larastan does for code quality.

⚙️ What DBStan Does

Analyzes database queries in your Laravel application

Helps detect potential issues early

Encourages better query practices

Improves overall application performance and stability

📦 Package Link

https://packagist.org/packages/itpathsolutions/dbstan

🛠️ Installation
composer require itpathsolutions/dbstan

🎯 Goal

The goal of this package is to help Laravel developers catch database-related issues early in the development cycle and promote best practices.

I’d really appreciate any feedback, suggestions, or contributions from the community 🙌

Thanks!]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Anti-Swagger]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/anti-swagger" />
            <id>https://laravel.io/index.php/30805</id>
            <author>
                <name><![CDATA[Myat Kyaw Thu]]></name>
            </author>
            <summary type="html">
                <![CDATA[If you’re a **Laravel developer**, you know the pain: you finish a feature, but then you spend another 30 minutes updating YAML files or adding messy docblock annotations just so the frontend team knows how the API works.

I built **Laravel API Visibility** to change that. No annotations, no configuration, and zero manual work.
What it does:
✅ Automatic Documentation: Scans your routes and controllers instantly.
✅ Static Analysis: Uses PHP Reflection to "read" your code and predict responses without even running an HTTP request.
✅ Postman Export: One click to generate a full Postman collection, pre-wired with headers and auth.
✅ FormRequest Support: Automatically detects your validation rules and generates example payloads.

It’s lightweight, dark-mode friendly, and stays out of your production environment by default.

Check it out on GitHub: https://github.com/myat-kyaw-thu/laravel-api-visibility

I'd love to hear what the Laravel community thinks!]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[How do you handle translations in large Laravel apps?]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/how-do-you-handle-translations-in-large-laravel-apps" />
            <id>https://laravel.io/index.php/30804</id>
            <author>
                <name><![CDATA[Jayesh Patel]]></name>
            </author>
            <summary type="html">
                <![CDATA[Hi everyone 👋

I’ve been working on a Laravel project where localization started getting messy—extracting keys, organizing files, and translating everything manually.

Curious how you all handle this in real-world apps?

Do you:
- manage translations manually?
- use any packages/tools?
- or have some automation workflow?

I’ve been experimenting with an AI-based approach to automate parts of this, and it’s been interesting so far.

Would love to hear your approaches and best practices.]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Laravel Threat Detection Layer]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/laravel-threat-detection-layer" />
            <id>https://laravel.io/index.php/30788</id>
            <author>
                <name><![CDATA[Jayanta Kumar Nath]]></name>
            </author>
            <summary type="html">
                <![CDATA[Hey everyone,

I've been running a SaaS for a couple of years and kept seeing suspicious patterns — SQL injection probes, scanner bots hitting my login form, someone scanning for .env files. Had zero real-time visibility into any of it.

So I extracted the detection layer from my production app into a standalone package: laravel-threat-detection.

`composer require jayanta/laravel-threat-detection`

One middleware, zero config. It logs SQL injection, XSS, RCE, directory traversal, SSRF, scanner bots (sqlmap, nikto, burp suite, nmap), DDoS patterns, Log4Shell — 130+ patterns total — to a threat_logs table.

The key thing: it never blocks anything. Every request goes through normally. Purely passive, so zero risk of false positives breaking your app.

What I spent the most time on:

Evasion resistance — payloads are normalized before matching so UNION/**/SELECT and double URL encoding (%2527) don't slip through.

Confidence scoring — each threat gets a 0–100 score based on match count, where the pattern was found (query string scores higher than body), and user-agent signals.

Also ships with:
- Dark-mode dashboard (no build step, Alpine + Tailwind CDN)
- Slack alerts for high-severity threats
- 15 REST API endpoints
- Geo-enrichment (country, ISP, cloud provider)
- CSV export

GitHub: https://github.com/jay123anta/laravel-threat-detection

Packagist: https://packagist.org/packages/jayanta/laravel-threat-detection

Would love to hear how others handle security visibility in Laravel — are you using anything for this or relying purely on server logs?]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Can you share some real websites using Laravel]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/can-you-share-some-real-websites-using-laravel" />
            <id>https://laravel.io/index.php/30798</id>
            <author>
                <name><![CDATA[Serena]]></name>
            </author>
            <summary type="html">
                <![CDATA[Hi Guys,

Good day! 

Can you share some real websites using Laravel? 

And If I have a website, how do I know if there's any tags or signs that shows it's using Laravel? AI tells me to check like this document.cookie.includes('laravel_session')  to see if such a cookie...is that true?

Thanks:)]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Laravel Tailwind tables (like Yajra, no Livewire)]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/laravel-tailwind-tables-like-yajra-no-livewire" />
            <id>https://laravel.io/index.php/30789</id>
            <author>
                <name><![CDATA[Tarcísio Santos]]></name>
            </author>
            <summary type="html">
                <![CDATA[Good evening, everyone!
I’m looking for recommendations for libraries or packages to create tables in Laravel using Tailwind CSS. Previously, I used Yajra Laravel DataTables with Bootstrap, but now I want to switch to a solution that works well with Tailwind and, preferably, doesn’t rely on Livewire.
Does anyone have suggestions for packages or approaches that can replace Yajra while keeping pagination, sorting, and filtering functionality?
Thanks!]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Laravel Email Preference Center Package]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/laravel-email-preference-center-package" />
            <id>https://laravel.io/index.php/30795</id>
            <author>
                <name><![CDATA[Lenos Christodoulou]]></name>
            </author>
            <summary type="html">
                <![CDATA[Hi everyone 👋

  I recently built and open-sourced a Laravel package that adds a **complete email preference center** to your application.

  In many apps the only option users have is **"unsubscribe from everything."**
  That often means losing users who only wanted *fewer* emails, not zero.

  This package lets users control **exactly what emails they receive and how often**.

  ## What it does

  * 📬 **Smart notification channel** – drop-in replacement for `'mail'`, automatically routes notifications based on user preferences
  * 🎛️ **Self-service preference center UI** – ready-to-use Blade interface where users manage email categories and frequency
  * 🔗 **One-click unsubscribe** – RFC 8058 compliant (works with Gmail & Apple Mail)
  * 📋 **Digest batching** – automatic daily or weekly digests
  * 🔒 **GDPR consent logging** – records preference changes with IP, user agent, and timestamp
  * 🧩 **Polymorphic support** – works with any notifiable model, not just `User`
  * ⚡ **Flexible category declaration** – attribute, interface, or config mapping

  ## Example usage

  ```php
  use Lchris44\EmailPreferenceCenter\Attributes\EmailCategory;

  #[EmailCategory('marketing')]
  class NewsletterNotification extends Notification
  {
      public function via(object $notifiable): array
      {
          return ['email-preferences'];
      }
  }
  ```

  The package will automatically check the user's preferences and decide whether to:

  * send immediately
  * queue to a digest
  * skip the notification

  ## Installation

  ```bash
  composer require lchris44/laravel-email-preference-center
  ```

  ## Links

  GitHub: https://github.com/lchris44/laravel-email-preference-center

  Documentation: https://darkorchid-spoonbill-752711.hostingersite.com/

  ---

  I'd love feedback from the community — especially on:

  * the API design
  * real-world use cases
  * features you think are missing

  Thanks!]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Target DeviceUserCodeViewResponse is not instantiable]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/target-deviceusercodeviewresponse-is-not-instantiable" />
            <id>https://laravel.io/index.php/30787</id>
            <author>
                <name><![CDATA[Craig1231]]></name>
            </author>
            <summary type="html">
                <![CDATA[I am trying to add Laravel Passport to my project following the documentation.

When I try to navigate to [myproject]/oauth/device, it says the following...

```
Illuminate\Contracts\Container\BindingResolutionException
vendor/laravel/framework/src/Illuminate/Container/Container.php:1411
Target [Laravel\Passport\Contracts\DeviceUserCodeViewResponse] is not instantiable.
```

I have created the project using the Vue starter kit, but what am I missing? The documentation doesn't mention I need to implement DeviceUserCodeViewResponse anywhere.

Any help on this would be appreciated.]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Images not rendering in Laravel on Shared Hosting]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/images-not-rendering-in-laravel-on-shared-hosting" />
            <id>https://laravel.io/index.php/30782</id>
            <author>
                <name><![CDATA[Neha]]></name>
            </author>
            <summary type="html">
                <![CDATA[Hi everyone,

I'm developing an ad marketplace where I generate PNG previews of Blade templates using an external API (HCTI). Everything works perfectly on localhost, but I'm facing a critical issue on my live server (Shared Hosting).

The Problem:

Images uploaded via Livewire (stored in storage/app/public/ads/content) are not appearing in the Blade templates on the live site.

Oddly, .AVIF images work in the generated previews, but .JPG and .PNG do not.

Standard asset('storage/...') calls return broken links across the entire site.

What I've Tried:

I attempted to run php artisan storage:link, but my host restricts the symlink() PHP function, resulting in a 500 Server Error.

I've updated my .env APP_URL to the live domain and cleared the config cache.

I tried converting images to Base64 strings before sending them to the API. This fixed the preview generation for some files, but the rest of the website is still "image-blind".

Current Theory: > It seems to be a Base Path issue where the live server cannot resolve the virtual public/storage directory because the physical symlink is missing/blocked.

Has anyone found a robust way to serve storage files on shared hosting without a symlink, or a way to force Laravel's asset() helper to point to the actual physical path?

Thanks in advance!]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Just Srarting - Help Needed.]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/just-srarting-help-needed" />
            <id>https://laravel.io/index.php/30781</id>
            <author>
                <name><![CDATA[Julie Kerr]]></name>
            </author>
            <summary type="html">
                <![CDATA[Hi,

I am just starting to learn Laraval, I got a website done with a freelancer but I don't won't
to disturb him for small edits.

The Problem is I am not able to edit a single code on a page, It does not reflects on the website.

This is the register page https://mydomain.com/register at my domain, which I want to edit.
I have one file located here : public_html/resources/views/frontend/register.blade.php and 
which I edited, but the changes does not shows on the site.

Any help is appreciated.

Thanks]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Laravel Reverb and production builds in containers]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/laravel-reverb-and-production-builds-in-containers" />
            <id>https://laravel.io/index.php/30780</id>
            <author>
                <name><![CDATA[jon brookes]]></name>
            </author>
            <summary type="html">
                <![CDATA[HI Folks, 

forgive me if this is already answered, however my searches have not led me to similar yet. 

I'm building a Laravel application container for use in docker, k8s and similar environments with reverb and echo

I found in my use case, I needed to add to the broadcast configuration file modified options:

```
        'reverb' => [
            'driver' => 'reverb',
            'key' => env('REVERB_APP_KEY'),
            'secret' => env('REVERB_APP_SECRET'),
            'app_id' => env('REVERB_APP_ID'),
            'options' => [
                'host' => env('REVERB_API_HOST', '127.0.0.1'),
                'port' => env('REVERB_API_PORT', 9001),
                'scheme' => env('REVERB_API_SCHEME', 'http'),
                'useTLS' => env('REVERB_API_SCHEME', 'http') !== 'https',
            ],
            'client_options' => [
                // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
            ],
        ],
```
I set default values here of the localhost address, my own port I had configured reverb to run upon, http as the schema locally and for broadcasts and https for external. This , bearing in mid that I now have REVERB_HOST  set to an internet available URL. These can be overridden if required  but work for my app for now. 

I found that without these changes, sending messages from the app to be broadcast to users defaulted to use pusher or other related services, I guess the default for echo. This meant a 'page not found' error when sending broadcasts and nothing being sent to the users.

my question is then, is this a feature I did not fully understand or a potential bug in the config, resulting in a works on my laptop or is it by design ?  

Non the less, the above now gives me real time events in my self-hosted apps, which even now I find amazing to be a built in with any framework and making Laravel for me the best decision I made and only regret is I didn't start using it sooner than v10]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Laravel Cache facade not storing data in Redis, but Redis fa]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/laravel-cache-facade-not-storing-data-in-redis-but-redis-fa" />
            <id>https://laravel.io/index.php/30774</id>
            <author>
                <name><![CDATA[yahi]]></name>
            </author>
            <summary type="html">
                <![CDATA[Hi everyone 👋
I’m facing an issue with Laravel cache and Redis. Here are the details:
OS: Ubuntu
PHP: PHP 8.3
Laravel: 12
Redis: installed via apt and also tested with Docker

Redis PHP extension: php-redis installed

What I did:

Set Redis as cache store in .env:
CACHE_STORE=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379

Cleared config cache:
php artisan optimize:clear

Verified in Tinker:
config('cache.default'); // returns "redis"

The problem:

Using the Redis facade works:
Redis::set('test', 'ok');

But the Cache facade does not store anything:
Cache::put('name', 'yahi', 300);
Cache::get('name'); // returns value, but key not visible in redis

I use jwt/tymon To generate token but go to dashboard token not provided]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Finding out our livewire version]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/finding-out-our-livewire-version" />
            <id>https://laravel.io/index.php/30766</id>
            <author>
                <name><![CDATA[robm]]></name>
            </author>
            <summary type="html">
                <![CDATA[I issue the command:
```
php artisan livewire --version
Larvel Framework 11.36.1
```

but I do not know what the livewire version


I also cannot use composer commands I cannot even find it on the machine file system


```
php artisan list 
 livewire
  livewire:attribute                    Create a new Livewire attribute class
  livewire:configure-s3-upload-cleanup  Configure temporary file upload s3 directory to automatically cleanup files older than 24hrs
  livewire:copy                         Copy a Livewire component
  livewire:delete                       Delete a Livewire component
  livewire:form                         Create a new Livewire form class
  livewire:layout                       Create a new app layout file
  livewire:make                         Create a new Livewire component
  livewire:move                         Move a Livewire component
  livewire:publish                      Publish Livewire configuration
  livewire:stubs                        Publish Livewire stubs
  livewire:upgrade                      Interactive upgrade helper to migrate from v2 to v3
```]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Wrong typing on Eloquent models]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/wrong-typing-on-eloquent-models" />
            <id>https://laravel.io/index.php/30767</id>
            <author>
                <name><![CDATA[Dani]]></name>
            </author>
            <summary type="html">
                <![CDATA[Why if I add a new **boolean** column via its corresponding migration... and I add also the PHPDoc on Eloquent model typing the "magic property" as **bool**... when I get the property's value I have an **'1' (string)** instead of true (boolean)?

![](https://i.ibb.co/whQyt4LY/Pasted-image-20260210091054.png)]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Custom JavaScript video player bug]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/custom-javascript-video-player-bug" />
            <id>https://laravel.io/index.php/30765</id>
            <author>
                <name><![CDATA[Razvan]]></name>
            </author>
            <summary type="html">
                <![CDATA[I am working on a blogging application in Laravel 8, which I named "Brave CMS".

The CMS supports uploading video files (MP4). I have added a loading indicator to the player. The code I have so far is **[HERE](https://github.com/Ajax30/BraveCMS-2.0/pull/104)**.

### The player template:

```
<div class="video-container mb-3">
    <img src="{{ asset('images/articles/' . $article->image) }}" class="poster" />
    <div class="loading-spinner"><div class="spinner"></div></div>
    <video src="{{ asset('videos/articles/' . $article->video) }}" type="video/mp4"></video>

    <div class="controls-wrapper">
        <div class="progress-bar">
            <div class="progress"></div>
        </div>
        <ul class="video-controls">
            <li>
                <input type="button" name="play-pause" value="Play" class="play" />
            </li>
            @if (!empty($article->video))
                <li>
                    @if ($prev_video_article)
                        <a href="{{ url('/show/' . $prev_video_article->slug) }}" class="previous"
                            title="{{ 'Previous video: ' . $prev_video_article->title }}">
                            Previous
                        </a>
                    @endif
                </li>
                <li>
                    @if ($next_video_article)
                        <a href="{{ url('/show/' . $next_video_article->slug) }}" class="next"
                            title="{{ 'Next video: ' . $next_video_article->title }}">
                            Next
                        </a>
                    @endif
                </li>
            @endif
            <li class="mute-toggle unmuted">
                <input type="checkbox" name="mute" />
            </li>
            <li>
                <input type="range" min="0" max="1" step="0.01" class="volume-slider" />
            </li>
            <li class="timer">
                <span class="current-time"></span><span>/</span><span class="duration"></span>
            </li>
            <li class="playback-rate">
                <span class="rate_display">Normal</span>
                <div class="piker">
                    <ul class="dropdown-content" id="rate_selector">
                        <li data-rate="0.5">0.5x</li>
                        <li data-rate="0.75">0.75x</li>
                        <li data-rate="1">Normal</li>
                        <li data-rate="1.125">1.125x</li>
                        <li data-rate="1.5">1.5x</li>
                        <li data-rate="2">2x</li>
                    </ul>
                </div>
            </li>
            <li class="fullscreen-container">
                <input type="button" name="screen-toggler" value="Fullscreen" class="toggle-fullscreen" />
            </li>
        </ul>
    </div>
</div>
```


### JavaScript

```
document.addEventListener('DOMContentLoaded', () => {
  class VideoPlayer {
    constructor(container) {
      this.container = container;
      this.video = container.querySelector('video');
      this.poster = container.querySelector('.poster');
      this.spinner = container.querySelector('.loading-spinner');
      this.playBtn = container.querySelector('[name="play-pause"]');
      this.progressBar = container.querySelector('.progress-bar');
      this.progress = container.querySelector('.progress');
      this.currentTimeEl = container.querySelector('.current-time');
      this.durationEl = container.querySelector('.duration');
      this.volumeSlider = container.querySelector('.volume-slider');
      this.muteToggle = container.querySelector('.mute-toggle');
      this.muteCheckbox = this.muteToggle.querySelector('input');
      this.rateDisplay = container.querySelector('.rate_display');
      this.fullscreenBtn = container.querySelector('[name="screen-toggler"]');
      this.rateOptions = container.querySelectorAll('.playback-rate li');

      this.started = false;
      this.isTrying = false;
      this.wasPlayingBeforeSeek = false;

      this.init();
    }

    init() {
      this.bindEvents();
      this.updateProgress();
      this.updatePlayState();
    }

    formatTime(sec) {
      sec = Math.floor(sec || 0);
      const h = Math.floor(sec / 3600);
      const m = Math.floor((sec % 3600) / 60);
      const s = sec % 60;
      const pad = n => n.toString().padStart(2, '0');
      return h ? `${pad(h)}:${pad(m)}:${pad(s)}` : `${pad(m)}:${pad(s)}`;
    }

    showSpinner() { this.spinner.style.opacity = 1; }
    hideSpinner() { this.spinner.style.opacity = 0; }

    updatePlayState() {
      const paused = this.video.paused;
      this.playBtn.value = paused ? 'Play' : 'Pause';
      this.playBtn.classList.toggle('play', paused);
      this.playBtn.classList.toggle('pause', !paused);
    }

    updateProgress() {
      const dur = this.video.duration || 0;
      const cur = this.video.currentTime || 0;
      this.progress.style.width = dur ? (cur / dur) * 100 + '%' : '0%';
      this.currentTimeEl.textContent = this.formatTime(cur);
      this.durationEl.textContent = dur ? this.formatTime(dur) : '--:--';
    }

    async play() {
      if (!this.started) return;
      if (this.isTrying) return;

      this.isTrying = true;
      this.showSpinner();
      try { await this.video.play(); } catch {}
      this.hideSpinner();
      this.isTrying = false;
      this.updatePlayState();
    }

    togglePlayback() {
      if (!this.started) {
        this.started = true;
        this.poster.style.display = 'none';
        this.play();
        return;
      }
      this.video.paused ? this.play() : this.video.pause();
    }

    seek(e) {
      const rect = this.progressBar.getBoundingClientRect();
      const dur = this.video.duration || 0;
      if (!dur) return;

      this.wasPlayingBeforeSeek = !this.video.paused;
      this.video.currentTime = ((e.clientX - rect.left) / rect.width) * dur;
      this.updateProgress();

      if (!this.started) this.poster.style.display = 'none';
    }

    async handleSeeked() {
      this.hideSpinner();
      if (this.wasPlayingBeforeSeek) {
        try { await this.video.play(); } catch {}
      }
      this.updatePlayState();
    }

    bindEvents() {

      this.playBtn.addEventListener('click', () => this.togglePlayback());
      this.video.addEventListener('click', () => this.togglePlayback());
      this.progressBar.addEventListener('click', e => this.seek(e));

      this.volumeSlider.addEventListener('input', () => {
        this.video.volume = this.volumeSlider.value;
        this.video.muted = this.video.volume === 0;
        this.muteCheckbox.checked = this.video.muted;
        this.muteToggle.classList.toggle('muted', this.video.muted);
      });

      this.muteToggle.addEventListener('click', () => {
        this.video.muted = this.muteCheckbox.checked;
        this.muteToggle.classList.toggle('muted', this.video.muted);
      });

      this.fullscreenBtn.addEventListener('click', () => {
        this.container.classList.toggle('fullscreen');
        this.fullscreenBtn.classList.toggle('exit');
        if (!document.fullscreenElement) {
          this.container.requestFullscreen?.();
        } else {
          document.exitFullscreen?.();
        }
      });

      this.rateOptions.forEach(opt => {
        opt.addEventListener('click', () => {
          this.video.playbackRate = parseFloat(opt.dataset.rate);
          this.rateDisplay.textContent =
            this.video.playbackRate === 1 ? 'Normal' : this.video.playbackRate + 'x';
        });
      });

      ['waiting', 'stalled', 'seeking']
        .forEach(e => this.video.addEventListener(e, () => this.showSpinner()));

      this.video.addEventListener('seeked', () => this.handleSeeked());
      this.video.addEventListener('playing', () => { this.hideSpinner(); this.updatePlayState(); });
      this.video.addEventListener('pause', () => this.updatePlayState());
      this.video.addEventListener('timeupdate', () => this.updateProgress());
      this.video.addEventListener('loadedmetadata', () => this.updateProgress());
      this.video.addEventListener('ended', () => {
        this.started = false;
        this.poster.style.display = '';
        this.updatePlayState();
      });

      document.addEventListener('fullscreenchange', () => {
        if (!document.fullscreenElement) {
          this.container.classList.remove('fullscreen');
          this.fullscreenBtn.classList.remove('exit');
        }
      });
    }
  }

  document.querySelectorAll('.video-container')
    .forEach(container => new VideoPlayer(container));
});
```

### The problem

The problem I am facing is this: when the video is very large (150 MB or more), it gets blocked, and trying to unblock it by seeking to an already-buffered point on the timeline fails.

### Questions

1. What causes this bug? 
2. What is a reliable way to allow the user to unblock a video by navigating back in the timeline?]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[LiVue: What if Livewire and VueJs had a baby?]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/livue-what-if-livewire-and-vuejs-had-a-baby" />
            <id>https://laravel.io/index.php/30763</id>
            <author>
                <name><![CDATA[Claudio Castorina]]></name>
            </author>
            <summary type="html">
                <![CDATA[If you love Laravel and Vue.js, you might have asked yourself: *"Why can't I have Livewire's simplicity with Vue's power?"* That's exactly the question that led to **LiVue** — an open-source package that brings reactive, full-stack components to Laravel using Vue.js as the frontend runtime.

## What is LiVue?

LiVue is a Laravel package that lets you build reactive components with PHP classes and Blade templates, while leveraging Vue.js 3 for the frontend reactivity. Think of it as Livewire's philosophy meets Vue's ecosystem.

**Currently in beta**, LiVue is being actively developed and is ready for you to try, contribute to, and provide feedback on.

## Why LiVue?

### The Best of Both Worlds

- **Write components in PHP** — Your business logic stays in PHP where it belongs
- **Vue.js reactivity** — Get real Vue.js reactivity, not a custom JavaScript solution
- **Use Vue's ecosystem** — Works with Vuetify, Pinia, and any Vue plugin
- **Blade templates** — Use familiar Blade syntax with Vue directives sprinkled in

### Key Features

**Reactive Properties with Automatic Syncing**
```php
class Counter extends Component
{
    public int $count = 0;

    public function increment(): void
    {
        $this->count++;
    }
}
```

```blade
<div>
    <p>Count: {{ $count }}</p>
    <button v-click:increment>+1</button>
</div>
```

**PHP Attributes for Declarative Configuration**
```php
#[Layout('layouts.app')]
#[Title('My Dashboard')]
class Dashboard extends Component
{
    #[Url]
    public string $search = '';

    #[Computed]
    public function filteredItems(): Collection
    {
        return Item::where('name', 'like', "%{$this->search}%")->get();
    }
}
```

**Form Validation Made Easy**
```php
class ContactForm extends Component
{
    #[Validate('required|email')]
    public string $email = '';

    #[Validate('required|min:10')]
    public string $message = '';

    public function submit(): void
    {
        $this->validate();
        // Handle submission...
    }
}
```

**Built-in File Upload**
```php
use LiVue\Features\SupportFileUploads\WithFileUploads;

class AvatarUpload extends Component
{
    use WithFileUploads;

    public $photo;

    public function save(): void
    {
        $this->photo->store('avatars');
    }
}
```

**Real-time Streaming (Perfect for AI Responses)**
```php
use LiVue\Features\SupportStreaming\WithStreaming;

class ChatBot extends Component
{
    use WithStreaming;

    public function askAI(string $question): void
    {
        foreach ($this->getAIResponse($question) as $chunk) {
            $this->stream('answer', $chunk);
        }
    }
}
```

**Vue Composition API in Blade**
```blade
@script
const doubled = computed(() => livue.count * 2);

watch(() => livue.search, (val) => {
    console.log('Search changed:', val);
});
@endscript
```

## What Makes LiVue Different?

### 1. True Vue.js Integration
Unlike other solutions, LiVue uses Vue.js as its frontend runtime. This means you can:
- Use any Vue plugin (Vuetify, Quasar, PrimeVue...)
- Access Vue's full reactivity system
- Use Vue DevTools for debugging

### 2. Dynamic Component Architecture
LiVue uses Vue's `<component :is>` for template swapping. No DOM morphing — just clean, efficient template updates from the server.

### 3. Request Pooling
Multiple component updates are automatically batched into a single request using `queueMicrotask`. This means better performance with less network overhead.

### 4. Extensive PHP Attributes
LiVue provides a rich set of PHP attributes:
- `#[Url]` — Sync properties with URL query string
- `#[Computed]` — Cached computed properties
- `#[Lazy]` — Load components only when visible
- `#[Confirm]` — Require confirmation before actions
- `#[TabSync]` — Sync state across browser tabs
- `#[Guarded]` — Hide sensitive properties from client
- And many more...

### 5. Form Objects
For complex forms, use dedicated Form Objects:
```php
class UserForm extends Form
{
    #[Validate('required')]
    public string $name = '';

    #[Validate('required|email')]
    public string $email = '';
}
```

## Getting Started

```bash
composer require livue/livue
```

Create your first component:
```bash
php artisan make:livue Counter
```

Add it to any Blade view:
```blade
<livue:counter />
{{-- or --}}
@livue('counter')
```

Include the assets in your layout:
```blade
<head>
    @livueStyles
</head>
<body>
    ...
    @livueScripts
</body>
```

## Open Source & Beta

LiVue is **completely open source** under the MIT license. It's currently in **beta**, which means:

- Core features are stable and working
- API may have minor changes before v1.0
- We actively welcome feedback and contributions
- Production use is possible but recommended with caution

## Join the Development

We're building LiVue in the open and would love your input:

- **GitHub**: [github.com/livue-laravel/livue](https://github.com/livue-laravel/livue)
- **Documentation**: [Documentation](https://www.livue-laravel.com/docs)
- **Issues & Ideas**: Open an issue on GitHub

Whether you want to report bugs, suggest features, or contribute code, all participation is welcome!

## Conclusion

If you've ever wanted the simplicity of Livewire with the power of Vue.js, LiVue might be exactly what you're looking for. It's a fresh take on full-stack reactivity for Laravel that respects both ecosystems.

Give it a try, break things, and let us know what you think!

---

*LiVue is an open-source project in active development. Star us on [GitHub](https://github.com/livue-laravel/livue) if you find it interesting!*]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[new to Laravel, want to learn]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/new-to-laravel-want-to-learn" />
            <id>https://laravel.io/index.php/30675</id>
            <author>
                <name><![CDATA[Ahmed Haroon]]></name>
            </author>
            <summary type="html">
                <![CDATA[hi all,

I have started learning Laravel to go further from Oracle Forms & Apex. have installed Laravel with the help of google, now I want to learn a step-by-step approach project based using Laravel as backend and frontend both, is it possible? if yes than its great!! experts please guide now from where to start building **Apps and API's from scratch on Windows machine** ( have installed XAMPP on C: drive ) c:\xampp\

please advise as per your experties to learn this great framework to create best web based database driven apps and/or any best site/video link to learn? especially interested in creating API's. 

on youtube, there are videos _with various different versions which are very confusing as a beginner_ for me.

with kind regards]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Jual Cytotec Jakarta Barat ​​085176963835​ Obat Aborsi]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/jual-cytotec-jakarta-barat-085176963835-obat-aborsi" />
            <id>https://laravel.io/index.php/30762</id>
            <author>
                <name><![CDATA[085176963835​ Obat misoprostol Untuk Menggugurkan Kandungan]]></name>
            </author>
            <summary type="html">
                <![CDATA[KONSULTASI WA: ( 0851/7696/3835 ) jual obat aborsi, jual obat cytotec, klinik aborsi, obat gugur kandungan, beli obat cytotec, obat aborsi barat, obat aborsi timur, obat aborsi utara, obat cytotec asli, tempat aborsi, cytotec asli, jual cytotec, harga obat cytotec, apotik yang di, obat cytotec selatan, harga resmi cytotec, apotik yang di, toko obat yang menjual, di apotik k24, obat aborsi selatan, obat aborsi kota pusat, obat telat datang bulan terbaik di apotik kota selatan daerah, obat penggugur kandungan, harga cytotec, obat aborsi asli, bidan aborsi, biaya obat aborsi, alamat dukun aborsi, obat aborsi legal, harga gastrul di apotik, harga gastrul di apotik, per butir di apotik harga gastrul, Harga per butir Cytotec di apotik, harga gastrul, cara , toko obat aborsi online, harga misoprostol generik, beli cytotec di pasar dimana, pasar obat cytotec, obat telat datang bulan 1 minggu di apotik, jamu telat datang bulan 2 minggu, harga obat telat datang bulan, jual obat telat datang bulan, obat telat bulan termanjur, obat telat datang bulan di apotik dan harganya, obat telat datang bulan terbaik di apotik daerah, cara menggugurkan kandungan, obat aborsi paling ampuh, obat cytotec 200 mg, daftar harga obat cytotec di apotik kimia farma, harga obat cytotec 2026, harga obat cytotec 2026 shopee, beli obat cytotec tanpa resep dokter, obat cytotec pfizer, obat cytotec shopee, harga obat cytotec 2026 di apotik kimia farma, jual obat cytotec asli, harga obat cytotec misoprostol 200 mcg, obat cytotec blibli, obat cytotec bayar di tempat, beli obat cytotec 400, beli obat cytotec di apotik, obat cytotec, jual obat cytotec, obat cyrux misoprostol, obat cytotec, cara meminta resep dokter obat cytotec, cara beli obat cytotec di shopee, obat cytotec di pramuka, obat cytotec dan gastrul obat apa, obat cytotec dan gastrul harga, obat cytotec di jual di apotek k24, obat cytotec dan cyrux, obat cytotec dijual bebas di apotek, dimana beli obat cytotec tanpa resep dokter, tulisan resep dokter obat cytotec, harga obat cytotec di farmasi, harga obat cytotec 2026 di apotik kimia farma, fungsi obat misoprostol cytotec 200 mcg, harga obat cytotec 400 gram di apotik, harga obat cytotec pelancar haid, harga obat cytotec 2026 di apotik kimia farma, harga obat cytotec 4 bulan, cara beli obat cytotec di indomaret, obat penggugur kandungan cytotec dan gastrul harga indomaret, pil cytotec jual di farmasi, jual obat cytotec terdekat dari lokasi saya, obat cytotec ori shopee, obat cytotec pelancar haid, cara penulisan resep obat cytotec, obat cytotec tersedia dimana saja, toko obat cytotec, cytotec obat telat datang bulan, obat cytotec untuk melancarkan haid, obat yang mengandung cytotec misoprostol, toko obat yang menjual cytotec, obat pfizer cytotec tablets, harga obat cytotec 1 biji, obat telat bulan cytotec 1 sampai 7 bulan, obat cytotec 400mg harga, berapa harga obat misoprostol 200 mcg di apotik, contoh resep dokter untuk obat misoprostol, contoh obat misoprostol cytotec, contoh obat yang mengandung misoprostol, harga obat misoprostol 200mcg, obat warung yang mengandung misoprostol, obat gastrul misoprostol 200, harga cytotec per butir di apotik, harga jual obat aborsi cytotec 2026, berapa harga jual obat aborsi cytotec 2026, harga jual obat aborsi cytotec 2026 di apotik kimia farma, harga obat aborsi cytotec 2026 shopee, cara beli cytotec di shopee, cara beli cytotec di apotik k24, cara beli jual obat aborsi cytotec di kimia farma, pil cytotec 400î¼g misoprostol, harga cytotec 400 mg di apotik, pil aborsi beli dimana, pil aborsi apotek terdekat, harga cytotec 400 mg di apotik, cytotec 400 mg misoprostol, folavit 400 mg penggugur kandungan, obat mengatasi telat datang bulan agar tidak hamil, obat telat datang bulan paling manjur di apotik dan harganya, obat pelancar haid di apotik yang aman, obat mengatasi telat datang bulan agar tidak hamil di apotek, obat telat haid 3 bulan, obat telat datang bulan paling manjur di apotek, obat pelancar haid di alfamart, obat pelancar haid di indomaret, obat telat datang bulan paling manjur, jamu pelancar haid telat 2 bulan, obat telat haid 3 bulan di apotek, obat telat haid 1 bulan di apotek, obat telat haid, obat pelancar haid, pelancar haid, obat untuk telat haid, obat untuk haid, obat telat datang bulan, obat agar haid, obat telat haid 1 bulan, telat haid 1 bulan, obat cepat haid, telat haid 2 bulan, obat telat haid 2 bulan, obat agar cepat haid, agar cepat haid, telat haid 1 minggu, obat telat haid 1 minggu, obat telat haid 3 bulan, menggugurkan kandungan, cara cepat haid, obat penggugur kandungan, obat telat datang bulan paling manjur di apotek, jamu pelancar haid telat 2 bulan di apotek, cara menggugurkan kehamilan diluar nikah, harga 1 strip cytotec, obat untuk menggugurkan kandungan dan mempercepat haid di apotik, cara menggugurkan kandungan secara alami dan cepat dalam 1 hari, makanan menggugurkan kandungan dan mempercepat haid di apotik, obat penggugur kandungan cytotec dan gastrul harga indomaret, cara menggugurkan kandungan dengan cepat selesai dalam 24 jam secara alami buah buahan, obat yang bisa menggugurkan kandungan dan mempercepat haid, obat apa yang bisa melancarkan haid, obat telat datang bulan, obat haid, telat haid, obat telat haid, telat haid 1 bulan, obat pelancar haid, obat untuk telat datang bulan, obat telat datang bulan paling manjur, obat untuk telat haid, obat telat haid 2 bulan, telat haid 2 bulan, obat telat datang bulan paling manjur di apotik dan harganya, obat telat haid 3 bulan, obat telat datang bulan di apotek, obat telat datang bulan agar tidak hamil, telat datang bulan 1 bulan, obat cytotec, cytotec, obat cepat haid, obat mengatasi telat datang bulan agar tidak hamil, obat alami telat datang bulan, mengatasi telat datang bulan agar tidak hamil, jamu telat datang bulan, penggugur kandungan, cara menggugurkan kandungan secara alami dan cepat dalam 1 hari, obat yang dapat menyebabkan keguguran dijual di apotik, pil tuntas apakah bisa menggugurkan kehamilan, jamu pelancar haid telat 2 bulan di apotek, perbedaan telat haid dengan hamil, obat terlambat datang bulan alami, obat supaya haid, obat pelancar haid di apotik yang aman, obat pencegah kehamilan, obat telat datang bulan paling manjur di apotek, obat pelancar haid agar tidak hamil di apotek, obat telat datang bulan yang ampuh, pil tuntas. 
Untuk Pemesanan dan Konsultasi Spesialis Dokter Kandungan (SpOG) Bisa Chat nomer Whatsapps Save Dahulu Nomer Kami Hubungi Whatsapps No: 0851-7696-3835 ( Nana SpOG ) Obat MENGGUGURKAN kehamilan Kuat dengan cepat selesai dalam waktu 24 jam secara alami - Cara Menggugurkan Kandungan Usia Janin 1, 2, 3, 4, 5, 6, 7, 8 Bulan Dengan Cepat Dalam Hitungan jam Secara Alami.]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Jual Cytotec Jakarta Timur ​​085176963835​ Obat Aborsi]]></title>
            <link rel="alternate" href="https://laravel.io/index.php/forum/jual-cytotec-jakarta-timur-085176963835-obat-aborsi" />
            <id>https://laravel.io/index.php/30761</id>
            <author>
                <name><![CDATA[085176963835​ Obat misoprostol Untuk Menggugurkan Kandungan]]></name>
            </author>
            <summary type="html">
                <![CDATA[KONSULTASI WA: ( 0851/7696/3835 ) jual obat aborsi, jual obat cytotec, klinik aborsi, obat gugur kandungan, beli obat cytotec, obat aborsi barat, obat aborsi timur, obat aborsi utara, obat cytotec asli, tempat aborsi, cytotec asli, jual cytotec, harga obat cytotec, apotik yang di, obat cytotec selatan, harga resmi cytotec, apotik yang di, toko obat yang menjual, di apotik k24, obat aborsi selatan, obat aborsi kota pusat, obat telat datang bulan terbaik di apotik kota selatan daerah, obat penggugur kandungan, harga cytotec, obat aborsi asli, bidan aborsi, biaya obat aborsi, alamat dukun aborsi, obat aborsi legal, harga gastrul di apotik, harga gastrul di apotik, per butir di apotik harga gastrul, Harga per butir Cytotec di apotik, harga gastrul, cara , toko obat aborsi online, harga misoprostol generik, beli cytotec di pasar dimana, pasar obat cytotec, obat telat datang bulan 1 minggu di apotik, jamu telat datang bulan 2 minggu, harga obat telat datang bulan, jual obat telat datang bulan, obat telat bulan termanjur, obat telat datang bulan di apotik dan harganya, obat telat datang bulan terbaik di apotik daerah, cara menggugurkan kandungan, obat aborsi paling ampuh, obat cytotec 200 mg, daftar harga obat cytotec di apotik kimia farma, harga obat cytotec 2026, harga obat cytotec 2026 shopee, beli obat cytotec tanpa resep dokter, obat cytotec pfizer, obat cytotec shopee, harga obat cytotec 2026 di apotik kimia farma, jual obat cytotec asli, harga obat cytotec misoprostol 200 mcg, obat cytotec blibli, obat cytotec bayar di tempat, beli obat cytotec 400, beli obat cytotec di apotik, obat cytotec, jual obat cytotec, obat cyrux misoprostol, obat cytotec, cara meminta resep dokter obat cytotec, cara beli obat cytotec di shopee, obat cytotec di pramuka, obat cytotec dan gastrul obat apa, obat cytotec dan gastrul harga, obat cytotec di jual di apotek k24, obat cytotec dan cyrux, obat cytotec dijual bebas di apotek, dimana beli obat cytotec tanpa resep dokter, tulisan resep dokter obat cytotec, harga obat cytotec di farmasi, harga obat cytotec 2026 di apotik kimia farma, fungsi obat misoprostol cytotec 200 mcg, harga obat cytotec 400 gram di apotik, harga obat cytotec pelancar haid, harga obat cytotec 2026 di apotik kimia farma, harga obat cytotec 4 bulan, cara beli obat cytotec di indomaret, obat penggugur kandungan cytotec dan gastrul harga indomaret, pil cytotec jual di farmasi, jual obat cytotec terdekat dari lokasi saya, obat cytotec ori shopee, obat cytotec pelancar haid, cara penulisan resep obat cytotec, obat cytotec tersedia dimana saja, toko obat cytotec, cytotec obat telat datang bulan, obat cytotec untuk melancarkan haid, obat yang mengandung cytotec misoprostol, toko obat yang menjual cytotec, obat pfizer cytotec tablets, harga obat cytotec 1 biji, obat telat bulan cytotec 1 sampai 7 bulan, obat cytotec 400mg harga, berapa harga obat misoprostol 200 mcg di apotik, contoh resep dokter untuk obat misoprostol, contoh obat misoprostol cytotec, contoh obat yang mengandung misoprostol, harga obat misoprostol 200mcg, obat warung yang mengandung misoprostol, obat gastrul misoprostol 200, harga cytotec per butir di apotik, harga jual obat aborsi cytotec 2026, berapa harga jual obat aborsi cytotec 2026, harga jual obat aborsi cytotec 2026 di apotik kimia farma, harga obat aborsi cytotec 2026 shopee, cara beli cytotec di shopee, cara beli cytotec di apotik k24, cara beli jual obat aborsi cytotec di kimia farma, pil cytotec 400î¼g misoprostol, harga cytotec 400 mg di apotik, pil aborsi beli dimana, pil aborsi apotek terdekat, harga cytotec 400 mg di apotik, cytotec 400 mg misoprostol, folavit 400 mg penggugur kandungan, obat mengatasi telat datang bulan agar tidak hamil, obat telat datang bulan paling manjur di apotik dan harganya, obat pelancar haid di apotik yang aman, obat mengatasi telat datang bulan agar tidak hamil di apotek, obat telat haid 3 bulan, obat telat datang bulan paling manjur di apotek, obat pelancar haid di alfamart, obat pelancar haid di indomaret, obat telat datang bulan paling manjur, jamu pelancar haid telat 2 bulan, obat telat haid 3 bulan di apotek, obat telat haid 1 bulan di apotek, obat telat haid, obat pelancar haid, pelancar haid, obat untuk telat haid, obat untuk haid, obat telat datang bulan, obat agar haid, obat telat haid 1 bulan, telat haid 1 bulan, obat cepat haid, telat haid 2 bulan, obat telat haid 2 bulan, obat agar cepat haid, agar cepat haid, telat haid 1 minggu, obat telat haid 1 minggu, obat telat haid 3 bulan, menggugurkan kandungan, cara cepat haid, obat penggugur kandungan, obat telat datang bulan paling manjur di apotek, jamu pelancar haid telat 2 bulan di apotek, cara menggugurkan kehamilan diluar nikah, harga 1 strip cytotec, obat untuk menggugurkan kandungan dan mempercepat haid di apotik, cara menggugurkan kandungan secara alami dan cepat dalam 1 hari, makanan menggugurkan kandungan dan mempercepat haid di apotik, obat penggugur kandungan cytotec dan gastrul harga indomaret, cara menggugurkan kandungan dengan cepat selesai dalam 24 jam secara alami buah buahan, obat yang bisa menggugurkan kandungan dan mempercepat haid, obat apa yang bisa melancarkan haid, obat telat datang bulan, obat haid, telat haid, obat telat haid, telat haid 1 bulan, obat pelancar haid, obat untuk telat datang bulan, obat telat datang bulan paling manjur, obat untuk telat haid, obat telat haid 2 bulan, telat haid 2 bulan, obat telat datang bulan paling manjur di apotik dan harganya, obat telat haid 3 bulan, obat telat datang bulan di apotek, obat telat datang bulan agar tidak hamil, telat datang bulan 1 bulan, obat cytotec, cytotec, obat cepat haid, obat mengatasi telat datang bulan agar tidak hamil, obat alami telat datang bulan, mengatasi telat datang bulan agar tidak hamil, jamu telat datang bulan, penggugur kandungan, cara menggugurkan kandungan secara alami dan cepat dalam 1 hari, obat yang dapat menyebabkan keguguran dijual di apotik, pil tuntas apakah bisa menggugurkan kehamilan, jamu pelancar haid telat 2 bulan di apotek, perbedaan telat haid dengan hamil, obat terlambat datang bulan alami, obat supaya haid, obat pelancar haid di apotik yang aman, obat pencegah kehamilan, obat telat datang bulan paling manjur di apotek, obat pelancar haid agar tidak hamil di apotek, obat telat datang bulan yang ampuh, pil tuntas. 
Untuk Pemesanan dan Konsultasi Spesialis Dokter Kandungan (SpOG) Bisa Chat nomer Whatsapps Save Dahulu Nomer Kami Hubungi Whatsapps No: 0851-7696-3835 ( Nana SpOG ) Obat MENGGUGURKAN kehamilan Kuat dengan cepat selesai dalam waktu 24 jam secara alami - Cara Menggugurkan Kandungan Usia Janin 1, 2, 3, 4, 5, 6, 7, 8 Bulan Dengan Cepat Dalam Hitungan jam Secara Alami.]]>
            </summary>
                                    <updated>2026-04-10T06:47:43+00:00</updated>
        </entry>
    </feed>
