[build]
  command = "pnpm build:site"
  publish = "site/dist"
  ignore = "pnpm turbo query affected --packages site --tasks build --exit-code"

# turbo query affected defaults to comparing against the merge-base with main.
# On the production branch (site/v10) and main itself, that merge-base is HEAD,
# so turbo finds zero changes and skips the build. HEAD~1 compares against the
# previous commit instead. We scope this to production and branch-deploy only —
# PR previews keep the default merge-base behavior so multi-commit pushes work.
[context.production.environment]
  TURBO_SCM_BASE = "HEAD~1"

[context.branch-deploy.environment]
  TURBO_SCM_BASE = "HEAD~1"

# PostHog reverse proxy (ad-blocker bypass)
[[redirects]]
  from = "/ph/static/*"
  to = "https://us-assets.i.posthog.com/static/:splat"
  host = "us-assets.i.posthog.com"
  status = 200
  force = true

[[redirects]]
  from = "/ph/*"
  to = "https://us.i.posthog.com/:splat"
  host = "us.i.posthog.com"
  status = 200
  force = true

# Netlify aliases -> videojs.org
[[redirects]]
  from = "https://videojs.com/*"
  to   = "https://videojs.org/:splat"
  status = 301
  force = true

[[redirects]]
  from = "https://www.videojs.com/*"
  to   = "https://videojs.org/:splat"
  status = 301
  force = true

[[redirects]]
  from = "https://v10.videojs.org/*"
  to   = "https://videojs.org/:splat"
  status = 301
  force = true

[[redirects]]
  from = "https://vjs10-site.netlify.app/*"
  to   = "https://videojs.org/:splat"
  status = 301
  force = true


# Redirect old theme demo pages to home
[[redirects]]
  from = "/city"
  to = "/"
  status = 308

[[redirects]]
  from = "/fantasy"
  to = "/"
  status = 308

[[redirects]]
  from = "/forest"
  to = "/"
  status = 308

[[redirects]]
  from = "/sea"
  to = "/"
  status = 308

# Redirect old v8 guides to legacy site
[[redirects]]
  from = "/guides"
  to = "https://legacy.videojs.org/guides"
  status = 308

[[redirects]]
  from = "/guides/*"
  to = "https://legacy.videojs.org/guides/:splat"
  status = 308

# Redirect old Tumblr blog post URLs (migrated from videojs.tumblr.com)
# Each post had a numeric Tumblr ID; URLs may include an optional slug after the ID.
[[redirects]]
  from = "/blog/post/35888462908/*"
  to = "/blog/new-videojs-site-now-with-more-html5"
  status = 308
[[redirects]]
  from = "/blog/post/35888462908"
  to = "/blog/new-videojs-site-now-with-more-html5"
  status = 308

[[redirects]]
  from = "/blog/post/35888302484/*"
  to = "/blog/videojs-is-ie9-compatible"
  status = 308
[[redirects]]
  from = "/blog/post/35888302484"
  to = "/blog/videojs-is-ie9-compatible"
  status = 308

[[redirects]]
  from = "/blog/post/35888138568/*"
  to = "/blog/ipad-iphone-video-poster-fix-bonus-javascript-placement-fix"
  status = 308
[[redirects]]
  from = "/blog/post/35888138568"
  to = "/blog/ipad-iphone-video-poster-fix-bonus-javascript-placement-fix"
  status = 308

[[redirects]]
  from = "/blog/post/35887879903/*"
  to = "/blog/facebook-adds-html5-video"
  status = 308
[[redirects]]
  from = "/blog/post/35887879903"
  to = "/blog/facebook-adds-html5-video"
  status = 308

[[redirects]]
  from = "/blog/post/35887731208/*"
  to = "/blog/version-1-1-3-release"
  status = 308
[[redirects]]
  from = "/blog/post/35887731208"
  to = "/blog/version-1-1-3-release"
  status = 308

[[redirects]]
  from = "/blog/post/35887428303/*"
  to = "/blog/1-1-5-release-subtitles-using-track-android-fix-more"
  status = 308
[[redirects]]
  from = "/blog/post/35887428303"
  to = "/blog/1-1-5-release-subtitles-using-track-android-fix-more"
  status = 308

[[redirects]]
  from = "/blog/post/35887203978/*"
  to = "/blog/make-sites-serve-you-html5-video-in-safari"
  status = 308
[[redirects]]
  from = "/blog/post/35887203978"
  to = "/blog/make-sites-serve-you-html5-video-in-safari"
  status = 308

[[redirects]]
  from = "/blog/post/35887003151/*"
  to = "/blog/2-0-0-release-behaviors-fallback-apis-and-more"
  status = 308
[[redirects]]
  from = "/blog/post/35887003151"
  to = "/blog/2-0-0-release-behaviors-fallback-apis-and-more"
  status = 308

[[redirects]]
  from = "/blog/post/35886359508/*"
  to = "/blog/2-0-2-release-subtitle-optimization-safari-on-leopard-fs-fix"
  status = 308
[[redirects]]
  from = "/blog/post/35886359508"
  to = "/blog/2-0-2-release-subtitle-optimization-safari-on-leopard-fs-fix"
  status = 308

[[redirects]]
  from = "/blog/post/35886098711/*"
  to = "/blog/html5-video-google-maps-mashup"
  status = 308
[[redirects]]
  from = "/blog/post/35886098711"
  to = "/blog/html5-video-google-maps-mashup"
  status = 308

[[redirects]]
  from = "/blog/post/35885839763/*"
  to = "/blog/over-50-of-web-users-now-support-html5-video"
  status = 308
[[redirects]]
  from = "/blog/post/35885839763"
  to = "/blog/over-50-of-web-users-now-support-html5-video"
  status = 308

[[redirects]]
  from = "/blog/post/35885627647/*"
  to = "/blog/google-is-dropping-h-264-from-chrome"
  status = 308
[[redirects]]
  from = "/blog/post/35885627647"
  to = "/blog/google-is-dropping-h-264-from-chrome"
  status = 308

[[redirects]]
  from = "/blog/post/35885444487/*"
  to = "/blog/apple-adds-airplay-to-mobile-safari"
  status = 308
[[redirects]]
  from = "/blog/post/35885444487"
  to = "/blog/apple-adds-airplay-to-mobile-safari"
  status = 308

[[redirects]]
  from = "/blog/post/35885249818/*"
  to = "/blog/new-mpeg-la-webm-vp8-patent-pool"
  status = 308
[[redirects]]
  from = "/blog/post/35885249818"
  to = "/blog/new-mpeg-la-webm-vp8-patent-pool"
  status = 308

[[redirects]]
  from = "/blog/post/35885081376/*"
  to = "/blog/how-are-you-using-video-js"
  status = 308
[[redirects]]
  from = "/blog/post/35885081376"
  to = "/blog/how-are-you-using-video-js"
  status = 308

[[redirects]]
  from = "/blog/post/35884942031/*"
  to = "/blog/lynda-com-html5-video-tutorial-released"
  status = 308
[[redirects]]
  from = "/blog/post/35884942031"
  to = "/blog/lynda-com-html5-video-tutorial-released"
  status = 308

[[redirects]]
  from = "/blog/post/35884704314/*"
  to = "/blog/video-js-version-3-0"
  status = 308
[[redirects]]
  from = "/blog/post/35884704314"
  to = "/blog/video-js-version-3-0"
  status = 308

[[redirects]]
  from = "/blog/post/35884369527/*"
  to = "/blog/version-3-1-update"
  status = 308
[[redirects]]
  from = "/blog/post/35884369527"
  to = "/blog/version-3-1-update"
  status = 308

[[redirects]]
  from = "/blog/post/35883671470/*"
  to = "/blog/version-3-2-update"
  status = 308
[[redirects]]
  from = "/blog/post/35883671470"
  to = "/blog/version-3-2-update"
  status = 308

[[redirects]]
  from = "/blog/post/35666994917/*"
  to = "/blog/brightcove-acquires-zencoder"
  status = 308
[[redirects]]
  from = "/blog/post/35666994917"
  to = "/blog/brightcove-acquires-zencoder"
  status = 308

[[redirects]]
  from = "/blog/post/35788231775/*"
  to = "/blog/site-and-support-updates"
  status = 308
[[redirects]]
  from = "/blog/post/35788231775"
  to = "/blog/site-and-support-updates"
  status = 308

[[redirects]]
  from = "/blog/post/49797985868/*"
  to = "/blog/repo-moved"
  status = 308
[[redirects]]
  from = "/blog/post/49797985868"
  to = "/blog/repo-moved"
  status = 308

[[redirects]]
  from = "/blog/post/50021214078/*"
  to = "/blog/video-js-4-0-now-available"
  status = 308
[[redirects]]
  from = "/blog/post/50021214078"
  to = "/blog/video-js-4-0-now-available"
  status = 308

[[redirects]]
  from = "/blog/post/54136228059/*"
  to = "/blog/video-js-4-1-0-released"
  status = 308
[[redirects]]
  from = "/blog/post/54136228059"
  to = "/blog/video-js-4-1-0-released"
  status = 308

[[redirects]]
  from = "/blog/post/55553002104/*"
  to = "/blog/new-player-skin-designer-for-video-js"
  status = 308
[[redirects]]
  from = "/blog/post/55553002104"
  to = "/blog/new-player-skin-designer-for-video-js"
  status = 308

[[redirects]]
  from = "/blog/post/57828375480/*"
  to = "/blog/hiding-and-showing-video-player-controls"
  status = 308
[[redirects]]
  from = "/blog/post/57828375480"
  to = "/blog/hiding-and-showing-video-player-controls"
  status = 308

[[redirects]]
  from = "/blog/post/60471080014/*"
  to = "/blog/video-js-4-2-0-released-rtmp-css-designer-and-stability"
  status = 308
[[redirects]]
  from = "/blog/post/60471080014"
  to = "/blog/video-js-4-2-0-released-rtmp-css-designer-and-stability"
  status = 308

[[redirects]]
  from = "/blog/post/61309840958/*"
  to = "/blog/unauthorized-modification-of-video-js-cdn-files"
  status = 308
[[redirects]]
  from = "/blog/post/61309840958"
  to = "/blog/unauthorized-modification-of-video-js-cdn-files"
  status = 308

[[redirects]]
  from = "/blog/post/61644484835/*"
  to = "/blog/running-video-js-unit-tests-in-real-browsers-with-karma"
  status = 308
[[redirects]]
  from = "/blog/post/61644484835"
  to = "/blog/running-video-js-unit-tests-in-real-browsers-with-karma"
  status = 308

[[redirects]]
  from = "/blog/post/66131645152/*"
  to = "/blog/the-guardian-uses-video-js-in-feature-article"
  status = 308
[[redirects]]
  from = "/blog/post/66131645152"
  to = "/blog/the-guardian-uses-video-js-in-feature-article"
  status = 308

[[redirects]]
  from = "/blog/post/66138384272/*"
  to = "/blog/video-js-version-4-3-0-released-w-shiny-new-api-docs"
  status = 308
[[redirects]]
  from = "/blog/post/66138384272"
  to = "/blog/video-js-version-4-3-0-released-w-shiny-new-api-docs"
  status = 308

[[redirects]]
  from = "/blog/post/77214236892/*"
  to = "/blog/video-js-version-4-4-0-released-now-supporting-requirejs-and-browserify"
  status = 308
[[redirects]]
  from = "/blog/post/77214236892"
  to = "/blog/video-js-version-4-4-0-released-now-supporting-requirejs-and-browserify"
  status = 308

[[redirects]]
  from = "/blog/post/80918861872/*"
  to = "/blog/video-js-version-4-5-0-released-nothing-to-see-here-move-along"
  status = 308
[[redirects]]
  from = "/blog/post/80918861872"
  to = "/blog/video-js-version-4-5-0-released-nothing-to-see-here-move-along"
  status = 308

[[redirects]]
  from = "/blog/post/86341869931/*"
  to = "/blog/video-js-version-4-6-0-released-it-s-been-a-productive-month"
  status = 308
[[redirects]]
  from = "/blog/post/86341869931"
  to = "/blog/video-js-version-4-6-0-released-it-s-been-a-productive-month"
  status = 308

[[redirects]]
  from = "/blog/post/92536319027/*"
  to = "/blog/dash-everywhere-ish-hack-project"
  status = 308
[[redirects]]
  from = "/blog/post/92536319027"
  to = "/blog/dash-everywhere-ish-hack-project"
  status = 308

[[redirects]]
  from = "/blog/post/93989313276/*"
  to = "/blog/video-js-v4-7-0-built-mostly-by-new-contributors-also-google-chooses-video-js"
  status = 308
[[redirects]]
  from = "/blog/post/93989313276"
  to = "/blog/video-js-v4-7-0-built-mostly-by-new-contributors-also-google-chooses-video-js"
  status = 308

[[redirects]]
  from = "/blog/post/96564061826/*"
  to = "/blog/video-js-4-8-0-released-prost"
  status = 308
[[redirects]]
  from = "/blog/post/96564061826"
  to = "/blog/video-js-4-8-0-released-prost"
  status = 308

[[redirects]]
  from = "/blog/post/99014232526/*"
  to = "/blog/video-js-4-9-now-can-join-the-party"
  status = 308
[[redirects]]
  from = "/blog/post/99014232526"
  to = "/blog/video-js-4-9-now-can-join-the-party"
  status = 308

[[redirects]]
  from = "/blog/post/111390879116/*"
  to = "/blog/video-js-4-12-the-last-of-the-4-minors"
  status = 308
[[redirects]]
  from = "/blog/post/111390879116"
  to = "/blog/video-js-4-12-the-last-of-the-4-minors"
  status = 308

[[redirects]]
  from = "/blog/post/121061752226/*"
  to = "/blog/it-s-here-5-0-release-candidates"
  status = 308
[[redirects]]
  from = "/blog/post/121061752226"
  to = "/blog/it-s-here-5-0-release-candidates"
  status = 308

[[redirects]]
  from = "/blog/post/130143694631/*"
  to = "/blog/video-js-5-the-only-thing-that's-changed-is-everything-except-for-like-3-things-that-didn-t-including-the-name"
  status = 308
[[redirects]]
  from = "/blog/post/130143694631"
  to = "/blog/video-js-5-the-only-thing-that's-changed-is-everything-except-for-like-3-things-that-didn-t-including-the-name"
  status = 308

# Redirect old tags pages to blog (no tag filtering in v10)
[[redirects]]
  from = "/tags"
  to = "/blog"
  status = 307

[[redirects]]
  from = "/tags/*"
  to = "/blog"
  status = 307

# Redirect old support URL to new page
[[redirects]]
  from = "/html5-video-support"
  to = "/support"
  status = 307

# Misc v8 stragglers
[[redirects]]
  from = "/getting-started"
  to = "/docs"
  status = 307

[[redirects]]
  from = "/advanced"
  to = "/docs"
  status = 307

[[redirects]]
  from = "/plugins"
  to = "/docs"
  status = 307
