When serving Frigate at a subpath, the paths that show in the URL bar
and that wind up in your browser history are anchored at the web root.
I.e. you go to `https://example.com/frigate/`, it changes to
`https://example.com/`, and clicking around works as expected, but the
`frigate/` prefix is gone.
It's confusing if you don't know that the URL's are entirely virtual.
Also, your browser history is useless, since the URL's point to e.g.
`https://example.com/#kitchen`, but visiting that URL will not hit
`/frigate/` at all.
Most of the work is already done. Nginx injects javascript to set
`window.baseURL` based on the X-Ingress-Path header. This change passes
that to BrowserRouter, so that it'll be part of the URL's it shows.
Fixes#4526
* Restrict nginx to 4 processes if more are available
* Fix bash
* Different sed structure
* Limit ffmpeg thread counts for secondary ffmpeg processes
* Add up / down keyboard shortcut
* Update config version to be stored inside of the config
* Don't remove items from list when navigating back
* Use video api instead of webps for live current hour filmstrip
* Check that the config file is writable
* Show camera name when camera is offline
* Show camera name when offline
* Cleanup
* Respect classname when no preview is found
* Don't check for go2rtc info if camera is not restramed
* Show error banner when playback fails
* Add keyboard shortcut for fullscreen
* Set max width on the problems area in status bar and use unique keys so they do not duplicate
* Fix possibly missing media info
* Show full row of items on tablet
* remove debugging logic
* reload the window on 401
* backend apis for auth
* add login page
* re-enable web linter
* fix login page routing
* bypass csrf for internal auth endpoint
* disable healthcheck in devcontainer target
* include login page in vite build
* redirect to login page on 401
* implement config for users and settings
* implement JWT actual secret
* add brute force protection on login
* add support for redirecting from auth failures on api calls
* return location for redirect
* default cookie name should pass regex test
* set hash iterations to current OWASP recommendation
* move users to database instead of config
* config option to reset admin password on startup
* user management UI
* check for deleted user on refresh
* validate username and fixes
* remove password constraint
* cleanup
* fix user check on refresh
* web fixes
* implement auth via new external port
* use x-forwarded-for to rate limit login attempts by ip
* implement logout and profile
* fixes
* lint fixes
* add support for user passthru from upstream proxies
* add support for specifying a logout url
* add documentation
* Update docs/docs/configuration/authentication.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs/docs/configuration/authentication.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* use prettier-plugin-tailwindcss to keep class names organized
* use prettierrc file to ensure formatting on save works with vscode
* classname reorder with prettier-plugin-tailwindcss
* Ensure camera activity is up to date
* Persist playback rate between cameras
* Add setting for default playback rate
* Fix audio events saving image
* Formatting
* Use select component
* Fix external events saving
* Only show relevant labels
* Set on recordings view too
* Fix video control width on motion page
* use overlay so player state is maintained between camera switches
* use overlay so player state is maintained between camera switches
* mobile only
* Formatting
* Use higher amount
* Only wrap when needed
* add scrollbar on ptz presets dropdown
* use cn function for class names throughout
* Revert "add scrollbar on ptz presets dropdown"
This reverts commit 2cee93dc3e.
* add ability to parse and upload image from recording to frigate+
* Show dialog with current frame to be uploaded
* Implement uploading image in frontend
* Cleanup
* Update title
* revamp object debug view
* fix vite
* remove console log
* don't display empty fields
* clarify masks as motion masks
* add descriptions
* color and spacing
* add sub_label to camera activity
* add sub_label to type
* rename to debug
* Better scaling for frigate+ dialog and thumbnails
* Always show live objects chip
* Handle sub labels
* Send sub label correctly
* Formatting
* Undo vite
* Update web/src/utils/iconUtil.tsx
* Send camera state to dispatcher
* Fix logic
* Cleanup
* Send camera activitiy in on connect
* Support reading initial camera state
* Fix key
* Formatting
* Sorting
* base recordings and live views off of actual video resolution
* don't set for jsmpeg
* reset when changing main cam
* rename
* Only use resolution for main camera
* fix lint
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Make bottom bar items easier to tap
* Set max height on list of cameras and labels
* remove incorrect character
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Adjust number of ticks to have consistent X axes
* Revert "Adjust number of ticks to have consistent X axes"
This reverts commit 941e296750.
* set rotate instead
* Don't request preview for current hour and fix content type
* Send before / after on messages
* Send before / after for end
* Handle specific cases
* remove log
* Fix update type
* Make no thumb slider height dynamic
* Use existing switch component
* Use existing switch component for general filter content
* Show message when no reordings found for time
* Don't show while scrubbing
* Fix key error
* Fix background color for controls on motion page
* Save review thumbs in dedicated folder
* Create exports table
* Save exports to DB and save thumbnail for export
* Save full frame always
* Fix rounded corners
* Save exports that are in progress
* No need to remove spaces
* Reorganize apis to use IDs
* Use new apis for frontend
* Get video playback working
* Fix deleting and renaming
* Import existing exports to DB
* Implement downloading
* Formatting
* initial working konva
* working multi polygons
* multi zones
* clean up
* new zone dialog
* clean up
* relative coordinates and colors
* fix color order
* better motion tuner
* objects for zones
* progress
* merge dev
* edit pane
* motion and object masks
* filtering
* add objects and unsaved to type
* motion tuner, edit controls, tooltips
* object and motion edit panes
* polygon item component, switch color, object form, hover cards
* working zone edit pane
* working motion masks
* object masks and deletion of all types
* use FilterSwitch
* motion tuner fixes and tweaks
* clean up
* tweaks
* spaces in camera name
* tweaks
* allow dragging of points while drawing polygon
* turn off editing mode when switching camera
* limit interpolated coordinates and use crosshair cursor
* padding
* fix tooltip trigger for icons
* konva tweaks
* consolidate
* fix top menu items on mobile
* Make buttons consistent and have hover state
* Use switch for camera to be consistent
* Use everywhere and remove unused
* Use green for normal stats color
* Fix logs copy icon
* Remove warnings from pydantic serialization
* Ignore warnings
* Fix wsdl resolution
* Fix loading on switch
* Update web deps
* Fix tooltip on storage page
* Always show video controls even when zooming
* Get video controls working when video is paused
* Fix control hovering
* Add loading indicator to logs tab
* Show metrics correctly when hovering graph
* Show loading indicators for previews on recordings page
* Remove vitest update
* remove unused
* Make volume props optional
* fix warning
* Improve event switching speed
* Fix icon colors
* Only show frigate+ page when frigate+ is enabled
* Add link from reecordings to live as well
* Update review maintainer to save events when ongoing
* Handle previews for in progress review items
* Reset DB items in app
* Handle in progress review items
* Scroll back down to selected event item
* Handle undefined end time
* Formatting
* remove unused
* Make export handles have full resolution
* reduce preview thumbnail props
* fix missing return
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Cleanup live activity indicators for cameras
* Rename to reviews and redirect events to reviews
* Use reviews
* Remove plural
* Simplify recordings view
* Adjust icon
* Adjust outline and structure to match designs
* More color changes to fit design
* Properly parse go2rtc severity
* Add ability to filter by clicking item
* Implement sheet / drawer for viewing full log
* Add toast and filtering
* Add links to docs when specific log items are selected
* Cleanup log seeking
* Use header in layout
* Fix mobile menus
* Fix safari theme
* Hide rings
* Theme adjustment
* Implement camera graphs
* Cleanup naming
* Cleanup rendering
* Cleanup spacing
* Fix audio name
* theme updates to match design corretly
* Mobile color fixes
* Mobile color fixes
* Rename graph
* Use separate view for general metrics
* Get storage graph formatted
* Show camera storage usage
* Cleanup ticks
* Remove storage link
* Add icons and frigate logo
* Undo
* Use optimistic state for metrics toggle
* Use optimistic state and skeletons for loading
* Reorganize stats and show graphs in system metrics
* Break apart all cpu / mem graphs
* Auto update stats
* Show camera graphs
* Get system graphs working for inference time
* Update stats every 10 seconds, keeping the last 10 minutes
* Use types for thresholds
* Use keys api
* Break system metrics into different pages
* Add dialog for viewing and copying vainfo
* remove unused for now
* Formatting
* Make tooltip match theme
* Make betters color in light mode
* Include gpu
* Make scaling consistent
* Fix name
* address feedback
* Redesign log page to have formatting
* Support other log types as well
* fix border
* Support log data format
* Only load necessary logs
* Load incrementally
* Cleanup
* Cleanup
* Render all items
* avoid flashing scroll to bottom
* Fix not listening at first
* Always ensure logLine is defined
* Group logs based on timestamp
* Formatting
* remove scrollbar
* Don't repull when there are no items to pull
* Add newline to end
* Fix log lines missing
* typo
* Add button to link to recordings from camera live view
* Change name and show text on both
* Use history button next to back button
* Match designs better
* Show frigate features in bottom sheet on mobile
* Use flex wrap on mobile so the ptz icons are not cutoff
* Support opening pip from live view
* Remove unused
* Separate settings items so layout is more consistent
* Convert settings on mobile to drawer
* Fix sizing on mobile and make scrollable
* remove padding
* Use dialog instead of popover
* Don't focus on first item
* Simpler tab fix
* fix wrong segments when changing filters in motion only mode
* pixel alignment, better outlines, and more figma matching
* fix stats from crashing the ui
* separate layout from aspect classes
* check for invalid value
* avoid undefined classnames
* Use timerange everywhere and ensure recordings has last 24 hours
* Pause recording when selecting timeline
* Fix loading layout
* Fix updating current time not always working
* Simplify dynamic video player
* Clean up desktop sizing
* Fix current hour
* Make padding consistent
* Improve spacing for extra cameras
* Make back button consistent
* Fix preview player not jumping to correct time
* Dont use useEffect due to preview changing
* Simplify
* Fix transition
* Fix drawer not being scrollable
* Fix margin
* Use 2 columns for large mobile devices
* Move padding
* Add review summary to mobile calendar
* Make header spacing consistent between pages
* remove red
* Only show back button text on desktop
* Add mobile camera drawer to separate component
* Use bottom sheet for export on mobile
* Add intermediary mobile bottom sheet
* fix filter
* Fix mobile layout jumping
* Fix desktop vertical camera view
* Fix horizontal camera list
* Add overlay instead of using same button for timeline exports
* Don't use native hls for now
* Fix export bottom sheet
* Fix scrolling
* Simplify checks
* Adjust hls compat approach
* Fix events shadow
* Make corners consistent
* Make corners consistent
* fix max drawer height
* Use separate buttons for export control
* Add icons
* Fix list views
* Fix new items to review
* bottom padding on bottom sheets
* bottom padding on bottom sheets
* Add dialog to export recordings
* Add export dialog functionality
* Add ability to name exports
* Add ability to choose custom time range on timeline
* Add ability to choose custom time range on timeline
* Add custom time selection
* Make hot keys optional for typing name of export
* Tweaks to dialog
* Tweaks to dialog
* round corners more
* Final tweaks
* Use full width top bar
* Make each item in review filter group optional
* Remove export creation from export page
* Consolidate packages and fix opening recording from event
* Use common type for time range
* Move timeline to separate component
* Add events list view to recordings view
* Fix loading of images
* Fix incorrect labels
* use overlay state for selected timeline type
* Fix up for mobile view for now
* replace overlay state
* fix comparison
* remove unused
* handle motion timestamps with ranges
* check for overlaps when checking segment for events
* rename motion color vars to significant_motion for consistency
* safelist significant_motion
* rename vars for clarity and use timeout instead of interval
* Use green chip instead of dimming to show that item has been reviewed
* Redesign log page to use similar style to events
* Use icon only in mobile
* Remove unused
* Move controls to separate component and make features configurable
* Allow playback on motion screen
* Simplify layout
* Fix seeking
* Fix playback
* fix preview scrubbing
* Fix player controls visibility
* Use opacity for both dark and light mode
* add function to get visible timeline duration
* Don't show minimap when minimap bounds exceed timeline area
* when minimap is hidden, only scroll timeline when needed
* observe only when not showing minimap
* no need to duplicate observer
* fix out of order param
* timeline utils hook props
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* implement summary timeline
* implement summary timeline
* merge dev
* conditionally attach listeners only when dragging
* set up listeners with a ref
* Fix selected items text
* Use action icons from design and fix spacing
* Fix icons for live grid
* Fix viewed select api
* Setup default theme as system
* Make conig editor respect system theme
* Fix plus submission dialog
* Different layout for portrait recordings
* Fix now preview found pulsing
* Fix bug with uneven milliseconds
* Improve consistency of video scaling
* Update previews on the hour
* Allow tap to toggle controls so zooming still works
* Use hash location insteaad of state for live camera view
* Add typing