From 9f520d3608917c20cf6ebd69d5426061c3976abc Mon Sep 17 00:00:00 2001 From: tobi Date: Wed, 25 Dec 2024 11:53:56 +0000 Subject: [PATCH] [chore] Remove more unused files (#3) Reviewed-on: https://codeberg.org/superseriousbusiness/masto-fe-standalone/pulls/3 Co-authored-by: tobi Co-committed-by: tobi --- .buildpacks | 3 -- .env.test | 5 -- .foreman | 1 - .gitattributes | 14 ----- .husky/pre-commit | 4 -- .profile | 1 - .rspec | 3 -- .slugignore | 4 -- bin/bundle | 3 -- bin/heroku-web | 2 - bin/rails | 4 -- bin/rake | 4 -- bin/retry | 46 ---------------- bin/rspec | 17 ------ bin/setup | 36 ------------- bin/tootctl | 13 ----- bin/update | 31 ----------- bin/webpack | 19 ------- bin/webpack-dev-server | 19 ------- bin/yarn | 17 ------ config/brakeman.ignore | 96 ---------------------------------- config/brakeman.yml | 3 -- config/database.yml | 64 ----------------------- config/roles.yml | 35 ------------- config/settings.yml | 56 -------------------- ide-helper.js | 12 ----- lib/assets/.keep | 0 lib/assets/wordmark.dark.css | 1 - lib/assets/wordmark.dark.png | Bin 6753 -> 0 bytes lib/assets/wordmark.light.css | 3 -- lib/assets/wordmark.light.png | Bin 6613 -> 0 bytes 31 files changed, 516 deletions(-) delete mode 100644 .buildpacks delete mode 100644 .env.test delete mode 100644 .foreman delete mode 100644 .gitattributes delete mode 100755 .husky/pre-commit delete mode 100644 .profile delete mode 100644 .rspec delete mode 100644 .slugignore delete mode 100755 bin/bundle delete mode 100755 bin/heroku-web delete mode 100755 bin/rails delete mode 100755 bin/rake delete mode 100755 bin/retry delete mode 100755 bin/rspec delete mode 100755 bin/setup delete mode 100755 bin/tootctl delete mode 100755 bin/update delete mode 100755 bin/webpack delete mode 100755 bin/webpack-dev-server delete mode 100755 bin/yarn delete mode 100644 config/brakeman.ignore delete mode 100644 config/brakeman.yml delete mode 100644 config/database.yml delete mode 100644 config/roles.yml delete mode 100644 config/settings.yml delete mode 100644 ide-helper.js delete mode 100644 lib/assets/.keep delete mode 100644 lib/assets/wordmark.dark.css delete mode 100644 lib/assets/wordmark.dark.png delete mode 100644 lib/assets/wordmark.light.css delete mode 100644 lib/assets/wordmark.light.png diff --git a/.buildpacks b/.buildpacks deleted file mode 100644 index 5e73304a5..000000000 --- a/.buildpacks +++ /dev/null @@ -1,3 +0,0 @@ -https://github.com/heroku/heroku-buildpack-apt -https://github.com/Scalingo/ffmpeg-buildpack -https://github.com/Scalingo/ruby-buildpack diff --git a/.env.test b/.env.test deleted file mode 100644 index 761d0d921..000000000 --- a/.env.test +++ /dev/null @@ -1,5 +0,0 @@ -# Node.js -NODE_ENV=tests -# Federation -LOCAL_DOMAIN=cb6e6126.ngrok.io -LOCAL_HTTPS=true diff --git a/.foreman b/.foreman deleted file mode 100644 index 722b491f7..000000000 --- a/.foreman +++ /dev/null @@ -1 +0,0 @@ -procfile: Procfile.dev diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index e69f2a0ad..000000000 --- a/.gitattributes +++ /dev/null @@ -1,14 +0,0 @@ -* text=auto eol=lf -*.eot -text -*.gif -text -*.gz -text -*.ico -text -*.jpg -text -*.mp3 -text -*.ogg -text -*.png -text -*.ttf -text -*.webm -text -*.woff -text -*.woff2 -text -spec/fixtures/requests/** -text !eol diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index d2ae35e84..000000000 --- a/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -yarn lint-staged diff --git a/.profile b/.profile deleted file mode 100644 index f4826ea30..000000000 --- a/.profile +++ /dev/null @@ -1 +0,0 @@ -LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/app/.apt/lib/x86_64-linux-gnu:/app/.apt/usr/lib/x86_64-linux-gnu/mesa:/app/.apt/usr/lib/x86_64-linux-gnu/pulseaudio:/app/.apt/usr/lib/x86_64-linux-gnu/openblas-pthread diff --git a/.rspec b/.rspec deleted file mode 100644 index 9a8e706d0..000000000 --- a/.rspec +++ /dev/null @@ -1,3 +0,0 @@ ---color ---require spec_helper ---format Fuubar diff --git a/.slugignore b/.slugignore deleted file mode 100644 index 5470f6e3f..000000000 --- a/.slugignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules/ -.cache/ -docs/ -spec/ diff --git a/bin/bundle b/bin/bundle deleted file mode 100755 index f19acf5b5..000000000 --- a/bin/bundle +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env ruby -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) -load Gem.bin_path('bundler', 'bundle') diff --git a/bin/heroku-web b/bin/heroku-web deleted file mode 100755 index 219ef35b9..000000000 --- a/bin/heroku-web +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -if [ "$RUN_STREAMING" != "true" ]; then BIND=0.0.0.0 bundle exec puma -C config/puma.rb; else BIND=0.0.0.0 node ./streaming; fi \ No newline at end of file diff --git a/bin/rails b/bin/rails deleted file mode 100755 index 073966023..000000000 --- a/bin/rails +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -APP_PATH = File.expand_path('../config/application', __dir__) -require_relative '../config/boot' -require 'rails/commands' diff --git a/bin/rake b/bin/rake deleted file mode 100755 index 17240489f..000000000 --- a/bin/rake +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -require_relative '../config/boot' -require 'rake' -Rake.application.run diff --git a/bin/retry b/bin/retry deleted file mode 100755 index 419ece62a..000000000 --- a/bin/retry +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash -# https://github.com/travis-ci/travis-build/blob/cbe49ea239ab37b9b38b5b44d287b7ec7a108c16/lib/travis/build/templates/header.sh#L243-L260 -# -# MIT LICENSE -# -# Copyright (c) 2016 Travis CI GmbH -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -retry() { - local result=0 - local count=1 - - while [ $count -le 3 ]; do - if [ $result -ne 0 ]; then - echo -e "\n${ANSI_RED}The command \"$@\" failed. Retrying, $count of 3.${ANSI_RESET}\n" >&2 - fi - - "$@" && { result=0 && break; } || result=$? - count=$(($count + 1)) - sleep 1 - done - - if [ $count -gt 3 ]; then - echo -e "\n${ANSI_RED}The command \"$@\" failed 3 times.${ANSI_RESET}\n" >&2 - fi - - return $result -} - -retry $@ diff --git a/bin/rspec b/bin/rspec deleted file mode 100755 index d738b23c0..000000000 --- a/bin/rspec +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true -# -# This file was generated by Bundler. -# -# The application 'rspec' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", - Pathname.new(__FILE__).realpath) - -require "rubygems" -require "bundler/setup" - -load Gem.bin_path("rspec-core", "rspec") diff --git a/bin/setup b/bin/setup deleted file mode 100755 index 90700ac4f..000000000 --- a/bin/setup +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env ruby -require "fileutils" - -# path to your application root. -APP_ROOT = File.expand_path('..', __dir__) - -def system!(*args) - system(*args) || abort("\n== Command #{args} failed ==") -end - -FileUtils.chdir APP_ROOT do - # This script is a way to set up or update your development environment automatically. - # This script is idempotent, so that you can run it at any time and get an expectable outcome. - # Add necessary setup steps to this file. - - puts '== Installing dependencies ==' - system! 'gem install bundler --conservative' - system('bundle check') || system!('bundle install') - - # Install JavaScript dependencies - system! 'bin/yarn' - - # puts "\n== Copying sample files ==" - # unless File.exist?('config/database.yml') - # FileUtils.cp 'config/database.yml.sample', 'config/database.yml' - # end - - puts "\n== Preparing database ==" - system! 'bin/rails db:prepare' - - puts "\n== Removing old logs and tempfiles ==" - system! 'bin/rails log:clear tmp:clear' - - puts "\n== Restarting application server ==" - system! 'bin/rails restart' -end diff --git a/bin/tootctl b/bin/tootctl deleted file mode 100755 index b3311c6b2..000000000 --- a/bin/tootctl +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env ruby -APP_PATH = File.expand_path('../config/application', __dir__) - -require_relative '../config/boot' -require_relative '../lib/mastodon/cli/main' - -begin - Chewy.strategy(:mastodon) do - Mastodon::CLI::Main.start(ARGV) - end -rescue Interrupt - exit(130) -end diff --git a/bin/update b/bin/update deleted file mode 100755 index 6d73559a3..000000000 --- a/bin/update +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env ruby -require 'fileutils' -include FileUtils - -# path to your application root. -APP_ROOT = File.expand_path('..', __dir__) - -def system!(*args) - system(*args) || abort("\n== Command #{args} failed ==") -end - -chdir APP_ROOT do - # This script is a way to update your development environment automatically. - # Add necessary update steps to this file. - - puts '== Installing dependencies ==' - system! 'gem install bundler --conservative' - system('bundle check') || system!('bundle install') - - # Install JavaScript dependencies if using Yarn - system('bin/yarn') - - puts "\n== Updating database ==" - system! 'bin/rails db:migrate' - - puts "\n== Removing old logs and tempfiles ==" - system! 'bin/rails log:clear tmp:clear' - - puts "\n== Restarting application server ==" - system! 'bin/rails restart' -end diff --git a/bin/webpack b/bin/webpack deleted file mode 100755 index 008ecb22f..000000000 --- a/bin/webpack +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env ruby - -ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development" -ENV["NODE_ENV"] ||= "development" - -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", - Pathname.new(__FILE__).realpath) - -require "rubygems" -require "bundler/setup" - -require "webpacker" -require "webpacker/webpack_runner" - -APP_ROOT = File.expand_path("..", __dir__) -Dir.chdir(APP_ROOT) do - Webpacker::WebpackRunner.run(ARGV) -end diff --git a/bin/webpack-dev-server b/bin/webpack-dev-server deleted file mode 100755 index a931a9b7f..000000000 --- a/bin/webpack-dev-server +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env ruby - -ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development" -ENV["NODE_ENV"] ||= "development" - -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", - Pathname.new(__FILE__).realpath) - -require "rubygems" -require "bundler/setup" - -require "webpacker" -require "webpacker/dev_server_runner" - -APP_ROOT = File.expand_path("..", __dir__) -Dir.chdir(APP_ROOT) do - Webpacker::DevServerRunner.run(ARGV) -end diff --git a/bin/yarn b/bin/yarn deleted file mode 100755 index 9fab2c350..000000000 --- a/bin/yarn +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env ruby -APP_ROOT = File.expand_path('..', __dir__) -Dir.chdir(APP_ROOT) do - yarn = ENV["PATH"].split(File::PATH_SEPARATOR). - select { |dir| File.expand_path(dir) != __dir__ }. - product(["yarn", "yarn.cmd", "yarn.ps1"]). - map { |dir, file| File.expand_path(file, dir) }. - find { |file| File.executable?(file) } - - if yarn - exec yarn, *ARGV - else - $stderr.puts "Yarn executable was not detected in the system." - $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" - exit 1 - end -end diff --git a/config/brakeman.ignore b/config/brakeman.ignore deleted file mode 100644 index 02ce23a07..000000000 --- a/config/brakeman.ignore +++ /dev/null @@ -1,96 +0,0 @@ -{ - "ignored_warnings": [ - { - "warning_type": "Cross-Site Scripting", - "warning_code": 2, - "fingerprint": "71cf98c8235b5cfa9946b5db8fdc1a2f3a862566abb34e4542be6f3acae78233", - "check_name": "CrossSiteScripting", - "message": "Unescaped model attribute", - "file": "app/views/admin/disputes/appeals/_appeal.html.haml", - "line": 7, - "link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting", - "code": "t((Unresolved Model).new.strike.action, :scope => \"admin.strikes.actions\", :name => content_tag(:span, (Unresolved Model).new.strike.account.username, :class => \"username\"), :target => content_tag(:span, (Unresolved Model).new.account.username, :class => \"target\"))", - "render_path": [ - { - "type": "template", - "name": "admin/disputes/appeals/index", - "line": 20, - "file": "app/views/admin/disputes/appeals/index.html.haml", - "rendered": { - "name": "admin/disputes/appeals/_appeal", - "file": "app/views/admin/disputes/appeals/_appeal.html.haml" - } - } - ], - "location": { - "type": "template", - "template": "admin/disputes/appeals/_appeal" - }, - "user_input": "(Unresolved Model).new.strike", - "confidence": "Weak", - "cwe_id": [ - 79 - ], - "note": "" - }, - { - "warning_type": "Denial of Service", - "warning_code": 76, - "fingerprint": "7b6abba5699755348e7ee82a4694bfbf574b41c7cce2d0db0f7c11ae3f983c72", - "check_name": "RegexDoS", - "message": "Model attribute used in regular expression", - "file": "lib/mastodon/cli/domains.rb", - "line": 128, - "link": "https://brakemanscanner.org/docs/warning_types/denial_of_service/", - "code": "/\\.?(#{DomainBlock.where(:severity => 1).pluck(:domain).map do\n Regexp.escape(domain)\n end.join(\"|\")})$/", - "render_path": null, - "location": { - "type": "method", - "class": "Mastodon::CLI::Domains", - "method": "crawl" - }, - "user_input": "DomainBlock.where(:severity => 1).pluck(:domain)", - "confidence": "Weak", - "cwe_id": [ - 20, - 185 - ], - "note": "" - }, - { - "warning_type": "Cross-Site Scripting", - "warning_code": 4, - "fingerprint": "cd5cfd7f40037fbfa753e494d7129df16e358bfc43ef0da3febafbf4ee1ed3ac", - "check_name": "LinkToHref", - "message": "Potentially unsafe model attribute in `link_to` href", - "file": "app/views/admin/trends/links/_preview_card.html.haml", - "line": 7, - "link": "https://brakemanscanner.org/docs/warning_types/link_to_href", - "code": "link_to((Unresolved Model).new.title, (Unresolved Model).new.url)", - "render_path": [ - { - "type": "template", - "name": "admin/trends/links/index", - "line": 49, - "file": "app/views/admin/trends/links/index.html.haml", - "rendered": { - "name": "admin/trends/links/_preview_card", - "file": "app/views/admin/trends/links/_preview_card.html.haml" - } - } - ], - "location": { - "type": "template", - "template": "admin/trends/links/_preview_card" - }, - "user_input": "(Unresolved Model).new.url", - "confidence": "Weak", - "cwe_id": [ - 79 - ], - "note": "" - } - ], - "updated": "2023-07-12 11:20:51 -0400", - "brakeman_version": "6.0.0" -} diff --git a/config/brakeman.yml b/config/brakeman.yml deleted file mode 100644 index 95ebc1386..000000000 --- a/config/brakeman.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -:skip_checks: - - CheckPermitAttributes diff --git a/config/database.yml b/config/database.yml deleted file mode 100644 index b995f2317..000000000 --- a/config/database.yml +++ /dev/null @@ -1,64 +0,0 @@ -default: &default - adapter: postgresql - pool: <%= ENV["DB_POOL"] || ENV['MAX_THREADS'] || 5 %> - timeout: 5000 - connect_timeout: 15 - encoding: unicode - sslmode: <%= ENV['DB_SSLMODE'] || "prefer" %> - application_name: '' - -development: - primary: - <<: *default - database: <%= ENV['DB_NAME'] || 'mastodon_development' %> - username: <%= ENV['DB_USER'] %> - password: <%= (ENV['DB_PASS'] || '').to_json %> - host: <%= ENV['DB_HOST'] %> - port: <%= ENV['DB_PORT'] %> - replica: - <<: *default - database: <%= ENV['DB_NAME'] || 'mastodon_development' %> - username: <%= ENV['DB_USER'] %> - password: <%= (ENV['DB_PASS'] || '').to_json %> - host: <%= ENV['DB_HOST'] %> - port: <%= ENV['DB_PORT'] %> - replica: true - -# Warning: The database defined as "test" will be erased and -# re-generated from your development database when you run "rake". -# Do not set this db to the same as development or production. -test: - primary: - <<: *default - database: <%= ENV['DB_NAME'] || 'mastodon' %>_test<%= ENV['TEST_ENV_NUMBER'] %> - username: <%= ENV['DB_USER'] %> - password: <%= (ENV['DB_PASS'] || '').to_json %> - host: <%= ENV['DB_HOST'] %> - port: <%= ENV['DB_PORT'] %> - replica: - <<: *default - database: <%= ENV['DB_NAME'] || 'mastodon' %>_test<%= ENV['TEST_ENV_NUMBER'] %> - username: <%= ENV['DB_USER'] %> - password: <%= (ENV['DB_PASS'] || '').to_json %> - host: <%= ENV['DB_HOST'] %> - port: <%= ENV['DB_PORT'] %> - replica: true - -production: - primary: - <<: *default - database: <%= ENV['DB_NAME'] || 'mastodon_production' %> - username: <%= ENV['DB_USER'] || 'mastodon' %> - password: <%= (ENV['DB_PASS'] || '').to_json %> - host: <%= ENV['DB_HOST'] || 'localhost' %> - port: <%= ENV['DB_PORT'] || 5432 %> - prepared_statements: <%= ENV['PREPARED_STATEMENTS'] || 'true' %> - replica: - <<: *default - database: <%= ENV['REPLICA_DB_NAME'] ||ENV['DB_NAME'] || 'mastodon_production' %> - username: <%= ENV['REPLICA_DB_USER'] ||ENV['DB_USER'] || 'mastodon' %> - password: <%= (ENV['REPLICA_DB_PASS'] || ENV['DB_PASS'] || '').to_json %> - host: <%= ENV['REPLICA_DB_HOST'] ||ENV['DB_HOST'] || 'localhost' %> - port: <%= ENV['REPLICA_DB_PORT'] ||ENV['DB_PORT'] || 5432 %> - prepared_statements: <%= ENV['PREPARED_STATEMENTS'] || 'true' %> - replica: true diff --git a/config/roles.yml b/config/roles.yml deleted file mode 100644 index f443250d1..000000000 --- a/config/roles.yml +++ /dev/null @@ -1,35 +0,0 @@ -moderator: - name: Moderator - position: 10 - permissions: - - view_dashboard - - view_audit_log - - manage_users - - manage_reports - - manage_taxonomies -admin: - name: Admin - position: 100 - permissions: - - view_dashboard - - view_audit_log - - manage_users - - manage_user_access - - delete_user_data - - manage_reports - - manage_taxonomies - - manage_federation - - manage_settings - - manage_blocks - - manage_appeals - - manage_rules - - manage_invites - - manage_announcements - - manage_custom_emojis - - manage_webhooks - - manage_roles -owner: - name: Owner - position: 1000 - permissions: - - administrator diff --git a/config/settings.yml b/config/settings.yml deleted file mode 100644 index c9c37a6f7..000000000 --- a/config/settings.yml +++ /dev/null @@ -1,56 +0,0 @@ -# This file contains default values, and does not need to be edited. All -# important settings can be changed from the admin interface. - -defaults: &defaults - site_title: 'Mastodon Glitch Edition' - site_short_description: '' - site_description: '' - site_extended_description: '' - site_terms: '' - site_contact_username: '' - site_contact_email: '' - registrations_mode: 'open' - profile_directory: true - closed_registrations_message: '' - timeline_preview: false - show_staff_badge: true - preview_sensitive_media: false - noindex: false - flavour: 'glitch' - skin: 'default' - trends: true - trends_as_landing_page: true - trendable_by_default: false - trending_status_cw: true - hide_followers_count: false - reserved_usernames: - - admin - - support - - help - - root - - webmaster - - administrator - - mod - - moderator - disallowed_hashtags: # space separated string or list of hashtags without the hash - bootstrap_timeline_accounts: '' - activity_api_enabled: true - peers_api_enabled: true - show_reblogs_in_public_timelines: false - show_replies_in_public_timelines: false - default_content_type: 'text/plain' - show_domain_blocks: 'disabled' - show_domain_blocks_rationale: 'disabled' - outgoing_spoilers: '' - require_invite_text: false - backups_retention_period: 7 - captcha_enabled: false - -development: - <<: *defaults - -test: - <<: *defaults - -production: - <<: *defaults diff --git a/ide-helper.js b/ide-helper.js deleted file mode 100644 index 9e645cb0e..000000000 --- a/ide-helper.js +++ /dev/null @@ -1,12 +0,0 @@ -/* global path */ -/* -Preferences | Languages & Frameworks | JavaScript | Webpack | webpack configuration file -jetbrains://WebStorm/settings?name=Languages+%26+Frameworks--JavaScript--Webpack -*/ -module.exports = { - resolve: { - alias: { - 'mastodon': path.resolve(__dirname, 'app/javascript/mastodon'), - }, - }, -}; diff --git a/lib/assets/.keep b/lib/assets/.keep deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/assets/wordmark.dark.css b/lib/assets/wordmark.dark.css deleted file mode 100644 index db3355f59..000000000 --- a/lib/assets/wordmark.dark.css +++ /dev/null @@ -1 +0,0 @@ -/* Not needed */ diff --git a/lib/assets/wordmark.dark.png b/lib/assets/wordmark.dark.png deleted file mode 100644 index 6772b3318dc35c3ac8d615d4f9fcca6d7cb03900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6753 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 T1COH_00000NkvXXu0mjfse6&T