From b4bba3391d1203d60cadcebe29326b3b9e51964c Mon Sep 17 00:00:00 2001 From: Graham Steffaniak <42989099+gtsteffaniak@users.noreply.github.com> Date: Tue, 30 Jul 2024 12:45:27 -0500 Subject: [PATCH] V0.2.6 (#150) --- .github/workflows/dev.yaml | 45 +- .github/workflows/main.yaml | 42 +- .github/workflows/pr-merge.yaml | 44 +- .github/workflows/release.yaml | 43 +- .gitignore | 2 + CHANGELOG.md | 22 +- Dockerfile | 12 +- README.md | 56 +- backend/cmd/root.go | 33 +- backend/cmd/rule_rm.go | 8 +- backend/cmd/rules.go | 4 +- backend/cmd/rules_add.go | 4 +- backend/cmd/users_add.go | 8 +- backend/cmd/users_export.go | 4 +- backend/cmd/users_find.go | 2 +- backend/cmd/users_import.go | 20 +- backend/cmd/users_rm.go | 2 +- backend/cmd/users_update.go | 4 +- backend/cmd/utils.go | 22 +- backend/filebrowser.yaml | 5 +- backend/files/file.go | 16 +- backend/frontend/package-lock.json | 6 + backend/http/resource.go | 5 +- backend/http/static.go | 4 +- backend/settings/config.go | 1 + backend/settings/structs.go | 1 + backend/version/version.go | 2 +- configuration.md | 3 + frontend/.eslintrc.json | 26 + frontend/babel.config.js | 3 - frontend/eslint.config.js | 0 frontend/original.json | 47 - frontend/package-lock.json | 8423 ----------------- frontend/package.json | 53 +- frontend/public/index.html | 6 +- frontend/src/App.vue | 17 +- frontend/src/api/commands.js | 4 +- frontend/src/api/files.js | 8 +- frontend/src/api/share.js | 1 + frontend/src/api/users.js | 4 +- frontend/src/api/utils.js | 19 +- frontend/src/components/Breadcrumbs.vue | 23 +- frontend/src/components/ButtonGroup.vue | 3 - frontend/src/components/ProgressBar.vue | 221 + frontend/src/components/Search.vue | 525 +- frontend/src/components/Sidebar.vue | 153 +- .../src/components/files/ExtendedImage.vue | 59 +- frontend/src/components/files/ListingItem.vue | 120 +- frontend/src/components/header/Action.vue | 4 +- frontend/src/components/prompts/Copy.vue | 37 +- frontend/src/components/prompts/Delete.vue | 36 +- .../src/components/prompts/DeleteUser.vue | 29 +- frontend/src/components/prompts/Download.vue | 10 +- frontend/src/components/prompts/FileList.vue | 16 +- frontend/src/components/prompts/Help.vue | 13 +- frontend/src/components/prompts/Info.vue | 96 +- frontend/src/components/prompts/Move.vue | 33 +- frontend/src/components/prompts/NewDir.vue | 30 +- frontend/src/components/prompts/NewFile.vue | 31 +- frontend/src/components/prompts/Prompts.vue | 43 +- frontend/src/components/prompts/Rename.vue | 52 +- frontend/src/components/prompts/Replace.vue | 9 +- .../src/components/prompts/ReplaceRename.vue | 9 +- frontend/src/components/prompts/Share.vue | 68 +- .../src/components/prompts/ShareDelete.vue | 15 +- .../src/components/prompts/UploadFiles.vue | 18 +- .../src/components/settings/Languages.vue | 35 +- frontend/src/components/settings/UserForm.vue | 10 +- frontend/src/css/base.css | 36 +- frontend/src/css/dark.css | 2 +- frontend/src/css/fonts.css | 4 +- frontend/src/css/listing.css | 114 +- frontend/src/css/styles.css | 11 +- frontend/src/global.d.ts | 5 + frontend/src/i18n/es.json | 2 +- frontend/src/i18n/index.js | 143 - frontend/src/i18n/index.ts | 120 + frontend/src/main.js | 52 - frontend/src/main.ts | 43 + frontend/src/notify/index.ts | 7 + frontend/src/notify/message.js | 45 + frontend/src/router/index.js | 194 - frontend/src/router/index.ts | 217 + frontend/src/store/eventBus.js | 16 + frontend/src/store/getters.js | 109 +- frontend/src/store/index.js | 43 - frontend/src/store/index.ts | 10 + frontend/src/store/mutations.js | 123 +- frontend/src/store/state.js | 54 + frontend/src/utils/auth.js | 23 +- frontend/src/utils/buttons.js | 3 - frontend/src/utils/constants.js | 1 - frontend/src/utils/deepclone.js | 12 - frontend/src/utils/deepclone.ts | 17 + frontend/src/utils/moment.js | 97 + frontend/src/utils/upload.js | 6 +- frontend/src/utils/url.js | 11 + frontend/src/utils/vue.js | 68 - frontend/src/views/Files.vue | 85 +- frontend/src/views/Layout.vue | 87 +- frontend/src/views/Login.vue | 21 +- frontend/src/views/Settings.vue | 18 +- frontend/src/views/Share.vue | 173 +- frontend/src/views/bars/Default.vue | 704 +- frontend/src/views/bars/EditorBar.vue | 27 +- frontend/src/views/bars/ListingBar.vue | 560 +- frontend/src/views/files/Editor.vue | 31 +- frontend/src/views/files/ListingView.vue | 297 +- frontend/src/views/files/Preview.vue | 93 +- frontend/src/views/settings/Global.vue | 35 +- frontend/src/views/settings/Profile.vue | 53 +- frontend/src/views/settings/Shares.vue | 49 +- frontend/src/views/settings/User.vue | 48 +- frontend/src/views/settings/Users.vue | 28 +- frontend/tsconfig.json | 25 + frontend/vite.config.ts | 73 + frontend/vue.config.js | 23 - makefile | 19 + roadmap.md | 17 +- 119 files changed, 3179 insertions(+), 11604 deletions(-) create mode 100644 backend/frontend/package-lock.json create mode 100644 frontend/.eslintrc.json delete mode 100644 frontend/babel.config.js delete mode 100644 frontend/eslint.config.js delete mode 100644 frontend/original.json delete mode 100644 frontend/package-lock.json create mode 100644 frontend/src/components/ProgressBar.vue create mode 100644 frontend/src/global.d.ts delete mode 100644 frontend/src/i18n/index.js create mode 100644 frontend/src/i18n/index.ts delete mode 100644 frontend/src/main.js create mode 100644 frontend/src/main.ts create mode 100644 frontend/src/notify/index.ts create mode 100644 frontend/src/notify/message.js delete mode 100644 frontend/src/router/index.js create mode 100644 frontend/src/router/index.ts create mode 100644 frontend/src/store/eventBus.js delete mode 100644 frontend/src/store/index.js create mode 100644 frontend/src/store/index.ts create mode 100644 frontend/src/store/state.js delete mode 100644 frontend/src/utils/deepclone.js create mode 100644 frontend/src/utils/deepclone.ts create mode 100644 frontend/src/utils/moment.js delete mode 100644 frontend/src/utils/vue.js create mode 100644 frontend/tsconfig.json create mode 100644 frontend/vite.config.ts delete mode 100644 frontend/vue.config.js create mode 100644 makefile diff --git a/.github/workflows/dev.yaml b/.github/workflows/dev.yaml index 6382bd8f..b3fc8e8c 100644 --- a/.github/workflows/dev.yaml +++ b/.github/workflows/dev.yaml @@ -9,37 +9,40 @@ jobs: test-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: cd backend && go test -race -v ./... + go-version: 'stable' + - working-directory: backend + run: go test -race -v ./... lint-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2 - - run: cd backend && golangci-lint run + go-version: 'stable' + - uses: golangci/golangci-lint-action@v6 + with: + version: v1.59 + working-directory: backend format-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: cd backend && go fmt ./... + go-version: 'stable' + - working-directory: backend + run: go fmt ./... lint-frontend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '20' - - run: cd frontend && npm i eslint - - run: cd frontend && npm run lint + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + - working-directory: frontend + run: npm i eslint && npm run lint + push_dev_to_registry: name: Push dev image runs-on: ubuntu-latest @@ -63,7 +66,7 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta - uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + uses: docker/metadata-action@v5 with: images: gtstef/filebrowser - name: Build and push @@ -73,4 +76,4 @@ jobs: file: ./Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 400e623a..e0eaae03 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -9,37 +9,39 @@ jobs: test-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: cd backend && go test -race -v ./... + go-version: 'stable' + - working-directory: backend + run: go test -race -v ./... lint-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2 - - run: cd backend && golangci-lint run + go-version: 'stable' + - uses: golangci/golangci-lint-action@v6 + with: + version: v1.59 + working-directory: backend format-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: cd backend && go fmt ./... + go-version: 'stable' + - working-directory: backend + run: go fmt ./... lint-frontend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '20' - - run: cd frontend && npm i eslint - - run: cd frontend && npm run lint + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + - working-directory: frontend + run: npm i eslint && npm run lint push_latest_to_registry: needs: [lint-frontend, lint-backend, test-backend, format-backend] @@ -65,7 +67,7 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta - uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + uses: docker/metadata-action@v5 with: images: gtstef/filebrowser - name: Build and push diff --git a/.github/workflows/pr-merge.yaml b/.github/workflows/pr-merge.yaml index de95011a..2c5a31b2 100644 --- a/.github/workflows/pr-merge.yaml +++ b/.github/workflows/pr-merge.yaml @@ -11,37 +11,39 @@ jobs: test-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: cd backend && go test -race -v ./... + go-version: 'stable' + - working-directory: backend + run: go test -race -v ./... lint-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2 - - run: cd backend && golangci-lint run + go-version: 'stable' + - uses: golangci/golangci-lint-action@v6 + with: + version: v1.59 + working-directory: backend format-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: cd backend && go fmt ./... + go-version: 'stable' + - working-directory: backend + run: go fmt ./... lint-frontend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '20' - - run: cd frontend && npm i eslint - - run: cd frontend && npm run lint + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + - working-directory: frontend + run: npm i eslint && npm run lint push_pr_to_registry: name: Push PR @@ -66,7 +68,7 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta - uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + uses: docker/metadata-action@v5 with: images: gtstef/filebrowser - name: Build and push @@ -76,4 +78,4 @@ jobs: file: ./Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 45be19ba..8bfbeb15 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -35,37 +35,40 @@ jobs: test-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: cd backend && go test -race -v ./... + go-version: 'stable' + - working-directory: backend + run: go test -race -v ./... lint-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2 - - run: cd backend && golangci-lint run + go-version: 'stable' + - uses: golangci/golangci-lint-action@v6 + with: + version: v1.59 + working-directory: backend format-backend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: 1.22.0 - - run: cd backend && go fmt ./... + go-version: 'stable' + - working-directory: backend + run: go fmt ./... lint-frontend: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '20' - - run: cd frontend && npm i eslint - - run: cd frontend && npm run lint + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + - working-directory: frontend + run: npm i eslint && npm run lint + push_release_to_registry: needs: [lint-frontend, lint-backend, test-backend, format-backend] name: Push release @@ -91,7 +94,7 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta - uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + uses: docker/metadata-action@v5 with: images: gtstef/filebrowser - name: Strip v from version number diff --git a/.gitignore b/.gitignore index 2e9d0b38..9fdd14b7 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,8 @@ rice-box.go /filebrowser /filebrowser.exe /frontend/dist +/frontend/pkg +/frontend/package-lock.json /backend/vendor /backend/*.cov diff --git a/CHANGELOG.md b/CHANGELOG.md index f5b4e31f..78966d50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,16 +2,34 @@ 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). +## v0.2.6 + +This change focuses on minimizing and simplifying build process. + +- **Change**: Migrated to Vite / Vue 3 +- **Change**: removed npm modules + - replaced vuex with custom state management via src/store + - replaced noty with simple card popup notifications + - replaced moment with simple date formatter where needed + - replaced vue-simple-progress with vue component +- **Feature**: improved error logging + - backend errors show the root function that called them during the error + - frontend errors print errors to console that fail try/catch + - all frontend errors via popup notification & print to console as well +- **Fix**: Allow editing blank text based files in editor +- tweaked listing styles +- Feature: Allow disabling the index via configuration yaml + ## v0.2.5 - Fix: delete user prompt works using native hovers. ## v0.2.4 -- Faature: [create-folder-feature](https://github.com/gtsteffaniak/filebrowser/pull/105) +- Feature: [create-folder-feature](https://github.com/gtsteffaniak/filebrowser/pull/105) - Feature: [playable shared video](https://github.com/filebrowser/filebrowser/issues/2537) - Feature: photos, videos, and audio get embedded preview on share instead of icon -- FIX: sharable link bug, now uses special publicUser +- Fix: sharable link bug, now uses special publicUser - Bump go version to 1.22 - In prep for vue3 migration, npm modules removed: - js-base64 diff --git a/Dockerfile b/Dockerfile index 0d5a1760..29198aa7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,18 @@ FROM node:slim as nbuild WORKDIR /app -COPY ./frontend/package*.json ./ -RUN npm ci --maxsockets 1 +COPY ./frontend/package*.json ./ +RUN npm i --maxsockets 1 COPY ./frontend/ ./ RUN npm run build FROM golang:1.22-alpine as base WORKDIR /app -COPY ./backend ./ -RUN go get -u golang.org/x/net +COPY ./backend ./ RUN go build -ldflags="-w -s" -o filebrowser . FROM alpine:latest ARG app="/app/filebrowser" -RUN apk --no-cache add \ - ca-certificates \ - mailcap -WORKDIR / +RUN apk --no-cache add ca-certificates mailcap COPY --from=base /app/filebrowser* ./ COPY --from=nbuild /app/dist/ ./frontend/dist/ ENTRYPOINT [ "./filebrowser" ] diff --git a/README.md b/README.md index a6896efc..47836c91 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@
-
-
autorenew
+{{ noneMessage }}
autorenew
+{{ noneMessage }}
Search occurs on each character you type (3 character minimum for search @@ -122,7 +134,8 @@ search times.
Smaller Than:
@@ -159,8 +173,9 @@MB