Compare commits
18 commits
main
...
fomo-3.1.1
Author | SHA1 | Date | |
---|---|---|---|
johndoe4 | f12e39c907 | ||
johndoe4 | 113ea75ed6 | ||
johndoe4 | d945361341 | ||
johndoe4 | 8e24754d08 | ||
johndoe4 | 00fb3b54a8 | ||
johndoe4 | 167cc1d83e | ||
johndoe4 | 916bf617fd | ||
johndoe4 | f898936e2a | ||
johndoe4 | 8260d62681 | ||
johndoe4 | 9154c24332 | ||
johndoe4 | e9680509bf | ||
johndoe4 | 3f03e320d1 | ||
johndoe4 | 609740f931 | ||
johndoe4 | 3197e3d588 | ||
johndoe4 | 2eb5c4fa87 | ||
johndoe4 | 62d4b5a789 | ||
johndoe4 | 0e9fae5173 | ||
johndoe4 | f768f1672b |
|
@ -22,7 +22,7 @@
|
||||||
# In the latter case `**/*.{ex,exs}` will be used.
|
# In the latter case `**/*.{ex,exs}` will be used.
|
||||||
#
|
#
|
||||||
included: ["lib/", "src/", "test/"],
|
included: ["lib/", "src/", "test/"],
|
||||||
excluded: [~r"/_build/", ~r"/deps/", ~r"/src/"]
|
excluded: [~r"/_build/", ~r"/deps/", ~r"/js/"]
|
||||||
},
|
},
|
||||||
#
|
#
|
||||||
# If you create your own checks, you must specify the source files for
|
# If you create your own checks, you must specify the source files for
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
# If you want to enforce a style guide and need a more traditional linting
|
# If you want to enforce a style guide and need a more traditional linting
|
||||||
# experience, you can change `strict` to `true` below:
|
# experience, you can change `strict` to `true` below:
|
||||||
#
|
#
|
||||||
strict: true,
|
strict: false,
|
||||||
#
|
#
|
||||||
# If you want to use uncolored output by default, you can change `color`
|
# If you want to use uncolored output by default, you can change `color`
|
||||||
# to `false` below:
|
# to `false` below:
|
||||||
|
@ -160,7 +160,6 @@
|
||||||
#
|
#
|
||||||
{Credo.Check.Warning.LazyLogging, false},
|
{Credo.Check.Warning.LazyLogging, false},
|
||||||
{Credo.Check.Refactor.MapInto, false},
|
{Credo.Check.Refactor.MapInto, false},
|
||||||
{Credo.Check.Warning.MissedMetadataKeyInLoggerConfig, false}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,46 +1,44 @@
|
||||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
|
||||||
// https://github.com/microsoft/vscode-dev-containers/tree/v0.209.6/containers/elixir-phoenix-postgres
|
// https://github.com/microsoft/vscode-dev-containers/tree/v0.209.6/containers/elixir-phoenix-postgres
|
||||||
{
|
{
|
||||||
"name": "Elixir, Phoenix, Node.js & PostgresSQL (Community)",
|
"name": "Elixir, Phoenix, Node.js & PostgresSQL (Community)",
|
||||||
"dockerComposeFile": "docker-compose.yml",
|
"dockerComposeFile": "docker-compose.yml",
|
||||||
"service": "elixir",
|
"service": "elixir",
|
||||||
"workspaceFolder": "/workspace",
|
"workspaceFolder": "/workspace",
|
||||||
|
|
||||||
// Set *default* container specific settings.json values on container create.
|
// Set *default* container specific settings.json values on container create.
|
||||||
"settings": {
|
"settings": {
|
||||||
"sqltools.connections": [
|
"sqltools.connections": [{
|
||||||
{
|
"name": "Container database",
|
||||||
"name": "Container database",
|
"driver": "PostgreSQL",
|
||||||
"driver": "PostgreSQL",
|
"previewLimit": 50,
|
||||||
"previewLimit": 50,
|
"server": "localhost",
|
||||||
"server": "localhost",
|
"port": 5432,
|
||||||
"port": 5432,
|
"database": "postgres",
|
||||||
"database": "postgres",
|
"username": "postgres",
|
||||||
"username": "postgres",
|
"password": "postgres"
|
||||||
"password": "postgres"
|
}]
|
||||||
}
|
},
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
// Add the IDs of extensions you want installed when the container is created.
|
// Add the IDs of extensions you want installed when the container is created.
|
||||||
"extensions": [
|
"extensions": [
|
||||||
"jakebecker.elixir-ls",
|
"jakebecker.elixir-ls",
|
||||||
"mtxr.sqltools",
|
"mtxr.sqltools",
|
||||||
"mtxr.sqltools-driver-pg"
|
"mtxr.sqltools-driver-pg"
|
||||||
],
|
],
|
||||||
|
|
||||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||||
"forwardPorts": [4000, 4001, 5432],
|
"forwardPorts": [4000, 4001, 5432],
|
||||||
|
|
||||||
// Use 'postCreateCommand' to run commands after the container is created.
|
// Use 'postCreateCommand' to run commands after the container is created.
|
||||||
// "postCreateCommand": "mix deps.get",
|
// "postCreateCommand": "mix deps.get",
|
||||||
// "runArgs": ["--userns=keep-id", "--privileged"],
|
// "runArgs": ["--userns=keep-id", "--privileged"],
|
||||||
// "containerUser": "vscode",
|
// "containerUser": "vscode",
|
||||||
// "containerEnv": {
|
// "containerEnv": {
|
||||||
// "HOME": "/home/vscode",
|
// "HOME": "/home/vscode",
|
||||||
// },
|
// },
|
||||||
// "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,Z",
|
// "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,Z",
|
||||||
|
|
||||||
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
|
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
|
||||||
"remoteUser": "vscode"
|
"remoteUser": "vscode"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
_build
|
_build
|
||||||
CONTRIBUTING.md
|
CONTRIBUTING.md
|
||||||
coverage
|
|
||||||
demo
|
|
||||||
deps
|
deps
|
||||||
doc
|
|
||||||
docs
|
|
||||||
docker-compose.yml
|
docker-compose.yml
|
||||||
Dockerfile
|
Dockerfile
|
||||||
.elixir_ls
|
.elixir_ls
|
||||||
|
@ -19,8 +15,5 @@ Makefile
|
||||||
README.md
|
README.md
|
||||||
SECURITY.md
|
SECURITY.md
|
||||||
ssh_match_hostname
|
ssh_match_hostname
|
||||||
package-lock.json
|
.js/package-lock.json
|
||||||
node_modules
|
js/node_modules
|
||||||
playwright-report
|
|
||||||
test
|
|
||||||
tests
|
|
|
@ -22,6 +22,3 @@ MOBILIZON_SMTP_PORT=25
|
||||||
MOBILIZON_SMTP_USERNAME=noreply@mobilizon.lan
|
MOBILIZON_SMTP_USERNAME=noreply@mobilizon.lan
|
||||||
MOBILIZON_SMTP_PASSWORD=password
|
MOBILIZON_SMTP_PASSWORD=password
|
||||||
MOBILIZON_SMTP_SSL=false
|
MOBILIZON_SMTP_SSL=false
|
||||||
|
|
||||||
# When using docker for development, VITE_HOST must be set to 0.0.0.0
|
|
||||||
VITE_HOST=localhost
|
|
||||||
|
|
11
.gitignore
vendored
|
@ -46,16 +46,7 @@ release/
|
||||||
.weblate
|
.weblate
|
||||||
docker/production/.env
|
docker/production/.env
|
||||||
test-junit-report.xml
|
test-junit-report.xml
|
||||||
junit.xml
|
js/junit.xml
|
||||||
.env
|
.env
|
||||||
demo/
|
demo/
|
||||||
codeclimate.json
|
codeclimate.json
|
||||||
|
|
||||||
node_modules
|
|
||||||
stats.html
|
|
||||||
/coverage
|
|
||||||
/playwright-report/
|
|
||||||
.histoire
|
|
||||||
|
|
||||||
# Nix out-links
|
|
||||||
result*
|
|
||||||
|
|
196
.gitlab-ci.yml
|
@ -6,12 +6,14 @@ stages:
|
||||||
- build-js
|
- build-js
|
||||||
- sentry
|
- sentry
|
||||||
- test
|
- test
|
||||||
- build
|
- docker
|
||||||
|
- package
|
||||||
- upload
|
- upload
|
||||||
- deploy
|
- deploy
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
MIX_ENV: "test"
|
MIX_ENV: "test"
|
||||||
|
YARN_CACHE_FOLDER: "js/.yarn"
|
||||||
# DB Variables for Postgres / Postgis
|
# DB Variables for Postgres / Postgis
|
||||||
POSTGRES_DB: mobilizon_test
|
POSTGRES_DB: mobilizon_test
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
|
@ -30,14 +32,17 @@ variables:
|
||||||
EXPORT_FORMATS: "csv,ods,pdf"
|
EXPORT_FORMATS: "csv,ods,pdf"
|
||||||
APP_VERSION: "${CI_COMMIT_REF_NAME}"
|
APP_VERSION: "${CI_COMMIT_REF_NAME}"
|
||||||
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}.tar.gz"
|
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}.tar.gz"
|
||||||
|
CYPRESS_INSTALL_BINARY: 0
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
key: "${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
key: "${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||||
paths:
|
paths:
|
||||||
|
- ~/.cache/Cypress
|
||||||
|
- cache/Cypress
|
||||||
- deps/
|
- deps/
|
||||||
- _build/
|
- _build/
|
||||||
- node_modules
|
- js/node_modules
|
||||||
- .npm
|
- js/.yarn
|
||||||
|
|
||||||
# Installed dependencies are cached across the pipeline
|
# Installed dependencies are cached across the pipeline
|
||||||
# So there is no need to reinstall them all the time
|
# So there is no need to reinstall them all the time
|
||||||
|
@ -45,7 +50,7 @@ cache:
|
||||||
install:
|
install:
|
||||||
stage: install
|
stage: install
|
||||||
script:
|
script:
|
||||||
- npm ci
|
- yarn --cwd "js" install --frozen-lockfile
|
||||||
- mix deps.get
|
- mix deps.get
|
||||||
- mix compile
|
- mix compile
|
||||||
|
|
||||||
|
@ -66,26 +71,27 @@ lint-elixir:
|
||||||
reports:
|
reports:
|
||||||
codequality: codeclimate.json
|
codequality: codeclimate.json
|
||||||
|
|
||||||
|
|
||||||
lint-front:
|
lint-front:
|
||||||
image: node:20
|
image: node:16
|
||||||
stage: check
|
stage: check
|
||||||
before_script:
|
before_script:
|
||||||
- export EXITVALUE=0
|
- export EXITVALUE=0
|
||||||
- npm ci
|
- yarn --cwd "js" install --frozen-lockfile
|
||||||
script:
|
script:
|
||||||
- npm run lint || export EXITVALUE=1
|
- yarn --cwd "js" run lint || export EXITVALUE=1
|
||||||
- npx prettier -c . || export EXITVALUE=1
|
- yarn --cwd "js" run prettier -c . || export EXITVALUE=1
|
||||||
- exit $EXITVALUE
|
- exit $EXITVALUE
|
||||||
|
|
||||||
build-frontend:
|
build-frontend:
|
||||||
stage: build-js
|
stage: build-js
|
||||||
image: node:20
|
image: node:16
|
||||||
before_script:
|
before_script:
|
||||||
- apt update
|
- apt update
|
||||||
- apt install -y --no-install-recommends python3 build-essential webp imagemagick gifsicle jpegoptim optipng pngquant
|
- apt install -y --no-install-recommends python build-essential webp imagemagick gifsicle jpegoptim optipng pngquant
|
||||||
script:
|
script:
|
||||||
- npm install --frozen-lockfile
|
- yarn --cwd "js" install --frozen-lockfile
|
||||||
- npm run build
|
- yarn --cwd "js" run build
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 5 days
|
expire_in: 5 days
|
||||||
paths:
|
paths:
|
||||||
|
@ -115,7 +121,7 @@ deps:
|
||||||
script:
|
script:
|
||||||
- export EXITVALUE=0
|
- export EXITVALUE=0
|
||||||
- mix hex.outdated || export EXITVALUE=1
|
- mix hex.outdated || export EXITVALUE=1
|
||||||
- npm outdated || export EXITVALUE=1
|
- yarn --cwd "js" outdated || export EXITVALUE=1
|
||||||
- exit $EXITVALUE
|
- exit $EXITVALUE
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
needs:
|
needs:
|
||||||
|
@ -124,14 +130,12 @@ deps:
|
||||||
exunit:
|
exunit:
|
||||||
stage: test
|
stage: test
|
||||||
services:
|
services:
|
||||||
- name: postgis/postgis:16-3.4
|
- name: postgis/postgis:14-3.2
|
||||||
alias: postgres
|
alias: postgres
|
||||||
variables:
|
variables:
|
||||||
MIX_ENV: test
|
MIX_ENV: test
|
||||||
before_script:
|
before_script:
|
||||||
- mix deps.get
|
- mix deps.get && mix tz_world.update
|
||||||
- mix compile
|
|
||||||
- mix tz_world.update
|
|
||||||
- mix ecto.create
|
- mix ecto.create
|
||||||
- mix ecto.migrate
|
- mix ecto.migrate
|
||||||
script:
|
script:
|
||||||
|
@ -148,22 +152,22 @@ vitest:
|
||||||
needs:
|
needs:
|
||||||
- lint-front
|
- lint-front
|
||||||
before_script:
|
before_script:
|
||||||
- npm install --frozen-lockfile
|
- yarn --cwd "js" install --frozen-lockfile
|
||||||
script:
|
script:
|
||||||
- npm run coverage --reporter=default --reporter=junit --outputFile.junit=./junit.xml
|
- yarn --cwd "js" run coverage --reporter=default --reporter=junit --outputFile.junit=./junit.xml
|
||||||
artifacts:
|
artifacts:
|
||||||
when: always
|
when: always
|
||||||
paths:
|
paths:
|
||||||
- coverage
|
- js/coverage
|
||||||
reports:
|
reports:
|
||||||
junit:
|
junit:
|
||||||
- junit.xml
|
- js/junit.xml
|
||||||
expire_in: 30 days
|
expire_in: 30 days
|
||||||
|
|
||||||
e2e:
|
e2e:
|
||||||
stage: test
|
stage: test
|
||||||
services:
|
services:
|
||||||
- name: postgis/postgis:16-3.4
|
- name: postgis/postgis:14-3.2
|
||||||
alias: postgres
|
alias: postgres
|
||||||
variables:
|
variables:
|
||||||
MIX_ENV: "e2e"
|
MIX_ENV: "e2e"
|
||||||
|
@ -172,31 +176,31 @@ e2e:
|
||||||
- mix ecto.create
|
- mix ecto.create
|
||||||
- mix ecto.migrate
|
- mix ecto.migrate
|
||||||
- mix run priv/repo/e2e.seed.exs
|
- mix run priv/repo/e2e.seed.exs
|
||||||
- npm install && npm run build && npx playwright install
|
- cd js && yarn install && yarn run build && npx playwright install && cd ../
|
||||||
- mix phx.digest
|
- mix phx.digest
|
||||||
script:
|
script:
|
||||||
- mix phx.server &
|
- mix phx.server &
|
||||||
|
- cd js
|
||||||
- npx wait-on http://localhost:4000
|
- npx wait-on http://localhost:4000
|
||||||
- npx playwright test --project $BROWSER
|
- npx playwright test --project $BROWSER
|
||||||
parallel:
|
parallel:
|
||||||
matrix:
|
matrix:
|
||||||
- BROWSER: ["firefox", "chromium"]
|
- BROWSER: ['firefox', 'chromium']
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 2 days
|
expire_in: 2 days
|
||||||
paths:
|
paths:
|
||||||
- playwright-report/
|
- js/playwright-report/
|
||||||
- test-results/
|
- js/test-results/
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
script:
|
script:
|
||||||
- mv public public-mbz
|
|
||||||
- mkdir public
|
- mkdir public
|
||||||
- mix deps.get
|
- mix deps.get
|
||||||
- mix docs
|
- mix docs
|
||||||
- mv doc public/backend
|
- mv doc public/backend
|
||||||
# #- npm run styleguide:build
|
# #- yarn run --cwd "js" styleguide:build
|
||||||
# #- mv styleguide public/frontend
|
# #- mv js/styleguide public/frontend
|
||||||
rules:
|
rules:
|
||||||
- if: '$CI_COMMIT_BRANCH == "main"'
|
- if: '$CI_COMMIT_BRANCH == "main"'
|
||||||
artifacts:
|
artifacts:
|
||||||
|
@ -205,23 +209,22 @@ pages:
|
||||||
- public
|
- public
|
||||||
|
|
||||||
.docker: &docker
|
.docker: &docker
|
||||||
stage: build
|
stage: docker
|
||||||
image: docker:24
|
image: docker:20.10.18
|
||||||
variables:
|
variables:
|
||||||
DOCKER_TLS_CERTDIR: "/certs"
|
DOCKER_TLS_CERTDIR: "/certs"
|
||||||
DOCKER_HOST: tcp://docker:2376
|
DOCKER_HOST: tcp://docker:2376
|
||||||
DOCKER_TLS_VERIFY: 1
|
DOCKER_TLS_VERIFY: 1
|
||||||
DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"
|
DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"
|
||||||
DOCKER_DRIVER: overlay2
|
DOCKER_DRIVER: overlay2
|
||||||
DOCKER_CLI_EXPERIMENTAL: enabled
|
|
||||||
services:
|
services:
|
||||||
- docker:24-dind
|
- docker:20.10.18-dind
|
||||||
cache: {}
|
cache: {}
|
||||||
before_script:
|
before_script:
|
||||||
# Install buildx
|
# Install buildx
|
||||||
- wget https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64
|
- wget https://github.com/docker/buildx/releases/download/v0.9.1/buildx-v0.9.1.linux-amd64
|
||||||
- mkdir -p ~/.docker/cli-plugins/
|
- mkdir -p ~/.docker/cli-plugins/
|
||||||
- mv buildx-v0.11.2.linux-amd64 ~/.docker/cli-plugins/docker-buildx
|
- mv buildx-v0.9.1.linux-amd64 ~/.docker/cli-plugins/docker-buildx
|
||||||
- chmod a+x ~/.docker/cli-plugins/docker-buildx
|
- chmod a+x ~/.docker/cli-plugins/docker-buildx
|
||||||
# Create env
|
# Create env
|
||||||
- docker context create tls-environment
|
- docker context create tls-environment
|
||||||
|
@ -229,8 +232,6 @@ pages:
|
||||||
# Install qemu/binfmt
|
# Install qemu/binfmt
|
||||||
- docker pull tonistiigi/binfmt:latest
|
- docker pull tonistiigi/binfmt:latest
|
||||||
- docker run --rm --privileged tonistiigi/binfmt:latest --install all
|
- docker run --rm --privileged tonistiigi/binfmt:latest --install all
|
||||||
# Install jq
|
|
||||||
- apk --no-cache add jq
|
|
||||||
# Login to DockerHub
|
# Login to DockerHub
|
||||||
- mkdir -p ~/.docker
|
- mkdir -p ~/.docker
|
||||||
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$CI_REGISTRY_AUTH\",\"email\":\"$CI_REGISTRY_EMAIL\"}}}" > ~/.docker/config.json
|
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$CI_REGISTRY_AUTH\",\"email\":\"$CI_REGISTRY_EMAIL\"}}}" > ~/.docker/config.json
|
||||||
|
@ -244,70 +245,65 @@ build-docker-main:
|
||||||
when: never
|
when: never
|
||||||
- if: '$CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_TRIGGERED == "true"'
|
- if: '$CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_TRIGGERED == "true"'
|
||||||
script:
|
script:
|
||||||
- docker buildx build --platform linux/amd64 -t framasoft/mobilizon:main -f docker/production/Dockerfile .
|
- docker buildx build --push --platform linux/amd64 -t framasoft/mobilizon:main -f docker/production/Dockerfile .
|
||||||
|
|
||||||
build-docker-tag:
|
build-and-push-to-latest-docker-tag:
|
||||||
<<: *docker
|
<<: *docker
|
||||||
rules: &release-tag-rules
|
rules: &release-tag-rules
|
||||||
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
|
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
|
||||||
when: never
|
when: never
|
||||||
- if: $CI_COMMIT_TAG != null
|
- if: $CI_COMMIT_TAG != null && $CI_COMMIT_TAG !~ /alpha|beta|rc/
|
||||||
when: on_success
|
when: on_success
|
||||||
timeout: 3 hours
|
timeout: 3 hours
|
||||||
script:
|
script:
|
||||||
- >
|
- >
|
||||||
docker buildx build
|
docker buildx build
|
||||||
--push
|
--push
|
||||||
--platform linux/${ARCH}
|
--platform linux/amd64
|
||||||
--provenance=false
|
-t framasoft/mobilizon:$CI_COMMIT_TAG
|
||||||
--build-arg="${ERL_FLAGS}"
|
-t framasoft/mobilizon:latest
|
||||||
-t framasoft/mobilizon:${CI_COMMIT_TAG}-${ARCH}
|
|
||||||
-f docker/production/Dockerfile .
|
-f docker/production/Dockerfile .
|
||||||
parallel:
|
|
||||||
matrix:
|
|
||||||
- ARCH: ["amd64"]
|
|
||||||
ERL_FLAGS: ["ERL_FLAGS="]
|
|
||||||
- ARCH: ["arm64"]
|
|
||||||
ERL_FLAGS: ["ERL_FLAGS=+JMsingle true"]
|
|
||||||
|
|
||||||
# Create manifest and push
|
build-and-push-to-latest-docker-tag-cross:
|
||||||
docker-manifest-push:
|
|
||||||
<<: *docker
|
<<: *docker
|
||||||
needs: ["build-docker-tag"]
|
|
||||||
rules: &release-tag-rules
|
|
||||||
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
|
|
||||||
when: never
|
|
||||||
- if: $CI_COMMIT_TAG != null
|
|
||||||
when: on_success
|
|
||||||
script:
|
|
||||||
- >
|
|
||||||
docker manifest create framasoft/mobilizon:${CI_COMMIT_TAG}
|
|
||||||
--amend framasoft/mobilizon:${CI_COMMIT_TAG}-amd64
|
|
||||||
--amend framasoft/mobilizon:${CI_COMMIT_TAG}-arm64
|
|
||||||
- docker manifest push --purge framasoft/mobilizon:${CI_COMMIT_TAG}
|
|
||||||
|
|
||||||
###
|
|
||||||
# Simply creating an alias to the tag doesn't work:
|
|
||||||
# « xxx is a manifest list »
|
|
||||||
# https://joonas.fi/2021/02/docker-multi-arch-image-tooling-buildx/
|
|
||||||
###
|
|
||||||
docker-latest:
|
|
||||||
<<: *docker
|
|
||||||
needs: ["docker-manifest-push"]
|
|
||||||
rules: &release-tag-rules
|
rules: &release-tag-rules
|
||||||
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
|
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
|
||||||
when: never
|
when: never
|
||||||
- if: $CI_COMMIT_TAG != null && $CI_COMMIT_TAG !~ /alpha|beta|rc/
|
- if: $CI_COMMIT_TAG != null && $CI_COMMIT_TAG !~ /alpha|beta|rc/
|
||||||
when: on_success
|
when: on_success
|
||||||
|
timeout: 3 hours
|
||||||
|
allow_failure: true
|
||||||
script:
|
script:
|
||||||
- echo docker manifest create framasoft/mobilizon:latest $(docker manifest inspect framasoft/mobilizon:$CI_COMMIT_TAG | jq '.manifests[] | .digest' | xargs -I {} echo framasoft/mobilizon@{})
|
- >
|
||||||
- docker manifest create framasoft/mobilizon:latest $(docker manifest inspect framasoft/mobilizon:$CI_COMMIT_TAG | jq -r '.manifests[] | .digest' | xargs -I {} echo framasoft/mobilizon@{})
|
docker buildx build
|
||||||
- docker manifest push --purge framasoft/mobilizon:latest
|
--push
|
||||||
|
--platform linux/arm, linux/arm64
|
||||||
|
-t framasoft/mobilizon:$CI_COMMIT_TAG
|
||||||
|
-t framasoft/mobilizon:latest
|
||||||
|
-f docker/production/Dockerfile .
|
||||||
|
|
||||||
|
|
||||||
|
# Don't push to latest when building beta/rc tags
|
||||||
|
build-and-push-docker-tag:
|
||||||
|
<<: *docker
|
||||||
|
rules: &pre-release-tag-rules
|
||||||
|
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
|
||||||
|
when: never
|
||||||
|
- if: $CI_COMMIT_TAG =~ /alpha|beta|rc/
|
||||||
|
when: on_success
|
||||||
|
timeout: 3 hours
|
||||||
|
script:
|
||||||
|
- >
|
||||||
|
docker buildx build
|
||||||
|
--push
|
||||||
|
--platform linux/amd64
|
||||||
|
-t framasoft/mobilizon:$CI_COMMIT_TAG
|
||||||
|
-f docker/production/Dockerfile .
|
||||||
|
|
||||||
# Packaging app for amd64
|
# Packaging app for amd64
|
||||||
package-app:
|
package-app:
|
||||||
image: mobilizon/buildpack:1.15.7-erlang-26.1.2-${SYSTEM}
|
image: mobilizon/buildpack:1.14.1-erlang-25.1.1-debian-buster
|
||||||
stage: build
|
stage: package
|
||||||
variables: &release-variables
|
variables: &release-variables
|
||||||
MIX_ENV: "prod"
|
MIX_ENV: "prod"
|
||||||
DEBIAN_FRONTEND: noninteractive
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
@ -331,22 +327,9 @@ package-app:
|
||||||
expire_in: 2 days
|
expire_in: 2 days
|
||||||
paths:
|
paths:
|
||||||
- ${APP_ASSET}
|
- ${APP_ASSET}
|
||||||
parallel:
|
|
||||||
matrix:
|
|
||||||
- SYSTEM:
|
|
||||||
[
|
|
||||||
"debian-bookworm",
|
|
||||||
"debian-bullseye",
|
|
||||||
"debian-buster",
|
|
||||||
"ubuntu-jammy",
|
|
||||||
"ubuntu-focal",
|
|
||||||
"ubuntu-bionic",
|
|
||||||
"fedora-38",
|
|
||||||
"fedora-39",
|
|
||||||
]
|
|
||||||
|
|
||||||
package-app-dev:
|
package-app-dev:
|
||||||
stage: build
|
stage: package
|
||||||
variables: *release-variables
|
variables: *release-variables
|
||||||
script: *release-script
|
script: *release-script
|
||||||
except:
|
except:
|
||||||
|
@ -357,9 +340,9 @@ package-app-dev:
|
||||||
- ${APP_ASSET}
|
- ${APP_ASSET}
|
||||||
|
|
||||||
# Packaging app for multi-arch
|
# Packaging app for multi-arch
|
||||||
package-multi-arch-release:
|
multi-arch-release:
|
||||||
stage: build
|
stage: package
|
||||||
image: docker:24
|
image: docker:20.10.21
|
||||||
variables:
|
variables:
|
||||||
DOCKER_TLS_CERTDIR: "/certs"
|
DOCKER_TLS_CERTDIR: "/certs"
|
||||||
DOCKER_HOST: tcp://docker:2376
|
DOCKER_HOST: tcp://docker:2376
|
||||||
|
@ -369,13 +352,13 @@ package-multi-arch-release:
|
||||||
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}.tar.gz"
|
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}.tar.gz"
|
||||||
OS: debian-buster
|
OS: debian-buster
|
||||||
services:
|
services:
|
||||||
- docker:24-dind
|
- docker:20.10.21-dind
|
||||||
cache: {}
|
cache: {}
|
||||||
before_script:
|
before_script:
|
||||||
# Install buildx
|
# Install buildx
|
||||||
- wget https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64
|
- wget https://github.com/docker/buildx/releases/download/v0.9.1/buildx-v0.9.1.linux-amd64
|
||||||
- mkdir -p ~/.docker/cli-plugins/
|
- mkdir -p ~/.docker/cli-plugins/
|
||||||
- mv buildx-v0.11.2.linux-amd64 ~/.docker/cli-plugins/docker-buildx
|
- mv buildx-v0.9.1.linux-amd64 ~/.docker/cli-plugins/docker-buildx
|
||||||
- chmod a+x ~/.docker/cli-plugins/docker-buildx
|
- chmod a+x ~/.docker/cli-plugins/docker-buildx
|
||||||
# Create env
|
# Create env
|
||||||
- docker context create tls-environment
|
- docker context create tls-environment
|
||||||
|
@ -384,7 +367,7 @@ package-multi-arch-release:
|
||||||
- docker pull tonistiigi/binfmt:latest
|
- docker pull tonistiigi/binfmt:latest
|
||||||
- docker run --rm --privileged tonistiigi/binfmt:latest --install all
|
- docker run --rm --privileged tonistiigi/binfmt:latest --install all
|
||||||
script:
|
script:
|
||||||
- docker buildx build --platform linux/${ARCH} --output type=local,dest=releases --build-arg="ERL_FLAGS=+JMsingle true" --build-arg APP_ASSET=${APP_ASSET} -f docker/multiarch/Dockerfile .
|
- docker buildx build --platform linux/${ARCH} --output type=local,dest=releases --build-arg APP_ASSET=${APP_ASSET} -f docker/multiarch/Dockerfile .
|
||||||
- ls -alh releases/mobilizon/
|
- ls -alh releases/mobilizon/
|
||||||
- du -sh releases/mobilizon/${APP_ASSET}
|
- du -sh releases/mobilizon/${APP_ASSET}
|
||||||
- mv releases/mobilizon/${APP_ASSET} .
|
- mv releases/mobilizon/${APP_ASSET} .
|
||||||
|
@ -397,20 +380,7 @@ package-multi-arch-release:
|
||||||
- erl_crash.dump # if there's a memory issue
|
- erl_crash.dump # if there's a memory issue
|
||||||
parallel:
|
parallel:
|
||||||
matrix:
|
matrix:
|
||||||
- ARCH: ["arm64"]
|
- ARCH: ["arm", "arm64"]
|
||||||
## Currently not used as the hexpm base images do not have support for other architectures than amd64
|
|
||||||
# SYSTEM:
|
|
||||||
# [
|
|
||||||
# "debian-bookworm",
|
|
||||||
# "debian-bullseye",
|
|
||||||
# "ubuntu-jammy",
|
|
||||||
# "ubuntu-focal",
|
|
||||||
# "ubuntu-bionic",
|
|
||||||
# "alpine-3.17.5",
|
|
||||||
# "alpine-3.18.4",
|
|
||||||
# "fedora-38",
|
|
||||||
# "fedora-39",
|
|
||||||
# ]
|
|
||||||
rules:
|
rules:
|
||||||
- if: '$CI_COMMIT_TAG != null || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_TRIGGERED == "true"'
|
- if: '$CI_COMMIT_TAG != null || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_TRIGGERED == "true"'
|
||||||
timeout: 3h
|
timeout: 3h
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
. "$(dirname -- "$0")/_/husky.sh"
|
. "$(dirname -- "$0")/_/husky.sh"
|
||||||
npm run pre-commit
|
cd js
|
||||||
|
yarn run lint-staged
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
src/i18n/*.json
|
|
||||||
coverage/
|
|
||||||
**/*.md
|
|
||||||
test/fixtures
|
|
|
@ -1,20 +1,44 @@
|
||||||
|
|
||||||
|
02CE4963DFD1B0D6D5C567357CAFFE97
|
||||||
155A1FB53DE39EC8EFCFD7FB94EA823D
|
155A1FB53DE39EC8EFCFD7FB94EA823D
|
||||||
1C29EE70E90ECED01AF28EC58D2575B5
|
2262742E5C8944D5BF6698EC61F5DE50
|
||||||
26ED12A8E03D044BEDC08749BAA5E357
|
25BEE162A99754480967216281E9EF33
|
||||||
2BB1D36656B423758A470021718FCB09
|
2A6F71CD6F1246F0B152C2376E2E398A
|
||||||
31CE26BC979C57B9E3CC97B40C290CE5
|
30552A09D485A6AA73401C1D54F63C21
|
||||||
3529E7A4CECC24D02678820E6F521162
|
52900CE4EE3598F6F178A651FB256770
|
||||||
3644C4E850300482AA409471EFE1EFB3
|
6151F44368FC19F2394274F513C29151
|
||||||
4E7C044C59E0BCB76AA826789998F624
|
765526195D4C6D770EAF4DC944A8CBF4
|
||||||
53CBBEB6243FAF5C37249CBA17DE6F4C
|
B2FF1A12F13B873507C85091688C1D6D
|
||||||
5BCE3651A03711295046DE48BDFE007E
|
B9AF8A342CD7FF39E10CC10A408C28E1
|
||||||
5C4CED447689F00D9D1ACEB9B895ED29
|
C042E87389F7BDCFF4E076E95731AE69
|
||||||
94ACF7B17C3FF42F64E57DD1DA936BD8
|
C42BFAEF7100F57BED75998B217C857A
|
||||||
A32E125003F1EDFAD95C487C6A969725
|
D11958E86F1B6D37EF656B63405CA8A4
|
||||||
ACF6272A1DBB3A2ABD96C0C120B5CA69
|
F16F054F2628609A726B9FF2F089D484
|
||||||
C46C4893B2F702ACADC4CAA5683FE370
|
26E816A7B054CB0347A2C6451F03B92B
|
||||||
CDF2CCE0CF10F49CDFAE22FE26208155
|
2B76BDDB2BB4D36D69FAE793EBD63894
|
||||||
E720CB13C50FF3ADEE7C522531E11217
|
301A837DE24C6AEE1DA812DF9E5486C1
|
||||||
F3D5851D3FB050939841ED2F14307A27
|
395A2740CB468F93F6EBE6E90EE08291
|
||||||
FD1C9756370A195B74E95CE504C45E9E
|
4013C9866943B9381D9F9F97027F88A9
|
||||||
|
4C796DD588A4B1C98E86BBCD0349949A
|
||||||
|
51289D8D7BDB59CB6473E0DED0591ED7
|
||||||
|
5A70DC86895DB3610C605EA9F31ED300
|
||||||
|
705C17F9C852F546D886B20DB2C4D0D1
|
||||||
|
75D2074B6F771BA8C032008EC18CABDF
|
||||||
|
7B1C6E35A374C38FF5F07DBF23B3EAE2
|
||||||
|
955ACF52ADD8FCAA450FB8138CB1FD1A
|
||||||
|
A092A563729E1F2C1C8D5D809A31F754
|
||||||
|
BFA12FDEDEAD7DEAB6D44DF6FDFBD5E1
|
||||||
|
D9A08930F140F9BA494BB90B3F812C87
|
||||||
|
FE1EEB91EA633570F703B251AE2D4D4E
|
||||||
|
02B15A0FE85181E2470E4E1E6740DFF6
|
||||||
|
128653EA565172F81FD177D1D6491CF3
|
||||||
|
2EB031217231C480C89EA0C1576EF3CA
|
||||||
|
39CFFBCF3FD4F6DB0E4DE4A9A78D3961
|
||||||
|
40C6EAD7C05ABB6A85BB904589DEF72F
|
||||||
|
49DE9560D506F9E7EF3AFD8DA6E5564B
|
||||||
|
759F752FA0768CCC7871895DC2A5CD51
|
||||||
|
7EEC79571F3F7CEEB04A8B86D908382A
|
||||||
|
E7967805C1EA5301F2722C7BDB2F25F3
|
||||||
|
BDFB0FB1AAF69C18212CBCFD42F8B717
|
||||||
|
40220A533CCACB3A1CE9DBF1A8A430A1
|
||||||
|
EEB29D1DDA3A3015BC645A989B5BD38E
|
|
@ -1,2 +1,2 @@
|
||||||
elixir 1.15.5-otp-26
|
elixir 1.14.4-otp-25
|
||||||
erlang 26.0.2
|
erlang 25.3.1
|
||||||
|
|
412
CHANGELOG.md
|
@ -5,418 +5,6 @@ All notable changes to this project will be documented in this file.
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## 4.0.2 (2023-12-07)
|
|
||||||
|
|
||||||
### Security issues
|
|
||||||
|
|
||||||
This release fixes different security issues reported by the potsda.mn collective. Please make sure to upgrade as soon as possible.
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Fixes XSS issues in notifier and participant and event contacts list formatting
|
|
||||||
|
|
||||||
|
|
||||||
* fix(front-end): add more security fixes for formatted lists and notifier ([1af8e37](https://framagit.org/framasoft/mobilizon/commits/1af8e37))
|
|
||||||
|
|
||||||
|
|
||||||
## 4.0.1 (2023-12-07)
|
|
||||||
|
|
||||||
### Security issues
|
|
||||||
|
|
||||||
This release fixes different security issues reported by the potsda.mn collective. Please make sure to upgrade as soon as possible.
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- Added a CLI task to test if emails configuration works properly
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- Fixes XSS issues in groups descriptions, report contents, messages from anonymous participations and resources descriptions
|
|
||||||
- Fixes Docker configuration that prevented the image to launch
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- Added back Debian Buster builds
|
|
||||||
|
|
||||||
### Complete changelog
|
|
||||||
|
|
||||||
* build(packages): add back Debian Buster as it seems people are still using it ([795ef24](https://framagit.org/framasoft/mobilizon/commits/795ef24))
|
|
||||||
* build(packages): remove alpine packages as there's no demand for it ([0caaf2b](https://framagit.org/framasoft/mobilizon/commits/0caaf2b))
|
|
||||||
* Translated using Weblate (Croatian) ([9c88fae](https://framagit.org/framasoft/mobilizon/commits/9c88fae))
|
|
||||||
* Translated using Weblate (Croatian) ([623f4ee](https://framagit.org/framasoft/mobilizon/commits/623f4ee))
|
|
||||||
* Translated using Weblate (Croatian) ([1162dd0](https://framagit.org/framasoft/mobilizon/commits/1162dd0))
|
|
||||||
* Translated using Weblate (Galician) ([97c53bb](https://framagit.org/framasoft/mobilizon/commits/97c53bb))
|
|
||||||
* Translated using Weblate (Galician) ([e08b057](https://framagit.org/framasoft/mobilizon/commits/e08b057))
|
|
||||||
* Translated using Weblate (Galician) ([ec5e436](https://framagit.org/framasoft/mobilizon/commits/ec5e436))
|
|
||||||
* Translated using Weblate (Korean) ([1a1ad52](https://framagit.org/framasoft/mobilizon/commits/1a1ad52))
|
|
||||||
* Translated using Weblate (Korean) ([7b4c31d](https://framagit.org/framasoft/mobilizon/commits/7b4c31d))
|
|
||||||
* fix: always consider report content as text ([ffff379](https://framagit.org/framasoft/mobilizon/commits/ffff379))
|
|
||||||
* fix: sanitize descriptions from resources ([dc6647f](https://framagit.org/framasoft/mobilizon/commits/dc6647f))
|
|
||||||
* fix(config): fix setting path for Mobilizon.Service.SiteMap ([7d725bd](https://framagit.org/framasoft/mobilizon/commits/7d725bd))
|
|
||||||
* fix(docker): fix getting configuration value from env MOBILIZON_SMTP_TLS ([28063bd](https://framagit.org/framasoft/mobilizon/commits/28063bd)), closes [#1381](https://framagit.org/framasoft/mobilizon/issues/1381)
|
|
||||||
* fix(docker): fix getting default value for MOBILIZON_SMTP_SSL env ([126727b](https://framagit.org/framasoft/mobilizon/commits/126727b))
|
|
||||||
* fix(docker): use separate env for tzdata dir path ([9907f88](https://framagit.org/framasoft/mobilizon/commits/9907f88))
|
|
||||||
* fix(emails): use tls_certificate_check to add tls config for mailer ([db38550](https://framagit.org/framasoft/mobilizon/commits/db38550))
|
|
||||||
* fix(front): anonymous participant text is plain text, avoid using v-html ([2c12fbf](https://framagit.org/framasoft/mobilizon/commits/2c12fbf))
|
|
||||||
* fix(front): fix editing group ([935799f](https://framagit.org/framasoft/mobilizon/commits/935799f))
|
|
||||||
* fix(front): fix XSS because of bad operations when setting the group's summary ([ded59be](https://framagit.org/framasoft/mobilizon/commits/ded59be))
|
|
||||||
* fix(front): put correct value for CONVERSATION_LIST enum value ([94bf2e5](https://framagit.org/framasoft/mobilizon/commits/94bf2e5))
|
|
||||||
* fix(graphql): set default value for resource type parameter ([09f4132](https://framagit.org/framasoft/mobilizon/commits/09f4132))
|
|
||||||
* feat(cli): add command to test emails send correctly ([7210f86](https://framagit.org/framasoft/mobilizon/commits/7210f86))
|
|
||||||
* feat(docker): allow to configure loglevel at runtime through env variable ([4855af8](https://framagit.org/framasoft/mobilizon/commits/4855af8))
|
|
||||||
* test: add new tests for XSS in actors summary ([58e50e3](https://framagit.org/framasoft/mobilizon/commits/58e50e3))
|
|
||||||
* style: linting front-end ([41227d9](https://framagit.org/framasoft/mobilizon/commits/41227d9))
|
|
||||||
* refactor(activitypub): handle failure finding public key in actor keys ([5b337f9](https://framagit.org/framasoft/mobilizon/commits/5b337f9))
|
|
||||||
|
|
||||||
|
|
||||||
## 4.0.0 (2023-12-05)
|
|
||||||
|
|
||||||
### Breaking changes
|
|
||||||
|
|
||||||
#### Release (binary package) installations
|
|
||||||
|
|
||||||
- We now produce packages for different distributions targets (Debian Bookworm, Debian Bullseye, Ubuntu Jammy, Ubuntu Focal, Ubuntu Bionic, Fedora 38 and Fedora 39). Be sure to pick the right one for your system, as there can be issues with OpenSSL versions differing from inside the Mobilizon package and on your system.
|
|
||||||
- The `https://joinmobilizon.org/latest-package` URL now links to the latest package builded against Debian Bookworm. Make sure to follow the documentation if you're not using this.
|
|
||||||
- There's also an `arm64` package build on Debian Bullseye for now.
|
|
||||||
|
|
||||||
#### Source installations
|
|
||||||
- Elixir 15 is now required
|
|
||||||
- The content of the `js` directory is now at the root of the repository, so you don't need to `cd js` anymore
|
|
||||||
- No need for `yarn` anymore, simply use `npm` instead for `npm i` and `npm run build`
|
|
||||||
|
|
||||||
### New features
|
|
||||||
|
|
||||||
- Event organizers and groups can be contacted through private messages (including PMs from 3rd-party micro-blogging fediverse services)
|
|
||||||
- Event organizers can send private announcements to event participants (approved or not)
|
|
||||||
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
- Anonymous participation e-mails now contain links to cancel your participation
|
|
||||||
- ActivityPub improvements for compatibility with https://event-federation.eu
|
|
||||||
- ICS export fixes for descriptions and adding event status
|
|
||||||
|
|
||||||
### Changes since 4.0.0-rc.1
|
|
||||||
|
|
||||||
* refactor: to lower cyclomatic complexity ([147096c](https://framagit.org/framasoft/mobilizon/commits/147096c))
|
|
||||||
* fix(activitypub): compact ical:status in activitystream data ([5e8f9af](https://framagit.org/framasoft/mobilizon/commits/5e8f9af)), closes [#1378](https://framagit.org/framasoft/mobilizon/issues/1378)
|
|
||||||
* fix(activitypub): fix receiving comments ([f1084c1](https://framagit.org/framasoft/mobilizon/commits/f1084c1))
|
|
||||||
* fix(backend): handle ecto errors when fetching and create entities ([89d1ee4](https://framagit.org/framasoft/mobilizon/commits/89d1ee4))
|
|
||||||
* fix(front): fix tag loading ([f81472e](https://framagit.org/framasoft/mobilizon/commits/f81472e))
|
|
||||||
* fix(front): make recipient field placeholder translatable ([10ce812](https://framagit.org/framasoft/mobilizon/commits/10ce812))
|
|
||||||
* fix(front): only show participants & announcements menu items to organizers ([c4d2ec6](https://framagit.org/framasoft/mobilizon/commits/c4d2ec6))
|
|
||||||
* Translated using Weblate (Croatian) ([a26ff98](https://framagit.org/framasoft/mobilizon/commits/a26ff98))
|
|
||||||
* Translated using Weblate (Croatian) ([1683f01](https://framagit.org/framasoft/mobilizon/commits/1683f01))
|
|
||||||
* Translated using Weblate (Croatian) ([aa7f870](https://framagit.org/framasoft/mobilizon/commits/aa7f870))
|
|
||||||
* Translated using Weblate (Croatian) ([1ce34ea](https://framagit.org/framasoft/mobilizon/commits/1ce34ea))
|
|
||||||
* Translated using Weblate (Croatian) ([5e7edc0](https://framagit.org/framasoft/mobilizon/commits/5e7edc0))
|
|
||||||
* Translated using Weblate (Croatian) ([d777d88](https://framagit.org/framasoft/mobilizon/commits/d777d88))
|
|
||||||
* Translated using Weblate (Croatian) ([0118d97](https://framagit.org/framasoft/mobilizon/commits/0118d97))
|
|
||||||
* Translated using Weblate (Croatian) ([805e931](https://framagit.org/framasoft/mobilizon/commits/805e931))
|
|
||||||
|
|
||||||
## 4.0.0-rc.1 (2023-12-04)
|
|
||||||
|
|
||||||
* fix: prevent sending group physical address if it's empty and allow empty text for timezone ([32caebb](https://framagit.org/framasoft/mobilizon/commits/32caebb)), closes [#1357](https://framagit.org/framasoft/mobilizon/issues/1357)
|
|
||||||
* fix(activitypub): add missing externalParticipationUrl context ([8795576](https://framagit.org/framasoft/mobilizon/commits/8795576)), closes [#1376](https://framagit.org/framasoft/mobilizon/issues/1376)
|
|
||||||
* fix(backend): only send suspension notification emails when actor's suspended and not just deleted ([9e41bc1](https://framagit.org/framasoft/mobilizon/commits/9e41bc1))
|
|
||||||
* docs(nginx): improve nginx configuration ([6c992ca](https://framagit.org/framasoft/mobilizon/commits/6c992ca))
|
|
||||||
|
|
||||||
## 4.0.0-beta.2 (2023-12-01)
|
|
||||||
|
|
||||||
* test: fix tests using verified routes ([5fcf3d5](https://framagit.org/framasoft/mobilizon/commits/5fcf3d5))
|
|
||||||
* feat: add links to cancel anonymous participations in emails ([9e6b232](https://framagit.org/framasoft/mobilizon/commits/9e6b232))
|
|
||||||
* feat(background): add a job to refresh participant stats ([11e42d6](https://framagit.org/framasoft/mobilizon/commits/11e42d6))
|
|
||||||
* feat(front): add dedicated page and route for event announcements ([d831dff](https://framagit.org/framasoft/mobilizon/commits/d831dff))
|
|
||||||
* chore(i18n): update backend translations ([6df16ef](https://framagit.org/framasoft/mobilizon/commits/6df16ef))
|
|
||||||
* fix: fix creating participant stats ([3f2a88f](https://framagit.org/framasoft/mobilizon/commits/3f2a88f))
|
|
||||||
* refactor: use Phoenix verified routes ([b315e1d](https://framagit.org/framasoft/mobilizon/commits/b315e1d))
|
|
||||||
|
|
||||||
## 4.0.0-beta.1 (2023-11-30)
|
|
||||||
|
|
||||||
* fix: add a final fallback if we have default_language: nil in instance config ([cd53062](https://framagit.org/framasoft/mobilizon/commits/cd53062))
|
|
||||||
* fix: build pictures at correct location and fix Plug.Static ([3c288c5](https://framagit.org/framasoft/mobilizon/commits/3c288c5))
|
|
||||||
* fix: don't show passed/finished events in related events section ([69e4a5c](https://framagit.org/framasoft/mobilizon/commits/69e4a5c))
|
|
||||||
* fix: fix Dockerfile copying assets path ([16cd377](https://framagit.org/framasoft/mobilizon/commits/16cd377))
|
|
||||||
* fix: normalize suggested username ([4960387](https://framagit.org/framasoft/mobilizon/commits/4960387))
|
|
||||||
* fix: set correct watcher config for E2E tests ([f47889b](https://framagit.org/framasoft/mobilizon/commits/f47889b))
|
|
||||||
* fix: various fixes ([b635937](https://framagit.org/framasoft/mobilizon/commits/b635937))
|
|
||||||
* fix(announcements): load group announcements ([7ef85fe](https://framagit.org/framasoft/mobilizon/commits/7ef85fe))
|
|
||||||
* fix(api): allow localhost as a valid uri host for applications ([49b070d](https://framagit.org/framasoft/mobilizon/commits/49b070d))
|
|
||||||
* fix(api): fix allowing posting event private announcement ([1831495](https://framagit.org/framasoft/mobilizon/commits/1831495))
|
|
||||||
* fix(docker): add sitemap folder ([bd38449](https://framagit.org/framasoft/mobilizon/commits/bd38449))
|
|
||||||
* fix(docker): allow to configure SMTP TLS ([2ecdf05](https://framagit.org/framasoft/mobilizon/commits/2ecdf05))
|
|
||||||
* fix(docker): convert smtp tls sni to char list ([b3be7c6](https://framagit.org/framasoft/mobilizon/commits/b3be7c6))
|
|
||||||
* fix(export): fix iCalendar export description HTML conversion ([d7daafc](https://framagit.org/framasoft/mobilizon/commits/d7daafc)), closes [#888](https://framagit.org/framasoft/mobilizon/issues/888)
|
|
||||||
* fix(front): hide all categories card if we don't have even one ([5e86ef1](https://framagit.org/framasoft/mobilizon/commits/5e86ef1))
|
|
||||||
* fix(histoire): fix URL to Framapiaf avatars ([0613f7f](https://framagit.org/framasoft/mobilizon/commits/0613f7f))
|
|
||||||
* fix(i18n): fix typos in translation sources ([2ecd55d](https://framagit.org/framasoft/mobilizon/commits/2ecd55d))
|
|
||||||
* fix(i18n): update spanish translations ([cfebc35](https://framagit.org/framasoft/mobilizon/commits/cfebc35))
|
|
||||||
* add simplified Chinese mapping ([02af9a4](https://framagit.org/framasoft/mobilizon/commits/02af9a4))
|
|
||||||
* Added translation using Weblate (Korean) ([a11fab6](https://framagit.org/framasoft/mobilizon/commits/a11fab6))
|
|
||||||
* Added translation using Weblate (Korean) ([c529a83](https://framagit.org/framasoft/mobilizon/commits/c529a83))
|
|
||||||
* Added translation using Weblate (Tatar) ([cefdaf8](https://framagit.org/framasoft/mobilizon/commits/cefdaf8))
|
|
||||||
* Fix docker development: ([9705978](https://framagit.org/framasoft/mobilizon/commits/9705978))
|
|
||||||
* fix fullAddressAutocomplete component not loading results ([83da88c](https://framagit.org/framasoft/mobilizon/commits/83da88c))
|
|
||||||
* Fix typo in ctl help text ([495d163](https://framagit.org/framasoft/mobilizon/commits/495d163))
|
|
||||||
* Fix typos ([66e89b9](https://framagit.org/framasoft/mobilizon/commits/66e89b9))
|
|
||||||
* introduce VITE_HOST env var and pass it to the node watcher vite --host ([bfb7e3c](https://framagit.org/framasoft/mobilizon/commits/bfb7e3c))
|
|
||||||
* remove unnecessary function ([8a1b122](https://framagit.org/framasoft/mobilizon/commits/8a1b122))
|
|
||||||
* resolve result promise in a shorter way ([f81804d](https://framagit.org/framasoft/mobilizon/commits/f81804d))
|
|
||||||
* Translated using Weblate (Croatian) ([e510e09](https://framagit.org/framasoft/mobilizon/commits/e510e09))
|
|
||||||
* Translated using Weblate (Czech) ([d702ca2](https://framagit.org/framasoft/mobilizon/commits/d702ca2))
|
|
||||||
* Translated using Weblate (Czech) ([9224f89](https://framagit.org/framasoft/mobilizon/commits/9224f89))
|
|
||||||
* Translated using Weblate (Czech) ([c14dffb](https://framagit.org/framasoft/mobilizon/commits/c14dffb))
|
|
||||||
* Translated using Weblate (Czech) ([a7d70d5](https://framagit.org/framasoft/mobilizon/commits/a7d70d5))
|
|
||||||
* Translated using Weblate (French) ([c7ba003](https://framagit.org/framasoft/mobilizon/commits/c7ba003))
|
|
||||||
* Translated using Weblate (German) ([7732f87](https://framagit.org/framasoft/mobilizon/commits/7732f87))
|
|
||||||
* Translated using Weblate (Indonesian) ([d065193](https://framagit.org/framasoft/mobilizon/commits/d065193))
|
|
||||||
* Translated using Weblate (Italian) ([b5e9f62](https://framagit.org/framasoft/mobilizon/commits/b5e9f62))
|
|
||||||
* Translated using Weblate (Italian) ([e8e1a62](https://framagit.org/framasoft/mobilizon/commits/e8e1a62))
|
|
||||||
* Translated using Weblate (Italian) ([84fc175](https://framagit.org/framasoft/mobilizon/commits/84fc175))
|
|
||||||
* Translated using Weblate (Italian) ([5b64388](https://framagit.org/framasoft/mobilizon/commits/5b64388))
|
|
||||||
* Translated using Weblate (Italian) ([5e3dedb](https://framagit.org/framasoft/mobilizon/commits/5e3dedb))
|
|
||||||
* Translated using Weblate (Italian) ([afe4dd2](https://framagit.org/framasoft/mobilizon/commits/afe4dd2))
|
|
||||||
* Translated using Weblate (Italian) ([fa0ae83](https://framagit.org/framasoft/mobilizon/commits/fa0ae83))
|
|
||||||
* Translated using Weblate (Italian) ([181a5a7](https://framagit.org/framasoft/mobilizon/commits/181a5a7))
|
|
||||||
* Translated using Weblate (Italian) ([827caa3](https://framagit.org/framasoft/mobilizon/commits/827caa3))
|
|
||||||
* Translated using Weblate (Italian) ([d08d350](https://framagit.org/framasoft/mobilizon/commits/d08d350))
|
|
||||||
* Translated using Weblate (Italian) ([e9d38c2](https://framagit.org/framasoft/mobilizon/commits/e9d38c2))
|
|
||||||
* Translated using Weblate (Italian) ([a4578f3](https://framagit.org/framasoft/mobilizon/commits/a4578f3))
|
|
||||||
* Translated using Weblate (Polish) ([d62c31e](https://framagit.org/framasoft/mobilizon/commits/d62c31e))
|
|
||||||
* Translated using Weblate (Polish) ([a8ea217](https://framagit.org/framasoft/mobilizon/commits/a8ea217))
|
|
||||||
* Translated using Weblate (Polish) ([42537af](https://framagit.org/framasoft/mobilizon/commits/42537af))
|
|
||||||
* Translated using Weblate (Polish) ([fb0a74e](https://framagit.org/framasoft/mobilizon/commits/fb0a74e))
|
|
||||||
* Translated using Weblate (Polish) ([2458076](https://framagit.org/framasoft/mobilizon/commits/2458076))
|
|
||||||
* Translated using Weblate (Polish) ([46ffc8c](https://framagit.org/framasoft/mobilizon/commits/46ffc8c))
|
|
||||||
* Translated using Weblate (Polish) ([f0d7807](https://framagit.org/framasoft/mobilizon/commits/f0d7807))
|
|
||||||
* Translated using Weblate (Portuguese (Brazil)) ([9f78c73](https://framagit.org/framasoft/mobilizon/commits/9f78c73))
|
|
||||||
* Translated using Weblate (Portuguese (Brazil)) ([802ab78](https://framagit.org/framasoft/mobilizon/commits/802ab78))
|
|
||||||
* Translated using Weblate (Spanish) ([ee5ee8d](https://framagit.org/framasoft/mobilizon/commits/ee5ee8d))
|
|
||||||
* Translated using Weblate (Spanish) ([66c49e4](https://framagit.org/framasoft/mobilizon/commits/66c49e4))
|
|
||||||
* Translated using Weblate (Tatar) ([ba5f8f8](https://framagit.org/framasoft/mobilizon/commits/ba5f8f8))
|
|
||||||
* Update translation files ([9aa9cd2](https://framagit.org/framasoft/mobilizon/commits/9aa9cd2))
|
|
||||||
* WIP ([b5672ce](https://framagit.org/framasoft/mobilizon/commits/b5672ce))
|
|
||||||
* build: downgrade Sentry since it doesn't want to compile ([b2bacbf](https://framagit.org/framasoft/mobilizon/commits/b2bacbf))
|
|
||||||
* build: only run ecto create & migrate & tz_world update on prepare_test task, not main test one ([8d11073](https://framagit.org/framasoft/mobilizon/commits/8d11073))
|
|
||||||
* build: replace @pluralsh/socket with @framasoft/socket ([435bd9d](https://framagit.org/framasoft/mobilizon/commits/435bd9d))
|
|
||||||
* build: replace @vueuse/head with @unhead/vue ([5602164](https://framagit.org/framasoft/mobilizon/commits/5602164))
|
|
||||||
* build: switch from yarn to npm to manage js dependencies and move js contents to root ([2e72f6f](https://framagit.org/framasoft/mobilizon/commits/2e72f6f))
|
|
||||||
* build(deps): replace absinthe socket library with fork ([ec397aa](https://framagit.org/framasoft/mobilizon/commits/ec397aa))
|
|
||||||
* build(docker): optimize image size ([f34099d](https://framagit.org/framasoft/mobilizon/commits/f34099d)), closes [#1012](https://framagit.org/framasoft/mobilizon/issues/1012)
|
|
||||||
* ci: bump node version in CI ([3205512](https://framagit.org/framasoft/mobilizon/commits/3205512))
|
|
||||||
* ci: fix handling pages deploy with existing public folder ([1228ec1](https://framagit.org/framasoft/mobilizon/commits/1228ec1))
|
|
||||||
* ci: install python3 instead of python ([5d65981](https://framagit.org/framasoft/mobilizon/commits/5d65981))
|
|
||||||
* ci: Release on multiple distributions & fix Docker multiple-step build ([262d1fc](https://framagit.org/framasoft/mobilizon/commits/262d1fc))
|
|
||||||
* test: fix ActivityPub headers test ([f248660](https://framagit.org/framasoft/mobilizon/commits/f248660))
|
|
||||||
* test: fix front-end tests ([105d3b5](https://framagit.org/framasoft/mobilizon/commits/105d3b5))
|
|
||||||
* test: fix histoire configuration ([bfbc299](https://framagit.org/framasoft/mobilizon/commits/bfbc299))
|
|
||||||
* test: fix tests ([c731f0f](https://framagit.org/framasoft/mobilizon/commits/c731f0f))
|
|
||||||
* test: fix unit backend tests ([e051df1](https://framagit.org/framasoft/mobilizon/commits/e051df1))
|
|
||||||
* chore: fix prettier configuration and run it ([c255cea](https://framagit.org/framasoft/mobilizon/commits/c255cea))
|
|
||||||
* chore: update Sobelow security ignores ([1d0398d](https://framagit.org/framasoft/mobilizon/commits/1d0398d))
|
|
||||||
* chore: upgrade deps ([99c80c6](https://framagit.org/framasoft/mobilizon/commits/99c80c6))
|
|
||||||
* chore(deps): update geo_postgis to 3.5.0 for Elixir 1.15 compat ([3936eb4](https://framagit.org/framasoft/mobilizon/commits/3936eb4))
|
|
||||||
* chore(deps): upgrade dependencies ([3d9beaa](https://framagit.org/framasoft/mobilizon/commits/3d9beaa))
|
|
||||||
* chore(i18n): add missing translation key ([6ecfa48](https://framagit.org/framasoft/mobilizon/commits/6ecfa48))
|
|
||||||
* chore(i18n): update gettext dependency and regenerate translation files ([d7ad934](https://framagit.org/framasoft/mobilizon/commits/d7ad934))
|
|
||||||
* chore(i18n): update translation templates ([70e9ce0](https://framagit.org/framasoft/mobilizon/commits/70e9ce0))
|
|
||||||
* refactor: use dedicated email for event announcements ([b97f1c9](https://framagit.org/framasoft/mobilizon/commits/b97f1c9))
|
|
||||||
* docs(dev.md): keep some info about structure ([d130b15](https://framagit.org/framasoft/mobilizon/commits/d130b15))
|
|
||||||
* feat(export): add event status in iCalendar exports ([7a1bfca](https://framagit.org/framasoft/mobilizon/commits/7a1bfca))
|
|
||||||
* feat(federation): expose public activities as announcements in relay outbx & rfrsh profile aftr fllw ([85e4715](https://framagit.org/framasoft/mobilizon/commits/85e4715))
|
|
||||||
|
|
||||||
|
|
||||||
## 3.2.0 (2023-09-07)
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* **cli:** allow the mobilizon.users.delete command to delete multiple users by email domain or ip ([bc50ab6](https://framagit.org/framasoft/mobilizon/commit/bc50ab66f3a44df220a7daa3cb1d917bd02487ba))
|
|
||||||
* **export:** add date of participant creation in participant exports ([fef60ed](https://framagit.org/framasoft/mobilizon/commit/fef60ed0f92fc4e09ee261ff03f1139aff2449c3)), closes [#1343](https://framagit.org/framasoft/mobilizon/issues/1343)
|
|
||||||
* **notifications:** add missing notifications when an user registers to an event ([da532c7](https://framagit.org/framasoft/mobilizon/commit/da532c7059bea5fcd47e2f42210e8ba842a11d63)), closes [#1344](https://framagit.org/framasoft/mobilizon/issues/1344)
|
|
||||||
* **reports:** allow reports to hold multiple events ([f2ac3e2](https://framagit.org/framasoft/mobilizon/commit/f2ac3e2e5d28f4257a5e2d4870d339fecf3a5f1b))
|
|
||||||
* **reports:** allow to suspend a profile or a user account directly from the report view ([69588db](https://framagit.org/framasoft/mobilizon/commit/69588dbf4ce2f80cc5829a841135042fa73eb4fe))
|
|
||||||
* **reports:** improve reportview and allow removing content + resolve report automatically ([b105c50](https://framagit.org/framasoft/mobilizon/commit/b105c508c03ce3cb96dd8342f96d3291aa197e22))
|
|
||||||
* **reports:** show suspended status next to reported profile ([b9a165a](https://framagit.org/framasoft/mobilizon/commit/b9a165a7fc565dc583cca81dd9c54570f73b4ca3))
|
|
||||||
* Add option to link an external registration provider for events ([2de6937](https://framagit.org/framasoft/mobilizon/commit/2de6937407743100daba1d397db4da32d4cb606b))
|
|
||||||
* **back:** add admin setting to disable external event feature ([f6611e8](https://framagit.org/framasoft/mobilizon/commit/f6611e8eb5a7e12dc0dc0c216b598e04144e07c6))
|
|
||||||
* improve group creation view [3f601748](https://framagit.org/framasoft/mobilizon/-/commit/3f60174877bbe05773b1d1b2ceb91749adec7ed7)
|
|
||||||
* **auth:** pre-initialize registration fields with information from 3rd-party provider ([7e49345](https://framagit.org/framasoft/mobilizon/commit/7e4934513a0ca4a5f95e8c8e4a600459911899d5)), closes [#1105](https://framagit.org/framasoft/mobilizon/issues/1105)
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* add inets and ssl to extra_applications in test env ([af46bea](https://framagit.org/framasoft/mobilizon/commit/af46bea7f730f4479bb31518a9fa53de7302049a))
|
|
||||||
* **apps:** add missing app scopes ([7e98097](https://framagit.org/framasoft/mobilizon/commit/7e98097c710663609274200564fca9eff1ea4d20))
|
|
||||||
* **apps:** make sure we can set status for an application token ([1a6095d](https://framagit.org/framasoft/mobilizon/commit/1a6095d27aeb440379d27c3894c302f831214822))
|
|
||||||
* **backend:** fix config cache not being used everytime ([ed3cd58](https://framagit.org/framasoft/mobilizon/commit/ed3cd5858cd27a90d4724a95ee660bbc08e92e80))
|
|
||||||
* **backend:** handle email not being sent when resending registration instructions ([b2492a3](https://framagit.org/framasoft/mobilizon/commit/b2492a387086528598da36f11e53569c5bdb164c))
|
|
||||||
* create event time/date allignment ([3de90a3](https://framagit.org/framasoft/mobilizon/commit/3de90a3c73414105becdcb24899016178b1c6f02))
|
|
||||||
* **docker:** fix Qemu segfaulting on arm64 ([8e3f90f](https://framagit.org/framasoft/mobilizon/commit/8e3f90f7135e2a8a8ac46464420c9d57b2e02534)), closes [#1241](https://framagit.org/framasoft/mobilizon/issues/1241) [#1249](https://framagit.org/framasoft/mobilizon/issues/1249)
|
|
||||||
* **federation:** fix getting pictures from Gruppe actors ([7c5f8b2](https://framagit.org/framasoft/mobilizon/commit/7c5f8b24311253ef89c7e47cd7ce22ebe6cf2ec9))
|
|
||||||
* fix Elixir 1.15 depreciations ([da70427](https://framagit.org/framasoft/mobilizon/commit/da70427e3292be8943167bbad73d5a782a98c6b5))
|
|
||||||
* fix some typescript issues with pwa ([e351d3c](https://framagit.org/framasoft/mobilizon/commit/e351d3cb2f8183bb4335b3b21e154f46d9237a76))
|
|
||||||
* **front:** avoid crashing if we don't have configuration data in time when in guard ([7916261](https://framagit.org/framasoft/mobilizon/commit/7916261c5c8c680d064fba106619d733575bc39c))
|
|
||||||
* **front:** fix alignment of some input elements on event edition form ([50695fc](https://framagit.org/framasoft/mobilizon/commit/50695fcfd5e0dc6fd55185f4399d45ed1852f880))
|
|
||||||
* **front:** fix changing language not being saved to the user's settings ([010a5e4](https://framagit.org/framasoft/mobilizon/commit/010a5e426def0a0b7f2658234f3c9d6eec46a68e))
|
|
||||||
* **front:** fix comment not showing up when replying in a discussion ([cc8f02d](https://framagit.org/framasoft/mobilizon/commit/cc8f02d0a6354c49437e7ff1780912a71bed03f4))
|
|
||||||
* **front:** fix confirm anonymous participation ([f99267c](https://framagit.org/framasoft/mobilizon/commit/f99267c6115601fce6eadd6ee54893fde0d6fd84))
|
|
||||||
* **front:** fix discussion edition panel always showing up ([fee0e38](https://framagit.org/framasoft/mobilizon/commit/fee0e388af798f14d4da8cbd9f037137f6be9f85))
|
|
||||||
* **front:** fix display of participants list ([c6b83c4](https://framagit.org/framasoft/mobilizon/commit/c6b83c42d6fbb2e6a93175479ef1620913c6532f))
|
|
||||||
* **front:** fix map ([8f84ba1](https://framagit.org/framasoft/mobilizon/commit/8f84ba1d08ce8d2d266010ee3166106eed66116d)), closes [#1314](https://framagit.org/framasoft/mobilizon/issues/1314)
|
|
||||||
* **front:** fix missing type causing eslint error ([c76dba3](https://framagit.org/framasoft/mobilizon/commit/c76dba3dbfe4fb0ab9ed24f71a6f64681c643fca))
|
|
||||||
* **front:** fix selecting all participants in participant view ([beef3ff](https://framagit.org/framasoft/mobilizon/commit/beef3ff16d12f5d5710e302b739dd724ad4b0cb5))
|
|
||||||
* **front:** fix showing error message when app to approve doesn't exist ([12cbff1](https://framagit.org/framasoft/mobilizon/commit/12cbff154ae5cdd72a1a7e882cb99e943010222b))
|
|
||||||
* **front:** fix some alignment of some UI elements in mobile event view ([8c313b5](https://framagit.org/framasoft/mobilizon/commit/8c313b53977493792c113b5191443515f8aeae78))
|
|
||||||
* **front:** properly handle error when approving app ([086d208](https://framagit.org/framasoft/mobilizon/commit/086d208ee50ae1f9ecb30196e758fdc7687714ae))
|
|
||||||
* **front:** properly handle post not found ([8db31c9](https://framagit.org/framasoft/mobilizon/commit/8db31c99df668389db4c6651fa71a8c1420484cf))
|
|
||||||
* **front:** reduce horizontal padding on main element ([f3c218f](https://framagit.org/framasoft/mobilizon/commit/f3c218f841292a28ec6d1284a205e2c7fd7d8f6e))
|
|
||||||
* **lint:** fix lint after upgrades ([60aceb4](https://framagit.org/framasoft/mobilizon/commit/60aceb442ae49458e31a1f38d277eca7af248a36))
|
|
||||||
* **mail:** fix sending mail on OTP26 ([f54fff5](https://framagit.org/framasoft/mobilizon/commit/f54fff56fc5c94408b1fd16b1eb9dd0f91bc2dfd)), closes [#1341](https://framagit.org/framasoft/mobilizon/issues/1341)
|
|
||||||
* **push:** fix push subscriptions registration ([fdf87ea](https://framagit.org/framasoft/mobilizon/commit/fdf87ea991b1d406b28dbd0c8807908939070c8b))
|
|
||||||
* **pwa:** improvements to the PWA configuration ([04c5ac1](https://framagit.org/framasoft/mobilizon/commit/04c5ac11636a4ffb5d3ac0c510b028edfb7fc057))
|
|
||||||
* **reports:** make front-end handle nullified reported_id and reported_id ([afd2ffe](https://framagit.org/framasoft/mobilizon/commit/afd2ffe72294baedc9dd15dc89d57301831545cc))
|
|
||||||
* **reports:** remove on delete cascade for reports ([4f530ca](https://framagit.org/framasoft/mobilizon/commit/4f530cabcf1bcadc09399a728975d329f3c9fdbf))
|
|
||||||
* **front:** fix behavior of local toggle for profiles & groups view depending on domain value ([84f62cd](https://framagit.org/framasoft/mobilizon/commit/84f62cd043d5cf5d186fea6f24a1a9dff5fc64ce))
|
|
||||||
* **i18n:** add missing translations ([af670f3](https://framagit.org/framasoft/mobilizon/commit/af670f39478b11465205fbea9b9268bab401bbb6))
|
|
||||||
* **back:** allow any other type of actor to be suspended ([92b222b](https://framagit.org/framasoft/mobilizon/commit/92b222b091cf6248969b0206e7c052b725a1286b))
|
|
||||||
* **back:** only try to insert activities for groups ([cfc9843](https://framagit.org/framasoft/mobilizon/commit/cfc984345e90b2960077956858606395f37ef9b9))
|
|
||||||
* **front:** don't return promise if result is not finished loading for tags ([8c14ba4](https://framagit.org/framasoft/mobilizon/commit/8c14ba441c6f0fadb3c59f80ff4e3abb2e625752))
|
|
||||||
* **front:** fix getting result from interactable object in InteractView ([31b2d06](https://framagit.org/framasoft/mobilizon/commit/31b2d065a904453580731133cd3dfd545a5816fa))
|
|
||||||
* **docker:** make Docker entrypoint port configurable via $MOBILIZON_DATABASE_PORT ([13099e0](https://framagit.org/framasoft/mobilizon/commit/13099e0f118b727a1472282c6419ef9b1842c191))
|
|
||||||
* **front:** fix fetching and rendering profile mentions and fetching tags ([895378a](https://framagit.org/framasoft/mobilizon/commit/895378a96bf8a6c7662ed02509c37b8d8a95db0b))
|
|
||||||
* **sitemap:** save generated sitemaps in configurable directory ([f28109a](https://framagit.org/framasoft/mobilizon/commit/f28109ad50d85143e38c8e9f5d09c28f80566462)), closes [#1321](https://framagit.org/framasoft/mobilizon/issues/1321)
|
|
||||||
* **auth:** small front fixes in 3rd-party auth provider callback ([bde7206](https://framagit.org/framasoft/mobilizon/commit/bde7206a1ca44fdf96d817921bb1efc497dcae40))
|
|
||||||
* **config:** rollback Mailer tls setting to :never by default ([3d63c12](https://framagit.org/framasoft/mobilizon/commit/3d63c12e88ca31f582489f126d1ef5677af79721))
|
|
||||||
* **docker:** fix entrypoint PostgreSQL extensions creations not using MOBILIZON_DATABASE_PORT ([9b49918](https://framagit.org/framasoft/mobilizon/commit/9b4991844ecaf7c1f1287ae62d1dfd463c2ea26b)), closes [#1321](https://framagit.org/framasoft/mobilizon/issues/1321) [#1321](https://framagit.org/framasoft/mobilizon/issues/1321)
|
|
||||||
* **front:** fixes in EditIdentity view ([7e13e2b](https://framagit.org/framasoft/mobilizon/commit/7e13e2baa7690d5dfc4a8b12097a4ed85ea825d7))
|
|
||||||
|
|
||||||
|
|
||||||
## 3.2.0-beta.5 (2023-09-06)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **docker:** make Docker entrypoint port configurable via $MOBILIZON_DATABASE_PORT ([13099e0](https://framagit.org/framasoft/mobilizon/commit/13099e0f118b727a1472282c6419ef9b1842c191))
|
|
||||||
* **front:** fix fetching and rendering profile mentions and fetching tags ([895378a](https://framagit.org/framasoft/mobilizon/commit/895378a96bf8a6c7662ed02509c37b8d8a95db0b))
|
|
||||||
* **sitemap:** save generated sitemaps in configurable directory ([f28109a](https://framagit.org/framasoft/mobilizon/commit/f28109ad50d85143e38c8e9f5d09c28f80566462)), closes [#1321](https://framagit.org/framasoft/mobilizon/issues/1321)
|
|
||||||
|
|
||||||
|
|
||||||
## 3.2.0-beta.4 (2023-09-05)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **back:** allow any other type of actor to be suspended ([92b222b](https://framagit.org/framasoft/mobilizon/commit/92b222b091cf6248969b0206e7c052b725a1286b))
|
|
||||||
* **back:** only try to insert activities for groups ([cfc9843](https://framagit.org/framasoft/mobilizon/commit/cfc984345e90b2960077956858606395f37ef9b9))
|
|
||||||
* **front:** don't return promise if result is not finished loading for tags ([8c14ba4](https://framagit.org/framasoft/mobilizon/commit/8c14ba441c6f0fadb3c59f80ff4e3abb2e625752))
|
|
||||||
* **front:** fix getting result from interactable object in InteractView ([31b2d06](https://framagit.org/framasoft/mobilizon/commit/31b2d065a904453580731133cd3dfd545a5816fa))
|
|
||||||
|
|
||||||
|
|
||||||
## 3.2.0-beta.3 (2023-09-04)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **i18n:** add missing translations ([af670f3](https://framagit.org/framasoft/mobilizon/commit/af670f39478b11465205fbea9b9268bab401bbb6))
|
|
||||||
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* Add option to link an external registration provider for events ([2de6937](https://framagit.org/framasoft/mobilizon/commit/2de6937407743100daba1d397db4da32d4cb606b))
|
|
||||||
* **back:** add admin setting to disable external event feature ([f6611e8](https://framagit.org/framasoft/mobilizon/commit/f6611e8eb5a7e12dc0dc0c216b598e04144e07c6))
|
|
||||||
* improve group creation view [3f601748](https://framagit.org/framasoft/mobilizon/-/commit/3f60174877bbe05773b1d1b2ceb91749adec7ed7)
|
|
||||||
|
|
||||||
|
|
||||||
## 3.2.0-beta.2 (2023-09-01)
|
|
||||||
|
|
||||||
Fixes a CI issue that prevented 3.2.0-beta.2 being released.
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **front:** fix behavior of local toggle for profiles & groups view depending on domain value ([84f62cd](https://framagit.org/framasoft/mobilizon/commit/84f62cd043d5cf5d186fea6f24a1a9dff5fc64ce))
|
|
||||||
|
|
||||||
|
|
||||||
## 3.2.0-beta.1 (2023-09-01)
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* **cli:** allow the mobilizon.users.delete command to delete multiple users by email domain or ip ([bc50ab6](https://framagit.org/framasoft/mobilizon/commit/bc50ab66f3a44df220a7daa3cb1d917bd02487ba))
|
|
||||||
* **export:** add date of participant creation in participant exports ([fef60ed](https://framagit.org/framasoft/mobilizon/commit/fef60ed0f92fc4e09ee261ff03f1139aff2449c3)), closes [#1343](https://framagit.org/framasoft/mobilizon/issues/1343)
|
|
||||||
* **notifications:** add missing notifications when an user registers to an event ([da532c7](https://framagit.org/framasoft/mobilizon/commit/da532c7059bea5fcd47e2f42210e8ba842a11d63)), closes [#1344](https://framagit.org/framasoft/mobilizon/issues/1344)
|
|
||||||
* **reports:** allow reports to hold multiple events ([f2ac3e2](https://framagit.org/framasoft/mobilizon/commit/f2ac3e2e5d28f4257a5e2d4870d339fecf3a5f1b))
|
|
||||||
* **reports:** allow to suspend a profile or a user account directly from the report view ([69588db](https://framagit.org/framasoft/mobilizon/commit/69588dbf4ce2f80cc5829a841135042fa73eb4fe))
|
|
||||||
* **reports:** improve reportview and allow removing content + resolve report automatically ([b105c50](https://framagit.org/framasoft/mobilizon/commit/b105c508c03ce3cb96dd8342f96d3291aa197e22))
|
|
||||||
* **reports:** show suspended status next to reported profile ([b9a165a](https://framagit.org/framasoft/mobilizon/commit/b9a165a7fc565dc583cca81dd9c54570f73b4ca3))
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* add inets and ssl to extra_applications in test env ([af46bea](https://framagit.org/framasoft/mobilizon/commit/af46bea7f730f4479bb31518a9fa53de7302049a))
|
|
||||||
* **apps:** add missing app scopes ([7e98097](https://framagit.org/framasoft/mobilizon/commit/7e98097c710663609274200564fca9eff1ea4d20))
|
|
||||||
* **apps:** make sure we can set status for an application token ([1a6095d](https://framagit.org/framasoft/mobilizon/commit/1a6095d27aeb440379d27c3894c302f831214822))
|
|
||||||
* **backend:** fix config cache not being used everytime ([ed3cd58](https://framagit.org/framasoft/mobilizon/commit/ed3cd5858cd27a90d4724a95ee660bbc08e92e80))
|
|
||||||
* **backend:** handle email not being sent when resending registration instructions ([b2492a3](https://framagit.org/framasoft/mobilizon/commit/b2492a387086528598da36f11e53569c5bdb164c))
|
|
||||||
* create event time/date allignment ([3de90a3](https://framagit.org/framasoft/mobilizon/commit/3de90a3c73414105becdcb24899016178b1c6f02))
|
|
||||||
* **docker:** fix Qemu segfaulting on arm64 ([8e3f90f](https://framagit.org/framasoft/mobilizon/commit/8e3f90f7135e2a8a8ac46464420c9d57b2e02534)), closes [#1241](https://framagit.org/framasoft/mobilizon/issues/1241) [#1249](https://framagit.org/framasoft/mobilizon/issues/1249)
|
|
||||||
* **federation:** fix getting pictures from Gruppe actors ([7c5f8b2](https://framagit.org/framasoft/mobilizon/commit/7c5f8b24311253ef89c7e47cd7ce22ebe6cf2ec9))
|
|
||||||
* fix Elixir 1.15 depreciations ([da70427](https://framagit.org/framasoft/mobilizon/commit/da70427e3292be8943167bbad73d5a782a98c6b5))
|
|
||||||
* fix some typescript issues with pwa ([e351d3c](https://framagit.org/framasoft/mobilizon/commit/e351d3cb2f8183bb4335b3b21e154f46d9237a76))
|
|
||||||
* **front:** avoid crashing if we don't have configuration data in time when in guard ([7916261](https://framagit.org/framasoft/mobilizon/commit/7916261c5c8c680d064fba106619d733575bc39c))
|
|
||||||
* **front:** fix alignment of some input elements on event edition form ([50695fc](https://framagit.org/framasoft/mobilizon/commit/50695fcfd5e0dc6fd55185f4399d45ed1852f880))
|
|
||||||
* **front:** fix changing language not being saved to the user's settings ([010a5e4](https://framagit.org/framasoft/mobilizon/commit/010a5e426def0a0b7f2658234f3c9d6eec46a68e))
|
|
||||||
* **front:** fix comment not showing up when replying in a discussion ([cc8f02d](https://framagit.org/framasoft/mobilizon/commit/cc8f02d0a6354c49437e7ff1780912a71bed03f4))
|
|
||||||
* **front:** fix confirm anonymous participation ([f99267c](https://framagit.org/framasoft/mobilizon/commit/f99267c6115601fce6eadd6ee54893fde0d6fd84))
|
|
||||||
* **front:** fix discussion edition panel always showing up ([fee0e38](https://framagit.org/framasoft/mobilizon/commit/fee0e388af798f14d4da8cbd9f037137f6be9f85))
|
|
||||||
* **front:** fix display of participants list ([c6b83c4](https://framagit.org/framasoft/mobilizon/commit/c6b83c42d6fbb2e6a93175479ef1620913c6532f))
|
|
||||||
* **front:** fix map ([8f84ba1](https://framagit.org/framasoft/mobilizon/commit/8f84ba1d08ce8d2d266010ee3166106eed66116d)), closes [#1314](https://framagit.org/framasoft/mobilizon/issues/1314)
|
|
||||||
* **front:** fix missing type causing eslint error ([c76dba3](https://framagit.org/framasoft/mobilizon/commit/c76dba3dbfe4fb0ab9ed24f71a6f64681c643fca))
|
|
||||||
* **front:** fix selecting all participants in participant view ([beef3ff](https://framagit.org/framasoft/mobilizon/commit/beef3ff16d12f5d5710e302b739dd724ad4b0cb5))
|
|
||||||
* **front:** fix showing error message when app to approve doesn't exist ([12cbff1](https://framagit.org/framasoft/mobilizon/commit/12cbff154ae5cdd72a1a7e882cb99e943010222b))
|
|
||||||
* **front:** fix some alignment of some UI elements in mobile event view ([8c313b5](https://framagit.org/framasoft/mobilizon/commit/8c313b53977493792c113b5191443515f8aeae78))
|
|
||||||
* **front:** properly handle error when approving app ([086d208](https://framagit.org/framasoft/mobilizon/commit/086d208ee50ae1f9ecb30196e758fdc7687714ae))
|
|
||||||
* **front:** properly handle post not found ([8db31c9](https://framagit.org/framasoft/mobilizon/commit/8db31c99df668389db4c6651fa71a8c1420484cf))
|
|
||||||
* **front:** reduce horizontal padding on main element ([f3c218f](https://framagit.org/framasoft/mobilizon/commit/f3c218f841292a28ec6d1284a205e2c7fd7d8f6e))
|
|
||||||
* **lint:** fix lint after upgrades ([60aceb4](https://framagit.org/framasoft/mobilizon/commit/60aceb442ae49458e31a1f38d277eca7af248a36))
|
|
||||||
* **mail:** fix sending mail on OTP26 ([f54fff5](https://framagit.org/framasoft/mobilizon/commit/f54fff56fc5c94408b1fd16b1eb9dd0f91bc2dfd)), closes [#1341](https://framagit.org/framasoft/mobilizon/issues/1341)
|
|
||||||
* **push:** fix push subscriptions registration ([fdf87ea](https://framagit.org/framasoft/mobilizon/commit/fdf87ea991b1d406b28dbd0c8807908939070c8b))
|
|
||||||
* **pwa:** improvements to the PWA configuration ([04c5ac1](https://framagit.org/framasoft/mobilizon/commit/04c5ac11636a4ffb5d3ac0c510b028edfb7fc057))
|
|
||||||
* **reports:** make front-end handle nullified reported_id and reported_id ([afd2ffe](https://framagit.org/framasoft/mobilizon/commit/afd2ffe72294baedc9dd15dc89d57301831545cc))
|
|
||||||
* **reports:** remove on delete cascade for reports ([4f530ca](https://framagit.org/framasoft/mobilizon/commit/4f530cabcf1bcadc09399a728975d329f3c9fdbf))
|
|
||||||
|
|
||||||
|
|
||||||
## 3.1.3 (2023-06-21)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **groups:** fix unauthenticated access to groups because of missing read:group:members permission ([3714925](https://framagit.org/framasoft/mobilizon/commit/3714925896ad0415496352b9901ebec199afa0f2)), closes [#1311](https://framagit.org/framasoft/mobilizon/issues/1311)
|
|
||||||
|
|
||||||
|
|
||||||
## 3.1.2 (2023-06-21)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **activity settings:** fix saving activity settings ([6c1e1e9](https://framagit.org/framasoft/mobilizon/commit/6c1e1e98d81c7469f41beed17cfa1d4b718b5d13)), closes [#1251](https://framagit.org/framasoft/mobilizon/issues/1251)
|
|
||||||
* **apps:** fix pruning old application device activations ([dd00620](https://framagit.org/framasoft/mobilizon/commit/dd00620b9a54b2b1356855d280e03c82befe15e4))
|
|
||||||
* **backend:** filter out nil tags before starting looking for existing ones ([f04d2b9](https://framagit.org/framasoft/mobilizon/commit/f04d2b9225b80333f03a3cc9366df4a05af88a73))
|
|
||||||
* **deps:** fix compatibility with elixir-plug/mime 2.0.5 ([d63999c](https://framagit.org/framasoft/mobilizon/commit/d63999c081bcbb5923af17b71edbfd13a3720d7d))
|
|
||||||
* **discussions:** handle changeset errors when updating discussion ([ca06ec3](https://framagit.org/framasoft/mobilizon/commit/ca06ec397fbd6848e340dfae12c635736069a9f3))
|
|
||||||
* **exports:** properly handle export format not being handled ([a76b1ca](https://framagit.org/framasoft/mobilizon/commit/a76b1ca66d776fbe4566d7f23b38b087ae32530b))
|
|
||||||
* **federation:** allow federated usernames with capitals ([d502164](https://framagit.org/framasoft/mobilizon/commit/d5021647d753e6457e459b1f992da60876292428))
|
|
||||||
* **federation:** handle fetch_actor with a map ([552ab4c](https://framagit.org/framasoft/mobilizon/commit/552ab4c80b2f99095028ab3685c71ff9efdb94eb))
|
|
||||||
* **federation:** handle string values for tags when constructing mentions ([2729d5e](https://framagit.org/framasoft/mobilizon/commit/2729d5ed7acef7c20a4388f019152e80a9db163c))
|
|
||||||
* **federation:** ignore mentions from everything that's not a AP Person ([56f341e](https://framagit.org/framasoft/mobilizon/commit/56f341e960b7ae0a5fe78d7174f0e05d14add3f2))
|
|
||||||
* **federation:** only refresh instances once a day ([6745590](https://framagit.org/framasoft/mobilizon/commit/6745590e54dce236dc7a2319f9c49c4aa6858306))
|
|
||||||
* **federation:** prevent fetching own relay actor ([b981f91](https://framagit.org/framasoft/mobilizon/commit/b981f91cf748079847ae7a71b68f98b6914c951f))
|
|
||||||
* **federation:** restrict fetch_group first arg to binaries ([e8d34b4](https://framagit.org/framasoft/mobilizon/commit/e8d34b4ea9f06d16a5982da8e5ff5140852c985d))
|
|
||||||
* **federation:** rotate relay keys on startup if missing private keys ([5381eaa](https://framagit.org/framasoft/mobilizon/commit/5381eaae22248cdc6585d19c10be7fe2b7f5709f))
|
|
||||||
* **front:** add missing title to Participants View page ([a5a86a5](https://framagit.org/framasoft/mobilizon/commit/a5a86a5e1be08cf9123ee7ad0979974bc2be1cb4))
|
|
||||||
* **front:** fix displaying user activity settings checkboxes ([8e21c30](https://framagit.org/framasoft/mobilizon/commit/8e21c30f92f47dcb742d8f7df2aed59191158d80)), closes [#1251](https://framagit.org/framasoft/mobilizon/issues/1251)
|
|
||||||
* **front:** fix wrong key name for dialog.confirm() option ([c8f49e1](https://framagit.org/framasoft/mobilizon/commit/c8f49e1837d719cd737c3e1ae976f14b20345e2b))
|
|
||||||
* **front:** fix wrong value for timezone when it has no prefix ([2dd0e13](https://framagit.org/framasoft/mobilizon/commit/2dd0e13eba8bb5c04af45bae0de059deb93c2efa)), closes [#1275](https://framagit.org/framasoft/mobilizon/issues/1275)
|
|
||||||
* **group:** fix getting group members count ([f749518](https://framagit.org/framasoft/mobilizon/commit/f749518bf7a29a86da559bfe6aba6d7485e7cfeb)), closes [#1303](https://framagit.org/framasoft/mobilizon/issues/1303)
|
|
||||||
* **participant exports:** fix participants by returning the export type as well as the file path ([49b04c9](https://framagit.org/framasoft/mobilizon/commit/49b04c9b19517daa0a07656779d53001b39ab803))
|
|
||||||
* **participant:** handle re-confirming participation ([5cc5c99](https://framagit.org/framasoft/mobilizon/commit/5cc5c9943cbc9a53246dda98958e99d004f0dfa9))
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* **graphql:** validate timezone id as a GraphQL Scalar ([845bb6a](https://framagit.org/framasoft/mobilizon/commit/845bb6ac90081ef8cb4cff8d6ec3d11bfc19857c)), closes [#1299](https://framagit.org/framasoft/mobilizon/issues/1299)
|
|
||||||
|
|
||||||
|
|
||||||
## 3.1.1 (2023-06-02)
|
## 3.1.1 (2023-06-02)
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
FROM elixir:1.15-alpine
|
FROM elixir:1.13.4-alpine
|
||||||
|
|
||||||
RUN apk add --no-cache inotify-tools postgresql-client file make gcc libc-dev argon2 imagemagick cmake build-base libwebp-tools bash ncurses git python3 npm
|
RUN apk add --no-cache inotify-tools postgresql-client yarn file make gcc libc-dev argon2 imagemagick cmake build-base libwebp-tools bash ncurses git python3
|
||||||
|
|
||||||
RUN mix local.hex --force && mix local.rebar --force
|
RUN mix local.hex --force && mix local.rebar --force
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
EXPOSE 4000
|
EXPOSE 4000
|
||||||
EXPOSE 5173
|
EXPOSE 5173
|
15
Makefile
|
@ -4,25 +4,24 @@ init:
|
||||||
|
|
||||||
setup: stop
|
setup: stop
|
||||||
@bash docker/message.sh "Compiling everything"
|
@bash docker/message.sh "Compiling everything"
|
||||||
docker compose run --rm api bash -c 'mix deps.get; npm ci; npm run build:pictures; mix ecto.create; mix ecto.migrate'
|
docker-compose run --rm api bash -c 'mix deps.get; yarn --cwd "js"; yarn --cwd "js" build:pictures; mix ecto.create; mix ecto.migrate'
|
||||||
migrate:
|
migrate:
|
||||||
docker compose run --rm api mix ecto.migrate
|
docker-compose run --rm api mix ecto.migrate
|
||||||
logs:
|
logs:
|
||||||
docker compose logs -f
|
docker-compose logs -f
|
||||||
start: stop
|
start: stop
|
||||||
@bash docker/message.sh "Starting Mobilizon with Docker"
|
@bash docker/message.sh "Starting Mobilizon with Docker"
|
||||||
docker compose up -d api
|
docker-compose up -d api
|
||||||
@bash docker/message.sh "Docker server started"
|
@bash docker/message.sh "Docker server started"
|
||||||
stop:
|
stop:
|
||||||
@bash docker/message.sh "Stopping Mobilizon"
|
@bash docker/message.sh "Stopping Mobilizon"
|
||||||
docker compose down
|
docker-compose down
|
||||||
@bash docker/message.sh "Mobilizon is stopped"
|
@bash docker/message.sh "Mobilizon is stopped"
|
||||||
test: stop
|
test: stop
|
||||||
@bash docker/message.sh "Running tests"
|
@bash docker/message.sh "Running tests"
|
||||||
docker compose -f docker compose.yml -f docker compose.test.yml run api mix prepare_test
|
docker-compose -f docker-compose.yml -f docker-compose.test.yml run api mix test $(only)
|
||||||
docker compose -f docker compose.yml -f docker compose.test.yml run api mix test $(only)
|
|
||||||
@bash docker/message.sh "Done running tests"
|
@bash docker/message.sh "Done running tests"
|
||||||
format:
|
format:
|
||||||
docker compose run --rm api bash -c "mix format && mix credo --strict"
|
docker-compose run --rm api bash -c "mix format && mix credo --strict"
|
||||||
@bash docker/message.sh "Code is now ready to commit :)"
|
@bash docker/message.sh "Code is now ready to commit :)"
|
||||||
target: init
|
target: init
|
||||||
|
|
17
README.md
|
@ -1,5 +1,3 @@
|
||||||
*You can learn about [what we plan to do with this fork](https://framacolibri.org/t/using-mobilizon-for-regional-leftist-subculture-calendar-platforms/18772) in this post in the Mobilizon forum.*
|
|
||||||
|
|
||||||
<h1 align="center">
|
<h1 align="center">
|
||||||
<a href="https://joinmobilizon.org">
|
<a href="https://joinmobilizon.org">
|
||||||
<img src="https://lutim.cpy.re/qVYC86G9.png" alt="Mobilizon">
|
<img src="https://lutim.cpy.re/qVYC86G9.png" alt="Mobilizon">
|
||||||
|
@ -18,20 +16,6 @@ Mobilizon is your federated organization and mobilization platform. Gather peopl
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## Notes about this fork
|
|
||||||
|
|
||||||
The currently deployed `main` branch can be tested at [https://rotes.potsda.mn/](https://rotes.potsda.mn/).
|
|
||||||
|
|
||||||
### Building with Nix
|
|
||||||
|
|
||||||
For building this locally, you can use Nix (with Flakes enabled):
|
|
||||||
|
|
||||||
```
|
|
||||||
$ nix build git+ssh://git@git.potsda.mn/potsda.mn/mobilizon.git?ref=main#mobilizon
|
|
||||||
```
|
|
||||||
|
|
||||||
The built package is then located in `result/`.
|
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
Mobilizon is a tool designed to create platforms for managing communities and events. Its purpose is to help as many people as possible to free themselves from Facebook groups and events, from Meetup, etc.
|
Mobilizon is a tool designed to create platforms for managing communities and events. Its purpose is to help as many people as possible to free themselves from Facebook groups and events, from Meetup, etc.
|
||||||
|
@ -66,7 +50,6 @@ We appreciate any contribution to Mobilizon. Check [our contributing page](https
|
||||||
* 🔢 Pick an instance [https://mobilizon.org](https://mobilizon.org)
|
* 🔢 Pick an instance [https://mobilizon.org](https://mobilizon.org)
|
||||||
* 💻 Source: [https://framagit.org/framasoft/mobilizon](https://framagit.org/framasoft/mobilizon)
|
* 💻 Source: [https://framagit.org/framasoft/mobilizon](https://framagit.org/framasoft/mobilizon)
|
||||||
* 📜 Documentation [https://docs.joinmobilizon.org](https://docs.joinmobilizon.org)
|
* 📜 Documentation [https://docs.joinmobilizon.org](https://docs.joinmobilizon.org)
|
||||||
* A summarized description of structure of sources is done in [`docs/dev.md`](./docs/dev.md)
|
|
||||||
|
|
||||||
### Discuss
|
### Discuss
|
||||||
* 💬 Element/Matrix: [https://matrix.to/#/#Mobilizon:matrix.org](https://matrix.to/#/#Mobilizon:matrix.org)
|
* 💬 Element/Matrix: [https://matrix.to/#/#Mobilizon:matrix.org](https://matrix.to/#/#Mobilizon:matrix.org)
|
||||||
|
|
|
@ -7,6 +7,6 @@ module.exports = {
|
||||||
localSchemaFile: "./schema.graphql",
|
localSchemaFile: "./schema.graphql",
|
||||||
},
|
},
|
||||||
// Files processed by the extension
|
// Files processed by the extension
|
||||||
includes: ["src/**/*.vue", "src/**/*.js"],
|
includes: ["js/src/**/*.vue", "js/src/**/*.js"],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -41,10 +41,7 @@ config :mobilizon, :instance,
|
||||||
email_reply_to: "noreply@localhost"
|
email_reply_to: "noreply@localhost"
|
||||||
|
|
||||||
config :mobilizon, :groups, enabled: true
|
config :mobilizon, :groups, enabled: true
|
||||||
|
config :mobilizon, :events, creation: true
|
||||||
config :mobilizon, :events,
|
|
||||||
creation: true,
|
|
||||||
external: true
|
|
||||||
|
|
||||||
config :mobilizon, :restrictions, only_admin_can_create_groups: false
|
config :mobilizon, :restrictions, only_admin_can_create_groups: false
|
||||||
config :mobilizon, :restrictions, only_groups_can_create_events: false
|
config :mobilizon, :restrictions, only_groups_can_create_events: false
|
||||||
|
@ -68,10 +65,6 @@ config :mime, :types, %{
|
||||||
"application/xrd+xml" => ["xrd-xml"]
|
"application/xrd+xml" => ["xrd-xml"]
|
||||||
}
|
}
|
||||||
|
|
||||||
config :mime, :extensions, %{
|
|
||||||
"activity-json" => "application/activity+json"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Upload configuration
|
# Upload configuration
|
||||||
config :mobilizon, Mobilizon.Web.Upload,
|
config :mobilizon, Mobilizon.Web.Upload,
|
||||||
uploader: Mobilizon.Web.Upload.Uploader.Local,
|
uploader: Mobilizon.Web.Upload.Uploader.Local,
|
||||||
|
@ -116,14 +109,17 @@ config :mobilizon, :media_proxy,
|
||||||
config :mobilizon, Mobilizon.Web.Email.Mailer,
|
config :mobilizon, Mobilizon.Web.Email.Mailer,
|
||||||
adapter: Swoosh.Adapters.SMTP,
|
adapter: Swoosh.Adapters.SMTP,
|
||||||
relay: "localhost",
|
relay: "localhost",
|
||||||
|
# usually 25, 465 or 587
|
||||||
|
port: 25,
|
||||||
username: "",
|
username: "",
|
||||||
password: "",
|
password: "",
|
||||||
# can be `:always` or `:never`
|
# can be `:always` or `:never`
|
||||||
auth: :if_available,
|
auth: :if_available,
|
||||||
# can be `true`
|
# can be `true`
|
||||||
# ssl: false,
|
ssl: false,
|
||||||
# can be `:always` or `:never`
|
# can be `:always` or `:never`
|
||||||
tls: :never,
|
tls: :if_available,
|
||||||
|
allowed_tls_versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"],
|
||||||
retries: 1,
|
retries: 1,
|
||||||
# can be `true`
|
# can be `true`
|
||||||
no_mx_lookups: false
|
no_mx_lookups: false
|
||||||
|
@ -152,12 +148,13 @@ config :mobilizon, Mobilizon.Web.Auth.Guardian,
|
||||||
}
|
}
|
||||||
|
|
||||||
config :guardian, Guardian.DB,
|
config :guardian, Guardian.DB,
|
||||||
adapter: Guardian.DB.EctoAdapter,
|
|
||||||
repo: Mobilizon.Storage.Repo,
|
repo: Mobilizon.Storage.Repo,
|
||||||
# default
|
# default
|
||||||
schema_name: "guardian_tokens",
|
schema_name: "guardian_tokens",
|
||||||
# store all token types if not set
|
# store all token types if not set
|
||||||
token_types: ["refresh"]
|
token_types: ["refresh"],
|
||||||
|
# default: 60 minutes
|
||||||
|
sweep_interval: 60
|
||||||
|
|
||||||
config :elixir, :time_zone_database, Tzdata.TimeZoneDatabase
|
config :elixir, :time_zone_database, Tzdata.TimeZoneDatabase
|
||||||
|
|
||||||
|
@ -192,7 +189,6 @@ config :mobilizon, Mobilizon.Service.Formatter,
|
||||||
config :tesla, adapter: Tesla.Adapter.Hackney
|
config :tesla, adapter: Tesla.Adapter.Hackney
|
||||||
|
|
||||||
config :phoenix, :format_encoders, json: Jason, "activity-json": Jason
|
config :phoenix, :format_encoders, json: Jason, "activity-json": Jason
|
||||||
config :phoenix, :json_library, Jason
|
|
||||||
config :phoenix, :filter_parameters, ["password", "token"]
|
config :phoenix, :filter_parameters, ["password", "token"]
|
||||||
|
|
||||||
config :absinthe, schema: Mobilizon.GraphQL.Schema
|
config :absinthe, schema: Mobilizon.GraphQL.Schema
|
||||||
|
@ -316,7 +312,6 @@ config :mobilizon, Oban,
|
||||||
{"@hourly", Mobilizon.Service.Workers.ExportCleanerWorker, queue: :background},
|
{"@hourly", Mobilizon.Service.Workers.ExportCleanerWorker, queue: :background},
|
||||||
{"@hourly", Mobilizon.Service.Workers.SendActivityRecapWorker, queue: :notifications},
|
{"@hourly", Mobilizon.Service.Workers.SendActivityRecapWorker, queue: :notifications},
|
||||||
{"@daily", Mobilizon.Service.Workers.CleanOldActivityWorker, queue: :background},
|
{"@daily", Mobilizon.Service.Workers.CleanOldActivityWorker, queue: :background},
|
||||||
{"@daily", Mobilizon.Service.Workers.RefreshParticipantStats, queue: :background},
|
|
||||||
{"@hourly", Mobilizon.Service.Workers.CleanApplicationData,
|
{"@hourly", Mobilizon.Service.Workers.CleanApplicationData,
|
||||||
queue: :background, args: %{type: :application_token}},
|
queue: :background, args: %{type: :application_token}},
|
||||||
{"@hourly", Mobilizon.Service.Workers.CleanApplicationData,
|
{"@hourly", Mobilizon.Service.Workers.CleanApplicationData,
|
||||||
|
@ -384,8 +379,6 @@ config :mobilizon, Mobilizon.Service.GlobalSearch.SearchMobilizon,
|
||||||
|
|
||||||
config :mobilizon, Mobilizon.Service.AntiSpam, service: Mobilizon.Service.AntiSpam.Akismet
|
config :mobilizon, Mobilizon.Service.AntiSpam, service: Mobilizon.Service.AntiSpam.Akismet
|
||||||
|
|
||||||
config :mobilizon, Mobilizon.Service.SiteMap, path: "/var/lib/mobilizon/sitemap"
|
|
||||||
|
|
||||||
# Import environment specific config. This must remain at the bottom
|
# Import environment specific config. This must remain at the bottom
|
||||||
# of this file so it overrides the configuration defined above.
|
# of this file so it overrides the configuration defined above.
|
||||||
import_config "#{config_env()}.exs"
|
import_config "#{config_env()}.exs"
|
||||||
|
|
|
@ -16,8 +16,7 @@ config :mobilizon, Mobilizon.Web.Endpoint,
|
||||||
watchers: [
|
watchers: [
|
||||||
node: [
|
node: [
|
||||||
"node_modules/.bin/vite",
|
"node_modules/.bin/vite",
|
||||||
"--host",
|
cd: Path.expand("../js", __DIR__)
|
||||||
System.get_env("VITE_HOST", "localhost")
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -93,9 +92,6 @@ config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "uploads"
|
||||||
|
|
||||||
config :mobilizon, :exports, path: "uploads/exports"
|
config :mobilizon, :exports, path: "uploads/exports"
|
||||||
|
|
||||||
config :mobilizon, Mobilizon.Service.SiteMap,
|
|
||||||
path: System.get_env("MOBILIZON_SITEMAP_PATH", "priv/static")
|
|
||||||
|
|
||||||
config :tz_world, data_dir: "_build/dev/lib/tz_world/priv"
|
config :tz_world, data_dir: "_build/dev/lib/tz_world/priv"
|
||||||
|
|
||||||
config :mobilizon, :anonymous,
|
config :mobilizon, :anonymous,
|
||||||
|
|
|
@ -2,28 +2,6 @@
|
||||||
|
|
||||||
import Config
|
import Config
|
||||||
|
|
||||||
{:ok, _} = Application.ensure_all_started(:tls_certificate_check)
|
|
||||||
|
|
||||||
loglevels = [
|
|
||||||
:emergency,
|
|
||||||
:alert,
|
|
||||||
:critical,
|
|
||||||
:error,
|
|
||||||
:warning,
|
|
||||||
:notice,
|
|
||||||
:info,
|
|
||||||
:debug
|
|
||||||
]
|
|
||||||
|
|
||||||
loglevel_env = System.get_env("MOBILIZON_LOGLEVEL", "error")
|
|
||||||
|
|
||||||
loglevel =
|
|
||||||
if loglevel_env in Enum.map(loglevels, &to_string/1) do
|
|
||||||
String.to_existing_atom(loglevel_env)
|
|
||||||
else
|
|
||||||
:error
|
|
||||||
end
|
|
||||||
|
|
||||||
listen_ip = System.get_env("MOBILIZON_INSTANCE_LISTEN_IP", "0.0.0.0")
|
listen_ip = System.get_env("MOBILIZON_INSTANCE_LISTEN_IP", "0.0.0.0")
|
||||||
|
|
||||||
listen_ip =
|
listen_ip =
|
||||||
|
@ -65,17 +43,14 @@ config :mobilizon, Mobilizon.Storage.Repo,
|
||||||
ssl: System.get_env("MOBILIZON_DATABASE_SSL", "false") == "true",
|
ssl: System.get_env("MOBILIZON_DATABASE_SSL", "false") == "true",
|
||||||
pool_size: 10
|
pool_size: 10
|
||||||
|
|
||||||
config :logger, level: loglevel
|
|
||||||
|
|
||||||
config :mobilizon, Mobilizon.Web.Email.Mailer,
|
config :mobilizon, Mobilizon.Web.Email.Mailer,
|
||||||
adapter: Swoosh.Adapters.SMTP,
|
adapter: Swoosh.Adapters.SMTP,
|
||||||
relay: System.get_env("MOBILIZON_SMTP_SERVER", "localhost"),
|
relay: System.get_env("MOBILIZON_SMTP_SERVER", "localhost"),
|
||||||
port: System.get_env("MOBILIZON_SMTP_PORT", "25"),
|
port: System.get_env("MOBILIZON_SMTP_PORT", "25"),
|
||||||
username: System.get_env("MOBILIZON_SMTP_USERNAME", nil),
|
username: System.get_env("MOBILIZON_SMTP_USERNAME", nil),
|
||||||
password: System.get_env("MOBILIZON_SMTP_PASSWORD", nil),
|
password: System.get_env("MOBILIZON_SMTP_PASSWORD", nil),
|
||||||
tls: System.get_env("MOBILIZON_SMTP_TLS", "if_available"),
|
tls: :if_available,
|
||||||
tls_options:
|
allowed_tls_versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"],
|
||||||
:tls_certificate_check.options(System.get_env("MOBILIZON_SMTP_SERVER", "localhost")),
|
|
||||||
ssl: System.get_env("MOBILIZON_SMTP_SSL", "false"),
|
ssl: System.get_env("MOBILIZON_SMTP_SSL", "false"),
|
||||||
retries: 1,
|
retries: 1,
|
||||||
no_mx_lookups: false,
|
no_mx_lookups: false,
|
||||||
|
@ -104,9 +79,4 @@ config :mobilizon, :exports,
|
||||||
config :tz_world,
|
config :tz_world,
|
||||||
data_dir: System.get_env("MOBILIZON_TIMEZONES_DIR", "/var/lib/mobilizon/timezones")
|
data_dir: System.get_env("MOBILIZON_TIMEZONES_DIR", "/var/lib/mobilizon/timezones")
|
||||||
|
|
||||||
config :tzdata, :data_dir, System.get_env("MOBILIZON_TZDATA_DIR", "/var/lib/mobilizon/tzdata")
|
config :tzdata, :data_dir, System.get_env("MOBILIZON_TIMEZONES_DIR", "/var/lib/mobilizon/tzdata")
|
||||||
|
|
||||||
config :web_push_encryption, :vapid_details,
|
|
||||||
subject: System.get_env("MOBILIZON_WEB_PUSH_ENCRYPTION_SUBJECT", nil),
|
|
||||||
public_key: System.get_env("MOBILIZON_WEB_PUSH_ENCRYPTION_PUBLIC_KEY", nil),
|
|
||||||
private_key: System.get_env("MOBILIZON_WEB_PUSH_ENCRYPTION_PRIVATE_KEY", nil)
|
|
||||||
|
|
|
@ -16,9 +16,7 @@ config :mobilizon, Mobilizon.Web.Endpoint,
|
||||||
check_origin: false,
|
check_origin: false,
|
||||||
# Somehow this can't be merged properly with the dev config so we got this…
|
# Somehow this can't be merged properly with the dev config so we got this…
|
||||||
watchers: [
|
watchers: [
|
||||||
node: [
|
yarn: [cd: Path.expand("../js", __DIR__)]
|
||||||
"node_modules/.bin/vite"
|
|
||||||
]
|
|
||||||
]
|
]
|
||||||
|
|
||||||
config :vite_phx,
|
config :vite_phx,
|
||||||
|
|
|
@ -54,11 +54,6 @@ config :mobilizon, :ldap,
|
||||||
bind_uid: System.get_env("LDAP_BIND_UID"),
|
bind_uid: System.get_env("LDAP_BIND_UID"),
|
||||||
bind_password: System.get_env("LDAP_BIND_PASSWORD")
|
bind_password: System.get_env("LDAP_BIND_PASSWORD")
|
||||||
|
|
||||||
# Faster runs in test environment
|
|
||||||
config :argon2_elixir,
|
|
||||||
t_cost: 1,
|
|
||||||
m_cost: 8
|
|
||||||
|
|
||||||
config :mobilizon, Mobilizon.Web.Email.Mailer, adapter: Swoosh.Adapters.Test
|
config :mobilizon, Mobilizon.Web.Email.Mailer, adapter: Swoosh.Adapters.Test
|
||||||
|
|
||||||
config :mobilizon, Mobilizon.Web.Upload, filters: [], link_name: false
|
config :mobilizon, Mobilizon.Web.Upload, filters: [], link_name: false
|
||||||
|
@ -67,9 +62,6 @@ config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "test/uploads"
|
||||||
|
|
||||||
config :mobilizon, :exports, path: "test/uploads/exports"
|
config :mobilizon, :exports, path: "test/uploads/exports"
|
||||||
|
|
||||||
config :mobilizon, Mobilizon.Service.SiteMap,
|
|
||||||
path: System.get_env("MOBILIZON_SITEMAP_PATH", "test/sitemap")
|
|
||||||
|
|
||||||
config :tz_world, data_dir: "_build/test/lib/tz_world/priv"
|
config :tz_world, data_dir: "_build/test/lib/tz_world/priv"
|
||||||
|
|
||||||
config :tesla, Mobilizon.Service.HTTP.ActivityPub,
|
config :tesla, Mobilizon.Service.HTTP.ActivityPub,
|
||||||
|
|
139
default.nix
|
@ -1,139 +0,0 @@
|
||||||
{ lib
|
|
||||||
, beamPackages
|
|
||||||
, fetchFromGitHub
|
|
||||||
, git
|
|
||||||
, cmake
|
|
||||||
, nixosTests
|
|
||||||
, src
|
|
||||||
, src-config
|
|
||||||
, mobilizon-js
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (beamPackages) mixRelease buildMix;
|
|
||||||
in
|
|
||||||
mixRelease rec {
|
|
||||||
pname = "mobilizon";
|
|
||||||
version = "4.0.2";
|
|
||||||
|
|
||||||
inherit src;
|
|
||||||
|
|
||||||
# See https://github.com/whitfin/cachex/issues/205
|
|
||||||
# This circumvents a startup error for now
|
|
||||||
stripDebug = false;
|
|
||||||
|
|
||||||
nativeBuildInputs = [ git cmake ];
|
|
||||||
|
|
||||||
mixNixDeps = import ./mix.nix {
|
|
||||||
inherit beamPackages lib;
|
|
||||||
overrides = (final: prev:
|
|
||||||
(lib.mapAttrs
|
|
||||||
(_: value: value.override {
|
|
||||||
appConfigPath = src-config;
|
|
||||||
})
|
|
||||||
prev) // {
|
|
||||||
fast_html = prev.fast_html.override {
|
|
||||||
nativeBuildInputs = [ cmake ];
|
|
||||||
};
|
|
||||||
ex_cldr = prev.ex_cldr.overrideAttrs (old: {
|
|
||||||
# We have to use the GitHub sources, as it otherwise tries to download
|
|
||||||
# the locales at build time.
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "elixir-cldr";
|
|
||||||
repo = "cldr";
|
|
||||||
rev = "v${old.version}";
|
|
||||||
sha256 = assert old.version == "2.37.5";
|
|
||||||
"sha256-T5Qvuo+xPwpgBsqHNZYnTCA4loToeBn1LKTMsDcCdYs=";
|
|
||||||
};
|
|
||||||
postInstall = ''
|
|
||||||
cp $src/priv/cldr/locales/* $out/lib/erlang/lib/ex_cldr-${old.version}/priv/cldr/locales/
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
# Upstream issue: https://github.com/bryanjos/geo_postgis/pull/87
|
|
||||||
geo_postgis = prev.geo_postgis.overrideAttrs (old: {
|
|
||||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [ final.ecto ];
|
|
||||||
});
|
|
||||||
|
|
||||||
# The remainder are Git dependencies (and their deps) that are not supported by mix2nix currently.
|
|
||||||
web_push_encryption = buildMix rec {
|
|
||||||
name = "web_push_encryption";
|
|
||||||
version = "0.3.1";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "danhper";
|
|
||||||
repo = "elixir-web-push-encryption";
|
|
||||||
rev = "70f00d06cbd88c9ac382e0ad2539e54448e9d8da";
|
|
||||||
sha256 = "sha256-b4ZMrt/8n2sPUFtCDRTwXS1qWm5VlYdbx8qC0R0boOA=";
|
|
||||||
};
|
|
||||||
beamDeps = with final; [ httpoison jose ];
|
|
||||||
};
|
|
||||||
icalendar = buildMix rec {
|
|
||||||
name = "icalendar";
|
|
||||||
version = "unstable-2022-04-10";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "tcitworld";
|
|
||||||
repo = name;
|
|
||||||
rev = "1033d922c82a7223db0ec138e2316557b70ff49f";
|
|
||||||
sha256 = "sha256-N3bJZznNazLewHS4c2B7LP1lgxd1wev+EWVlQ7rOwfU=";
|
|
||||||
};
|
|
||||||
beamDeps = with final; [ mix_test_watch ex_doc timex ];
|
|
||||||
};
|
|
||||||
rajska = buildMix rec {
|
|
||||||
name = "rajska";
|
|
||||||
version = "1.3.3";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "tcitworld";
|
|
||||||
repo = name;
|
|
||||||
rev = "0c036448e261e8be6a512581c592fadf48982d84";
|
|
||||||
sha256 = "sha256-4pfply1vTAIT2Xvm3kONmrCK05xKfXFvcb8EKoSCXBE=";
|
|
||||||
};
|
|
||||||
beamDeps = with final; [ ex_doc credo absinthe excoveralls hammer mock ];
|
|
||||||
};
|
|
||||||
exkismet = buildMix rec {
|
|
||||||
name = "exkismet";
|
|
||||||
version = "0.0.3";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "tcitworld";
|
|
||||||
repo = name;
|
|
||||||
rev = "8b5485fde00fafbde20f315bec387a77f7358334";
|
|
||||||
sha256 = "sha256-ttgCWoBKU7VTjZJBhZNtqVF4kN7psBr/qOeR65MbTqw=";
|
|
||||||
};
|
|
||||||
beamDeps = with final; [ httpoison ex_doc credo doctor dialyxir ];
|
|
||||||
};
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
preConfigure = ''
|
|
||||||
export LANG=C.UTF-8 # fix elixir locale warning
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Install the compiled js part
|
|
||||||
preBuild =
|
|
||||||
''
|
|
||||||
cp -a "${mobilizon-js}/_napalm-install/priv/static" ./priv
|
|
||||||
chmod 770 -R ./priv
|
|
||||||
'';
|
|
||||||
|
|
||||||
postBuild = ''
|
|
||||||
mix phx.digest --no-deps-check
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Just a hack to reduce path size by 60MB
|
|
||||||
postInstall =
|
|
||||||
let
|
|
||||||
inherit (mixNixDeps) ex_cldr;
|
|
||||||
in
|
|
||||||
''
|
|
||||||
rm -r $out/lib/ex_cldr-${ex_cldr.version}/priv/cldr/locales
|
|
||||||
ln -s ${ex_cldr.src}/priv/cldr/locales $out/lib/ex_cldr-${ex_cldr.version}/priv/cldr/locales
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru.elixirPackage = beamPackages.elixir;
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Mobilizon is an online tool to help manage your events, your profiles and your groups";
|
|
||||||
homepage = "https://joinmobilizon.org/";
|
|
||||||
license = licenses.agpl3Plus;
|
|
||||||
maintainers = with maintainers; [ minijackson erictapen ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -11,7 +11,7 @@ services:
|
||||||
MIX_ENV: "test"
|
MIX_ENV: "test"
|
||||||
MOBILIZON_DATABASE_DBNAME: mobilizon_test
|
MOBILIZON_DATABASE_DBNAME: mobilizon_test
|
||||||
MOBILIZON_INSTANCE_HOST: mobilizon.test
|
MOBILIZON_INSTANCE_HOST: mobilizon.test
|
||||||
command: "mix prepare_test && mix test"
|
command: "mix test"
|
||||||
volumes:
|
volumes:
|
||||||
pgdata:
|
pgdata:
|
||||||
.:
|
.:
|
||||||
|
|
|
@ -36,7 +36,6 @@ services:
|
||||||
MOBILIZON_DATABASE_DBNAME: ${POSTGRES_DB}
|
MOBILIZON_DATABASE_DBNAME: ${POSTGRES_DB}
|
||||||
MOBILIZON_DATABASE_HOST: postgres
|
MOBILIZON_DATABASE_HOST: postgres
|
||||||
MOBILIZON_DATABASE_PORT: ${POSTGRES_PORT}
|
MOBILIZON_DATABASE_PORT: ${POSTGRES_PORT}
|
||||||
VITE_HOST: ${VITE_HOST:-localhost}
|
|
||||||
command: sh -c "mix phx.server"
|
command: sh -c "mix phx.server"
|
||||||
volumes:
|
volumes:
|
||||||
pgdata:
|
pgdata:
|
||||||
|
|
|
@ -1,27 +1,21 @@
|
||||||
ARG IMAGE="elixir:1.15"
|
FROM elixir as build
|
||||||
|
|
||||||
FROM ${IMAGE} as build
|
|
||||||
SHELL ["/bin/bash", "-c"]
|
SHELL ["/bin/bash", "-c"]
|
||||||
ENV MIX_ENV prod
|
ENV MIX_ENV prod
|
||||||
# ENV LANG en_US.UTF-8
|
# ENV LANG en_US.UTF-8
|
||||||
ARG APP_ASSET
|
ARG APP_ASSET
|
||||||
|
|
||||||
# Fix qemu segfault on arm64
|
|
||||||
# See https://github.com/plausible/analytics/pull/2879 and https://github.com/erlang/otp/pull/6340
|
|
||||||
ARG ERL_FLAGS=""
|
|
||||||
ENV ERL_FLAGS=$ERL_FLAGS
|
|
||||||
|
|
||||||
# Set the right versions
|
# Set the right versions
|
||||||
ENV ELIXIR_VERSION latest
|
ENV ELIXIR_VERSION latest
|
||||||
ENV ERLANG_VERSION latest
|
ENV ERLANG_VERSION latest
|
||||||
ENV NODE_VERSION 20
|
ENV NODE_VERSION 16
|
||||||
|
|
||||||
# Install system dependencies
|
# Install system dependencies
|
||||||
RUN apt-get update -yq && apt-get install -yq build-essential cmake postgresql-client git curl gnupg unzip exiftool webp imagemagick gifsicle
|
RUN apt-get update -yq && apt-get install -yq build-essential cmake postgresql-client git curl gnupg unzip exiftool webp imagemagick gifsicle
|
||||||
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
# # Install Node
|
# # Install Node & yarn
|
||||||
# RUN curl -sL https://deb.nodesource.com/setup_16.x | bash && apt-get install nodejs -yq
|
# RUN curl -sL https://deb.nodesource.com/setup_16.x | bash && apt-get install nodejs -yq
|
||||||
|
# RUN npm install -g yarn
|
||||||
|
|
||||||
# Install build tools
|
# Install build tools
|
||||||
RUN source /root/.bashrc && \
|
RUN source /root/.bashrc && \
|
||||||
|
@ -33,8 +27,8 @@ COPY ./ /mobilizon
|
||||||
WORKDIR /mobilizon
|
WORKDIR /mobilizon
|
||||||
|
|
||||||
# # Build front-end
|
# # Build front-end
|
||||||
# RUN npm install
|
# RUN yarn --cwd "js" install --frozen-lockfile
|
||||||
# RUN npm run build
|
# RUN yarn --cwd "js" run build
|
||||||
|
|
||||||
# Elixir release
|
# Elixir release
|
||||||
RUN source /root/.bashrc && \
|
RUN source /root/.bashrc && \
|
||||||
|
|
|
@ -1,20 +1,16 @@
|
||||||
# First build the application assets
|
# First build the application assets
|
||||||
FROM node:20-alpine as assets
|
FROM node:18-alpine as assets
|
||||||
|
|
||||||
RUN apk add --no-cache python3 build-base libwebp-tools bash imagemagick ncurses
|
RUN apk add --no-cache python3 build-base libwebp-tools bash imagemagick ncurses
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
COPY . .
|
COPY js .
|
||||||
|
|
||||||
# Network timeout because it's slow when cross-compiling
|
# Network timeout because it's slow when cross-compiling
|
||||||
RUN npm install && npm run build
|
RUN yarn install --network-timeout 100000 \
|
||||||
|
&& yarn run build
|
||||||
|
|
||||||
# Then, build the application binary
|
# Then, build the application binary
|
||||||
FROM elixir:1.15-alpine AS builder
|
FROM elixir:1.14-alpine AS builder
|
||||||
|
|
||||||
# Fix qemu segfault on arm64
|
|
||||||
# See https://github.com/plausible/analytics/pull/2879 and https://github.com/erlang/otp/pull/6340
|
|
||||||
ARG ERL_FLAGS=""
|
|
||||||
ENV ERL_FLAGS=$ERL_FLAGS
|
|
||||||
|
|
||||||
RUN apk add --no-cache build-base git cmake
|
RUN apk add --no-cache build-base git cmake
|
||||||
|
|
||||||
|
@ -30,7 +26,7 @@ COPY config/config.exs config/prod.exs ./config/
|
||||||
COPY config/docker.exs ./config/runtime.exs
|
COPY config/docker.exs ./config/runtime.exs
|
||||||
COPY rel ./rel
|
COPY rel ./rel
|
||||||
COPY support ./support
|
COPY support ./support
|
||||||
COPY --from=assets /build/priv/static ./priv/static
|
COPY --from=assets ./priv/static ./priv/static
|
||||||
|
|
||||||
RUN mix phx.digest.clean --all && mix phx.digest && mix release
|
RUN mix phx.digest.clean --all && mix phx.digest && mix release
|
||||||
|
|
||||||
|
@ -50,24 +46,23 @@ LABEL org.opencontainers.image.title="mobilizon" \
|
||||||
org.opencontainers.image.revision=$VCS_REF \
|
org.opencontainers.image.revision=$VCS_REF \
|
||||||
org.opencontainers.image.created=$BUILD_DATE
|
org.opencontainers.image.created=$BUILD_DATE
|
||||||
|
|
||||||
RUN apk add --no-cache curl openssl ca-certificates ncurses-libs file postgresql-client libgcc libstdc++ imagemagick python3 py3-pip py3-pillow py3-cffi py3-brotli gcc g++ musl-dev python3-dev pango libxslt-dev ttf-cantarell
|
RUN apk add --no-cache curl openssl ca-certificates ncurses-libs file postgresql-client libgcc libstdc++ imagemagick python3 py3-pip py3-pillow py3-cffi py3-brotli gcc g++ musl-dev python3-dev pango libxslt-dev ttf-cantarell openssl1.1-compat
|
||||||
RUN pip --no-cache-dir install --break-system-packages weasyprint pyexcel-ods3
|
RUN pip install weasyprint pyexcel-ods3
|
||||||
|
|
||||||
# Create every data directory
|
# Create every data directory
|
||||||
RUN mkdir -p /var/lib/mobilizon/uploads && chown nobody:nobody /var/lib/mobilizon/uploads
|
RUN mkdir -p /var/lib/mobilizon/uploads && chown nobody:nobody /var/lib/mobilizon/uploads
|
||||||
RUN mkdir -p /var/lib/mobilizon/timezones && chown nobody:nobody /var/lib/mobilizon/timezones
|
RUN mkdir -p /var/lib/mobilizon/timezones && chown nobody:nobody /var/lib/mobilizon/timezones
|
||||||
RUN mkdir -p /var/lib/mobilizon/tzdata && chown nobody:nobody /var/lib/mobilizon/tzdata
|
RUN mkdir -p /var/lib/mobilizon/tzdata && chown nobody:nobody /var/lib/mobilizon/tzdata
|
||||||
RUN mkdir -p /var/lib/mobilizon/sitemap && chown nobody:nobody /var/lib/mobilizon/sitemap
|
|
||||||
RUN mkdir -p /var/lib/mobilizon/uploads/exports/{csv,pdf,ods} && chown -R nobody:nobody /var/lib/mobilizon/uploads/exports
|
RUN mkdir -p /var/lib/mobilizon/uploads/exports/{csv,pdf,ods} && chown -R nobody:nobody /var/lib/mobilizon/uploads/exports
|
||||||
|
|
||||||
|
# Get timezone geodata
|
||||||
|
RUN curl -L 'https://packages.joinmobilizon.org/tz_world/timezones-geodata.dets' -o /var/lib/mobilizon/timezones/timezones-geodata.dets
|
||||||
|
RUN chown -R nobody:nobody /var/lib/mobilizon/timezones
|
||||||
|
|
||||||
# Create configuration directory
|
# Create configuration directory
|
||||||
RUN mkdir -p /etc/mobilizon && chown nobody:nobody /etc/mobilizon
|
RUN mkdir -p /etc/mobilizon && chown nobody:nobody /etc/mobilizon
|
||||||
|
|
||||||
USER nobody
|
USER nobody
|
||||||
|
|
||||||
# Get timezone geodata
|
|
||||||
RUN curl -L 'https://packages.joinmobilizon.org/tz_world/timezones-geodata.dets' -o /var/lib/mobilizon/timezones/timezones-geodata.dets
|
|
||||||
|
|
||||||
EXPOSE 4000
|
EXPOSE 4000
|
||||||
|
|
||||||
ENV MOBILIZON_DOCKER=true
|
ENV MOBILIZON_DOCKER=true
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "-- Waiting for database..."
|
echo "-- Waiting for database..."
|
||||||
while ! pg_isready -U ${MOBILIZON_DATABASE_USERNAME} -d postgres://${MOBILIZON_DATABASE_HOST}:${MOBILIZON_DATABASE_PORT:-5432}/${MOBILIZON_DATABASE_DBNAME} -t 1; do
|
while ! pg_isready -U ${MOBILIZON_DATABASE_USERNAME} -d postgres://${MOBILIZON_DATABASE_HOST}:5432/${MOBILIZON_DATABASE_DBNAME} -t 1; do
|
||||||
sleep 1s
|
sleep 1s
|
||||||
done
|
done
|
||||||
|
|
||||||
PGPASSWORD=$MOBILIZON_DATABASE_PASSWORD psql -U $MOBILIZON_DATABASE_USERNAME -d $MOBILIZON_DATABASE_DBNAME -h $MOBILIZON_DATABASE_HOST -p ${MOBILIZON_DATABASE_PORT:-5432} -c 'CREATE EXTENSION IF NOT EXISTS pg_trgm;'
|
PGPASSWORD=$MOBILIZON_DATABASE_PASSWORD psql -U $MOBILIZON_DATABASE_USERNAME -d $MOBILIZON_DATABASE_DBNAME -h $MOBILIZON_DATABASE_HOST -c 'CREATE EXTENSION IF NOT EXISTS pg_trgm;'
|
||||||
PGPASSWORD=$MOBILIZON_DATABASE_PASSWORD psql -U $MOBILIZON_DATABASE_USERNAME -d $MOBILIZON_DATABASE_DBNAME -h $MOBILIZON_DATABASE_HOST -p ${MOBILIZON_DATABASE_PORT:-5432} -c 'CREATE EXTENSION IF NOT EXISTS unaccent;'
|
PGPASSWORD=$MOBILIZON_DATABASE_PASSWORD psql -U $MOBILIZON_DATABASE_USERNAME -d $MOBILIZON_DATABASE_DBNAME -h $MOBILIZON_DATABASE_HOST -c 'CREATE EXTENSION IF NOT EXISTS unaccent;'
|
||||||
|
|
||||||
echo "-- Running migrations..."
|
echo "-- Running migrations..."
|
||||||
/bin/mobilizon_ctl migrate
|
/bin/mobilizon_ctl migrate
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
FROM elixir:latest
|
FROM elixir:latest
|
||||||
LABEL maintainer="Thomas Citharel <thomas.citharel@framasoft.org>"
|
LABEL maintainer="Thomas Citharel <tcit@tcit.fr>"
|
||||||
|
|
||||||
ENV REFRESHED_AT=2023-11-20
|
ENV REFRESHED_AT=2023-05-22
|
||||||
RUN apt-get update -yq && apt-get install -yq ca-certificates build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 cmake exiftool python3-pip python3-setuptools
|
RUN apt-get update -yq && apt-get install -yq build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 cmake exiftool python3-pip python3-setuptools
|
||||||
RUN mkdir -p /etc/apt/keyrings && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && apt-get update && apt-get install nodejs -yq
|
RUN curl -sL https://deb.nodesource.com/setup_18.x | bash && apt-get install nodejs -yq
|
||||||
RUN npm install -g wait-on
|
RUN npm install -g yarn wait-on
|
||||||
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
RUN mix local.hex --force && mix local.rebar --force
|
RUN mix local.hex --force && mix local.rebar --force
|
||||||
RUN pip3 --no-cache-dir install -Iv weasyprint pyexcel_ods3
|
RUN pip3 install -Iv weasyprint pyexcel_ods3
|
||||||
RUN curl https://dbip.mirror.framasoft.org/files/dbip-city-lite-latest.mmdb --output GeoLite2-City.mmdb -s && mkdir -p /usr/share/GeoIP && mv GeoLite2-City.mmdb /usr/share/GeoIP/
|
RUN curl https://dbip.mirror.framasoft.org/files/dbip-city-lite-latest.mmdb --output GeoLite2-City.mmdb -s && mkdir -p /usr/share/GeoIP && mv GeoLite2-City.mmdb /usr/share/GeoIP/
|
||||||
|
|
30
docs/dev.md
|
@ -1,30 +0,0 @@
|
||||||
# Documentation for developpers
|
|
||||||
|
|
||||||
_This file is a summary of the documentation for developpers. As explained in [CONTRIBUTING.md](../CONTRIBUTING.md), the main documentation is available at <https://docs.joinmobilizon.org/contribute/>_
|
|
||||||
|
|
||||||
## Technologies
|
|
||||||
|
|
||||||
Mobilizon is an app that uses:
|
|
||||||
* [Elixir](https://elixir-lang.org/) for backend,
|
|
||||||
* [VueJS](https://vuejs.org/) for front-end
|
|
||||||
* [GraphQL](https://graphql.org/) as it's API layer
|
|
||||||
|
|
||||||
[GraphQL](https://graphql.org/) is managed using:
|
|
||||||
* [Absinthe](https://absinthe-graphql.org/) on the backend
|
|
||||||
* [VueApollo](https://apollo.vuejs.org/) on the front-end.
|
|
||||||
|
|
||||||
[UI](https://en.wikipedia.org/wiki/User_interface) is handled with [Tailwind](https://tailwindcss.com/) and [Oruga](https://oruga.io/).
|
|
||||||
|
|
||||||
## Structure of sources
|
|
||||||
|
|
||||||
* `config` backend compile-time and runtime configuration
|
|
||||||
* `docker` 🐳
|
|
||||||
* `src` Front-end
|
|
||||||
* `lib/federation` Handling all the federation stuff (sending and receving activities, converting activities, signatures, helpers…)
|
|
||||||
* `lib/graphql/schema` The schema declarations for the GraphQL API
|
|
||||||
* `lib/graphql/resolvers` The logic behind the GraphQL API
|
|
||||||
* `lib/mix/tasks` CLI
|
|
||||||
* `lib/mobilizon` model structures, database queries
|
|
||||||
* `lib/service` various services
|
|
||||||
* `lib/web` controllers, middlewares, auth-related stuff
|
|
||||||
* `test` tests
|
|
77
flake.lock
|
@ -1,66 +1,12 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1701680307,
|
|
||||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"napalm": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1703102458,
|
|
||||||
"narHash": "sha256-3pOV731qi34Q2G8e2SqjUXqnftuFrbcq+NdagEZXISo=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "napalm",
|
|
||||||
"rev": "edcb26c266ca37c9521f6a97f33234633cbec186",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "napalm",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-filter": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1705332318,
|
|
||||||
"narHash": "sha256-kcw1yFeJe9N4PjQji9ZeX47jg0p9A0DuU4djKvg1a7I=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "nix-filter",
|
|
||||||
"rev": "3449dc925982ad46246cfc36469baf66e1b64f17",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "nix-filter",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706550542,
|
"lastModified": 1684215771,
|
||||||
"narHash": "sha256-UcsnCG6wx++23yeER4Hg18CXWbgNpqNXcHIo5/1Y+hc=",
|
"narHash": "sha256-fsum28z+g18yreNa1Y7MPo9dtps5h1VkHfZbYQ+YPbk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "97b17f32362e475016f942bbdfda4a4a72a8a652",
|
"rev": "963006aab35e3e8ebbf6052b6bf4ea712fdd3c28",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -72,25 +18,8 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"napalm": "napalm",
|
|
||||||
"nix-filter": "nix-filter",
|
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
254
flake.nix
|
@ -1,241 +1,29 @@
|
||||||
{
|
{
|
||||||
description = "Mobilizon fork for potsda.mn";
|
description = "A very basic flake";
|
||||||
|
|
||||||
inputs = {
|
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
||||||
nix-filter.url = "github:numtide/nix-filter";
|
|
||||||
napalm.url = "github:nix-community/napalm";
|
|
||||||
napalm.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nix-filter, napalm }:
|
outputs = { self, nixpkgs }: {
|
||||||
let
|
|
||||||
forAllSystems = f: nixpkgs.lib.genAttrs
|
|
||||||
[ "x86_64-linux" "aarch64-linux" ]
|
|
||||||
(system: f system);
|
|
||||||
nixpkgsFor = forAllSystems (
|
|
||||||
system:
|
|
||||||
import nixpkgs { inherit system; }
|
|
||||||
);
|
|
||||||
filter = nix-filter.lib;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
packages = forAllSystems (system:
|
packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
|
||||||
let
|
|
||||||
pkgs = nixpkgsFor.${system};
|
|
||||||
# Directories that are neither needed for building the frontend nor the backend.
|
|
||||||
# For better build caching.
|
|
||||||
unrelatedDirs = [
|
|
||||||
"flake.lock"
|
|
||||||
(filter.matchExt "nix")
|
|
||||||
"docs"
|
|
||||||
"docker"
|
|
||||||
"docker-compose.test.yml"
|
|
||||||
"docker-compose.yml"
|
|
||||||
"generate-test-data"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
mobilizon = pkgs.callPackage ./. {
|
|
||||||
src = filter {
|
|
||||||
root = ./.;
|
|
||||||
exclude = [
|
|
||||||
"src"
|
|
||||||
(filter.matchExt "js")
|
|
||||||
(filter.matchExt "ts")
|
|
||||||
(filter.matchExt "json")
|
|
||||||
"tests"
|
|
||||||
"scripts"
|
|
||||||
"public"
|
|
||||||
] ++ unrelatedDirs;
|
|
||||||
};
|
|
||||||
src-config = ./config;
|
|
||||||
mobilizon-js = self.packages."${system}".mobilizon-frontend;
|
|
||||||
};
|
|
||||||
|
|
||||||
mobilizon-frontend =
|
|
||||||
let
|
|
||||||
nodejs = pkgs.nodejs-18_x;
|
|
||||||
in
|
|
||||||
napalm.legacyPackages."${system}".buildPackage
|
|
||||||
(filter {
|
|
||||||
root = ./.;
|
|
||||||
exclude = [
|
|
||||||
"lib"
|
|
||||||
"config"
|
|
||||||
"test"
|
|
||||||
"rel"
|
|
||||||
"support"
|
|
||||||
] ++ unrelatedDirs;
|
|
||||||
})
|
|
||||||
{
|
|
||||||
inherit nodejs;
|
|
||||||
nativeBuildInputs = [ pkgs.imagemagick ];
|
|
||||||
npmCommands = [ "npm install" "npm run build" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
default = self.packages."${system}".mobilizon;
|
|
||||||
|
|
||||||
# Update local Mobilizon definition
|
|
||||||
update =
|
|
||||||
pkgs.writeShellScriptBin "update" ''
|
|
||||||
set -eou pipefail
|
|
||||||
|
|
||||||
${pkgs.mix2nix}/bin/mix2nix ./mix.lock > mix.nix
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
|
|
||||||
devShells = forAllSystems (system:
|
|
||||||
let pkgs = nixpkgsFor.${system};
|
|
||||||
in {
|
|
||||||
default =
|
|
||||||
pkgs.mkShell {
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
elixir
|
|
||||||
mix2nix
|
|
||||||
cmake
|
|
||||||
imagemagick
|
|
||||||
nodejs-18_x
|
|
||||||
];
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
overlays.default = final: prev: {
|
|
||||||
inherit (self.packages."${prev.system}") mobilizon;
|
|
||||||
};
|
|
||||||
|
|
||||||
checks = forAllSystems (system: {
|
|
||||||
inherit (self.packages.${system}) mobilizon update;
|
|
||||||
nixosTest =
|
|
||||||
let
|
|
||||||
pkgsMobilizon = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
overlays = [ self.overlays.default ];
|
|
||||||
};
|
|
||||||
certs = import "${nixpkgs}/nixos/tests/common/acme/server/snakeoil-certs.nix";
|
|
||||||
test = import ./nixos-test.nix { inherit certs; };
|
|
||||||
in
|
|
||||||
pkgsMobilizon.nixosTest test;
|
|
||||||
});
|
|
||||||
|
|
||||||
lib = {
|
|
||||||
# Patch the logos in the source tree of a mobilizon-frontend package before building.
|
|
||||||
# Can be used to construct the argument for .overrideAttrs on mobilizon-frontend.
|
|
||||||
mobilizonLogosOverride = icons:
|
|
||||||
let
|
|
||||||
inherit (icons) logo favicon;
|
|
||||||
in
|
|
||||||
old: {
|
|
||||||
postPatch = ''
|
|
||||||
cp '${logo}' src/assets/logo.svg
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-resize x16 \
|
|
||||||
-gravity center \
|
|
||||||
-crop 16x16+0+0 \
|
|
||||||
-flatten \
|
|
||||||
-colors 256 \
|
|
||||||
'${favicon}' \
|
|
||||||
public/img/icons/favicon-16x16.png
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-resize x32 \
|
|
||||||
-gravity center \
|
|
||||||
-crop 32x32+0+0 \
|
|
||||||
-flatten \
|
|
||||||
-colors 256 \
|
|
||||||
'${favicon}' \
|
|
||||||
public/img/icons/favicon-32x32.png
|
|
||||||
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-resize x16 \
|
|
||||||
-gravity center \
|
|
||||||
-crop 16x16+0+0 \
|
|
||||||
-flatten \
|
|
||||||
-colors 256 \
|
|
||||||
'${favicon}' \
|
|
||||||
favicon-16x16.ico
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-resize x32 \
|
|
||||||
-gravity center \
|
|
||||||
-crop 32x32+0+0 \
|
|
||||||
-flatten \
|
|
||||||
-colors 256 \
|
|
||||||
'${favicon}' \
|
|
||||||
favicon-32x32.ico
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-resize x48 \
|
|
||||||
-gravity center \
|
|
||||||
-crop 48x48+0+0 \
|
|
||||||
-flatten \
|
|
||||||
-colors 256 \
|
|
||||||
'${favicon}' \
|
|
||||||
favicon-48x48.ico
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
favicon-16x16.ico \
|
|
||||||
favicon-32x32.ico \
|
|
||||||
favicon-48x48.ico \
|
|
||||||
public/favicon.ico
|
|
||||||
|
|
||||||
rm favicon-16x16.ico favicon-32x32.ico favicon-48x48.ico
|
|
||||||
|
|
||||||
cp '${favicon}' public/img/icons/favicon.svg
|
|
||||||
cp '${favicon}' public/img/icons/safari-pinned-tab.svg
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
'${favicon}' \
|
|
||||||
-gravity center \
|
|
||||||
-extent 630x350 \
|
|
||||||
public/img/mobilizon_default_card.png
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-background '#e08c96' \
|
|
||||||
'${logo}' \
|
|
||||||
-resize 366x108 \
|
|
||||||
public/img/mobilizon_logo.png
|
|
||||||
|
|
||||||
'' + nixpkgs.lib.concatMapStrings
|
|
||||||
({ resize, filename }: ''
|
|
||||||
magick convert \
|
|
||||||
-resize x${resize} \
|
|
||||||
'${favicon}' \
|
|
||||||
public/img/icons/${filename}
|
|
||||||
|
|
||||||
'')
|
|
||||||
[
|
|
||||||
{ resize = "180"; filename = "apple-touch-icon.png"; }
|
|
||||||
{ resize = "180"; filename = "apple-touch-icon-180x180.png"; }
|
|
||||||
{ resize = "152"; filename = "apple-touch-icon-152x152.png"; }
|
|
||||||
{ resize = "120"; filename = "apple-touch-icon-120x120.png"; }
|
|
||||||
{ resize = "76"; filename = "apple-touch-icon-76x76.png"; }
|
|
||||||
{ resize = "60"; filename = "apple-touch-icon-60x60.png"; }
|
|
||||||
{ resize = "192"; filename = "android-chrome-192x192.png"; }
|
|
||||||
{ resize = "512"; filename = "android-chrome-512x512.png"; }
|
|
||||||
{ resize = "192"; filename = "android-chrome-maskable-192x192.png"; }
|
|
||||||
{ resize = "512"; filename = "android-chrome-maskable-512x512.png"; }
|
|
||||||
{ resize = "128"; filename = "badge-128x128.png"; }
|
|
||||||
{ resize = "144"; filename = "icon-144x144.png"; }
|
|
||||||
{ resize = "168"; filename = "icon-168x168.png"; }
|
|
||||||
{ resize = "256"; filename = "icon-256x256.png"; }
|
|
||||||
{ resize = "48"; filename = "icon-48x48.png"; }
|
|
||||||
{ resize = "72"; filename = "icon-72x72.png"; }
|
|
||||||
{ resize = "96"; filename = "icon-96x96.png"; }
|
|
||||||
{ resize = "144"; filename = "msapplication-icon-144x144.png"; }
|
|
||||||
{ resize = "150"; filename = "mstile-150x150.png"; }
|
|
||||||
{ resize = "192"; filename = "android-chrome-192x192.png"; }
|
|
||||||
{ resize = "512"; filename = "android-chrome-512x512.png"; }
|
|
||||||
{ resize = "192"; filename = "android-chrome-maskable-192x192.png"; }
|
|
||||||
{ resize = "512"; filename = "android-chrome-maskable-512x512.png"; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
packages.x86_64-linux.default = self.packages.x86_64-linux.hello;
|
||||||
|
|
||||||
|
devShells.x86_64-linux.default = let
|
||||||
|
pkgs = import nixpkgs { system = "x86_64-linux"; };
|
||||||
|
in pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
elixir
|
||||||
|
mix2nix
|
||||||
|
cmake
|
||||||
|
imagemagick
|
||||||
|
(yarn.override {
|
||||||
|
nodejs = nodejs-16_x;
|
||||||
|
})
|
||||||
|
yarn2nix
|
||||||
|
nodejs-16_x
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
27
js/.gitignore
vendored
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/dist
|
||||||
|
|
||||||
|
/coverage
|
||||||
|
stats.html
|
||||||
|
|
||||||
|
# local env files
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
|
/test-results/
|
||||||
|
/playwright-report/
|
||||||
|
/playwright/.cache/
|
2
js/.prettierignore
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
src/i18n/*.json
|
||||||
|
coverage/
|
0
env.d.ts → js/env.d.ts
vendored
|
@ -8,7 +8,6 @@ export default defineConfig({
|
||||||
plugins: [HstVue()],
|
plugins: [HstVue()],
|
||||||
setupFile: path.resolve(__dirname, "./src/histoire.setup.ts"),
|
setupFile: path.resolve(__dirname, "./src/histoire.setup.ts"),
|
||||||
viteNodeInlineDeps: [/date-fns/],
|
viteNodeInlineDeps: [/date-fns/],
|
||||||
// viteIgnorePlugins: ['vite-plugin-pwa', 'vite-plugin-pwa:build', 'vite-plugin-pwa:info'],
|
|
||||||
tree: {
|
tree: {
|
||||||
groups: [
|
groups: [
|
||||||
{
|
{
|
|
@ -1,13 +1,13 @@
|
||||||
{
|
{
|
||||||
"name": "mobilizon",
|
"name": "mobilizon",
|
||||||
"version": "4.0.2",
|
"version": "3.1.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"build": "npm run build:assets && npm run build:pictures",
|
"build": "yarn run build:assets && yarn run build:pictures",
|
||||||
"lint": "eslint --ext .ts,.vue --ignore-path .gitignore --fix src",
|
"lint": "eslint --ext .ts,.vue --ignore-path .gitignore --fix src",
|
||||||
"format": "prettier . --write",
|
"format": "prettier . --write",
|
||||||
"build:assets": "vite build",
|
"build:assets": "vite build",
|
||||||
"build:pictures": "bash ./scripts/build/pictures.sh",
|
"build:pictures": "bash ./scripts/build/pictures.sh",
|
||||||
"story:dev": "histoire dev",
|
"story:dev": "histoire dev",
|
||||||
|
@ -15,29 +15,19 @@
|
||||||
"story:preview": "histoire preview",
|
"story:preview": "histoire preview",
|
||||||
"test": "vitest",
|
"test": "vitest",
|
||||||
"coverage": "vitest run --coverage",
|
"coverage": "vitest run --coverage",
|
||||||
"pre-commit": "lint-staged"
|
"prepare": "cd ../ && husky install"
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"**/*.{js,ts,vue}": [
|
"**/*.{js,ts,vue}": [
|
||||||
"eslint --fix",
|
"eslint --fix",
|
||||||
"prettier --write"
|
"prettier --write"
|
||||||
],
|
|
||||||
"**/*.{ex,exs,eex,heex}": [
|
|
||||||
"mix format",
|
|
||||||
"mix credo"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@absinthe/socket": "^0.2.1",
|
||||||
|
"@absinthe/socket-apollo-link": "^0.2.1",
|
||||||
"@apollo/client": "^3.3.16",
|
"@apollo/client": "^3.3.16",
|
||||||
"@framasoft/socket": "^1.0.0",
|
"@oruga-ui/oruga-next": "^0.6.0",
|
||||||
"@framasoft/socket-apollo-link": "^1.0.0",
|
|
||||||
"@fullcalendar/core": "^6.1.10",
|
|
||||||
"@fullcalendar/daygrid": "^6.1.10",
|
|
||||||
"@fullcalendar/icalendar": "^6.1.10",
|
|
||||||
"@fullcalendar/interaction": "^6.1.10",
|
|
||||||
"@fullcalendar/vue3": "^6.1.10",
|
|
||||||
"@oruga-ui/oruga-next": "^0.8.2",
|
|
||||||
"@oruga-ui/theme-oruga": "^0.2.0",
|
|
||||||
"@sentry/tracing": "^7.1",
|
"@sentry/tracing": "^7.1",
|
||||||
"@sentry/vue": "^7.1",
|
"@sentry/vue": "^7.1",
|
||||||
"@tiptap/core": "^2.0.0-beta.41",
|
"@tiptap/core": "^2.0.0-beta.41",
|
||||||
|
@ -64,26 +54,25 @@
|
||||||
"@tiptap/pm": "^2.0.0-beta.220",
|
"@tiptap/pm": "^2.0.0-beta.220",
|
||||||
"@tiptap/suggestion": "^2.0.0-beta.195",
|
"@tiptap/suggestion": "^2.0.0-beta.195",
|
||||||
"@tiptap/vue-3": "^2.0.0-beta.96",
|
"@tiptap/vue-3": "^2.0.0-beta.96",
|
||||||
"@unhead/vue": "^1.8.5",
|
|
||||||
"@vue-a11y/announcer": "^2.1.0",
|
"@vue-a11y/announcer": "^2.1.0",
|
||||||
"@vue-a11y/skip-to": "^2.1.2",
|
"@vue-a11y/skip-to": "^2.1.2",
|
||||||
"@vue-leaflet/vue-leaflet": "^0.10.1",
|
"@vue-leaflet/vue-leaflet": "^0.9.0",
|
||||||
"@vue/apollo-composable": "^4.0.0-beta.9",
|
"@vue/apollo-composable": "^4.0.0-beta.5",
|
||||||
"@vue/compiler-sfc": "^3.2.37",
|
"@vue/compiler-sfc": "^3.2.37",
|
||||||
"@vueuse/core": "^10.0.2",
|
"@vueuse/core": "^10.0.2",
|
||||||
|
"@vueuse/head": "^1.0",
|
||||||
"@vueuse/router": "^10.0.2",
|
"@vueuse/router": "^10.0.2",
|
||||||
"apollo-absinthe-upload-link": "^1.5.0",
|
"apollo-absinthe-upload-link": "^1.5.0",
|
||||||
"autoprefixer": "^10",
|
"autoprefixer": "^10",
|
||||||
"blurhash": "^2.0.0",
|
"blurhash": "^2.0.0",
|
||||||
"date-fns": "^2.16.0",
|
"date-fns": "^2.16.0",
|
||||||
"date-fns-tz": "^2.0.0",
|
"date-fns-tz": "^2.0.0",
|
||||||
"floating-vue": "^2.0.0-beta.24",
|
"floating-vue": "^2.0.0-beta.17",
|
||||||
"graphql": "^16.8.1",
|
"graphql": "^15.8.0",
|
||||||
"graphql-tag": "^2.10.3",
|
"graphql-tag": "^2.10.3",
|
||||||
"hammerjs": "^2.0.8",
|
"hammerjs": "^2.0.8",
|
||||||
"ical.js": "^1.5.0",
|
|
||||||
"intersection-observer": "^0.12.0",
|
"intersection-observer": "^0.12.0",
|
||||||
"jwt-decode": "^4.0.0",
|
"jwt-decode": "^3.1.2",
|
||||||
"leaflet": "^1.4.0",
|
"leaflet": "^1.4.0",
|
||||||
"leaflet.locatecontrol": "^0.79",
|
"leaflet.locatecontrol": "^0.79",
|
||||||
"leaflet.markercluster": "^1.5.3",
|
"leaflet.markercluster": "^1.5.3",
|
||||||
|
@ -108,7 +97,7 @@
|
||||||
"zhyswan-vuedraggable": "^4.1.3"
|
"zhyswan-vuedraggable": "^4.1.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@histoire/plugin-vue": "^0.17.1",
|
"@histoire/plugin-vue": "^0.16.1",
|
||||||
"@playwright/test": "^1.25.1",
|
"@playwright/test": "^1.25.1",
|
||||||
"@rushstack/eslint-patch": "^1.1.4",
|
"@rushstack/eslint-patch": "^1.1.4",
|
||||||
"@tailwindcss/forms": "^0.5.2",
|
"@tailwindcss/forms": "^0.5.2",
|
||||||
|
@ -122,32 +111,30 @@
|
||||||
"@types/phoenix": "^1.5.2",
|
"@types/phoenix": "^1.5.2",
|
||||||
"@types/sanitize-html": "^2.5.0",
|
"@types/sanitize-html": "^2.5.0",
|
||||||
"@vitejs/plugin-vue": "^4.0.0",
|
"@vitejs/plugin-vue": "^4.0.0",
|
||||||
"@vitest/coverage-v8": "^0.34.1",
|
"@vitest/coverage-c8": "^0.31.0",
|
||||||
"@vitest/ui": "^0.34.1",
|
"@vitest/ui": "^0.31.0",
|
||||||
"@vue/eslint-config-prettier": "^9.0.0",
|
"@vue/eslint-config-prettier": "^7.0.0",
|
||||||
"@vue/eslint-config-typescript": "^12.0.0",
|
"@vue/eslint-config-typescript": "^11.0.0",
|
||||||
"@vue/test-utils": "^2.0.2",
|
"@vue/test-utils": "^2.0.2",
|
||||||
"eslint": "^8.21.0",
|
"eslint": "^8.21.0",
|
||||||
"eslint-config-prettier": "^9.0.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
"eslint-plugin-import": "^2.20.2",
|
"eslint-plugin-import": "^2.20.2",
|
||||||
"eslint-plugin-prettier": "^5.0.0",
|
"eslint-plugin-prettier": "^4.0.0",
|
||||||
"eslint-plugin-vue": "^9.3.0",
|
"eslint-plugin-vue": "^9.3.0",
|
||||||
"flush-promises": "^1.0.2",
|
"flush-promises": "^1.0.2",
|
||||||
"histoire": "^0.17.0",
|
"histoire": "^0.16.1",
|
||||||
"husky": "^8.0.3",
|
"husky": "^8.0.3",
|
||||||
"jsdom": "^22.0.0",
|
"jsdom": "^22.0.0",
|
||||||
"lint-staged": "^15.1.0",
|
"lint-staged": "^13.2.2",
|
||||||
"mock-apollo-client": "^1.1.0",
|
"mock-apollo-client": "^1.1.0",
|
||||||
"prettier": "^3.0.0",
|
"prettier": "^2.2.1",
|
||||||
"prettier-eslint": "^16.1.2",
|
"prettier-eslint": "^15.0.1",
|
||||||
"rollup-plugin-visualizer": "^5.7.1",
|
"rollup-plugin-visualizer": "^5.7.1",
|
||||||
"sass": "^1.34.1",
|
"sass": "^1.34.1",
|
||||||
"typescript": "~5.3.2",
|
"typescript": "~5.0.0",
|
||||||
"vite": "^4.5.0",
|
"vite": "^4.0.4",
|
||||||
"vite-plugin-pwa": "^0.17.0",
|
"vite-plugin-pwa": "^0.15.1",
|
||||||
"vite-svg-loader": "^4.0.0",
|
"vitest": "^0.31.0",
|
||||||
"vitest": "^0.34.1",
|
"vue-i18n-extract": "^2.0.4"
|
||||||
"vue-i18n-extract": "^2.0.4",
|
|
||||||
"vue-router-mock": "^1.0.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
BIN
js/public/favicon.ico
Normal file
After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 9 KiB After Width: | Height: | Size: 9 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 9 KiB After Width: | Height: | Size: 9 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 776 B After Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
BIN
js/public/img/icons/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
js/public/img/icons/android-chrome-512x512.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
js/public/img/icons/android-chrome-maskable-192x192.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
js/public/img/icons/android-chrome-maskable-512x512.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
js/public/img/icons/apple-touch-icon-120x120.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
js/public/img/icons/apple-touch-icon-152x152.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
js/public/img/icons/apple-touch-icon-180x180.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
js/public/img/icons/apple-touch-icon-60x60.png
Normal file
After Width: | Height: | Size: 782 B |
BIN
js/public/img/icons/apple-touch-icon-76x76.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
js/public/img/icons/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
js/public/img/icons/badge-128x128.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
js/public/img/icons/favicon-16x16.png
Normal file
After Width: | Height: | Size: 407 B |
BIN
js/public/img/icons/favicon-32x32.png
Normal file
After Width: | Height: | Size: 739 B |
BIN
js/public/img/icons/favicon-48x48.png
Normal file
After Width: | Height: | Size: 813 B |
1
js/public/img/icons/favicon.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="60" height="60"><path style="display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:#3c3c3c;stroke-opacity:0" d="m -5.801,-6.164 h 72.69 v 72.871 h -72.69 z"/><g data-name="icon"><g data-name="header"><path d="M 22.046275,57.767824 H 21.898116 L 15.171689,53.856422 Q 14.964267,53.737894 14.964267,53.50084 L 14.845739,16.223989 q 0.02963,-0.207422 0.207423,-0.32595 22.964673,-13.2750625 23.083201,-13.2750625 0.118527,0 6.874586,3.9410343 l 0.05926,0.059264 0.05926,0.029632 v 0.029632 h 0.02963 l 0.05926,0.1185274 0.02963,4.5040395 q -0.02963,0.237054 -0.207423,0.355582 L 26.165101,22.535571 v 3.407661 q 11.911998,-6.874586 12.030525,-6.874586 0.0889,0 3.496557,1.985333 3.407661,1.955701 3.407661,1.985333 h 0.02963 v 0.02963 q 0.02963,0.02963 0.02963,0.05926 0.02963,0 0.02963,0 0.02963,0 0.02963,0.02963 l 0.02963,0.148159 h 0.02963 v 4.444776 q 0,0.207423 -0.207423,0.32595 l -18.845848,10.904516 0.02963,16.208614 q 0,0.207423 -0.207423,0.32595 -3.852138,2.25202 -4.000298,2.25202 z M 26.194733,33.677141 44.06273,23.365262 38.195626,19.927969 26.194733,26.861819 Z m -4.563303,22.994305 -0.0889,-36.298999 -5.867103,-3.437294 0.0889,36.328632 z M 21.927748,19.661282 44.003466,6.9195928 38.136363,3.5119316 16.060645,16.253621 Z" style="stroke-opacity:1;fill:#ffffff;stroke:#ffffff;stroke-width:0.782;stroke-dasharray:none"/></g></g></svg>
|
After Width: | Height: | Size: 1.4 KiB |
BIN
js/public/img/icons/icon-144x144.png
Normal file
After Width: | Height: | Size: 3 KiB |
BIN
js/public/img/icons/icon-168x168.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
js/public/img/icons/icon-256x256.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
js/public/img/icons/icon-48x48.png
Normal file
After Width: | Height: | Size: 813 B |
BIN
js/public/img/icons/icon-72x72.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
js/public/img/icons/icon-96x96.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
js/public/img/icons/msapplication-icon-144x144.png
Normal file
After Width: | Height: | Size: 3 KiB |
BIN
js/public/img/icons/mstile-150x150.png
Normal file
After Width: | Height: | Size: 3.3 KiB |