> **NOTE**
Intended for docker use only
@@ -44,15 +53,12 @@ will only recieve security updates. These changes are mentioned above.
Once this is fully complete, the only updates to th
## Look
-
-This is how desktop search looks in 0.2.0
-
-
-
-
-However [mobile search](https://github.com/gtsteffaniak/filebrowser/assets/42989099/37e8f03b-4f5a-4689-aa6c-5cd858a858e9) still appears very similar to filebrowser/filebrowsers original implementation.
-
-[Mobile web also looks similar](https://github.com/gtsteffaniak/filebrowser/assets/42989099/b04d3c1f-154b-45ba-927c-2112926ad3a9)
+
+
+
+
+
+
## Performance
@@ -66,23 +72,23 @@ system should fully index within the first 5 minutes, potentially within the fir
For example, a low end 11th gen i5 with SSD indexes 86K files within 1 second:
```
-2023/08/01 00:08:29 Using config file: /.filebrowser.json
-2023/08/01 00:08:29 Indexing files...
-2023/08/01 00:08:29 Listening on [::]:8080
-2023/08/01 00:08:30 Successfully indexed files.
-2023/08/01 00:08:30 Files found : 85310
-2023/08/01 00:08:30 Directories found : 1711
-2023/08/01 00:08:30 Indexing scheduler will run every 5 minutes
+2023/09/09 21:38:50 Initializing with config file: filebrowser.yaml
+2023/09/09 21:38:50 Indexing files...
+2023/09/09 21:38:50 Listening on [::]:8080
+2023/09/09 21:38:51 Successfully indexed files.
+2023/09/09 21:38:51 Files found : 123452
+2023/09/09 21:38:51 Directories found : 1768
+2023/09/09 21:38:51 Indexing scheduler will run every 5 minutes
```
## Install
Using docker:
-1. docker run:
+1. docker run (no persistent db):
```
-docker run -it -v /path/to/folder:/srv -p 8080:8080 gtstef/filebrowser
+docker run -it -v /path/to/folder:/srv -p 80:8080 gtstef/filebrowser
```
1. docker-compose:
@@ -94,12 +100,13 @@ version: '3.7'
services:
filebrowser:
volumes:
- - '/path/to/folder:/srv'
- #- './database/:/database/'
- - './config.json:/.filebrowser.json'
+ - '/path/to/folder:/srv' # required (for now not configurable)
+ - './database:/database' # optional if you want db to persist - configure a path under "database" dir in config file.
+ - './filebrowser.yaml:/filebrowser.yaml' # required
ports:
- - '8080:8080'
+ - '80:8080'
image: gtstef/filebrowser
+ restart: always
```
- with network share
@@ -109,23 +116,28 @@ version: '3.7'
services:
filebrowser:
volumes:
- - 'nas:/srv'
- #- './database/:/database/'
- #- './config.json:/.filebrowser.json'
+ - 'storage:/srv' # required (for now not configurable)
+ - './database:/database' # optional if you want db to persist - configure a path under "database" dir in config file.
+ - './filebrowser.yaml:/filebrowser.yaml' # required
ports:
- - '8080:80'
+ - '80:8080'
image: gtstef/filebrowser
+ restart: always
volumes:
- nas:
+ storage:
driver_opts:
type: cifs
- o: "username=myusername,password=mypassword,rw"
- device: "//fileshare/"
+ o: "username=admin,password=password,rw" # enter valid info here
+ device: "//192.168.1.100/share/" # enter valid hinfo here
+
```
## Configuration
-All configuration is now done via a single configuration file: `filebrowser.yaml`, here is an example [configuration file](./backend/filebrowser.yaml).
+All configuration is now done via a single configuration file: `filebrowser.yaml`, here is an example minimal [configuration file](./backend/filebrowser.yaml).
+
+View the [Configuration Help Page](./configuration.md) for available configuration options and other help.
+
### background
The original project filebrowser/filebrowser used multiple different ways to configure the server.
diff --git a/backend/http/static.go b/backend/http/static.go
index b0e1685e..aef7bd0d 100644
--- a/backend/http/static.go
+++ b/backend/http/static.go
@@ -139,7 +139,7 @@ func getStaticHandlers(store *storage.Storage, server *settings.Server, assetsFs
}
w.Header().Set("Content-Encoding", "gzip")
- w.Header().Set("Content-Type", "application/javascript; charset=utf-8")
+ w.Header().Set("Content-Type", "application/javascript; charset=utf-8") // Set the correct MIME type for JavaScript files
if _, err := w.Write(fileContents); err != nil {
return http.StatusInternalServerError, err
diff --git a/configuration.md b/configuration.md
new file mode 100644
index 00000000..dc5b5762
--- /dev/null
+++ b/configuration.md
@@ -0,0 +1,216 @@
+# Configuration Help
+
+This document covers the available configuration options, their defaults, and how they affect the functionality of filebrowser.
+
+## All possible configurations
+
+Here is an expanded config file which includes all possible configurations:
+
+```
+server:
+ indexingInterval: 5
+ numImageProcessors: 4
+ socket: ""
+ tlsKey: ""
+ tlsCert: ""
+ enableThumbnails: false
+ resizePreview: true
+ typeDetectionByHeader: true
+ port: 8080
+ baseURL: "/"
+ address: ""
+ log: "stdout"
+ database: "/database/database.db"
+ root: "/srv"
+auth:
+ recaptcha:
+ host: ""
+ key: ""
+ secret: ""
+ header: ""
+ method: json
+ command: ""
+ signup: false
+ shell: ""
+frontend:
+ name: ""
+ disableExternal: false
+ disableUsedPercentage: true
+ files: ""
+ theme: ""
+ color: ""
+userDefaults:
+ scope: ""
+ locale: ""
+ viewMode: ""
+ singleClick: true
+ sorting:
+ by: ""
+ asc: true
+ permissions:
+ admin: true
+ execute: true
+ create: true
+ rename: true
+ modify: true
+ delete: true
+ share: true
+ download: true
+ commands: []
+ hideDotfiles: false
+ dateFormat: false
+```
+
+Here are the defaults if nothing is set:
+
+```
+Signup: true
+AdminUsername: admin
+AdminPassword: admin
+Server:
+ EnableThumbnails: true
+ EnableExec: false
+ IndexingInterval: 5
+ Port: 8080
+ NumImageProcessors: 4
+ BaseURL: ""
+ Database: database.db
+ Log: stdout
+ Root: /srv
+Auth:
+ Method: password
+ Recaptcha:
+ Host: ""
+UserDefaults:
+ Scope: "."
+ LockPassword: false
+ HideDotfiles: true
+ Permissions:
+ Create: true
+ Rename: true
+ Modify: true
+ Delete: true
+ Share: true
+ Download: true
+```
+
+## About each configuration
+
+# Configuration Settings Documentation
+
+## About each configuration
+
+- `Signup`: This boolean value indicates whether user signup is enabled.
+
+- `AdminUsername`: This is the username of the admin user.
+
+- `AdminPassword`: This is the password of the admin user.
+
+### Server configuration settings
+
+- `indexingInterval`: This is the time in minutes the system waits before checking for filesystem changes (used in search only).
+
+- `numImageProcessors`: This is the number of image processors available.
+
+- `socket`: This is the socket configuration.
+
+- `tlsKey`: This is the TLS key configuration.
+
+- `tlsCert`: This is the TLS certificate configuration.
+
+- `enableThumbnails`: This boolean value determines whether thumbnails are enabled.
+
+- `resizePreview`: This boolean value determines whether preview resizing is enabled.
+
+- `typeDetectionByHeader`: This boolean value determines whether type detection is based on headers.
+
+- `port`: This is the port number on which the server is running.
+
+- `baseURL`: This is the base URL for the server.
+
+- `address`: This is the server address configuration.
+
+- `log`: This specifies the log destination (e.g., "stdout" for standard output).
+
+- `database`: This is the database file path + filename that will be created if it does not already exist. If it exists, it will use the existing file.
+
+- `root`: This is the root directory path.
+
+### Auth configuration settings
+
+- `recaptcha`:
+
+ - `host`: This is the host for reCAPTCHA.
+
+ - `key`: This is the reCAPTCHA key.
+
+ - `secret`: This is the reCAPTCHA secret.
+
+- `header`: This is the authentication header.
+
+- `method`: This is the authentication method used (e.g., "json"). Possible values:
+ - password - username and password
+ - hook - hook authentication
+ - proxy - proxy authentication
+ - oath - oath authentication
+
+- `command`: This is the authentication command.
+
+- `signup`: This boolean value indicates whether user signup is enabled.
+
+- `shell`: This is the shell configuration.
+
+### Frontend configuration settings
+
+- `name`: This is the name of the frontend.
+
+- `disableExternal`: This boolean value determines whether external access is disabled.
+
+- `disableUsedPercentage`: This boolean value determines whether used percentage is disabled.
+
+- `files`: This is the files configuration.
+
+- `theme`: This is the theme configuration.
+
+- `color`: This is the color configuration.
+
+### UserDefaults configuration settings
+
+- `scope`: This is a scope of the permissions, "." or "./" means all directories, "./downloads" would mean only the downloads folder.
+
+- `locale`: This is the locale configuration.
+
+- `viewMode`: This is the view mode configuration.
+
+- `singleClick`: This boolean value determines whether single-click is enabled.
+
+- `sorting`:
+
+ - `by`: This is the sorting method used (e.g., "asc").
+
+ - `asc`: This boolean value determines the sorting order.
+
+- `permissions`:
+
+ - `admin`: This boolean value determines whether admin permissions are granted.
+
+ - `execute`: This boolean value determines whether execute permissions are granted.
+
+ - `create`: This boolean value determines whether create permissions are granted.
+
+ - `rename`: This boolean value determines whether rename permissions are granted.
+
+ - `modify`: This boolean value determines whether modify permissions are granted.
+
+ - `delete`: This boolean value determines whether delete permissions are granted.
+
+ - `share`: This boolean value determines whether share permissions are granted.
+
+ - `download`: This boolean value determines whether download permissions are granted.
+
+- `commands`: This is a list of commands.
+
+- `hideDotfiles`: This boolean value determines whether dotfiles are hidden.
+
+- `dateFormat`: This boolean value determines whether date formatting is enabled.
+
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index e5deadfb..d54ba7b2 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -8,7 +8,7 @@
"name": "filebrowser-frontend",
"version": "2.0.0",
"dependencies": {
- "ace-builds": "^1.4.7",
+ "ace-builds": "^1.24.2",
"clipboard": "^2.0.4",
"css-vars-ponyfill": "^2.4.3",
"file-loader": "^6.2.0",
@@ -53,12 +53,12 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.22.10",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz",
- "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==",
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.22.10",
+ "@babel/highlight": "^7.22.13",
"chalk": "^2.4.2"
},
"engines": {
@@ -137,13 +137,13 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.22.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz",
- "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
+ "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
"dev": true,
"dependencies": {
"@babel/compat-data": "^7.22.9",
- "@babel/helper-validator-option": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.15",
"browserslist": "^4.21.9",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
@@ -153,27 +153,27 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
- "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz",
+ "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
- "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz",
+ "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.22.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz",
- "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==",
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz",
+ "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==",
"dev": true,
"dependencies": {
"@babel/helper-validator-identifier": "^7.22.5",
@@ -247,9 +247,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.22.10",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz",
- "integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==",
+ "version": "7.22.16",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz",
+ "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -387,9 +387,9 @@
}
},
"node_modules/@polka/url": {
- "version": "1.0.0-next.21",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
- "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
+ "version": "1.0.0-next.23",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz",
+ "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==",
"dev": true
},
"node_modules/@sideway/address": {
@@ -466,18 +466,18 @@
}
},
"node_modules/@types/connect": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
- "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
+ "version": "3.4.36",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz",
+ "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/connect-history-api-fallback": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
- "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz",
+ "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==",
"dev": true,
"dependencies": {
"@types/express-serve-static-core": "*",
@@ -520,9 +520,9 @@
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.17.35",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz",
- "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==",
+ "version": "4.17.36",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz",
+ "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==",
"dev": true,
"dependencies": {
"@types/node": "*",
@@ -570,9 +570,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "20.5.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.0.tgz",
- "integrity": "sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q=="
+ "version": "20.6.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz",
+ "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg=="
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.1",
@@ -587,9 +587,9 @@
"dev": true
},
"node_modules/@types/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
+ "version": "6.9.8",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz",
+ "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==",
"dev": true
},
"node_modules/@types/range-parser": {
@@ -923,9 +923,9 @@
},
"node_modules/@vue/vue-loader-v15": {
"name": "vue-loader",
- "version": "15.10.1",
- "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz",
- "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
+ "version": "15.10.2",
+ "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.2.tgz",
+ "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==",
"dev": true,
"dependencies": {
"@vue/component-compiler-utils": "^3.1.0",
@@ -942,6 +942,9 @@
"cache-loader": {
"optional": true
},
+ "prettier": {
+ "optional": true
+ },
"vue-template-compiler": {
"optional": true
}
@@ -1114,9 +1117,9 @@
}
},
"node_modules/ace-builds": {
- "version": "1.24.1",
- "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.24.1.tgz",
- "integrity": "sha512-TLcxMxiTRX5Eq9bBVSd/bTJlanCBULiv/IULLohJDDaCAfcpZKJBVSd4OWfN/j2c2jCLc+jhpNWGELiJZw3wPw=="
+ "version": "1.24.2",
+ "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.24.2.tgz",
+ "integrity": "sha512-zjvJiEw05BADxPMq5gN/Vgc9FgyiiDHpdy676Af1nJk8DF4ipgf0cNmV3wy8JHeQ6vezypEZV6pHQu9avO+WtQ=="
},
"node_modules/acorn": {
"version": "8.10.0",
@@ -1621,9 +1624,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001521",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001521.tgz",
- "integrity": "sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==",
+ "version": "1.0.30001532",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz",
+ "integrity": "sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==",
"funding": [
{
"type": "opencollective",
@@ -1839,6 +1842,18 @@
"node": ">=6"
}
},
+ "node_modules/clone-deep/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -2629,9 +2644,9 @@
"dev": true
},
"node_modules/dns-packet": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz",
- "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==",
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
+ "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
"dev": true,
"dependencies": {
"@leichtgewicht/ip-codec": "^2.0.1"
@@ -2751,9 +2766,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.495",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.495.tgz",
- "integrity": "sha512-mwknuemBZnoOCths4GtpU/SDuVMp3uQHKa2UNJT9/aVD6WVRjGpXOxRGX7lm6ILIenTdGXPSTCTDaWos5tEU8Q=="
+ "version": "1.4.513",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz",
+ "integrity": "sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw=="
},
"node_modules/emoji-regex": {
"version": "8.0.0",
@@ -3253,16 +3268,16 @@
}
},
"node_modules/fraction.js": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
- "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz",
+ "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==",
"dev": true,
"engines": {
"node": "*"
},
"funding": {
"type": "patreon",
- "url": "https://www.patreon.com/infusion"
+ "url": "https://github.com/sponsors/rawify"
}
},
"node_modules/fresh": {
@@ -3302,9 +3317,9 @@
"dev": true
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"optional": true,
@@ -3932,13 +3947,10 @@
}
},
"node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
"engines": {
"node": ">=0.10.0"
}
@@ -4031,9 +4043,9 @@
}
},
"node_modules/joi": {
- "version": "17.9.2",
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz",
- "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==",
+ "version": "17.10.1",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.10.1.tgz",
+ "integrity": "sha512-vIiDxQKmRidUVp8KngT8MZSOcmRVm2zV7jbMjNYWuHcJWI0bUck3nRTGQjhpPlQenIQIBC5Vp9AhcnHbWQqafw==",
"dev": true,
"dependencies": {
"@hapi/hoek": "^9.0.0",
@@ -4201,12 +4213,36 @@
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
},
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true
+ },
"node_modules/lodash.defaultsdeep": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
"integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
"dev": true
},
+ "node_modules/lodash.escape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
+ "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==",
+ "dev": true
+ },
+ "node_modules/lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==",
+ "dev": true
+ },
+ "node_modules/lodash.invokemap": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz",
+ "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==",
+ "dev": true
+ },
"node_modules/lodash.mapvalues": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
@@ -4219,6 +4255,12 @@
"integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
"dev": true
},
+ "node_modules/lodash.pullall": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz",
+ "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==",
+ "dev": true
+ },
"node_modules/lodash.throttle": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
@@ -4230,6 +4272,12 @@
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
"dev": true
},
+ "node_modules/lodash.uniqby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
+ "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==",
+ "dev": true
+ },
"node_modules/log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -4397,9 +4445,9 @@
}
},
"node_modules/material-icons": {
- "version": "1.13.9",
- "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.13.9.tgz",
- "integrity": "sha512-dwuf2C8LR07FcrjRDx0vWnDEcHiDuamXOmtAck8bdONUv5Fi6wR/ubQwPfG1NbcqgPg+y0fHN8Unj5DO+5fV4w=="
+ "version": "1.13.11",
+ "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.13.11.tgz",
+ "integrity": "sha512-kp2oAdaqo/Zp6hpTZW01rOgDPWmxBUszSdDzkRm1idCjjNvdUMnqu8qu58cll6CObo+o0cydOiPLdoSugLm+mQ=="
},
"node_modules/mdn-data": {
"version": "2.0.14",
@@ -4696,9 +4744,9 @@
}
},
"node_modules/node-fetch": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
- "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dev": true,
"dependencies": {
"whatwg-url": "^5.0.0"
@@ -5181,9 +5229,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.28",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz",
- "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
+ "version": "8.4.29",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz",
+ "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==",
"funding": [
{
"type": "opencollective",
@@ -6497,14 +6545,14 @@
"dev": true
},
"node_modules/sirv": {
- "version": "1.0.19",
- "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz",
- "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz",
+ "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==",
"dev": true,
"dependencies": {
"@polka/url": "^1.0.0-next.20",
"mrmime": "^1.0.0",
- "totalist": "^1.0.0"
+ "totalist": "^3.0.0"
},
"engines": {
"node": ">= 10"
@@ -6783,9 +6831,9 @@
}
},
"node_modules/terser": {
- "version": "5.19.2",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz",
- "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==",
+ "version": "5.19.4",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz",
+ "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2",
@@ -7034,9 +7082,9 @@
}
},
"node_modules/totalist": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
- "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
"dev": true,
"engines": {
"node": ">=6"
@@ -7049,9 +7097,9 @@
"dev": true
},
"node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==",
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
"dev": true
},
"node_modules/type-fest": {
@@ -7401,20 +7449,27 @@
}
},
"node_modules/webpack-bundle-analyzer": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz",
- "integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==",
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz",
+ "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==",
"dev": true,
"dependencies": {
"@discoveryjs/json-ext": "0.5.7",
"acorn": "^8.0.4",
"acorn-walk": "^8.0.0",
- "chalk": "^4.1.0",
"commander": "^7.2.0",
+ "escape-string-regexp": "^4.0.0",
"gzip-size": "^6.0.0",
- "lodash": "^4.17.20",
+ "is-plain-object": "^5.0.0",
+ "lodash.debounce": "^4.0.8",
+ "lodash.escape": "^4.0.1",
+ "lodash.flatten": "^4.4.0",
+ "lodash.invokemap": "^4.6.0",
+ "lodash.pullall": "^4.2.0",
+ "lodash.uniqby": "^4.7.0",
"opener": "^1.5.2",
- "sirv": "^1.0.7",
+ "picocolors": "^1.0.0",
+ "sirv": "^2.0.3",
"ws": "^7.3.1"
},
"bin": {
@@ -7424,22 +7479,6 @@
"node": ">= 10.13.0"
}
},
- "node_modules/webpack-bundle-analyzer/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
"node_modules/webpack-bundle-analyzer/node_modules/commander": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
@@ -7449,6 +7488,18 @@
"node": ">= 10"
}
},
+ "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/webpack-chain": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz",
@@ -7545,9 +7596,9 @@
}
},
"node_modules/webpack-dev-server/node_modules/ws": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
- "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+ "version": "8.14.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz",
+ "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==",
"dev": true,
"engines": {
"node": ">=10.0.0"
@@ -7661,9 +7712,9 @@
}
},
"node_modules/whatwg-fetch": {
- "version": "3.6.17",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz",
- "integrity": "sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ=="
+ "version": "3.6.18",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.18.tgz",
+ "integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q=="
},
"node_modules/whatwg-url": {
"version": "5.0.0",
diff --git a/frontend/package.json b/frontend/package.json
index ce75e1ca..00c529e1 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -9,16 +9,16 @@
"watch": "vue-cli-service build --watch"
},
"dependencies": {
- "ace-builds": "^1.4.7",
+ "ace-builds": "^1.24.2",
"clipboard": "^2.0.4",
- "normalize.css": "^8.0.1",
- "file-loader": "^6.2.0",
"css-vars-ponyfill": "^2.4.3",
+ "file-loader": "^6.2.0",
"js-base64": "^2.5.1",
"lodash.clonedeep": "^4.5.0",
"lodash.throttle": "^4.1.1",
"material-icons": "^1.10.5",
"moment": "^2.29.4",
+ "normalize.css": "^8.0.1",
"noty": "^3.2.0-beta",
"pretty-bytes": "^6.0.0",
"qrcode.vue": "^1.7.0",
diff --git a/frontend/public/img/icons/android-chrome-192x192.png b/frontend/public/img/icons/android-chrome-192x192.png
new file mode 120000
index 00000000..f2ee31b9
--- /dev/null
+++ b/frontend/public/img/icons/android-chrome-192x192.png
@@ -0,0 +1 @@
+favicon-256x256.png
\ No newline at end of file
diff --git a/frontend/public/img/icons/android-chrome-256x256.png b/frontend/public/img/icons/android-chrome-256x256.png
new file mode 120000
index 00000000..f2ee31b9
--- /dev/null
+++ b/frontend/public/img/icons/android-chrome-256x256.png
@@ -0,0 +1 @@
+favicon-256x256.png
\ No newline at end of file
diff --git a/frontend/public/img/icons/favicon-16x16.png b/frontend/public/img/icons/favicon-16x16.png
new file mode 120000
index 00000000..f2ee31b9
--- /dev/null
+++ b/frontend/public/img/icons/favicon-16x16.png
@@ -0,0 +1 @@
+favicon-256x256.png
\ No newline at end of file
diff --git a/frontend/public/img/icons/favicon-256x256.png b/frontend/public/img/icons/favicon-256x256.png
new file mode 100644
index 00000000..50b30a60
Binary files /dev/null and b/frontend/public/img/icons/favicon-256x256.png differ
diff --git a/frontend/public/img/icons/favicon-32x32.png b/frontend/public/img/icons/favicon-32x32.png
deleted file mode 100644
index bb33be2b..00000000
Binary files a/frontend/public/img/icons/favicon-32x32.png and /dev/null differ
diff --git a/frontend/public/img/icons/favicon.ico b/frontend/public/img/icons/favicon.ico
index d78d8bdb..7f7a9eca 100644
Binary files a/frontend/public/img/icons/favicon.ico and b/frontend/public/img/icons/favicon.ico differ
diff --git a/frontend/public/img/icons/mstile-150x150.png b/frontend/public/img/icons/mstile-150x150.png
deleted file mode 100644
index bb33be2b..00000000
Binary files a/frontend/public/img/icons/mstile-150x150.png and /dev/null differ
diff --git a/frontend/public/img/icons/mstile-256x256.png b/frontend/public/img/icons/mstile-256x256.png
new file mode 120000
index 00000000..f2ee31b9
--- /dev/null
+++ b/frontend/public/img/icons/mstile-256x256.png
@@ -0,0 +1 @@
+favicon-256x256.png
\ No newline at end of file
diff --git a/frontend/public/index.html b/frontend/public/index.html
index d6986bf1..00bd9650 100644
--- a/frontend/public/index.html
+++ b/frontend/public/index.html
@@ -11,8 +11,7 @@
[{[ if .Name -]}][{[ .Name ]}][{[ else ]}]File Browser[{[ end ]}]
-
-
+
@@ -38,12 +37,7 @@
"short_name": window.FileBrowser.Name || 'File Browser',
"icons": [
{
- "src": fullStaticURL + "/img/icons/android-chrome-192x192.png",
- "sizes": "192x192",
- "type": "image/png"
- },
- {
- "src": fullStaticURL + "/img/icons/android-chrome-512x512.png",
+ "src": fullStaticURL + "/img/icons/android-chrome-256x256.png",
"sizes": "512x512",
"type": "image/png"
}
diff --git a/frontend/src/views/bars/EditorBar.vue b/frontend/src/views/bars/EditorBar.vue
index 8977c1f3..96b3d5a0 100644
--- a/frontend/src/views/bars/EditorBar.vue
+++ b/frontend/src/views/bars/EditorBar.vue
@@ -25,14 +25,9 @@
+
\ No newline at end of file
diff --git a/frontend/vue.config.js b/frontend/vue.config.js
index 6f0be70c..4f6ecd6b 100644
--- a/frontend/vue.config.js
+++ b/frontend/vue.config.js
@@ -5,11 +5,17 @@ module.exports = {
publicPath: "[{[ .StaticURL ]}]",
parallel: true,
configureWebpack: {
+ resolve: {
+ alias: {
+ // Add Ace Editor alias for importing it in your Vue components
+ ace: "ace-builds/src-min-noconflict",
+ },
+ extensions: ["*", ".js", ".vue", ".json"],
+ },
plugins: [
new CompressionPlugin({
include: /\.js$/,
deleteOriginalAssets: true,
- threshold: 10240, // Only compress files larger than 10KB
minRatio: 0.8,
}),
],