From 7860013aa95e0b63dcb334299de42b8fd158e810 Mon Sep 17 00:00:00 2001
From: Henrique Dias
Date: Tue, 11 Nov 2025 17:39:24 +0100
Subject: [PATCH 001/154] chore: update CODEOWNERS to use team (#5512)
---
.github/CODEOWNERS | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 827fbfd1..4c1605e6 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,5 +1 @@
-# These owners will be the default owners for everything in the repo.
-# Unless a later match takes precedence, @o1egl will be requested for
-# review when someone opens a pull request.
-
-* @o1egl @hacdias
+* @filebrowser/maintainers
From 1ac0305ed07dce3e772bd54f8dd6093cdae5baf1 Mon Sep 17 00:00:00 2001
From: Henrique Dias
Date: Tue, 11 Nov 2025 17:40:33 +0100
Subject: [PATCH 002/154] docs: add notice about releases page
---
www/docs/installation.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/www/docs/installation.md b/www/docs/installation.md
index eb609f06..741e8c1a 100644
--- a/www/docs/installation.md
+++ b/www/docs/installation.md
@@ -4,7 +4,7 @@ File Browser is a single binary and can be used as standalone executable. Howeve
## Binary
-The quickest and easiest way to install File Browser is to use a package manager, or our download script, which automatically fetches the latest version of File Browser for your platform.
+The quickest and easiest way to install File Browser is to use a package manager, or our download script, which automatically fetches the latest version of File Browser for your platform. Alternatively, you can manually download the binary from the [releases page](https://github.com/filebrowser/filebrowser/releases).
=== "Brew"
From 63142042bc731888bf371c065d9fa77ef0b3423a Mon Sep 17 00:00:00 2001
From: Henrique Dias
Date: Tue, 11 Nov 2025 18:10:55 +0100
Subject: [PATCH 003/154] docs: remove unmaintained badges
---
README.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 94ec1cef..11c3cbd8 100644
--- a/README.md
+++ b/README.md
@@ -3,10 +3,8 @@
[](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml)
-[](https://goreportcard.com/report/github.com/filebrowser/filebrowser)
-[](http://godoc.org/github.com/filebrowser/filebrowser)
+[](https://goreportcard.com/report/github.com/filebrowser/filebrowser/v2)
[](https://github.com/filebrowser/filebrowser/releases/latest)
-[](http://webchat.freenode.net/?channels=%23filebrowser)
File Browser provides a file managing interface within a specified directory and it can be used to upload, delete, preview and edit your files. It is a **create-your-own-cloud**-kind of software where you can just install it on your server, direct it to a path and access your files through a nice web interface.
From c5acbffe3fb7f316dc54a17acb0ec696a2861d68 Mon Sep 17 00:00:00 2001
From: Henrique Dias
Date: Tue, 11 Nov 2025 18:32:41 +0100
Subject: [PATCH 004/154] docs: import logo and banner (#5514)
---
README.md | 2 +-
branding/banner.png | Bin 0 -> 67856 bytes
branding/banner.svg | 1 +
branding/icon.png | Bin 0 -> 39962 bytes
branding/icon.svg | 1 +
branding/logo.png | Bin 0 -> 27365 bytes
branding/logo.svg | 1 +
frontend/public/img/logo.svg | 148 +----------------------------------
www/docs/index.md | 2 +-
9 files changed, 6 insertions(+), 149 deletions(-)
create mode 100644 branding/banner.png
create mode 100644 branding/banner.svg
create mode 100644 branding/icon.png
create mode 100644 branding/icon.svg
create mode 100644 branding/logo.png
create mode 100644 branding/logo.svg
diff --git a/README.md b/README.md
index 11c3cbd8..607bca46 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
[](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml)
diff --git a/branding/banner.png b/branding/banner.png
new file mode 100644
index 0000000000000000000000000000000000000000..9a533bfc850e1797c176f70f16a5544063da9629
GIT binary patch
literal 67856
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