Compare commits

..
52 Commits
Author SHA1 Message Date
Graham Steffaniak f624fff88f added warning to limit for duplicate finder (#1613) 2025-11-18 17:51:27 -06:00
Graham SteffaniakandKurami32 494baf2c0b Updated media detection (#1612)
Co-authored-by: Kurami32 <kurami32_kbm@proton.me>
2025-11-18 17:18:28 -06:00
Graham Steffaniak 95ab565324 updated supported packages (#1611) 2025-11-18 14:26:11 -06:00
Kevin B. 04135038c1 Improve rename prompt (#1608) 2025-11-18 14:23:39 -06:00
Graham Steffaniak e72a8fece0 updated duplicate detector (#1609) 2025-11-18 13:41:11 -06:00
Graham Steffaniak 5bcbf450a8 more duplicate finder changes and fixes (#1607) 2025-11-18 10:46:07 -06:00
Graham Steffaniak 252f329be8 updated with fix (#1605) 2025-11-18 08:36:33 -06:00
Graham Steffaniak f6c043382d updated upload folder with isDir (#1603) 2025-11-17 19:14:04 -06:00
Graham Steffaniak 690ef5d246 updated changelog 2025-11-17 17:20:28 -06:00
Kevin B.andGraham Steffaniak 347ae9c430 add folder icons for moveCopy prompt (#1601)
Co-authored-by: Graham Steffaniak <graham.steffaniak@autodesk.com>
2025-11-17 17:16:01 -06:00
Graham Steffaniak 63f09d6eaa updated with final tweaks (#1602) 2025-11-17 15:31:45 -06:00
Kevin B. 9d084d4d2b Add swipe and visual timeout to notifications (#1600) 2025-11-17 14:44:48 -05:00
Graham Steffaniak 33c7359f7c Standardized source path (#1594) 2025-11-17 13:28:04 -06:00
Graham Steffaniak d5421886bd updated with sidebar link changes (#1592) 2025-11-15 07:20:43 -06:00
Kevin B.andGraham Steffaniak 7f262b2a16 Fix moveCopy new folder creation (#1588)
Co-authored-by: Graham Steffaniak <graham.steffaniak@autodesk.com>
2025-11-14 18:21:56 -06:00
Graham Steffaniak cd115ac6c6 updated with backend migration and bugfixes (#1590) 2025-11-14 11:21:03 -06:00
Graham Steffaniak b7ddd535a9 updated release without dev 2025-11-13 17:28:40 -06:00
Graham Steffaniak fc62c6c9c7 fix a few share related issues (#1587) 2025-11-13 16:00:03 -06:00
Graham Steffaniak 7d114bece0 updated share links (#1581) 2025-11-13 10:45:46 -06:00
✿ corey b8d59cdb6a Track package-lock.json (#1580)
works for me
2025-11-13 09:52:33 -06:00
Graham Steffaniak e9b8cbdedc updated static file handling (#1578) 2025-11-12 10:59:51 -06:00
Graham Steffaniak 65e7a50233 Update CHANGELOG.md 2025-11-11 21:56:17 -05:00
Kevin B.andGraham Steffaniak 764131efeb Fix queue styles (#1574)
Co-authored-by: Graham Steffaniak <graham.steffaniak@autodesk.com>
2025-11-11 18:10:27 -06:00
Graham Steffaniak 14b16a86df set defaults true (#1572) 2025-11-11 17:24:52 -06:00
Graham Steffaniak 0df891e566 Update README.md (#1575) 2025-11-11 17:19:30 -06:00
Graham Steffaniak 56a0666daf moved shareInfo to API (#1570) 2025-11-11 10:40:18 -06:00
Graham Steffaniak 0e56d8e241 updated with duplicate finder (#1563) 2025-11-11 08:20:37 -06:00
Kevin B.andGraham Steffaniak a850132695 some other fixes/improvements (#1554)
Co-authored-by: Graham Steffaniak <42989099+gtsteffaniak@users.noreply.github.com>
2025-11-11 07:57:38 -06:00
43c57cabf6 Patch/misc fixes (#1560)
Co-authored-by: Pyro <pyrodd@gmail.com>
Co-authored-by: Kevin B. <kurami32_kbm@proton.me>
Co-authored-by: lps-rocks <10893911+lps-rocks@users.noreply.github.com>
Co-authored-by: contributor <foss.contributor@gmail.com>
Co-authored-by: Sarabanga <96509626+Sarabanga@users.noreply.github.com>
Co-authored-by: Ironic <202444094+YoureIronic@users.noreply.github.com>
2025-11-10 11:03:49 -06:00
Graham Steffaniak 426381a8bb updated so complexity is a sliding scale (#1552) 2025-11-09 15:38:20 -05:00
Kevin B. 01c025f31d fix audio metadata in previews (#1549) 2025-11-09 13:44:36 -05:00
Graham Steffaniak b3703698e4 fixed corrupt error debug 2025-11-09 12:09:41 -06:00
Graham Steffaniak c2e6065f05 updated a few things 2025-11-07 18:36:56 -06:00
Graham Steffaniak f4814e6315 Metadata duration support in listing view (#1539) 2025-11-07 17:52:43 -06:00
Kevin B. 2cedc3d7d3 some improvements for plyr (#1519) 2025-11-07 17:08:11 -06:00
Kevin B. 8994f01986 Count badge for status bar (#1523) 2025-11-07 17:05:30 -06:00
Graham Steffaniak 4bbf70ccb7 updated with reassign path options (#1532) 2025-11-06 13:45:00 -06:00
Graham Steffaniak 4bf4dac969 consolidate sidebar links 2025-11-05 19:24:50 -06:00
Graham SteffaniakandIronic c000eef6e5 Patch/misc fixes (#1528)
Co-authored-by: Ironic <202444094+YoureIronic@users.noreply.github.com>
2025-11-05 19:21:12 -06:00
Graham Steffaniak 70082d25b4 Update sidebar styling customization (#1526) 2025-11-05 19:20:12 -06:00
Graham Steffaniak 5e6fb6b95a fix scrollbar event propogation 2025-11-05 19:07:37 -06:00
Graham Steffaniak 29605bcfb8 updated resize styling (#1522) 2025-11-05 09:34:33 -06:00
Graham Steffaniak 06ad835900 Improve scanner efficiency cleanup (#1517) 2025-11-04 18:26:12 -06:00
Graham Steffaniak 1b77c6816e updated with scanner efficiency changes (#1516) 2025-11-04 15:19:14 -06:00
Graham Steffaniak 97bd657751 updated with cascade delete (#1515) 2025-11-04 14:28:06 -06:00
Graham Steffaniak 625cc58e4c more status bar tweaks (#1507) 2025-11-03 18:56:16 -06:00
Graham Steffaniak b2332db888 Enhanced notifications (#1506) 2025-11-03 17:34:55 -06:00
contributor fa5be1aa70 Startup better error handling for embed fs case (#1505) 2025-11-03 17:24:06 -06:00
Kevin B. fb8dcd8711 Status bar for listing view (#1459) 2025-11-03 13:12:22 -06:00
2b98c92d5c Add size analyzer tool (#1503)
Co-authored-by: Pyro <pyrodd@gmail.com>
Co-authored-by: Kevin B. <kurami32_kbm@proton.me>
Co-authored-by: lps-rocks <10893911+lps-rocks@users.noreply.github.com>
Co-authored-by: contributor <foss.contributor@gmail.com>
2025-11-03 13:04:50 -06:00
Graham Steffaniak 4a54ef8d16 user api PUT action more efficient (#1504) 2025-11-03 12:08:47 -06:00
Swedish Wiking 19926422c2 Dynamic scopes for OIDC (#1414) 2025-11-02 15:43:27 -06:00
9 changed files with 64 additions and 50 deletions

No files matched your search

-9
View File
@@ -2,15 +2,6 @@
All notable changes to this project will be documented in this file. For commit guidelines, please refer to [Standard Version](https://github.com/conventional-changelog/standard-version).
## v1.1.1-beta
**Notes**:
- [docker] upgraded ffmpeg 8.0 to 8.0.1
**BugFixes**:
- added missing exiftool to docker image for heic conversion orientation support
- v1.1.0-beta - Incorrect naming of 1 file in directory-info #1621
## v1.1.0-beta
**New Features**:
-2
View File
@@ -17,8 +17,6 @@
## Pinned
:loudspeaker: [What's Coming Soon](https://github.com/gtsteffaniak/filebrowser/discussions/1622)
:pushpin: [Read The Official Docs](https://filebrowserquantum.com/) (currently english-only)
## About
+2 -3
View File
@@ -1,4 +1,4 @@
FROM gtstef/ffmpeg:8.0.1-decode AS ffmpeg
FROM gtstef/ffmpeg:8.0-decode AS ffmpeg
FROM golang:alpine AS base
ARG VERSION
ARG REVISION
@@ -28,7 +28,7 @@ COPY --from=ffmpeg [ "/ffmpeg", "/ffprobe", "/usr/local/bin/" ]
ENV FILEBROWSER_FFMPEG_PATH="/usr/local/bin/"
ENV FILEBROWSER_DATABASE="/home/filebrowser/data/database.db"
ENV PATH="$PATH:/home/filebrowser"
RUN apk --no-cache add ca-certificates mailcap tzdata curl exiftool
RUN apk --no-cache add ca-certificates mailcap tzdata curl
RUN adduser -D -s /bin/true -u 1000 filebrowser
USER filebrowser
WORKDIR /home/filebrowser
@@ -42,7 +42,6 @@ COPY --from=nbuild --chown=filebrowser:1000 [ "/app/dist/", "./http/dist/" ]
RUN [ "filebrowser", "version" ]
RUN [ "ffmpeg", "-version" ]
RUN [ "ffprobe", "-version" ]
RUN [ "exiftool", "-ver" ]
USER root
# exposing default port for auto discovery.
EXPOSE 80
+3 -2
View File
@@ -14,13 +14,13 @@ require (
github.com/google/go-cmp v0.7.0
github.com/gtsteffaniak/go-cache v1.0.0
github.com/gtsteffaniak/go-logger v0.2.3
github.com/kovidgoyal/imaging v1.7.2
github.com/kovidgoyal/imaging v1.8.15
github.com/pquerna/otp v1.5.0
github.com/spf13/afero v1.15.0
github.com/stretchr/testify v1.11.1
github.com/swaggo/http-swagger v1.3.4
github.com/swaggo/swag v1.16.6
golang.org/x/crypto v0.45.0
golang.org/x/crypto v0.44.0
golang.org/x/image v0.33.0
golang.org/x/mod v0.30.0
golang.org/x/oauth2 v0.33.0
@@ -161,6 +161,7 @@ require (
github.com/kisielk/errcheck v1.9.0 // indirect
github.com/kkHAIKE/contextcheck v1.1.6 // indirect
github.com/kovidgoyal/go-parallel v1.1.1 // indirect
github.com/kovidgoyal/go-shm v1.0.0 // indirect
github.com/kulti/thelper v0.7.1 // indirect
github.com/kunwardeep/paralleltest v1.0.15 // indirect
github.com/lasiar/canonicalheader v1.1.2 // indirect
+6 -4
View File
@@ -546,8 +546,10 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kovidgoyal/go-parallel v1.1.1 h1:1OzpNjtrUkBPq3UaqrnvOoB2F9RttSt811uiUXyI7ok=
github.com/kovidgoyal/go-parallel v1.1.1/go.mod h1:BJNIbe6+hxyFWv7n6oEDPj3PA5qSw5OCtf0hcVxWJiw=
github.com/kovidgoyal/imaging v1.7.2 h1:mmT6k6Az3mC6dbqdZ6Q9KQCdZFWTAQ+q97NyGZgJ/2c=
github.com/kovidgoyal/imaging v1.7.2/go.mod h1:GdkCORjfZMMGFY0Pb7TDmRhj7PDhxF/QShKukSCj0VU=
github.com/kovidgoyal/go-shm v1.0.0 h1:HJEel9D1F9YhULvClEHJLawoRSj/1u/EDV7MJbBPgQo=
github.com/kovidgoyal/go-shm v1.0.0/go.mod h1:Yzb80Xf9L3kaoB2RGok9hHwMIt7Oif61kT6t3+VnZds=
github.com/kovidgoyal/imaging v1.8.15 h1:FwKRGvmbQ04OFYF5WIalcvUontcnj1chBeHmR5I7UYg=
github.com/kovidgoyal/imaging v1.8.15/go.mod h1:aXZHGm/gKcaXpxn1NnQiVtuz3Z2BCnXWyjF0ZGrmJ1g=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -891,8 +893,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU=
golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
+5
View File
@@ -56,6 +56,11 @@ var ResizableImageTypes = map[string]bool{
".tif": true,
".heic": true,
".heif": true,
".webp": true,
".pbm": true,
".pgm": true,
".ppm": true,
".pam": true,
".other": false,
}
+42 -1
View File
@@ -21,6 +21,11 @@ gif
tiff
bmp
heic
webp
pbm
pgm
ppm
pam
)
*/
type Format int
@@ -39,6 +44,16 @@ func (x Format) toImaging() imaging.Format {
return imaging.BMP
case FormatHeic:
return imaging.JPEG
case FormatWebp:
return imaging.WEBP
case FormatPbm:
return imaging.PBM
case FormatPgm:
return imaging.PGM
case FormatPpm:
return imaging.PPM
case FormatPam:
return imaging.PAM
default:
return imaging.JPEG
}
@@ -96,6 +111,16 @@ func (s *Service) FormatFromExtension(ext string) (Format, error) {
return FormatTiff, nil
case imaging.BMP:
return FormatBmp, nil
case imaging.WEBP:
return FormatWebp, nil
case imaging.PBM:
return FormatPbm, nil
case imaging.PGM:
return FormatPgm, nil
case imaging.PPM:
return FormatPpm, nil
case imaging.PAM:
return FormatPam, nil
default:
return -1, ErrUnsupportedFormat
}
@@ -166,9 +191,25 @@ func (s *Service) Resize(in io.Reader, width, height int, out io.Writer, options
}
// For HEIC files, try without AutoOrientation first since it might not work properly
// Try decoding with default settings (auto color space conversion)
img, err := imaging.Decode(wrappedReader)
if err != nil {
return fmt.Errorf("failed to decode image: %w", err)
// If decoding fails due to ICC profile issues (e.g., unsupported grayscale colorspace),
// retry with color space conversion disabled
if bytes.Contains([]byte(err.Error()), []byte("colorspace")) ||
bytes.Contains([]byte(err.Error()), []byte("ICC profile")) {
// Reset reader to beginning
if seeker, ok := wrappedReader.(io.Seeker); ok {
_, _ = seeker.Seek(0, io.SeekStart)
}
// Try again without color space conversion
img, err = imaging.Decode(wrappedReader, imaging.ColorSpace(imaging.NO_CHANGE_OF_COLORSPACE))
if err != nil {
return fmt.Errorf("failed to decode image: %w", err)
}
} else {
return fmt.Errorf("failed to decode image: %w", err)
}
}
// Note: For HEIC files processed via FFmpeg, orientation is handled automatically
+4 -25
View File
@@ -4,10 +4,12 @@
<div class="status-info">
<span v-if="selectedCount > 0">
<span class="button">{{ selectedCount }}</span>
{{ selectedItemsText }}
<!-- eslint-disable-next-line @intlify/vue-i18n/no-raw-text -->
{{ $t(selectedCount === 1 ? 'files.itemSelected' : 'files.itemsSelected') }} ({{ displayTotalSize }})
</span>
<span v-else class="directory-info">
{{ directoryInfoText }}
<!-- eslint-disable-next-line @intlify/vue-i18n/no-raw-text -->
{{ numDirs }} {{ $t(numDirs === 1 ? 'buttons.folder' : 'general.folders') }} | {{ numFiles }} {{ $t(numFiles === 1 ? 'buttons.file' : 'general.files') }} ({{ displayTotalSize }})
</span>
</div>
<div class="status-controls">
@@ -85,29 +87,6 @@ export default {
const size = this.selectedCount > 0 ? this.totalSelectedSize : this.totalDirectorySize;
return getHumanReadableFilesize(size);
},
// i18n labels with compile-time checked keys
itemsSelectedLabel() {
return this.selectedCount === 1
? this.$t("files.itemSelected")
: this.$t("files.itemsSelected");
},
foldersLabel() {
return this.numDirs === 1
? this.$t("general.folder")
: this.$t("general.folders");
},
filesLabel() {
return this.numFiles === 1
? this.$t("general.file")
: this.$t("general.files");
},
// Complete text with raw characters moved from template
selectedItemsText() {
return `${this.itemsSelectedLabel} (${this.displayTotalSize})`;
},
directoryInfoText() {
return `${this.numDirs} ${this.foldersLabel} | ${this.numFiles} ${this.filesLabel} (${this.displayTotalSize})`;
},
},
methods: {
updateGallerySize(event) {
@@ -25,11 +25,9 @@
<strong>{{ $t("prompts.size", { suffix: ":" }) }}</strong> {{ humanSize }}
<!-- eslint-disable-line @intlify/vue-i18n/no-raw-text -->
</div>
<div v-if="!shareInfo.disableDownload" class="share__box__element share__box__center">
<button class="button button--flat clickable" @click="goToDownload()"> {{ $t("general.download") }}
</button>
</div>
</div>
</div>
</div>
</div>