Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
95fec6c
implemented tagging
yahya-kousa Mar 17, 2026
a494162
bug fixing
yahya-kousa Mar 17, 2026
2b1ff9e
1. potentially addressed the comma separation issue for assigning mul…
yahya-kousa Mar 17, 2026
7a9c0de
1. updated upload window to allow for cancels and adding new games
yahya-kousa Mar 17, 2026
536b279
Fixed padding of tags and fixed the "+[x]" chip for adding 3+ tags to…
yahya-kousa Mar 17, 2026
96d5c1e
Add EditGameAssetsModal, api instructions for steamgrid, linked. up t…
dammitjeff Mar 18, 2026
0861616
Updated GameVideos.js to accomodate new edit button
dammitjeff Mar 18, 2026
a1fc286
Add refresh push to icon_urls
dammitjeff Mar 18, 2026
880f396
Restrict allowed hsots to steamgrid urls only, add shimmer load effec…
dammitjeff Mar 18, 2026
7cd7b4a
Merge pull request #505 from dammitjeff/steamgrid-manual-picks
ShaneIsrael Mar 19, 2026
f7cc072
fixed sidebar settings not applying visually immediately
yahya-kousa Mar 19, 2026
ea007bc
changed tag color picker to work functionally the same across differe…
yahya-kousa Mar 19, 2026
dae76f9
ignore claude folder
ShaneIsrael Mar 19, 2026
ad7cb97
Merge branch 'develop' of github.com:ShaneIsrael/fireshare into develop
ShaneIsrael Mar 19, 2026
e2bed71
added hover tooltip for seeing tabs beyond the first three
yahya-kousa Mar 19, 2026
54f8755
unified the existing/new games dropdown for the batch select "link to…
yahya-kousa Mar 19, 2026
1243674
Merge pull request #500 from yahya-kousa/main
ShaneIsrael Mar 19, 2026
5bf4d2d
Merge branch 'develop' of github.com:ShaneIsrael/fireshare into develop
ShaneIsrael Mar 19, 2026
13c0980
various minor updates to the tagging system
ShaneIsrael Mar 19, 2026
8609a5f
fix tags appearing outside of autocomplete field in videomodal when i…
ShaneIsrael Mar 20, 2026
53a8050
fix multiselect tagging to allow multiple tags
ShaneIsrael Mar 20, 2026
bd57ae3
fix video selection border being cutoff by overlaid video preview
ShaneIsrael Mar 20, 2026
9962c5c
remove tags from video cards
ShaneIsrael Mar 20, 2026
859b644
app wide drag n drop to upload
ShaneIsrael Mar 20, 2026
00ea9d6
aligned date on cards that don't have a game selected
ShaneIsrael Mar 20, 2026
19612ea
improved upload look and feel
ShaneIsrael Mar 20, 2026
824a3a4
more stylistic upload progress
ShaneIsrael Mar 20, 2026
37badf3
added color lerp animation to upload card, removed gradient animation…
ShaneIsrael Mar 20, 2026
a8f1aae
Merge pull request #506 from ShaneIsrael/video-tagging-updates
ShaneIsrael Mar 20, 2026
5275d19
redesign Tags page with accent stripe cards and per-tag color editing
ShaneIsrael Mar 21, 2026
4425522
add real video crop feature with FFmpeg and waveform editor
ShaneIsrael Mar 21, 2026
eff1d64
video cropping solution implemented
ShaneIsrael Mar 21, 2026
c8b4d35
waveform cropper with right click controls
ShaneIsrael Mar 21, 2026
bbe1170
fix performance issue on large libraries
ShaneIsrael Mar 21, 2026
92c2895
add input sanitization to checkSum and doubly checks the path starts …
ShaneIsrael Mar 22, 2026
ac01435
Merge pull request #509 from ShaneIsrael/video-cropping
ShaneIsrael Mar 22, 2026
d9ab06a
bump version
ShaneIsrael Mar 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.vscode/
.claude/

# db
db.sqlite
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@
- Mobile Device Support
- Uploads (optional, can be restricted)
- Video view counting
- Video Cropping
- Video Tags for improved search and categorization
- Open Graph metadata for rich link previews
- RSS feed for new public videos
- LDAP support
Expand Down
68 changes: 65 additions & 3 deletions app/client/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions app/client/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "fireshare",
"version": "1.5.1",
"version": "1.5.2",
"private": true,
"dependencies": {
"@emotion/react": "^11.9.0",
Expand All @@ -14,6 +14,7 @@
"framer-motion": "^12.34.3",
"lodash": "^4.17.21",
"react": "^18.1.0",
"react-color": "^2.19.3",
"react-copy-to-clipboard": "^5.1.0",
"react-day-picker": "^9.14.0",
"react-device-detect": "^2.2.2",
Expand All @@ -24,7 +25,8 @@
"react-router-dom": "^6.3.0",
"react-scripts": "5.0.1",
"react-select": "^5.3.2",
"typeface-roboto": "^1.1.13"
"typeface-roboto": "^1.1.13",
"wavesurfer.js": "^7.12.4"
},
"proxy": "http://localhost:3001",
"scripts": {
Expand Down
29 changes: 27 additions & 2 deletions app/client/src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ import Settings from './views/Settings'
import Feed from './views/Feed'
import Games from './views/Games'
import GameVideos from './views/GameVideos'
import Tags from './views/Tags'
import TagVideos from './views/TagVideos'
import darkTheme from './common/darkTheme'
import { ConfigService } from './services'
import { getSetting, setSetting } from './common/utils'
import AuthWrapper from './components/utils/AuthWrapper'
import Navbar20 from './components/nav/Navbar20'
import GlobalDragDropOverlay from './components/utils/GlobalDragDropOverlay'

const muitheme = createTheme(darkTheme)

Expand All @@ -34,12 +37,13 @@ export default function App() {
<Router>
<ThemeProvider theme={muitheme}>
<CssBaseline />
<GlobalDragDropOverlay>
<Routes>
<Route
path="/"
element={
<AuthWrapper redirect={'/feed'}>
<Navbar20 page="/" collapsed={!drawerOpen} searchable styleToggle cardSlider>
<Navbar20 page="/" collapsed={!drawerOpen} searchable styleToggle cardSlider searchPlaceholder="Search title, game, or #tag...">
<Dashboard />
</Navbar20>
</AuthWrapper>
Expand All @@ -49,7 +53,7 @@ export default function App() {
path="/feed"
element={
<AuthWrapper>
<Navbar20 page="/feed" collapsed={!drawerOpen} searchable styleToggle cardSlider>
<Navbar20 page="/feed" collapsed={!drawerOpen} searchable styleToggle cardSlider searchPlaceholder="Search title, game, or #tag...">
<Feed />
</Navbar20>
</AuthWrapper>
Expand Down Expand Up @@ -95,6 +99,26 @@ export default function App() {
</AuthWrapper>
}
/>
<Route
path="/tags"
element={
<AuthWrapper>
<Navbar20 page="/tags" collapsed={!drawerOpen} searchable searchPlaceholder="Search tags...">
<Tags />
</Navbar20>
</AuthWrapper>
}
/>
<Route
path="/tags/:tagId"
element={
<AuthWrapper>
<Navbar20 page="/tags" collapsed={!drawerOpen} styleToggle cardSlider searchable mainPadding={0}>
<TagVideos />
</Navbar20>
</AuthWrapper>
}
/>
<Route
path="/w/:id"
element={
Expand All @@ -114,6 +138,7 @@ export default function App() {
}
/>
</Routes>
</GlobalDragDropOverlay>
</ThemeProvider>
</Router>
)
Expand Down
12 changes: 11 additions & 1 deletion app/client/src/common/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,13 +144,23 @@ export const getVideoUrl = (videoId, quality, extension) => {
*/
export const getVideoSources = (videoId, videoInfo, extension) => {
const sources = []
const URL = getUrl()
const SERVED_BY = getServedBy()

const has480p = videoInfo?.has_480p
const has720p = videoInfo?.has_720p
const has1080p = videoInfo?.has_1080p
const hasCrop = videoInfo?.has_crop

// When a cropped version exists, point "Source" at the cropped file instead of the original
const sourceUrl = hasCrop
? (SERVED_BY === 'nginx'
? `${URL}/_content/derived/${videoId}/${videoId}-cropped.mp4`
: `${URL}/api/video?id=${videoId}&quality=cropped`)
: getVideoUrl(videoId, 'original', extension)

sources.push({
src: getVideoUrl(videoId, 'original', extension),
src: sourceUrl,
type: 'video/mp4',
label: 'Source',
selected: true,
Expand Down
Loading
Loading