Skip to content

Upgrading

Damilola Ogunsakin edited this page Oct 18, 2026 · 29 revisions

Upgrading

  1. Ask for the new version by name. While the package is below 1.0, each minor version (0.13, 0.14…) may include breaking changes, so Composer's ^ keeps you on the one you installed: composer update won't move ^0.13 to 0.14.

    composer require ogunsakin01/laravel-video-demos:^0.18

    Patch releases (0.14.0 to 0.14.1) arrive with a normal composer update.

  2. Run the install command again.

    php artisan video-demo:install

    It runs the package's new migrations, updates the recorder's browser, rebuilds the sample database if your migrations, seeders or factories changed, restarts the queue workers, and keeps your config. Updating never touches your videos, their plans, recordings or what they cost so far.

  3. Make sure a worker is running for the package's queue. A running worker keeps the code it loaded when it started; the install restarts it, and your process manager starts it again:

    php artisan queue:work video-demo

    With Horizon, run php artisan horizon:terminate. Do the same in production after a deploy.

  4. Read the changelog. If you published the config or the views, compare them with the new versions: new settings work without being in your published config, but changes to published views won't reach you.

  5. If your app caches its config or views, clear them: php artisan optimize:clear.

Notes for particular versions

  • 0.18.6: nothing to run. A video's spending limit is now for each attempt, so Try again gets the whole limit; the video's cost still adds the attempts up. A new plan that stops early no longer takes the old plan's sample data with it.
  • 0.18.5: nothing to run. Each version is recorded on its own fresh copy of the sample data, and Record the same plan again is rehearsed first. A plan the AI changed to fit what an earlier version left behind (a "Change goal" button, say) needs Try again with a new plan.
  • 0.18.4: nothing to run. On SQLite, a video's progress no longer fails with "database is locked"; video-demo:doctor suggests 'journal_mode' => 'wal' and 'busy_timeout' => 5000 for the app's own writes. A video that failed this way: Record the same plan again, at no AI cost.
  • 0.18.3: nothing to run. A page that answers 403 or another 4xx, such as a "complete your profile" gate, fails its step instead of being shown, and on sample data the AI readies a sign-in step's user for it. Use Try again on a video that showed a gate.
  • 0.18.2: nothing to run. Videos can sign in partway through, and cookie banners are accepted before recording (VIDEO_DEMO_COOKIE_BANNER=leave to show them). A video made before that described member pages over a sign-up form: use Try again to plan it again. Also fixes Windows.
  • 0.18.1: nothing to run. Library video pages get a written guide (videos published before 0.17.11 get it once published again), link previews, structured data and a sitemap. php artisan video-demo:doctor and the studio check your setup. Videos download as Pest browser tests, <video-demo-player> and <video-demo-help> show them in any frontend, video-demo:preview records them on pull requests, and coding agents get an MCP server when laravel/mcp is installed. With a separate frontend, set VIDEO_DEMO_FRONTEND_PATH so the AI reads its code, and publish its videos again so <video-demo-help> finds them by page.
  • 0.18.0: run php artisan video-demo:install; nothing else changes for apps whose pages are their own. Plans made on sample data are now rehearsed without recording before they are recorded (VIDEO_DEMO_REHEARSE), and the AI may look at up to three pages while planning (VIDEO_DEMO_PAGE_LOOKS). A frontend on its own address that uses the app as its API can now be recorded: see Separate Frontend.
  • 0.17.12: nothing to run. If you use Laravel Boost, run php artisan boost:install and tick the package to get its new laravel-video-demos skill. The studio asks once for a GitHub star after your first published video.
  • 0.17.11: run php artisan video-demo:install. It brings back into the studio any published video its database no longer has. From now on each published video has its plan saved with it, so it comes back whole. To keep published videos in your codebase rather than on S3, set VIDEO_DEMO_DISK=video-demo-repo (see The Library).
  • 0.17.10: nothing to run where you make videos. The local voices use the full model now, which sounds more natural; it downloads once (about 330 MB) the first time a video uses one, or when you run php artisan video-demo:install-voice again. Lines spoken before are spoken again the next time their video is recorded. If you update videos on deploy, add the voice cache step to your workflow (see On deploy): video-demo:refresh now fails a video whose voice isn't available rather than publishing it silent.
  • 0.17.9: nothing to run. Only the package's description and the notes for AI assistants changed.
  • 0.17.8: nothing to run. video-demo:refresh takes --changed, --fix and --json, for updating videos on deploy.
  • 0.17.7: nothing to run. Delete… moved to the top of a video's page.
  • 0.17.6: run php artisan video-demo:install. A config/video-demo.php nobody edited is removed; an edited one now gets every new setting from the package, with yours still winning. Set a built-in style, model or device to false in your copy to turn it off.
  • 0.17.5: run php artisan video-demo:install. It adds Promo reel (and Spotlight) where an older copy of the config kept them out, and gives the built-in styles you haven't changed their new look: an outline around what is being used in every style, and the camera, music and two-line captions in Product showcase and Promo ad.
  • 0.17.4: nothing to run; only the package's own tests changed.
  • 0.17.3: restart your queue worker. A translation's recording is now a queued job of its own. The studio's regenerate and rerecord routes are gone; VideoDemo::rerecord() stays.
  • 0.17.2: fixes, nothing to run. Secrets are hidden in everything sent to the AI, and video-demo:clean keeps a video's copies, spot pictures and the sample databases in use.
  • 0.17.1: a video's page folds its sections to a one-line summary each, and Where to put it shows the tag once. Nothing to run.
  • 0.17: run php artisan video-demo:install for the new columns and table and the GIF encoder, then restart your queue worker. Publish videos again (or run video-demo:refresh) for <x-video-demo::help /> to list them on their pages. Apps that extend Recorder::run() need its new return type, string; apps that extend Encoder::frames() or Encoder::join() need their new last parameter, ?int $fps = null.
  • 0.16: run php artisan video-demo:install for the new column behind Where to put it, then restart your queue worker (finding spots runs on the package's queue).
  • 0.15: run php artisan video-demo:install for the new columns (a video's language) and the Promo reel style, then restart your queue worker. Videos are now written in the language of your app's pages: check a video's Language if your pages carry a lang you don't want it in. Apps that call Voices::flush() in tests can pass each voice's language as a second argument.
  • 0.14: run php artisan video-demo:install for the new column. Videos play at 1× by default now that waits are cut out: if you published the config, change the speed default from 2 to 1 (or set VIDEO_DEMO_SPEED=1). Use php artisan video-demo:work to make several videos at once. Apps that extend Encoder::encode() need its new last parameter, ?Timeline $timeline = null.
  • 0.13: run php artisan video-demo:install for the new column behind View full error, then restart your queue worker.
  • 0.12.1: built-in music tracks are downloaded from GitHub when jsDelivr is down.
  • 0.12: run php artisan video-demo:install for the new spending table; what you have spent so far is carried over. Cloud voices appear when an OpenAI, Gemini or ElevenLabs key is set, and four built-in music tracks are offered.
  • 0.11: voice-over and music, both off by default. Run php artisan video-demo:install for the new columns, and video-demo:install-voice if you want the free local voices. Apps that extend Recorder::record() need its new last parameter, array $voice = [].
  • 0.10: Make it again is one form with an Ask the AI for a new plan toggle. Deleting a video shows where it is used first.
  • 0.9.1: new videos start with a $0.50 spending limit (VIDEO_DEMO_MAX_COST changes it).
  • 0.9: new videos record on sample data by default. Videos made before keep their setting; Try again on sample data switches one. Set VIDEO_DEMO_SAMPLE_DATA=false to keep recording on your own data by default.
  • 0.8: video-demo:install became the one setup and upgrade command, and sample data arrived.
  • 0.4: videos run on the package's own video-demo queue; a plain queue:work no longer picks them up.

Clone this wiki locally