Compare commits

...

140 Commits
dev ... main

Author SHA1 Message Date
KitaitiMakoto bc2b9acfc4 Merge pull request 'Use locale instead of two_letters_code for translation' (#139) from locale into main
Reviewed-on: plume/documentation#139
1 year ago
Kitaiti Makoto e7d320f635 Use locale instead of two_letters_code for translation 1 year ago
KitaitiMakoto 5234a39e86 Merge pull request 'Update schema to better reflect the current API' (#138) from PatOConnor43/documentation:update-post-schema into main
Reviewed-on: plume/documentation#138
1 year ago
Pat O'Connor a9f1a1eed5 Update schema to better reflect the current API 2 years ago
KitaitiMakoto f900bf3a7f Merge pull request 'Update the windows build from sources' (#137) from arittner/documentation:fix_win_from_sources into main
Reviewed-on: plume/documentation#137
2 years ago
Aljoscha Rittner d28888317a Update the windows build from sources
fixes #136
2 years ago
KitaitiMakoto b97cdf4a10 Merge pull request 'Update versions' (#135) from update-0.7.1 into main
Reviewed-on: plume/documentation#135
2 years ago
Kitaiti Makoto c17f0a9881 Update versions 2 years ago
KitaitiMakoto d4d94f58df Merge pull request 'signup' (#134) from signup into main
Reviewed-on: plume/documentation#134
2 years ago
Kitaiti Makoto c15a3a88ff Add SIGNUP env var description 2 years ago
Kitaiti Makoto 395cc294a1 Update gems 2 years ago
Kitaiti Makoto f13d246677 Add documentation for SMTP_PORT 2 years ago
KitaitiMakoto 65b8ee447b Merge pull request 'Update Matrix room URI' (#132) from matrix-room into main
Reviewed-on: plume/documentation#132
3 years ago
Kitaiti Makoto 9d021d8cb6 Update gems 3 years ago
Kitaiti Makoto 450c0ee37b Update Matrix room 3 years ago
KitaitiMakoto a2a8aa65c1 Merge pull request 'Add a french translation guide' (#131) from pilou/documentation:add_french_translations_style_guide into main
Reviewed-on: plume/documentation#131
3 years ago
Pierre-Louis Bonicoli a3c01f5819
Add a french translation guide
The purpose of this guide is to document the glossary, the rules used
and to help the translators.
3 years ago
KitaitiMakoto 333895559a Merge pull request 'Typography in environment' (#128) from Marius/documentation:main into main
Reviewed-on: plume/documentation#128
3 years ago
KitaitiMakoto 4e9ec7d441 Merge pull request 'Fix #129 Restore indentation in code block' (#130) from restore-indent into main
Reviewed-on: plume/documentation#130
3 years ago
Kitaiti Makoto 651091c87a Specify CSS class for syntax highlighting to avoide doubly add 'highlight' 3 years ago
Kitaiti Makoto c53cbcfc72 Update gems 3 years ago
Marius Monnier 91c2fa5ec2 Typography in environment 3 years ago
KitaitiMakoto 1fc1873a54 Merge pull request 'Apache config: fix a typo & allow to copy/paste' (#127) from pilou/documentation:doc_apache_add_slash into main
Reviewed-on: plume/documentation#127
3 years ago
Pierre-Louis Bonicoli b56f0da975
Allow to copy/paste the suggested configuration
Comments may not be included on the same line as a configuration directive.
3 years ago
Pierre-Louis Bonicoli 8d34fb21ea
Add missing slash in VirtualHost closing tags 3 years ago
KitaitiMakoto 4fcbc66a28 Merge pull request 'Update documentation on updating instance' (#126) from wasmpack into main
Reviewed-on: plume/documentation#126
3 years ago
Kitaiti Makoto 30dbf18eec Update gems 3 years ago
Kitaiti Makoto 44b0440678 Update command to build front end in updating instance document 3 years ago
Kitaiti Makoto db3187ef88 Add document for env var RUST_LOG 3 years ago
Kitaiti Makoto 45578f824c Update gems 3 years ago
Kitaiti Makoto 48f3323b71 Update gems 3 years ago
Kitaiti Makoto f81237bce0 Update Gemfile.lock 3 years ago
KitaitiMakoto e393bf7339 Merge pull request 'Add a non overflow behaviour (Fix #120)' (#124) from Marius/documentation:main into main
Reviewed-on: plume/documentation#124
3 years ago
Marius Monnier 1f0b6e8adb Add a line wrapping css to not overflow on little screens, add mini_racer to dependencies to build 3 years ago
Marius Monnier a848bd0fcf Add a line wrapping css to not overflow on little screens, add mini_racer to dependencies to build 3 years ago
Kitaiti Makoto d6e3b9baaf Set og:image 3 years ago
Kitaiti Makoto 76adfc397e Add "all" task 3 years ago
Kitaiti Makoto 7f5bf7d277 Fix param type: path -> query 3 years ago
Kitaiti Makoto 6049d1f96e Repalce cargo-web with wasm-pack 3 years ago
KitaitiMakoto 4125851e4d Merge pull request 'Hint DATABASE_URL for tests' (#121) from test-databaseurl into main
Reviewed-on: plume/documentation#121
3 years ago
Kitaiti Makoto 7ec635a217 Hint DATABASE_URL for tests 3 years ago
KitaitiMakoto 365915d0aa Merge pull request 'Fix update step for Docker' (#119) from fix-update into main
Reviewed-on: plume/documentation#119
3 years ago
Kitaiti Makoto b0f01d4b38 Fix update step for Docker 3 years ago
KitaitiMakoto 3ebaba751c Merge pull request 'Update development guide to use Caddy v2' (#118) from caddy-v2 into main
Reviewed-on: plume/documentation#118
3 years ago
Kitaiti Makoto ba31ed55cc Update Caddyfile example to Caddy v2 3 years ago
Kitaiti Makoto cf7f6bb9a6 Fix Caddy's installation link 3 years ago
Kitaiti Makoto 07f265ec35 Use *.localhost for test server domain 3 years ago
KitaitiMakoto 36ced3326d Merge pull request 'ADD FORM_SIZE and ACTIVITY_SIZE to environment variable page' (#117) from size-limit into main
Reviewed-on: plume/documentation#117
3 years ago
Kitaiti Makoto 03f00d8dc7 ADD FORM_SIZE and ACTIVITY_SIZE to environment variable page 3 years ago
KitaitiMakoto af57c274b1 Merge pull request 'Fix links in update page' (#116) from fix-links into main
Reviewed-on: plume/documentation#116
3 years ago
Kitaiti Makoto 8f31537008 Fix links in update page 3 years ago
KitaitiMakoto 8c67176a91 Merge pull request 'Fix link to installation from source' (#115) from fix-link into main
Reviewed-on: plume/documentation#115
3 years ago
Kitaiti Makoto 3901fc1ad0 Fix link to installation from source 3 years ago
KitaitiMakoto b85ab32a8c Merge pull request 'close-switcher' (#114) from close-switcher into main
Reviewed-on: plume/documentation#114
3 years ago
Kitaiti Makoto c20219c3e0 Collapse language switcher when some point in page are clicked 3 years ago
Kitaiti Makoto c4ebde8951 Refactor language switcher using class 3 years ago
Kitaiti Makoto 77bb510e93 Remove blank line 3 years ago
Kitaiti Makoto b0aaa5da15 Ignore translate directory 3 years ago
Kitaiti Makoto a16e605448 Ignore .netlify directory 3 years ago
KitaitiMakoto 9460231982 Fix #77 Add language switcher (again) (#113)
Update README

Fix a typo

Prepend bundle exec to middleman command

Use link_to_lang helper

Use relative path for links

Append solidus to links to directory index

Update Bundler

Install Webrick

Add Webrick to dependencies

Remove Crowdin related code from template

Co-authored-by: Kitaiti Makoto <KitaitiMakoto@gmail.com>
Reviewed-on: plume/documentation#113
3 years ago
KitaitiMakoto 68934f526b Merge pull request 'Fix #77 Add language switcher' (#112) from lang-switcher into main
Reviewed-on: plume/documentation#112
3 years ago
KitaitiMakoto 665f9f8985 Merge pull request 'Refine tasks' (#111) from fix-translations into main
Reviewed-on: plume/documentation#111
3 years ago
KitaitiMakoto 9ab9ae743a Merge pull request 'Make URI a link' (#110) from url-link into main
Reviewed-on: plume/documentation#110
3 years ago
Kitaiti Makoto fe5712c080 Add language switcher 3 years ago
Kitaiti Makoto fee42c1bce Download translations before building traslation site 3 years ago
Kitaiti Makoto c8f2cd8b44 Reset build dir before upload to Crowdin 3 years ago
Kitaiti Makoto d6d2215465 Fix translation file path 3 years ago
Kitaiti Makoto e822296002 Add deploy tasks 3 years ago
Kitaiti Makoto e5dee1e72e Reset build tasks 3 years ago
Kitaiti Makoto 5c0a595e5a Make URI a link 3 years ago
Mina Galić 97e70424f8 Merge pull request 'Fix link to installation from source when contributing' (#108) from freyja_wildes/documentation:link-install-source into main
Reviewed-on: plume/documentation#108
3 years ago
Freyja Wildes 26d705da99
Fix link to installation from source when contributing 3 years ago
KitaitiMakoto 09c7cb8eb2 Add Test the change section at code review page (#106)
Add Test the change section at code review page

Co-authored-by: Kitaiti Makoto <KitaitiMakoto@gmail.com>
Reviewed-on: plume/documentation#106
3 years ago
Kitaiti Makoto f0f66beac0 Add supported Plume version to LDAP document 3 years ago
Kitaiti Makoto 67af3bf1ec Add blank lines to distinguish block 3 years ago
KitaitiMakoto 5fc2aa646a Merge pull request 'Replace Ana by kitaitiMakoto' (#103) from Marius/documentation:doc-contact-organization into main
Reviewed-on: plume/documentation#103
3 years ago
Marius 08267df9c2 Replace ana by kitaitiMakoto 3 years ago
KitaitiMakoto b94534d0e0 Fix typos (#102)
Fix typos

Co-authored-by: Kitaiti Makoto <KitaitiMakoto@gmail.com>
Reviewed-on: plume/documentation#102
3 years ago
KitaitiMakoto 4c25d9dcdf Merge pull request 'Update contributors page' (#101) from contributor into main
Reviewed-on: plume/documentation#101
3 years ago
KitaitiMakoto 4a42366ea5 Merge branch 'main' into contributor 3 years ago
KitaitiMakoto 36d1898f08 Merge pull request 'doc-typo' (#100) from Marius/documentation:doc-typo into main
Reviewed-on: plume/documentation#100
3 years ago
Marius Monnier 4df50ac567 code-review goes back ! 3 years ago
Marius Monnier ec7bd5f5bd Original state 3 years ago
Marius Monnier e876f8c5bd Add test to be documented 3 years ago
Kitaiti Makoto ad17fc11aa Move Ana to bottom and make former member 3 years ago
Kitaiti Makoto 8135fea451 Add Kitaiti Makoto to contributors 3 years ago
Marius Monnier 62b7482e55 Unused newline 3 years ago
Marius Monnier 5b756c29d2 Trying to put all github links in parenthesis, to standardize
Also add links to gitea issues
3 years ago
Marius Monnier e07a719f51 Fix some typos 3 years ago
Kitaiti Makoto ad58ca2153 Merge commit '7305b4c6634b499b175cb083e7609d0ceb30fec9' into main 3 years ago
Kitaiti Makoto 18e7c44355 Merge branch 'dev' into main 3 years ago
KitaitiMakoto a9b70ca956 Merge pull request 'document ldap' (#91) from ldap into dev
Reviewed-on: plume/documentation#91
3 years ago
KitaitiMakoto b990ade7f2 Merge branch 'dev' into ldap 3 years ago
Kitaiti Makoto 89ad2fdb40 Add link to LDAP env vars to LDAP configuration section 3 years ago
Kitaiti Makoto f4fc4f5295 Add headings to env var page 3 years ago
Kitaiti Makoto d62ab0bcb4 Add anchors to headings 3 years ago
KitaitiMakoto affecbe7d1 Merge pull request 'Fix a typo' (#99) from typo into main
Reviewed-on: plume/documentation#99
3 years ago
Kitaiti Makoto 2479f05025 Fix a typo 3 years ago
KitaitiMakoto 6800a199f9 Merge pull request 'Add and/or replace GitHub with Gitea' (#98) from gitea into main
Reviewed-on: plume/documentation#98
3 years ago
Kitaiti Makoto dafd7c1b90 Change to download pre-built binaries from Gitea 3 years ago
Kitaiti Makoto b29ca1f892 Replace Github with Gitea at 'Updating your instance' page 3 years ago
Kitaiti Makoto 3a1be1f6dd Add Gitea at 'Places where Plume is present' page 3 years ago
Kitaiti Makoto 2b6f775295 Replace Github with Gitea at 'Release process' page 3 years ago
Kitaiti Makoto 673829c5cc Add Gitea account of contributors 3 years ago
Kitaiti Makoto 480942ed6f Replace Github with Gitea at 'Compiling from source' page 3 years ago
Kitaiti Makoto 3d055bbb55 Replace Github with Gitea at 'Distant interactions' page 3 years ago
Kitaiti Makoto 3cc78f9afe Add Gitea at 'Creating a theme' page 3 years ago
Kitaiti Makoto 4ab49b0126 Add Gitea at 'Improve the documentation' page 3 years ago
Kitaiti Makoto 705e29c03d Add Gitea at 'Development Guide' page 3 years ago
Kitaiti Makoto 1e62cee983 Add Gitea at 'Review the proposed changes' page 3 years ago
Kitaiti Makoto b30b459b98 Add Gitea at 'Report a bug' page 3 years ago
Kitaiti Makoto ee615836e6 Change contribute URI to /contribute/ 3 years ago
Kitaiti Makoto 364e51644b Move repository to Gitea at navigation 3 years ago
Kitaiti Makoto b11758ea02 Remove Loomio-related texts from 'Request a feature' page 3 years ago
KitaitiMakoto 41756182d5 Merge pull request 'Remove Loomio-related texts' (#97) from remove-loomio into main
Reviewed-on: plume/documentation#97
3 years ago
Kitaiti Makoto c7134b173a Remove Loomio-related texts from 'Places where Plume is present' page 3 years ago
Kitaiti Makoto a1917da7a0 Remove Loomio account from contributors 3 years ago
Kitaiti Makoto ed373da6b8 Remove Loomio-related texts from 'Request a feature' page 3 years ago
Kitaiti Makoto 6c28c05c84 Remove Loomio-related texts from 'Join the discussion' page 3 years ago
Kitaiti Makoto 5ad218155c Remove Loomio from navigation 3 years ago
KitaitiMakoto 04163854c2 Merge pull request 'Fix a typo' (#96) from fix-typo into main
Reviewed-on: plume/documentation#96
3 years ago
Kitaiti Makoto dc01dcb649 Fix a typo 3 years ago
KitaitiMakoto a58052ae6b Merge pull request 'Add Rakefile to show workflow explicitely' (#95) from workflow into main
Reviewed-on: plume/documentation#95
3 years ago
Kitaiti Makoto 1a3c9670a8 Ignore added build directories 3 years ago
Kitaiti Makoto 85547cd9c8 Add Rakefile 3 years ago
Kitaiti Makoto 4b9f2d5a09 Add crowdin.yml 3 years ago
Kitaiti Makoto 04800c21b2 Update gems 3 years ago
Kitaiti Makoto 2355720eb2 Install Rake 3 years ago
Kitaiti Makoto a4d6baced3 Add Rake to dependencies 3 years ago
Kitaiti Makoto ea2004faa5 Merge remote-tracking branch 'origin/dev' into stable 3 years ago
KitaitiMakoto be00ee0f64 Merge pull request 'Update gems' (#93) from update-gems into stable
Reviewed-on: plume/documentation#93
4 years ago
Kitaiti Makoto e78d915196 Update gems 4 years ago
KitaitiMakoto 54715273e3 Merge pull request 'Update gems' (#92) from update-gems into dev
Reviewed-on: plume/documentation#92
4 years ago
Kitaiti Makoto 5507f4f1c0 Update gems 4 years ago
Trinity POINTARD d74634720c document ldap 4 years ago
Mina Galić 6d02554fc7 Merge pull request 'need libpq-dev lib for rpm-based distros, fix deprecated cargo command usage' (#90) from clasick/documentation:dev into dev
Reviewed-on: plume/documentation#90
4 years ago
Vignesh Kumar 3bf54b4519 need --path explicitly specified 4 years ago
Vignesh Kumar f561c23c80 fix typo 4 years ago
Vignesh Kumar a64e9c882d need libpq-dev lib for Fedora 4 years ago
Kitaiti Makoto 7305b4c663 Add documentation about SEARCH_TAG_TOKENIZER, SEARCH_CONTENT_TOKENIZER
and/or SEARCH_LANG
4 years ago

5
.gitignore vendored

@ -3,4 +3,7 @@
.DS_Store
.sass-cache
build/
crowdin.yml
trans/
translate/
locale/
.netlify/

@ -6,3 +6,6 @@ gem 'tzinfo-data', platforms: [:mswin, :mingw, :jruby]
gem 'wdm', '~> 0.1', platforms: [:mswin, :mingw]
gem 'redcarpet'
gem 'middleman-syntax'
gem 'rake'
gem 'webrick'
gem 'mini_racer'

@ -1,57 +1,61 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (5.0.7.2)
activesupport (6.1.4.4)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
addressable (2.7.0)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
autoprefixer-rails (9.7.0)
autoprefixer-rails (9.8.6.5)
execjs
backports (3.15.0)
backports (3.23.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.12.2)
concurrent-ruby (1.1.5)
concurrent-ruby (1.1.9)
contracts (0.13.0)
dotenv (2.7.5)
dotenv (2.7.6)
erubis (2.7.0)
execjs (2.7.0)
fast_blank (1.0.0)
fastimage (2.1.7)
ffi (1.11.1)
haml (5.1.2)
execjs (2.8.1)
fast_blank (1.0.1)
fastimage (2.2.6)
ffi (1.15.4)
haml (5.2.2)
temple (>= 0.8.0)
tilt
hamster (3.0.0)
concurrent-ruby (~> 1.0)
hashie (3.6.0)
i18n (0.9.5)
i18n (1.6.0)
concurrent-ruby (~> 1.0)
kramdown (1.17.0)
kramdown (2.3.1)
rexml
libv8-node (16.10.0.0)
libv8-node (16.10.0.0-x86_64-linux)
listen (3.0.8)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
memoist (0.16.0)
middleman (4.3.5)
memoist (0.16.2)
middleman (4.4.2)
coffee-script (~> 2.2)
haml (>= 4.0.5)
kramdown (~> 1.2)
middleman-cli (= 4.3.5)
middleman-core (= 4.3.5)
kramdown (>= 2.3.0)
middleman-cli (= 4.4.2)
middleman-core (= 4.4.2)
middleman-autoprefixer (2.10.1)
autoprefixer-rails (~> 9.1)
middleman-core (>= 3.3.3)
middleman-cli (4.3.5)
middleman-cli (4.4.2)
thor (>= 0.17.0, < 2.0)
middleman-core (4.3.5)
activesupport (>= 4.2, < 5.1)
addressable (~> 2.3)
middleman-core (4.4.2)
activesupport (>= 6.1, < 7.0)
addressable (~> 2.4)
backports (~> 3.6)
bundler
bundler (~> 2.0)
contracts (~> 0.13.0)
dotenv
erubis
@ -60,56 +64,69 @@ GEM
fastimage (~> 2.0)
hamster (~> 3.0)
hashie (~> 3.4)
i18n (~> 0.9.0)
i18n (~> 1.6.0)
listen (~> 3.0.0)
memoist (~> 0.14)
padrino-helpers (~> 0.13.0)
padrino-helpers (~> 0.15.0)
parallel
rack (>= 1.4.5, < 3)
sassc (~> 2.0)
servolux
tilt (~> 2.0.9)
toml
uglifier (~> 3.0)
webrick
middleman-syntax (3.2.0)
middleman-core (>= 3.2)
rouge (~> 3.2)
minitest (5.13.0)
padrino-helpers (0.13.3.4)
i18n (~> 0.6, >= 0.6.7)
padrino-support (= 0.13.3.4)
mini_racer (0.6.0)
libv8-node (~> 16.10.0.0)
minitest (5.15.0)
padrino-helpers (0.15.1)
i18n (>= 0.6.7, < 2)
padrino-support (= 0.15.1)
tilt (>= 1.4.1, < 3)
padrino-support (0.13.3.4)
activesupport (>= 3.1)
parallel (1.18.0)
public_suffix (4.0.1)
rack (2.0.8)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
padrino-support (0.15.1)
parallel (1.21.0)
parslet (2.0.0)
public_suffix (4.0.6)
rack (2.2.3)
rake (13.0.6)
rb-fsevent (0.11.0)
rb-inotify (0.10.1)
ffi (~> 1.0)
redcarpet (3.5.0)
rouge (3.12.0)
sassc (2.2.1)
redcarpet (3.5.1)
rexml (3.2.5)
rouge (3.27.0)
sassc (2.4.0)
ffi (~> 1.9)
servolux (0.13.0)
temple (0.8.2)
thor (0.20.3)
thread_safe (0.3.6)
thor (1.2.1)
tilt (2.0.10)
tzinfo (1.2.5)
thread_safe (~> 0.1)
toml (0.3.0)
parslet (>= 1.8.0, < 3.0.0)
tzinfo (2.0.4)
concurrent-ruby (~> 1.0)
uglifier (3.2.0)
execjs (>= 0.3.0, < 3)
webrick (1.7.0)
zeitwerk (2.5.3)
PLATFORMS
ruby
x86_64-linux
DEPENDENCIES
middleman (~> 4.2)
middleman-autoprefixer (~> 2.7)
middleman-syntax
mini_racer
rake
redcarpet
tzinfo-data
wdm (~> 0.1)
webrick
BUNDLED WITH
2.1.0.pre.1
2.2.29

@ -2,4 +2,97 @@
The documentation for Plume, available at [docs.joinplu.me](https://docs.joinplu.me).
Uses middleman.
Uses [middleman][].
## Prerequisites
* Ruby
* [Crowdin CLI][] v3 if you build translations
* Netlify CLI if you deploy
## Setting up
Install RubyGems including [middleman][]:
```shell
bundle config set --local path vendor/bundle
bundle install
```
## Editing documentation
Run
```shell
bundle exec middleman
```
, visit http://localhost:4567/, and then you can see documentation site.
Edit files under `source` directory and reload your browser, then you see updated content. But this site doesn't include translations. If you want to include translated pages, see next section.
After editing, create a pull request.
## Building site with translation integration
If you want to build site with translations, you need set up [Crowdin CLI][].
Run
```shell
bundle exec rake build_site
```
and then the site with translations is built under `build` directory. You can see the site using one-liner server such as
```shell
ruby -run -e httpd build
```
or web server such as Caddy.
## Updating translation strings
When you add and/or modify strings from current sources, you may want to translate them. To do so, updated contents need to be uploaded to Crowdin. Run
```shell
bundle exec rake crowdin:upload
```
then you can translate strings at Crowdin.
## Building translation site
When you build site for https://translate.docs.joinplu.me/, run
```shell
bundle exec rake build_trans
```
then the site is built under `translate` directory.
## Deploying site
You need [Netlify CLI][] if you deploy site.
Run
```shel
bundle exec rake deploy
```
then you can see updated site at https://docs.joinplu.me/.
## Deploying translation site
Run
```shell
bundle exec rake deploy_trans
```
and then you can see updated translation site at https://translate.docs.joinplu.me/.
[middleman]: https://middlemanapp.com/
[Crowdin CLI]: https://support.crowdin.com/cli-tool/
[Netlify CLI]: https://cli.netlify.com/

@ -0,0 +1,86 @@
require "pathname"
BUILD_DIR = Pathname("build")
LOCALE_DIR = Pathname("trans")
TRANS_DIR = Pathname("translate")
PSEUDO_LANG = "ach-UG"
CROWDIN_SNIPPET = <<EOS
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'plume-docs']);
_jipt.push(['escape', function() {
window.location.href = 'https://joinplu.me';
}]);
</script>
<script type="text/javascript" src="//cdn.crowdin.com/jipt/jipt.js"></script>
EOS
class Pathname
alias to_str to_s
end
desc "Run all tasks"
task :all => ["crowdin:upload", :wait_trans_updated, :deploy, :deploy_trans]
task :wait_trans_updated do
sleep 30
end
desc "Build site"
task :build_site => [:build_base, "crowdin:download"] do
LOCALE_DIR.glob("**/*.html").each do |html|
dest = Pathname(html.to_path.sub(%r|#{LOCALE_DIR}/([^/]+)/trans|, "#{BUILD_DIR}/\\1"))
next if dest.file?
dest.parent.mkpath
copy html, dest
end
end
task :build_base do
sh "bundle", "exec", "middleman", "build"
end
desc "Build site for translate.docs.joinplu.me"
task :build_trans => "crowdin:download" do
sh "bundle", "exec", "middleman", "build", "--build-dir", TRANS_DIR
(LOCALE_DIR/PSEUDO_LANG/"trans").glob("**/*.html").each do |html|
doc = html.read
doc.sub! "<head>", "<head>" + CROWDIN_SNIPPET
dest = Pathname(html.to_path.sub(LOCALE_DIR/PSEUDO_LANG/"trans", TRANS_DIR))
$stderr.puts "#{html} -> #{dest}"
dest.write doc
end
end
task :build_trans_src do
sh "bundle", "exec", "middleman", "build", "--build-dir", LOCALE_DIR
end
desc "Deploy docs.joinplue.me"
task :deploy => :build_site do
sh "netlify", "deploy", "--site", "40419055-f669-42be-8d07-0c1dcc0dc24b", "--dir", BUILD_DIR, "--prod"
end
desc "Deploy translate.docs.joinplue.me"
task :deploy_trans => :build_trans do
sh "netlify", "deploy", "--site", "2b1e232b-ac98-4680-9ab4-6d4eee0d84cb", "--dir", TRANS_DIR, "--prod"
end
namespace :crowdin do
desc "Download translations"
task :download => :build_trans_src do
sh "crowdin", "download"
end
desc "Upload translation sources"
task :upload => :build_trans_src do
sh "crowdin", "upload", "sources"
end
task :download_pseudo do
sh "crowdin", "download", "--pseudo"
end
end

@ -1,10 +1,12 @@
# Activate and configure extensions
# https://middlemanapp.com/advanced/configuration/#configuring-extensions
set :relative_links, true
set :markdown_engine, :redcarpet
set :markdown, :fenced_code_blocks => true, :smartypants => true
set :markdown, :fenced_code_blocks => true, :smartypants => true, :with_toc_data => true
activate :syntax
activate :syntax, css_class: "pygments"
activate :directory_indexes
@ -20,3 +22,19 @@ configure :build do
# activate :minify_css
# activate :minify_javascript
end
DEFAULT_LANGUAGE = "en"
helpers do
def link_to_lang(name, code, **opts)
base = code == DEFAULT_LANGUAGE ? "/" : "/#{code}/"
path = base + current_page.path
.sub(/index\.html\z/, "")
.sub(%r|\.html\z|, "/")
link_to(h(name), path, hreflang: h(code), rel: "alternate")
end
end
def URI.escape(*args)
encode_www_form_component(*args)
end

@ -0,0 +1,136 @@
#
# Your Crowdin credentials
#
"project_id" : "356119"
"api_token_env": "CROWDIN_PERSONAL_TOKEN"
"base_path" : "."
"base_url" : "https://api.crowdin.com"
#
# Choose file structure in Crowdin
# e.g. true or false
#
"preserve_hierarchy": true
#
# Files configuration
#
files: [
{
#
# Source files filter
# e.g. "/resources/en/*.json"
#
"source" : "/trans/**/*.html",
#
# Where translations will be placed
# e.g. "/resources/%two_letters_code%/%original_file_name%"
#
"translation" : "/trans/%locale%/%original_path%/%original_file_name%",
#
# Files or directories for ignore
# e.g. ["/**/?.txt", "/**/[0-9].txt", "/**/*\?*.txt"]
#
#"ignore" : [],
#
# The dest allows you to specify a file name in Crowdin
# e.g. "/messages.json"
#
#"dest" : "",
#
# File type
# e.g. "json"
#
#"type" : "",
#
# The parameter "update_option" is optional. If it is not set, after the files update the translations for changed strings will be removed. Use to fix typos and for minor changes in the source strings
# e.g. "update_as_unapproved" or "update_without_changes"
#
#"update_option" : "",
#
# Start block (for XML only)
#
#
# Defines whether to translate tags attributes.
# e.g. 0 or 1 (Default is 1)
#
# "translate_attributes" : 1,
#
# Defines whether to translate texts placed inside the tags.
# e.g. 0 or 1 (Default is 1)
#
# "translate_content" : 1,
#
# This is an array of strings, where each item is the XPaths to DOM element that should be imported
# e.g. ["/content/text", "/content/text[@value]"]
#
# "translatable_elements" : [],
#
# Defines whether to split long texts into smaller text segments
# e.g. 0 or 1 (Default is 1)
#
# "content_segmentation" : 1,
#
# End block (for XML only)
#
#
# Start .properties block
#
#
# Defines whether single quote should be escaped by another single quote or backslash in exported translations
# e.g. 0 or 1 or 2 or 3 (Default is 3)
# 0 - do not escape single quote;
# 1 - escape single quote by another single quote;
# 2 - escape single quote by backslash;
# 3 - escape single quote by another single quote only in strings containing variables ( {0} ).
#
# "escape_quotes" : 3,
#
# Defines whether any special characters (=, :, ! and #) should be escaped by backslash in exported translations.
# e.g. 0 or 1 (Default is 0)
# 0 - do not escape special characters
# 1 - escape special characters by a backslash
#
# "escape_special_characters": 0
#
#
# End .properties block
#
#
# Often software projects have custom names for the directories where translations are placed. crowdin-cli allows you to map your own languages to be understandable by Crowdin.
#
#"languages_mapping" : {
# "two_letters_code" : {
# "crowdin_language_code" : "local_name"
# }
#},
#
# Does the first line contain header?
# e.g. true or false
#
#"first_line_contains_header" : true,
#
# for spreadsheets
# e.g. "identifier,source_phrase,context,uk,ru,fr"
#
# "scheme" : "",
}
]

@ -0,0 +1,35 @@
---
af-ZA: Afrikaans
ar-SA: العربية
ca-ES: Català
cs-CZ: Česky
da-DK: Dansk
de-DE: Deutsch
el-GR: Ελληνικά
en-US: English
eo-UY: Esperanto
es-ES: Español
fa-IR: فارسی
fi-FI: Suomi
fr-FR: Français
gl-ES: Galego
he-IL: עברית
hu-HU: Magyar
it-IT: Italiano
ja-JP: 日本語
ko-KR: 한국어
nl-NL: Nederlands
no-NO: Norsk (bokmål)
pl-PL: Polski
pt-PT: Português
ro-RO: Română
ru-RU: Русский
sat-IN: ᱥᱟᱱᱛᱟᱲᱤ
si-LK: සිංහල
sr-SP: Српски
sv-SE: Svenska
tr-TR: Türkçe
uk-UA: Українська
vi-VN: Việtnam
zh-CN: 简体中文
zh-TW: 繁體中文

@ -1,19 +1,16 @@
<nav>
<ul>
<li>
<a href="https://joinplu.me"><img src="/images/logo.svg" alt="Plume logo">Plume</a>
</li>
<li>
<a href="https://contribute.joinplu.me/">Contribute</a>
<% link_to "/index.html" do %><img src="/images/logo.svg" alt="Plume logo">Plume<% end %>
</li>
<li>
<a href="https://github.com/Plume-org/Plume">Source code</a>
<%= link_to "Contribute", "/contribute/index.html" %>
</li>
<li>
<a href="https://riot.im/app/#/room/#plume:disroot.org">Chat room</a>
<a href="https://git.joinplu.me/Plume/Plume">Source code</a>
</li>
<li>
<a href="https://framavox.org/g/WK40YHMA/plume">Loomio group</a>
<a href="https://matrix.to/#/#plume-blog:matrix.org">Chat room</a>
</li>
</ul>
</nav>
</nav>

@ -11,10 +11,10 @@
.sort{ |a, b| -(a.data.priority || 0) <=> -(b.data.priority || 0) }
%>
<% if children.size == 0 %>
<a href="<%= i.url %>"><%= i.data.title %></a>
<%= link_to i.data.title, i %>
<% else %>
<details>
<summary><a href="<%= i.url %>"><%= i.data.title %></a><i data-feather="chevron-left"></i></summary>
<summary><%= link_to i.data.title, i %><i data-feather="chevron-left"></i></summary>
<%= partial :nav_item, :locals => {
:items => children,
:resources => resources

@ -33,19 +33,19 @@ paths:
List posts.
parameters:
- name: title
in: path
in: query
description: Only list article with this specific title
required: false
schema:
type: string
- name: subtitle
in: path
in: query
description: Only list article with this specific subtitle
required: false
schema:
type: string
- name: content
in: path
in: query
description: Only list article with this specific content (in HTML)
required: false
schema:
@ -85,9 +85,12 @@ paths:
cover_id:
description: The ID of the cover image.
type: integer
author:
description: The username of the user who is authoring the post.
type: string
required:
- title
- description
- source
- author
definitions:
@ -138,7 +141,7 @@ definitions:
type: array
example:
- "alice"
- "bob@plume.one"
- "bob@plume01.localhost"
blog_id:
description: The ID of the blog in which this article was published.
type: integer

@ -8,16 +8,16 @@ time: 5 minutes
Plume is probably not perfect, and may contain bugs. If you see something that seems
abnormal (unexpected behavior, display issue, a grammar mistake, etc), you can report it, so that we can fix it.
## If you have a GitHub account
## If you have a Gitea or GitHub account
If the issue is about Plume itself, go on [this page](https://github.com/Plume-org/Plume/issues/new?assignees=&labels=C%3A+Bug&template=bug_report.md&title=).
If the issue is about Plume itself, go on [Gitea issues page](https://git.joinplu.me/Plume/Plume/issues/new) ([GitHub issues page](https://github.com/Plume-org/Plume/issues/new?assignees=&labels=C%3A+Bug&template=bug_report.md&title=)).
Then, all you have to do is to fill the title and the description of your issue, and to validate.
If your issue isn't about Plume itself, find the appropriate repository [in the list](https://github.com/Plume-org), go to the "Issues"
If your issue isn't about Plume itself, find the appropriate repository [in the list](https://git.joinplu.me/Plume)([GitHub](https://github.com/Plume-org)), go to the "Issues"
tab, click the green "New issue" button, and describe your problem.
## If you don't have a GitHub account
## If you don't have a Gitea nor GitHub account
If you don't have a GitHub account, and don't want to create one, you can also report your issue on Matrix.
Join the Plume room as explained in [this guide](/contribute/discussion), and send a message explaining what is wrong.
We will take care of creating an issue on GitHub for you.
If you don't have a Gitea nor GitHub account, and don't want to create one, you can also report your issue on Matrix.
Join the Plume room as explained in [this guide](../discussion/), and send a message explaining what is wrong.
We will take care of creating an issue on Gitea or GitHub for you.

@ -6,29 +6,23 @@ time: 30 minutes
---
Some people contribute to Plume by improving it's source code. They propose changes to the
software throught what is called "pull requests" on GitHub (thus you will need to create a GitHub
account to follow this guide, if you don't have one yet).
software throught what is called "pull requests" on Gitea or GitHub (thus you will need to create a Gitea
or GitHub account to follow this guide, if you don't have one yet).
Here is the [list of all pull requests needing to be reviewed](https://github.com/Plume-org/Plume/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc+review%3Arequired+label%3A%22S%3A+Ready+for+review%22).
Here is the [list of all pull requests needing to be reviewed](https://git.joinplu.me/Plume/Plume/pulls?q=&labels=57)([GitHub](https://github.com/Plume-org/Plume/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc+review%3Arequired+label%3A%22S%3A+Ready+for+review%22)).
Choose one that seems interesting to you, read the discussion for context about what needs to be reviewed,
and what was already tested, and start your review.
## Test the changes
Each pull request is deployed in live so that you can easily test the changes they bring.
The URL to access the test instance is `https://pr-XXX.joinplu.me/`, where `XXX` is the number
of the pull request (that is shown next to the title on GitHub).
To test the changes, you need build development environment following the [development guide](../development/).
A list of all running test instances is also available on [pr-list.joinplu.me](https://joinplu.me). Only
five instances may run at the same time, to avoid to overload our server. If the instance you wanted to access
is not available, wait for the CI to run again (it will restart it), choose another pull request, or test it locally
if you know how to do it.
After that, check out the source code of the pull reuquest you will test. You can see from which repository and branch you should checkout at the pull request page, For instance, [issue #813](https://git.joinplu.me/Plume/Plume/pulls/813) was sent from `igalic/Plume:refactor/extract-actors`. You can know that by seeing the line blow title of the pull request, which says "igalic wants to merge 18 commits from igalic/Plume:refactor/extract-actors into main".
![](https://i.gyazo.com/00c352f66ad85f550a34784e8706dc71.png)
A good start is to go to the test instance for your pull request, and to see if everything works as expected,
but also to try to find some corner cases that were not expected, and that may break something.
Check out the branch, build code, run migration if needed and you can now test the changes by visiting `http://localhost:7878`.
Don't hesitate to try the feature on different devices too, and from different browser, especially if it changes
the user interface.
Leep comments at the pull request page after you tested.
## Review the code
@ -36,7 +30,7 @@ If you know one of the programming languages used in Plume (Rust, SCSS, HTML and
of the code: give advices about it's efficiency, ask for clarification if you are not sure what it does, point out potential
bugs, etc.
You can do that by going to the "Files changed" tab on the page of pull request on GitHub. Then you will be able to comment on the
You can do that by going to the "Files changed" tab on the page of pull request on Gitea or GitHub. Then you will be able to comment on the
diff, as seen in this GIF:
![Commenting on the diff](/images/code-review.gif)
@ -45,7 +39,7 @@ diff, as seen in this GIF:
Once you tested the changes, you need to tell to the person who proposed the pull request what you found.
The best way to do that is to go to the "Files changed" tabs on the GitHub pull request, and to click the green "Review
The best way to do that is to go to the "Files changed" tabs on the Gitea or GitHub pull request, and to click the green "Review
changes" button, in the top right corner. Then write a comment in the box that appears, explaining what worked, and what went
wrong. Don't hesitate to give precise information, explaining how to reproduce issues for instance. When making comments
about someone else's work, be kind, and try to make constructive critics.

@ -10,7 +10,7 @@ Plume is mostly made in Rust. The back-end uses Rocket and Diesel. The front-end
is in Rust too, thanks to WebAssembly. The stylesheets are written in SCSS.
If you want to write some code but you don't really know where to start, you
can try to find [an issue that interests you](https://github.com/Plume-org/Plume/issues).
can try to find [an issue that interests you](https://git.joinplu.me/Plume/Plume/issues) ([GitHub](https://github.com/Plume-org/Plume/issues)).
Then, fork Plume (if you didn't already do it), `git clone` your fork, and start a
new branch with `git checkout -b NAME-OF-THE-BRANCH`. You can now start to work on the
@ -18,12 +18,12 @@ issue.
Once you have something working, do `git add FILES THAT YOU CHANGED` (or `git add .` to add them all),
and then `git commit`. Write a message explaining your changes, and do `git push origin NAME-OF-THE-BRANCH`
to upload your work to GitHub. Open the URL that appears in the output of this last command to open
to upload your work to Gitea or GitHub. Open the URL that appears in the output of this last command to open
a pull request, that we will then review, and eventually merge.
## Installing the development environment
Please refer to the [installation guide](/installation). Choose to compile Plume
Please refer to the [installation guide](../../installation/). Choose to compile Plume
from source when asked. Instead of using `cargo install`, use `cargo run` which
starts a freshly compiled debugging version of Plume.
@ -80,7 +80,7 @@ also owned by the "plume" user, but with a different name. Then, you'll need to
this instance too.
The easiest way to do it is probably to install `plm` and `plume` globally (as explained
[here](/installation/with/source-code)), but with the `--debug` flag to avoid long compilation
[here](../../installation/with/source-code/)), but with the `--debug` flag to avoid long compilation
times. Then create a copy of your `.env` file in another directory, and change the `DATABASE_URL`
and `ROCKET_PORT` variables. Then copy the migration files in this new directory and run them.
@ -88,15 +88,15 @@ and `ROCKET_PORT` variables. Then copy the migration files in this new directory
plm migration run
```
Setup the new instance with `plm` [as explained here](/installation/config).
Setup the new instance with `plm` [as explained here](../../installation/config/).
Now, all you need for your two instances to be able to communicate is a fake domain
name with HTTPS for each of them. The first step to have that on your local machine is
to edit your `/etc/hosts` file, to create two new aliases by adding the following lines.
```
127.0.0.1 plume.one
127.0.0.1 plume.two
127.0.0.1 plume01.localhost
127.0.0.1 plume02.localhost
```
Now, we need to create SSL certificates for each of these domains. We will use `mkcert`
@ -105,39 +105,36 @@ Once you installed it, run.
```bash
mkcert -install
mkcert plume.one plume.two
mkcert plume01.localhost
mkcert plume02.localhost
```
Finally, we need a reverse proxy to load these certificates and redirect to the correct Plume instance for each domain.
We will use Caddy here as it is really simple to configure, but if you are more at ease with something else you can also
use alternatives.
To install Caddy, please refer to [their website](https://caddyserver.com/download). Then create
To install Caddy, please refer to [their website](https://caddyserver.com/docs/install). Then create
a file called `Caddyfile` in the same directory you ran `mkcert` and write this inside.
```
plume.one:443 {
bind 127.0.0.1
proxy / 127.0.0.1:7878 {
transparent
}
tls plume.one+1.pem plume.one+1-key.pem
plume01.localhost {
reverse_proxy localhost:7878
tls plume01.localhost.pem plume01.localhost-key.pem
}
plume.two:443 {
bind 127.0.0.1
proxy / 127.0.0.1:8787 {
transparent
}
tls plume.one+1.pem plume.one+1-key.pem
plume02.localhost {
reverse_proxy 127.0.0.1:8787
tls plume02.localhost.pem plume02.localhost-key.pem
}
```
Eventually replace the ports in the `proxy` blocks by the one of your two instances, and
then run `caddy`. You can now open your browser and load `https://plume.one` and `https://plume.two`.
then run `caddy`. You can now open your browser and load `https://plume01.localhost` and `https://plume02.localhost`.
## Running tests
To run tests, use `DATABASE_URL` for tests and run migration at first.
To run tests of `plume-models` use `RUST_TEST_THREADS=1`, otherwise tests are run
concurrently, which causes error because they all use the same database.
@ -150,7 +147,7 @@ second the string to translate. You can specify format arguments after a `;`.
If your string vary depending on the number of elements, provide the plural version
as the third arguments, and the number of element as the first format argument.
You can find example uses of this macro [here](https://github.com/Plume-org/gettext-macros#example).
You can find example uses of this macro [here](https://git.joinplu.me/plume/gettext-macros#user-content-example).
There is no need to provide individual translations of `i18n!`-wrapped strings in pull requests.
The strings will be uploaded to a third-party web service and translated automatically as
@ -166,11 +163,11 @@ If it is not, ask someone who has access to the Crowdin API key (like a Crowdin
To find a manager, look at the list [in the sidebar of this page](https://crowdin.com/project/plume).
These people are managers because they were involved enough in the project, and especially in the translation process.
If you want to become a manager on Crowdin too, ask us [on Matrix](https://matrix.to/#/#plume:disroot.org).
If you want to become a manager on Crowdin too, ask us [on Matrix](https://matrix.to/#/#plume-blog:matrix.org).
Then, in `src/main.rs` and `plume-front/src/main.rs`, add the code corresponding to the language in the `init_i18n!` macro.
If you don't know the code for the language: it is the name of the `.po` file, without the extension.
Here is an exemple of [a Pull Request adding Persian](https://github.com/Plume-org/Plume/pull/782).
Here is an exemple of [a Pull Request adding Persian](https://git.joinplu.me/Plume/Plume/pulls/782).
`cargo check` to make sure everything compiles, and you are good to go!

@ -1,12 +1,11 @@
---
title: Join the discussion
icon: users
summary: 'Join our Matrix room, or our Loomio to take part to discussions about Plume, share your feedback, or ask for help.'
summary: 'Join our Matrix room to take part to discussions about Plume, share your feedback, or ask for help.'
time: 10 minutes
---
Discussion about Plume mostly take place on two websites: Loomio (long posts, more like a forum with decision tools) and Matrix
(instant chat, more suited for support or feedback).
Discussion about Plume mostly take place on Matrix (instant chat, suited for support or feedback).
Most of the discussions are in English, but if you are not fluent enough, you can speak in another language your are more comfortable
with, maybe we speak it too, and even if we don't we will find ways to talk with you, don't worry!
@ -15,18 +14,10 @@ with, maybe we speak it too, and even if we don't we will find ways to talk with
Matrix is federated chat (but it doesn't use ActivityPub 😛). If you don't have an account yet, you
can find an instance [here](https://www.hello-matrix.net/public_servers.php) (if you don't know which one to choose, just go for matrix.org).
Once you created an account, open [this link to join `#plume:disroot.org`](https://riot.im/app/#/room/#plume:disroot.org). And you are done!
Once you created an account, open [this link to join `#plume-blog:matrix.org`](https://matrix.to/#/#plume-blog:matrix.org). And you are done!
This place is the best one to give feedback or to ask for help if you encounter issues while using Plume, or while contributing for example.
## Joining the Loomio
Our Loomio group is hosted [on Framavox](https://framavox.org/g/WK40YHMA/plume).
You will only be asked an email address to join it. Then, you will be able to comment
on discussion, open new topics and vote. Feel free to take part in any topic that seems interesting.
All the features that need the input from the whole community are discussed here.
## Giving us feedback
If you want to give us feedback about Plume, the best place is the Matrix room (you can do it in other places, but it is more likely to be missed).

@ -7,7 +7,7 @@ time: 30 minutes
Having an accurate, understandable and complete documentation is important.
Our documentation is [hosted on GitHub](https://github.com/Plume-org/docs), so you
Our documentation is [hosted on Gitea](https://git.joinplu.me/plume/documentation), so you
will need an account here if you want to edit it. You will probably need to fork it
to create a temporary copy you have the right to edit (with the button in the top right corner).
@ -35,19 +35,19 @@ You can find a list of the icons you can use on [this page](https://feathericons
Our current documentation is probably not perfect, and proof-reading it helps a lot! However please note
this part only applies to the English documentation, if you want to improve the documentation in another language,
see how to [translate it](/contribute/translations).
see how to [translate it](../translations/).
To fix the mistakes you found, you will need to fork the documentation on GitHub (as explained in the first
To fix the mistakes you found, you will need to fork the documentation on Gitea (as explained in the first
paragraph of the previous part).
Once it's done, choose the page you want to review, and find the corresponding file on GitHub (the URL of the page in
Once it's done, choose the page you want to review, and find the corresponding file on Gitea (the URL of the page in
the documentation and the name of the files are normally the same). Read the page to see if you can find typos, grammar
mistakes, sentences that can be improved, etc. If you see anything that could be improved, go to GitHub and edit the file.
mistakes, sentences that can be improved, etc. If you see anything that could be improved, go to Gitea and edit the file.
## Saving your work and proposing your changes
Once you finished, you can save your work. To do that, GitHub asks you to make a short summary of your changes.
Once you finished, you can save your work. To do that, Gitea asks you to make a short summary of your changes.
![The box to write a summary of your changes](/images/new-docs-page.png)

@ -10,15 +10,14 @@ you have to propose.
## It may need to be discussed
If your feature is controversial, or not totally clear yet, the best is to open a new discussion
[on Loomio](https://framavox.org/g/WK40YHMA/plume). If you are not sure how to do that, we have
[a guide about it](/contribute/discussion). Give as much details as possible. Especially, explain
which problem you are trying to solve with this new feature.
If your feature is controversial, or not totally clear yet, the best is to open a new issue
on [Gitea](https://git.joinplu.me/Plume/Plume/issues/new) ([GitHub](https://github.com/Plume-org/Plume/issues/new?template=feature_request.md)).
Give as much details as possible. Especially, explain which problem you are trying to solve with this new feature.
## It doesn't really need to be discussed
Then you can open [an issue on GitHub](https://github.com/Plume-org/Plume/issues/new?assignees=&labels=&template=feature_request.md&title=),
Then you can open on [Gitea](https://git.joinplu.me/Plume/Plume/issues/new) ([GitHub](https://github.com/Plume-org/Plume/issues/new?template=feature_request.md)),
if you have an account there. Just fill the information asked in the form, and click "Submit new issue".
If you don't have a GitHub account, you can also suggest your feature in [the Matrix room](/contribute/discussion), and we
If you don't have a Gitea nor GitHub account, you can also suggest your feature in [the Matrix room](../discussion/), and we
will create the issue for you.

@ -5,7 +5,7 @@ icon: heart
priority: 2
---
<p><b>Before contributing, be sure to read and agree with our <a href="/organization/code-of-conduct">Code of conduct</a></b></p>
<p><b>Before contributing, be sure to read and agree with our <a href="../../organization/code-of-conduct/">Code of conduct</a></b></p>
<p>Here is a (non-exhaustive) list of how you can contribute to Plume. Some may suit you better, depending on your skills and the time you want to offer to the project</p>
@ -19,7 +19,7 @@ priority: 2
<article>
<i data-feather="<%= res.data.icon %>"></i>
<h2>
<a href="<%= res.url %>"><%= res.data.title %></a>
<%= link_to res.data.title, res %>
</h2>
<p><%= res.data.summary %></p>
<% if res.data.time %>
@ -34,11 +34,11 @@ priority: 2
<ul>
<li>Talk about the project (super easy, and super helpful)</li>
<li>Write articles on Plume</li>
<li><a href="/installation">Open your own instance</a></li>
<li><%= link_to "Open your own instance", "/installation/index.html" %></li>
<li>Make a security audit</li>
<li>Integrate Plume with other projects. For instance you could use the <a href="/API">API</a> to make it possible to publish on Plume from your favorite writing app</li>
<li>Integrate Plume with other projects. For instance you could use the <a href="../../API/">API</a> to make it possible to publish on Plume from your favorite writing app</li>
</ul>
<p>If you contributed to Plume, you can add yourself to the <a href="/organization/contributors">contributors page</a> if you want.</p>
<p>If you contributed to Plume, you can add yourself to the <%= link_to "contributors page", "/organization/contributors.html" %> if you want.</p>
<p>If you ever encounter some difficulties while trying to contribute, please <a href="/contribute/discussion">tell us</a>, we will be happy to help you.</p>
<p>If you ever encounter some difficulties while trying to contribute, please <%= link_to "tell us", "/contribute/discussion.html" %>, we will be happy to help you.</p>

@ -29,7 +29,7 @@ One these pages, you will find a list of languages. Select the one you want to t
![The list of all currently available languages](/images/language-list.png)
If your language is not in the list, [tell us](/contribute/discussion), we will add it.
If your language is not in the list, [tell us](../discussion/), we will add it.
Once you selected a language, you will see a list of files to translate. Find one that is not
100% complete, and open it. Something like that should load:
@ -70,6 +70,10 @@ When translating Plume (and related projects), please try to follow these rules:
The style of inclusive that is choosen is not very important (just try to keep coherent with what is already done).
- Don't be too formal (but stay polite!).
### Translation guides
- [French translation guide](../translations_fr/)
---
That's it, you know everything you need to translate Plume! Thank you for your help!

@ -0,0 +1,18 @@
---
title: Guide stylistique
icon: flag
summary: 'Guide stylistiques et recommendations pour la traduction de Plume en français'
time: 2 minutes
---
## Forme inclusive
- employer des [mots épicènes](https://fr.wikipedia.org/wiki/Mot_%C3%A9pic%C3%A8ne)
- employer le point médian: `musicien·nes`, `motivé·es`
## Glossaire
- email: e-mail
- feed: flux
- tag: étiquette
- token: jeton

@ -8,6 +8,8 @@ to configure the database, or the HTTP interface for instance.'
Plume relies on some environment variables for some configuration options. You can either set them before
starting the app with `cargo run` or write them in a `.env` file to have automatically loaded.
## Basic
Here are the variables that Plume uses:
- `BASE_URL`: the domain name, or IP and port on which Plume is listening. It is used in all federation-related code.
@ -17,15 +19,25 @@ Here are the variables that Plume uses:
- `ROCKET_PORT`: the port on which Plume should listen ([`7878` by default](https://twitter.com/ag_dubs/status/852559264510070784)).
- `ROCKET_SECRET_KEY`: key used to sign private cookies and for CSRF protection. If it is not set, it will be regenerated everytime you restart Plume,
meaning that all your users will get disconnected. You can generate one with `openssl rand -base64 32`.
- `FORM_SIZE`: the maximum amount of form data Plume will accept. `32768` (32MiB) by default.
- `ACTIVITY_SIZE`: the maximum amount of ActivityPub message data Plume will accept.
- `SEARCH_INDEX`: the directory where the search index will be saved (`search_index` by default).
- `SEARCH_TAG_TOKENIZER`: the tokenizer used for tags when searching. `simple`, `ngram`, `whitespace` and `lindera` are available. `simple` tokenizer tokenizes the text by splitting on whitespaces and punctuation. `ngram` tokenizes by splitting words into bigram at a minimum and 8-gram at a maximum. `whitespace` tokenizes by splitting on whitespaces but not on punctuation. `lindera` tokenizes the text by splitting into Japanese morpheme, which is available only when build with `search-lindera` feature. `whitespace` by default. Since v0.5.0.
- `SEARCH_CONTENT_TOKENIZER`: the tokenizer used for blog contents when searching. The same tokenizers to `SEARCH_TAG_TOKENIZER` are available. `simple` by default. Since v0.5.0.
- `SEARCH_LANG`: the shortcut for the combination of `SEARCH_TAG_TOKENIZER` and `SEARCH_CONTENT_TOKENIZER`. Currently supports only `ja` and it requires `search-lindera` feature on build. This is experimental and might change in the future. Since v0.5.0.
- `MEDIA_UPLOAD_DIRECTORY`: the directory in which to store the uploaded medias (`./static/media` by default). Plume won't create this directory if it doesn't exist, so make sure to create it before.
- `DEFAULT_THEME`: the name of the default theme. It should be the same as the name of the directory containing the theme in `static/css`.
- `DB_MAX_SIZE`: the maximum number of database connections (`10` by default). Since 0.5.0.
- `DB_MIN_IDLE`: the minimum idle database connection count (the same to `DB_MAX_SIZE` by default). Since 0.5.0.
- `DB_MAX_SIZE`: the maximum number of database connections (`10` by default). Since v0.5.0.
- `DB_MIN_IDLE`: the minimum idle database connection count (the same to `DB_MAX_SIZE` by default). Since v0.5.0.
- `SIGNUP`: the sign-up strategy (`password` by default). "password" means anyone can sign up with email address and password without confirmation. "email" means Plume requires email confirmation, which needs the mail server configuration detailed later. Since 0.7.1.
- `RUST_LOG`: the log level Plume outputs (`info` by default). You can set it for each library such as `RUST_LOG=debug,html5ever=warn,hyper=warn,tantivy=warn`.
## Mail
The SMTP server to send mails can be configured with:
- `MAIL_SERVER`: the SMTP server to connect to.
- `MAIL_PORT`: the SMTP port number.
- `MAIL_USER`: the username for authentication purposes.
- `MAIL_PASSWORD`: its password.
- `MAIL_HELO_NAME`: the name sent during EHLO/HELO.
@ -34,6 +46,8 @@ The SMTP server to send mails can be configured with:
For the moment, Plume only sends mail when you need to reset your password (and only from the web interface, `plm users reset-password` doesn't send anything).
If you don't plan to use this feature, you can simply remove (or comment) the lines to configure the mail server in your `.env`.
## Logo
You can also change the logo you want to use for your instance in this file. Your logo should be in the `static` directory.
To make Plume load it, you can use:
@ -59,3 +73,21 @@ PLUME_LOGO_192=icons/trwnh/paragraphs/plumeParagraphs192.png
PLUME_LOGO_256=icons/trwnh/paragraphs/plumeParagraphs256.png
PLUME_LOGO_512=icons/trwnh/paragraphs/plumeParagraphs512.png
```
## LDAP
Plume support delegating authentication via LDAP since v0.6.0.
- `LDAP_ADDR`: address of the LDAP server
- `LDAP_BASE_DN`: base DN used when binding, see explanation below
- `LDAP_USER_NAME_ATTR`: attribut with user name used when binding, see explanation below (default=`cn`)
- `LDAP_USER_MAIL_ATTR`: attribut containing the mail address of the user (default=`mail`)
- `LDAP_TLS`: connect to the LDAP server using TLS (default=false)
Plume determines what to bind using `LDAP_BASE_DN`, `LDAP_USER_NAME_ATTR` and the user name.
Assuming what you need Plume to bind is `username={user name},ou=users,dc=your-org`, the configuration would be the following:
```bash
LDAP_BASE_DN=ou=users,dc=your-org
LDAP_USER_NAME_ATTR=username
```

@ -10,7 +10,7 @@ so all you need to know to write a theme is to know CSS.
# Base template
A good start can be the official base theme, that is written in SCSS, and that you can find
[in Plume's repository](https://github.com/Plume-org/Plume/tree/master/assets/themes/default).
[in Plume's repository](https://git.joinplu.me/Plume/Plume/src/branch/main/assets/themes/default).
You can copy these files (they are under the AGPL-3.0 license), and start by changing the variables
in `_variables.scss`. If you use this theme as a basis, the [SASS/SCSS](https://sass-lang.com/) will be
needed to transform it to a single CSS file that an admin can install on their instance.
@ -18,7 +18,7 @@ needed to transform it to a single CSS file that an admin can install on their i
To test your theme, you can install a browser extension like [*Stylish*](https://userstyles.org) and copy your CSS inside.
Plume updates may sometimes break your theme (if we make a layout change, add a new CSS class, or so on).
If you want to ensure your theme continues to work as Plume is developed, following [the project on GitHub](https://github.com/Plume-org/Plume/) can notify you when we make changes that might affect your theme.
If you want to ensure your theme continues to work as Plume is developed, following [the project on Gitea](https://git.joinplu.me/Plume/Plume)([GitHub](https://github.com/Plume-org/Plume/)) can notify you when we make changes that might affect your theme.
Pull requests and commits breaking themes are normally clearly identified as such.
# Detailed explanations

@ -25,7 +25,7 @@ For blogs it is `https://your.instance/~/name@other.instance`
When opening a remote profile like that, Plume will fetch articles this person has already published.
However, it can take some time, so try to refresh the page a few times if no articles appears on the first try.
Also note that old articles are not yet fetched when viewing a remote blog for the first time
(this issue will probably be fixed sooner or later, see [#542](https://github.com/Plume-org/Plume/issues/542) for updates).
(this issue will probably be fixed sooner or later, see [#542](https://git.joinplu.me/Plume/Plume/issues/542) for updates).
## Start to federate

@ -15,7 +15,7 @@ priority: 4
<article>
<i data-feather="<%= res.data.icon %>"></i>
<h2>
<a href="<%= res.url %>"><%= res.data.title %></a>
<%= link_to res.data.title, res %>
</h2>
<p><%= res.data.summary %></p>
</article>

@ -31,4 +31,4 @@ Language is the name of the language you are using.
The supported languages are those in [this repository](https://github.com/sublimehq/Packages/tree/fa6b8629c95041bf262d4c1dab95c456a0530122) since we use SublimeText's syntax file.
Usually the name is in lower-case: for instance `Python` can be highlighted with `python`.
To configure the theme to use, you will have to [choose a different theme for your bblog](/guide/manage-a-blog).
To configure the theme to use, you will have to [choose a different theme for your bblog](../manage-a-blog/).

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

@ -15,7 +15,7 @@ show_links: yes
<article>
<i data-feather="<%= res.data.icon %>"></i>
<h2>
<a href="<%= res.url %>"><%= res.data.title %></a>
<%= link_to res.data.title, res %>
</h2>
<p><%= res.data.summary %></p>
</article>

@ -48,7 +48,7 @@ MAIL_ADDRESS=from@example.org
```
For more information about what you can put in your `.env`,
see [the documentation about environment variables](/environment).
see [the documentation about environment variables](../../environment/).
Now we need to run migrations. Migrations are scripts used to update
the database. To run the migrations, you can do for **GNU/Linux** and **Mac OS X**:
@ -83,15 +83,17 @@ plm instance new
plm users new --admin
```
Note if you want to [use LDAP](../../environment/#ldap): you should still create an administrator account, at least to give admin rights to your own LDAP account once it's registered.
On **Windows**, there might be an error creating the admin user. To get around this, you need to run:
```
plm users new --admin -n "adminusername" -N "Human Readable Admin Name" -b "Biography of Admin here" -p hackmeplease
```
For more information about these commands, and the arguments you can give them,
check out [their documentation](/CLI).
check out [their documentation](../../CLI/).
Now that Plume is configured, if you are in a production environment you probably
want to configure your init system to make it easier to manage.
<a class="action" href="/installation/init">Configure init system</a>
<a class="action" href="../init/">Configure init system</a>

@ -18,19 +18,19 @@ are not the same, so we need to know what is installed on your machine to guide
you:
<ul class="choices">
<li><a href="/installation/deps/deb">
<li><a href="deb/">
Debian, Ubuntu or another Linux ditribution based on DEB
</a></li>
<li><a href="/installation/deps/rpm">
<li><a href="rpm/">
Fedora, RHEL, CentOS or another Linux ditribution based on RPM
</a></li>
<li><a href="/installation/deps/gentoo">
<li><a href="gentoo/">
Gentoo
</a></li>
<li><a href="/installation/deps/macosx">
<li><a href="macosx/">
Mac OS X
</a></li>
<li><a href="/installation/deps/windows">
<li><a href="windows/">
Windows
</a></li>
</ul>

@ -27,4 +27,4 @@ apt install libsqlite3-dev gettext git curl gcc make openssl libssl-dev pkg-conf
Now that these dependencies have been installed, we need to install Rust which has a special installer.
<a class="action" href="/installation/deps/rust">Let's do it!</a>
<a class="action" href="../rust/">Let's do it!</a>

@ -14,4 +14,4 @@ emerge -avu dev-db/sqlite dev-vcs/git sys-devel/gettext sys-devel/clang
Now that these dependencies have been installed, we need to install Rust which has a special installer.
<a class="action" href="/installation/deps/rust">Let's do it!</a>
<a class="action" href="../rust/">Let's do it!</a>

@ -16,4 +16,4 @@ brew install postgres
Now that these dependencies have been installed, we need to install Rust which has a special installer.
<a class="action" href="/installation/deps/rust">Let's do it!</a>
<a class="action" href="../rust/">Let's do it!</a>

@ -4,7 +4,7 @@ title: Installing dependencies on RPM-based systems
```bash
# If you want PostgreSQL
dnf install postgresql-server postgresql-contrib libpqxx libpqxx-devel git curl gcc make openssl openssl-devel gettext clang-devel
dnf install postgresql-server postgresql-contrib libpqxx libpqxx-devel libpq-devel git curl gcc make openssl openssl-devel gettext clang-devel
# If you want SQLite
dnf install libsq3-devel sqlite3 libsqlite3-dev git curl gcc make openssl openssl-devel gettext clang-devel
@ -12,4 +12,4 @@ dnf install libsq3-devel sqlite3 libsqlite3-dev git curl gcc make openssl openss
Now that these dependencies have been installed, we need to install Rust which has a special installer.
<a class="action" href="/installation/deps/rust">Let's do it!</a>
<a class="action" href="../rust/">Let's do it!</a>

@ -46,4 +46,4 @@ You can check that everything is correctly installed with `rustc --version` and
We can now compile Plume's source code.
<a class="action" href="/installation/with/source-code">Compiling Plume</a>
<a class="action" href="../../with/source-code/">Compiling Plume</a>

@ -19,14 +19,18 @@ Plume on Windows devices.
b. For PostgreSQL:
Download [PostgreSQL Binaries](https://www.enterprisedb.com/download-postgresql-binaries), extract to an easy place (i.e. C:\Extra\pgsql), and add the bin folder to your system path variable.
Download [PostgreSQL Binaries](https://www.enterprisedb.com/download-postgresql-binaries), extract to an easy place (i.e. `C:\Extra\pgsql`), and add the bin folder to your system path variable (which is needed to load the `libpq.dll` later on).
4. Download and install [OpenSSL](https://slproweb.com/products/Win32OpenSSL.html) (i.e. C:\Extra\ssl)
5. Create new system variable called "OPENSSL_DIR" with a value of `C:\Extra\ssl` (or wherever you installed OpenSSL **NOTE**: this is _not_ to the bin folder, it must be to root to get the bin and lib folders!)
To support the linker, add a `PQ_LIB_DIR` environment variable and point the postgres `lib`-folder to it (e.g. `C:\Extra\pgsql\lib`). Without this hint, the linker may stop with `LINK : fatal error LNK1181: cannot open input file 'libpq.lib'`
4. Download and install [OpenSSL](https://slproweb.com/products/Win32OpenSSL.html) (i.e. `C:\Extra\ssl`). If not done by installer, add the bin folder to your system path variable (plume and plm will need `libcrypto-3-x64.dll` and `libssl-3-x64.dll`)
5. Create new system variable called `OPENSSL_DIR` with a value of `C:\Extra\ssl` (or wherever you installed OpenSSL **NOTE**: this is _not_ to the bin folder, it must be to root to get the bin and lib folders!)
6. Download and install [LLVM (libclang)](http://releases.llvm.org/9.0.0/LLVM-9.0.0-win64.exe) (i.e. C:\Extra\LLVM)
7. Create new system variable called "LIBCLANG_PATH" with a value of `C:\Extra\LLVM\bin` (or wherever you installed LLVM to)
8. Reboot your PC to continue
7. Create new system variable called `LIBCLANG_PATH` with a value of `C:\Extra\LLVM\bin` (or wherever you installed LLVM to)
8. Currently, the build process depends on few Linux commands (e.g. `xargs`, `stat`, ...). These commands are not available in a normal Windows environment. The simplest workaround is to install [Cygwin](https://www.cygwin.com/install.html) and later run the `cargo` commands from the Cygwin terminal. A minimum package is sufficient. If this is not the case, the creation process panics with `thread 'main' panicked at 'failed xargs command: Error { kind: NotFound, message: "program not found" }', build.rs...`. These dependencies may be removed in future releases to simplify the build process again.
9. The build needs [GNUgettext](https://github.com/vslavik/gettext-tools-windows/releases) to support text resources and internationalization. Download the zip file and extract it (e.g. to `C:\Extra\gnugettext`). Add the `bin`-folder to your `PATH` environment variable (e.g. `C:\Extra\gnugettext\bin`). As an alternative the `gettext` package of Cygwin can be used. However, since the goal is not to have Cygwin as a mandatory installation for the build, it is recommended to install GNUgettext as Windows binaries. If you miss GNUgettext, you will run in errors on building with `wasm-pack` (because the makros `compile_i18n!()` and `include_i18n!()` will not work)
10. Reboot your PC to continue
Now that these dependencies have been installed, we need to install Rust which has a special installer.
<a class="action" href="/installation/deps/rust">Let's do it!</a>
<a class="action" href="../rust/">Let's do it!</a>

@ -9,9 +9,9 @@ There are various ways to install Plume. Please, choose the one that suits you t
in this list:
<ul class="choices">
<li><a href="with/docker">Docker</a></li>
<li><a href="with/snap">Snap</a></li>
<li><a href="with/yunohost">YunoHost</a></li>
<li><a href="with/prebuilt">Prebuilt binaries</a></li>
<li><a href="deps">From source</a></li>
<li><a href="with/docker/">Docker</a></li>
<li><a href="with/snap/">Snap</a></li>
<li><a href="with/yunohost/">YunoHost</a></li>
<li><a href="with/prebuilt/">Prebuilt binaries</a></li>
<li><a href="deps/">From source</a></li>
</ul>

@ -7,10 +7,10 @@ to start other program automatically and to let you manage them more easily. The
recommended option for Windows is Task Scheduler.
<ul class="choices">
<li><a href="/installation/init/systemd">SystemD</a></li>
<li><a href="/installation/init/sysvinit">SysVInit</a></li>
<li><a href="/installation/init/openrc">OpenRC</a></li>
<li><a href="/installation/init/taskscheduler">Task Scheduler</a></li>
<li><a href="systemd/">SystemD</a></li>
<li><a href="sysvinit/">SysVInit</a></li>
<li><a href="openrc/">OpenRC</a></li>
<li><a href="taskscheduler/">Task Scheduler</a></li>
</ul>
## How to know which init system I have?

@ -36,4 +36,4 @@ Now start the services:
If everything works fine, the last step before you can use your Plume instance
is to configure a reverse-proxy.
<a class="action" href="/installation/proxy">Reverse-proxy configuration</a>
<a class="action" href="../../proxy/">Reverse-proxy configuration</a>

@ -42,4 +42,4 @@ systemctl status plume.service
If everything works fine, the last step before you can use your Plume instance
is to configure a reverse-proxy.
<a class="action" href="/installation/proxy">Reverse-proxy configuration</a>
<a class="action" href="../../proxy/">Reverse-proxy configuration</a>

@ -124,4 +124,4 @@ service plume.service status
If everything works fine, the last step before you can use your Plume instance
is to configure a reverse-proxy.
<a class="action" href="/installation/proxy">Reverse-proxy configuration</a>
<a class="action" href="../../proxy/">Reverse-proxy configuration</a>

@ -16,4 +16,4 @@ in order to do so. To configure, use the following options when creating a task:
If everything works fine, the last step before you can use your Plume instance
is to configure a reverse-proxy.
<a class="action" href="/installation/proxy">Reverse-proxy configuration</a>
<a class="action" href="../../proxy/">Reverse-proxy configuration</a>

@ -8,10 +8,10 @@ on the same machine, so that people are redirected to the correct one. Please ch
your reverse proxy in this list:
<ul class="choices">
<li><a href="/installation/proxy/caddy">Caddy</a></li>
<li><a href="/installation/proxy/nginx">Nginx</a></li>
<li><a href="/installation/proxy/apache">Apache</a></li>
<li><a href="/installation/proxy/iis">IIS</a></li>
<li><a href="caddy/">Caddy</a></li>
<li><a href="nginx/">Nginx</a></li>
<li><a href="apache/">Apache</a></li>
<li><a href="iis/">IIS</a></li>
</ul>
If you don't have a reverse-proxy on your server yet but want one, we recommend

@ -57,19 +57,21 @@ Since Apache httpd 2.4.30, there's a new *experimental* module called [mod_md](h
```apache
MDBaseServer on
MDCertificateAgreement https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
MDRequireHttps permanent # This means our http vhost will be automatically redirect to https
ServerAdmin you@DOMAIN_NAME # This is required to register with Let's Encrypt
# The next configuration directive means our http vhost will be automatically redirect to https
MDRequireHttps permanent
# ServerAdmin is required to register with Let's Encrypt
ServerAdmin you@DOMAIN_NAME
MDomain DOMAIN_NAME auto
<VirtualHost *:80>
ServerName DOMAIN_NAME
<VirtualHost>
</VirtualHost>
<VirtualHost *:443>
ServerName DOMAIN_NAME
ProxyPass / http://127.0.0.1:7878/
ProxyPassReverse / http://127.0.0.1:7878/
SSLEngine On
<VirtualHost>
</VirtualHost>
```

@ -2,7 +2,7 @@
title: Configuring Caddy
---
The Caddy configuration is very short.
The Caddy v1 configuration is very short.
```
DOMAIN_NAME {
@ -12,6 +12,14 @@ DOMAIN_NAME {
}
```
The Caddy v2 configuration is shorter.
```
DOMAIN_NAME {
reverse_proxy localhost:7878
}
```
Don't forget to replace `DOMAIN_NAME` with your own domain.
Restart Caddy, and your Plume instance should be accessible!
Restart Caddy, and your Plume instance should be accessible!

@ -53,4 +53,4 @@ docker-compose up -d
And that's it! You can now setup a reverse-proxy to access Plume from other machines
than your server (which is probably what you want 😁).
<a class="action" href="/installation/proxy">Configure a reverse-proxy</a>
<a class="action" href="../../proxy/">Configure a reverse-proxy</a>

@ -7,10 +7,9 @@ for other platforms may come in the future. For Windows users, try this [page](h
You will need to have `wget` installed for this method to work.
To download and install the latest release, first define the following variables in your shell:
To download and install the latest release, first define the following variable in your shell:
- `PLUME_VERSION`: the Plume version to install. The latest is `0.5.0`.
- `PLUME_DB`: the database backend to use. Either `postgres` or `sqlite`.
- `DOWNLOAD_URI`: URI of archived binary file. You may find it at [https://git.joinplu.me/Plume/Plume/releases](https://git.joinplu.me/Plume/Plume/releases). It includes database name `postgres` or `sqlite` in the file name. Choose which you want.
Then run these commands:
@ -22,7 +21,7 @@ mkdir Plume
cd Plume
# Download the files
wget -O plume.tar.gz https://github.com/Plume-org/Plume/releases/download/$PLUME_VERSION/plume-$PLUME_DB.tar.gz
wget -O plume.tar.gz $DOWNLOAD_URI
# Extract them
tar -xf plume.tar.gz
mv bin/* ~/.cargo/bin/
@ -41,4 +40,4 @@ To check that everything went well, you can run `plm --help`. It should show an
If everything is working, you can configure your instance.
<a class="action" href="/installation/config">Configuration</a>
<a class="action" href="../../config/">Configuration</a>

@ -28,4 +28,4 @@ sudo plume.plm users new -n 'admin' -N 'name' -b 'bio' -e 'admin@domain.name' -p
And that's it! You can now setup a reverse-proxy to access Plume from other machines
than your server (which is probably what you want 😁).
<a class="action" href="/installation/proxy">Configure a reverse-proxy</a>
<a class="action" href="../../proxy/">Configure a reverse-proxy</a>

@ -5,29 +5,42 @@ title: Compiling from source
The first step to compile Plume's source code is to get it.
```bash
git clone https://github.com/Plume-org/Plume.git
git clone https://git.joinplu.me/Plume/Plume.git
cd Plume
```
Then, you'll need to install Plume and the CLI tools to manage your instance.
Run the following commands.
---
For **GNU/Linux** and **Mac OS X**:
```bash
# Build the front-end
cargo install cargo-web
cargo web deploy -p plume-front --release
cargo install wasm-pack
wasm-pack build --target web --release plume-front
# Build the back-end, replacing DATABASE either with
# postgres or sqlite depending on what you want to use
cargo install --no-default-features --features DATABASE
cargo install --no-default-features --features DATABASE --path .
# Build plm, the CLI helper, replacing DATABASE again
cargo install --no-default-features --features DATABASE --path plume-cli
```
Since v0.5.0, Plume supports [Lindera](https://github.com/lindera-morphology/lindera), a Japanese morphological analysis library for Japanese search. If you want to use it, pass `search-lindera` to `--features` option to build both plume and plume-cli:
```bash
cargo install --no-default-features --features DATABASE,search-lindera
cargo install --no-default-features --features DATABASE,search-lindera --path plume-cli
```
And then, you can configure Plume by `SEARCH_TAG_TOKENIZER`, `SEARCH_CONTENT_TOKENIZER` and/or `SEARCH_LANG` environment variables. See [Useful Environment Variables](../../../environment/) for details.
---
For **Windows**, if you are going to use SQLite, launch an additional cmd.exe as admin and do the following:
```
@ -42,17 +55,26 @@ lib /MACHINE:x64 /def:sqlite3.def /out:sqlite3.lib
copy C:\ProgramData\chocolatey\lib\SQLite\tools\sqlite3.lib C:\Users\%USERNAME%\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\sqlite3.lib
```
You may close that cmd.exe window and proceed with your regularly scheduled installation. Remember to replace DATABASE
You may close that cmd.exe window and proceed with your regularly scheduled installation. Remember to replace `DATABASE`
with postgres or sqlite depending on what you want to use:
```
# Install diesel_cli
cargo +stable install diesel_cli --no-default-features --features DATABASE --version '=1.3.0' --verbose
```
Currently, the installation of `wasm-pack` may fail on Windows 64bit with the latest stable version. If this problem persists, set the version to `0.9.1` (which is the easiest workaround). (see [can't install cargo wasm-pack - Stackoverflow](https://stackoverflow.com/questions/68646684/cant-install-cargo-wasm-pack)). As an alternative, you can use one of the fix-steps mentioned in the Stackoverflow solution.
```
# Install wasm-pack
cargo install wasm-pack
# if the install fails, use:
# cargo install wasm-pack --vers 0.9.1
# Build the front-end
cargo install cargo-web
cargo web deploy -p plume-front --release
wasm-pack build --target web --release plume-front
```
```
# If using SQLite, copy sqlite3.lib from the stable version of RustUp to the nightly that was just installed
copy C:\Users\%USERNAME%\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\sqlite3.lib C:\Users\%USERNAME%\.rustup\toolchains\nightly-2020-01-15-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\sqlite3.lib
@ -68,4 +90,4 @@ These commands can take a long time to run and use quite a lot of resources.
Once it's done, you can configure your instance.
<a class="action" href="/installation/config">Configuration</a>
<a class="action" href="../../config/">Configuration</a>

@ -1,3 +1,53 @@
document.getElementById('menu').addEventListener('click', evt =>
evt.target.parentElement.classList.toggle('show')
)
)
document.addEventListener('DOMContentLoaded', () => {
class LanguageSwitcher {
constructor(element) {
this.element = element;
this.control = this.element.querySelector('[aria-haspopup]');
const popupId = this.control.getAttribute('aria-controls');
this.popup = document.getElementById(popupId);
this.control.addEventListener('click', _ => {this.toggle();});
}
get expanded() {
return this.control.getAttribute('aria-expanded') === 'true';
}
toggle() {
if (this.expanded) {
this.collapse();
} else {
this.expand();
}
}
expand() {
if (this.expanded) return;
this.control.setAttribute('aria-expanded', 'true');
this.popup.setAttribute('aria-hidden', 'false');
}
collapse() {
if (! this.expanded) return;
this.control.setAttribute('aria-expanded', 'false');
this.popup.setAttribute('aria-hidden', 'true');
}
}
const languageSwitchers = [];
for (const switcher of document.getElementsByClassName('language-switcher')) {
languageSwitchers.push(new LanguageSwitcher(switcher));
}
document.body.addEventListener('click', event => {
if (languageSwitchers.some(ls => ls.element.contains(event.target))) {
return;
}
for (const ls of languageSwitchers) {
ls.collapse();
}
});
});

@ -7,32 +7,30 @@
<!-- Use the title from a page's frontmatter if it has one -->
<title><%= current_page.data.title || "…" %> ⋅ Plume documentation</title>
<% if ENV['CROWDIN'] == 'on' %>
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'plume-docs']);
_jipt.push(['escape', function() {
window.location.href = 'https://docs.joinplu.me';
}]);
</script>
<script type="text/javascript" src="//cdn.crowdin.com/jipt/jipt.js"></script>
<% end %>
<%= stylesheet_link_tag "site" %>
<script src="https://unpkg.com/feather-icons"></script>
<link rel="stylesheet" type="text/css" href="https://unpkg.com/swagger-ui-dist@3.12.1/swagger-ui.css">
<style><%= Rouge::Themes::Github.render(:scope => '.highlight') %></style>
<link rel="shortcut icon" href="/images/favicon.png">
<meta property="og:image" content="https://docs.joinplu.me/images/logo.svg">
</head>
<body>
<header>
<h1><%= current_page.data.title %></h1>
<p><%= current_page.data.summary %></p>
<div class="language-switcher">
<button aria-controls="languages" aria-haspopup="true" aria-expanded="false"><img src="/images/LanguageIcon.png" alt="switch language"></button>
<ul id="languages" class="languages" aria-hidden="true">
<% data.languages.each_pair do |code, name| %>
<li lang="<%=h code %>" translate="no" class="language"><%= link_to_lang name, code %></li>
<% end %>
</ul>
</div>
</header>
<aside>
<i id="menu" data-feather="menu"></i>
<nav>
<a href="/"><span>Plume documentation</span><img src="/images/logo.svg" alt="Plume logo"></a>
<% link_to "/index.html" do %><span>Plume documentation</span><img src="/images/logo.svg" alt="Plume logo"><% end %>
<% resources = sitemap.resources
.select{ |p| p.path =~ /\.html/ && p.path != "index.html" }
.sort { |a, b| a.path <=> b.path }

@ -38,13 +38,13 @@ Project maintainers have the right and responsibility to remove, edit, or reject
### Scope
This Code of Conduct applies both within [project spaces](/organization/where) and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
This Code of Conduct applies both within [project spaces](../where/) and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
### Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at moderation@joinplu.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
The members of the project team are the people marked as *Member of the moderation team* [on the contributors page](/organization/contributors).
The members of the project team are the people marked as *Member of the moderation team* [on the contributors page](../contributors/).
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

@ -4,26 +4,26 @@ summary: 'Who contributes to Plume?'
icon: users
---
## Ana Gelez
## Kitaiti, Makoto
**Member of the moderation team**
Preferred pronouns: she/her
Preferred pronouns: he/him
Open for mentoring: yes
Accounts:
- GitHub: BaptisteGelez
- Matrix: @baptistegelez:disroot.org
- Fediverse: @Ana@soc.punktrash.club (Pleroma), @Ana@fediverse.blog (Plume)
- Loomio: @anagelez
- Crowdin: AnaGelez
- Gitea: git.joinplu.me/KitaitiMakoto
- GitHub: KitaitiMakoto
- Matrix: @kitaitimakoto:matrix.org
- Fediverse: @KitaitiMakoto@bookwor.ms (Mastodon), @KitaitiMakoto@fediverse.blog (Plume), @KitaitiMakoto@blogs.kitaitimakoto.net (Plume)
- Crowdin: KitaitiMakoto
Skills:
- Tech-related: Rust, JavaScript, HTML, CSS/SCSS, Linux
- Languages: French (native), English (not perfect), German (not good), Esperanto (still learning)
- Tech-related: Ruby, Rust, JavaScript, HTML, CSS/SCSS, Linux
- Languages: Japanese (native), English (not good)
## Igor Galić
@ -35,10 +35,10 @@ Open for mentoring: yes
Accounts:
- Gitea: git.joinplu.me/igalic
- GitHub: igalic
- Matrix: @eenameename:matrix.org
- Fediverse: @hirojin@dev.glitch.social (Professional), @meena@glitch.social (Personal)
- Loomio: @meena
Skills:
@ -55,10 +55,10 @@ Open for mentoring: no, but feel free to ask questions when you need
Accounts:
- Gitea: git.joinplu.me/trinity-1686a
- GitHub: fdb-hiroshima
- Matrix: @fdb_hiroshima:matrix.org
- Fediverse: @trinity@soc.punktrash.club (Pleroma), @FDB_hiroshima@fediverse.blog (Plume)
- Loomio: @fdbhiroshima
- Crowdin: fdb-hiroshima
Skills:
@ -66,7 +66,28 @@ Skills:
- Tech-related: Rust, Linux
- Languages: French (native), English
## Ana Gelez
**Former member of the moderation team**
Preferred pronouns: she/her
Open for mentoring: no
Accounts:
- Gitea: git.joinplu.me/kiwii
- GitHub: elegaanz
- Matrix: @kiwidu38:tedomum.net
- Fediverse: @Ana@soc.punktrash.club (Pleroma), @Ana@fediverse.blog (Plume)
- Crowdin: AnaGelez
Skills:
- Tech-related: Rust, JavaScript, HTML, CSS/SCSS, Linux
- Languages: French (native), English (not perfect), German (not good), Esperanto (still learning)
## Want to add yourself here?
You can either [do it by yourself](https://github.com/Plume-org/docs/edit/master/source/organization/contributors.html.md)
if you have a GitHub account, or give Ana all the required informations and she will add you (see above for contact information).
You can either [do it by yourself](https://git.joinplu.me/plume/documentation/_edit/main/source/organization/contributors.html.md)
if you have a Gitea account, or give KitaitiMakoto all the required informations and he will add you (see above for contact information).

@ -19,7 +19,7 @@ show_links: yes
<article>
<i data-feather="<%= res.data.icon %>"></i>
<h2>
<a href="<%= res.url %>"><%= res.data.title %></a>
<%= link_to res.data.title, res %>
</h2>
<p><%= res.data.summary %></p>
</article>

@ -17,10 +17,10 @@ major changes are made to the interface for example (even if the two are often l
## What gets in each version
We don't set deadlines for new releases. We just assign issues (either bug to be fixed or feature requests) on GitHub to a given
We don't set deadlines for new releases. We just assign issues (either bug to be fixed or feature requests) on Gitea to a given
milestone as we feel it, and once it is complete, we make a new release.
**[→ Milestones list on GitHub](https://github.com/Plume-org/Plume/milestones?direction=asc&sort=due_date)**
**[→ Milestones list on Gitea](https://git.joinplu.me/Plume/Plume/milestones)**
We should prefer making small releases often, than big ones once a year or so.
@ -38,7 +38,7 @@ We should make sure the documentation is up-to-date before publishing a release.
The `dev` branch of the docs should be merged into `stable` to be deployed on [docs.joinplu.me](https://docs.joinplu.me).
For each release, we make an announcement as a blog post (on Plume of course), a message on the Matrix room,
and a more technical/impersonal changelog on the GitHub release page (basically a list of the PR that were merged
and a more technical/impersonal changelog on the Gitea release page (basically a list of the PR that were merged
since the last release). This last technical changelog should include any steps that should be taken for this specific
update that are not listed in the general update documentation.

@ -4,16 +4,23 @@ icon: share-2
summary: 'Places where you can find Plume online'
---
## Gitea
**[Plume on Gitea](https://git.joinplu.me/Plume)**
Gitea is the place where the code lives. The repository for Plume itself is [Plume/Plume](https://git.joinplu.me/Plume).
The source of the [documentation](https://git.joinplu.me/plume/documentation) and the [official website](https://git.joinplu.me/plume/joinplu.me)
are also hosted here.
Gitea issues are used to list accepted features that should be implemented, features that need to be discussed, or for bug reports.
## GitHub
**[Plume-org on GitHub](https://github.com/Plume-org)**
GitHub is the place where the code lives. The repository for Plume itself is [Plume-org/Plume](https://github.com/Plume-org/Plume).
The source of the [documentation](https://github.com/Plume-org/docs) and the [official website](https://github.com/Plume-org/joinplu.me)
are also hosted here.
GitHub is used as a mirror of Gitea repositories.
GitHub issues are used to list accepted features that should be implemented, or for bug reports. If a feature request needs to be discussed,
a topic should be opened on Loomio first.
GitHub issues are also used to list accepted features that should be implemented, features that need to be discussed, or for bug reports.
## Crowdin
@ -23,13 +30,11 @@ We use Crowdin to translate Plume's projects.
## Matrix
**[Group: +plume:disroot.org](https://app.element.io/#/group/+plume:disroot.org)**
**[Main room: #plume:disroot.org](https://app.element.io/#/room/#plume:disroot.org)**
**[Group: +plume-blog:matrix.org](https://matrix.to/#/#plume-blog:matrix.org)**
**[Developers: #plume-dev:disroot.org](https://app.element.io/#/room/#plume-dev:disroot.org)**
**[Main room: #plume-blog:matrix.org](https://matrix.to/#/#plume-blog:matrix.org)**
**[Translators: #plume-i18n:disroot.org](https://app.element.io/#/room/#plume-i18n:disroot.org)**
**[Developers: #plume-dev:matrix.org](https://matrix.to/#/#plume-dev:matrix.org)**
Matrix is our main discussion and support channel. We also make announcements about the project here, so you can join it
to stay tuned.
@ -38,12 +43,6 @@ We also have specialized rooms for developers and translators, that you are enco
You can also join the Plume group, to have the ability to only show Plume rooms if you want.
## Loomio (Framavox)
**[Plume's Loomio group](https://framavox.org/g/WK40YHMA/plume)**
Loomio is used to discuss features that need the input of the community before being included (or not).
## Plume
**[~PlumeDev@fediverse.blog](https://fediverse.blog/~/PlumeDev)**
@ -65,7 +64,7 @@ We publish x86 docker images on Docker Hub. ARM images are hosted by [Lollipop C
## Joining one of these places
We will eventually ask you if you want to be added the GitHib organization, as a Crowdin manager, to the Matrix moderators
We will eventually ask you if you want to be added the Gitea or GitHub organization, as a Crowdin manager, to the Matrix moderators
or to the authors of *~PlumeDev@fediverse.blog*.
If you consider we should add you, you can also ask by yourselve.

@ -5,6 +5,11 @@ $black: invert($gray);
@import url('https://fonts.googleapis.com/css?family=Playfair+Display');
:root {
--lang-switcher-margin: 2vw;
--lang-switcher-width: 2em;
}
html, body {
padding: 0px;
margin: 0px;
@ -22,6 +27,15 @@ header {
background: linear-gradient(0deg, $plumedark, $plume);
color: white;
font-size: 1.5em;
.language-switcher {
position: absolute;
top: var(--lang-switcher-margin);
right: var(--lang-switcher-margin);
margin: 0;
padding: 0;
line-height: 1;
}
}
body {
@ -105,12 +119,13 @@ footer {
padding-top: 1em;
padding-bottom: 1em;
overflow-x: auto;
white-space: pre-line;
}
body > main {
grid-area: cont;
line-height: 1.7;
width: 100%;
ul {
padding: 0 7.5vw;
li {
@ -346,3 +361,65 @@ a.action {
"foot foot foot foot foot";
}
}
.language-switcher {
position: relative;
font-size: 1rem;
[aria-haspopup] {
display: block;
width: var(--lang-switcher-width);
padding: 0;
line-height: 1;
border: none;
background: transparent;
&:hover {
opacity: 0.5;
}
&[aria-expanded="true"] {
opacity: 0.5;
}
img {
width: 100%;
height: auto;
}
}
[aria-hidden="true"] {
display: none;
}
.languages {
position: absolute;
right: 0;
list-style: none;
margin: 0;
padding: 0.5em 0;
max-height: calc(90vh - var(--lang-switcher-margin) - var(--lang-switcher-width));
overflow-y: scroll;
overscroll-behavior: contain;
border-radius: 0.1em;
background: #ffffff;
box-shadow: 0 0 16px -6px rgba(0, 0, 0, 0.6);
}
.language {
padding: 0;
a {
display: block;
box-sizing: border-box;
width: 100%;
height: 100%;
padding: 0.5em 1em;
border-left: solid 0.5em transparent;
&:hover, &:focus {
border-left-color: $plume;
}
}
}
}

@ -2,7 +2,7 @@
title: Updating with Docker
---
To update your dockerized Plume instance, replace the version tag with `v0.5.0` in your `docker-compose.yml`
To update your dockerized Plume instance, replace the version tag with `0.7.1` in your `docker-compose.yml`
Then, run:
```bash
@ -10,7 +10,10 @@ Then, run:
docker-compose pull
# Stop your instance
docker-compose down
docker-compose stop plume
# Remove container of current version
docker-compose kill plume
# Run migrations
docker-compose run --rm plume plm migration run

@ -9,10 +9,10 @@ The instructions to update your instance depends on your installation method.
Please choose the one you are using:
<ul class="choices">
<li><a href="/update/docker">Docker</a></li>
<li><a href="/update/yunohost">YunoHost</a></li>
<li><a href="/update/prebuilt">Prebuilt binaries</a></li>
<li><a href="/update/source-code">From source</a></li>
<li><a href="docker/">Docker</a></li>
<li><a href="yunohost/">YunoHost</a></li>
<li><a href="prebuilt/">Prebuilt binaries</a></li>
<li><a href="source-code/">From source</a></li>
</ul>
Also please check [the release notes](https://github.com/Plume-org/Plume/releases) to see if any additional operation is needed.
Also please check [the release notes](https://git.joinplu.me/Plume/Plume/releases) to see if any additional operation is needed.

@ -4,10 +4,9 @@ title: Updating pre-built binaries
Prebuilt binaries are only available for 64 bits Linux machines.
You'll need to define these two variables in your shell first:
You'll need to define a variable in your shell first:
- `PLUME_VERSION`: the Plume version to install. The latest is `0.5.0`.
- `PLUME_DB`: the database backend to use. Either `postgres` or `sqlite`.
- `DOWNLOAD_URI`: URI of archived binary file. You may find it at https://git.joinplu.me/Plume/Plume/releases. It includes database name `postgres` or `sqlite` in the file name. Choose which you want.
Then run these commands:
@ -16,7 +15,7 @@ Then run these commands:
cd Plume
# Download the files
wget -O plume.tar.gz https://github.com/Plume-org/Plume/releases/download/$PLUME_VERSION/plume-$PLUME_DB.tar.gz
wget -O plume.tar.gz $DOWNLOAD_URI
# Extract them
tar -xf plume.tar.gz
mv bin/* ~/.cargo/bin/

@ -3,7 +3,7 @@ title: Updating from source
---
To update your instance, run these commands with `plume` user if you created it, or with your default user, in the Plume directory.
Replace `DATABASE` with either postgres or sqlite depending on what you are using, and `PLUME_VERSION` with the latest version tag (`0.4.0-alpha-4` currently).
Replace `DATABASE` with either postgres or sqlite depending on what you are using, and `PLUME_VERSION` with the latest version tag (`0.7.1` currently).
```bash
# Get the latest version of the code
@ -11,7 +11,8 @@ git pull origin master
git checkout PLUME_VERSION # Skip this step if you want to use master, and not a tagged release
# Build the front-end
cargo web deploy -p plume-front
cargo install wasm-pack
wasm-pack build --target web --release plume-front
# Update plm
cargo install --path plume-cli --force --features DATABASE

Loading…
Cancel
Save