pleroma-fe/docs/site/search/search_index.json
2022-07-15 11:07:43 +01:00

1 line
No EOL
81 KiB
JSON

{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Introduction to Pleroma-FE \u00b6 What is Pleroma-FE? \u00b6 Pleroma-FE is the default user-facing frontend for Pleroma. It's user interface is modeled after Qvitter which is modeled after an older Twitter design. It provides a simple 2-column interface for microblogging. While being simple by default it also provides many powerful customization options. How can I use it? \u00b6 If your instance uses Pleroma-FE, you can acces it by going to your instance (e.g. https://pleroma.soykaf.com ). You can read more about it's basic functionality in the Pleroma-FE User Guide . We also have a guide for administrators and for hackers/contributors .","title":"Introduction to Pleroma-FE"},{"location":"#introduction-to-pleroma-fe","text":"","title":"Introduction to Pleroma-FE"},{"location":"#what-is-pleroma-fe","text":"Pleroma-FE is the default user-facing frontend for Pleroma. It's user interface is modeled after Qvitter which is modeled after an older Twitter design. It provides a simple 2-column interface for microblogging. While being simple by default it also provides many powerful customization options.","title":"What is Pleroma-FE?"},{"location":"#how-can-i-use-it","text":"If your instance uses Pleroma-FE, you can acces it by going to your instance (e.g. https://pleroma.soykaf.com ). You can read more about it's basic functionality in the Pleroma-FE User Guide . We also have a guide for administrators and for hackers/contributors .","title":"How can I use it?"},{"location":"CONFIGURATION/","text":"Pleroma-FE configuration and customization for instance administrators \u00b6 For user configuration, see Pleroma-FE user guide For local development server configuration, see Hacking, tweaking, contributing Where configuration is stored \u00b6 PleromaFE gets its configuration from several sources, in order of preference (the one above overrides ones below it) /api/statusnet/config.json - this is generated on Backend and contains multiple things including instance name, char limit etc. It also contains FE/Client-specific data, PleromaFE uses pleromafe field of it. For more info on changing config on BE, look here /static/config.json - this is a static FE-provided file, containing only FE specific configuration. This file is completely optional and could be removed but is useful as a fallback if some configuration JSON property isn't present in BE-provided config. It's also a reference point to check what default configuration are and what JSON properties even exist. In local dev mode it could be used to override BE configuration, more about that in HACKING.md. File is located here . Built-in defaults. Those are hard-coded defaults that are used when /static/config.json is not available and BE-provided configuration JSON is missing some JSON properties. ( Code ) Instance-defaults \u00b6 Important note that some configurations are treated as \"instance default\" - it means user is able to change this configuration for themselves. Currently, defaults are only applied for new visitors and people who haven't changed the option in question. If you change some instance default option, there is a chance it won't affect some users. There's currently no mechanism for user-settings synchronization across several browsers, user essentially means visitor , most user settings are stored in local storage/IndexedDB and not tied to an account in any way. Options \u00b6 alwaysShowSubjectInput \u00b6 true - will always show subject line input, false - only show when it's not empty (i.e. replying). To hide subject line input completely, set it to false and subjectLineBehavior to \"noop\" background \u00b6 Default image background. Be aware of using too big images as they may take longer to load. Currently image is fitted with background-size: cover which means \"scaled and cropped\", currently left-aligned. De-facto instance default, user can choose their own background, if they remove their own background, instance default will be used instead. collapseMessageWithSubject \u00b6 Collapse post content when post has a subject line (content warning). Instance-default. disableChat \u00b6 hides the chat (TODO: even if it's enabled on backend) greentext \u00b6 Changes lines prefixed with the > character to have a green text color hideFilteredStatuses \u00b6 Removes filtered statuses from timelines. hideMutedPosts \u00b6 Removes muted statuses from timelines. hidePostStats \u00b6 Hide repeats/favorites counters for posts. hideSitename \u00b6 Hide instance name in header. hideUserStats \u00b6 Hide followers/friends counters for users. loginMethod \u00b6 \"password\" - show simple password field \"token\" - show button to log in with external method (will redirect to login form, more details in BE documentation) logo , logoMask , logoMargin \u00b6 Instance logo , could be any image, including svg. By default it assumes logo used will be monochrome-with-alpha one, this is done to be compatible with both light and dark themes, so that white logo designed with dark theme in mind won't be invisible over light theme, this is done via CSS3 Masking . Basically - it will take alpha channel of the image and fill non-transparent areas of it with solid color. If you really want colorful logo - it can be done by setting logoMask to false . logoMargin allows you to adjust vertical margins between logo boundary and navbar borders. The idea is that to have logo's image without any extra margins and instead adjust them to your need in layout. minimalScopesMode \u00b6 Limit scope selection to Direct , User default and Scope of post replying to . This also makes it impossible to reply to a DM with a non-DM post from PleromaFE. nsfwCensorImage \u00b6 Use custom image for NSFW'd images postContentType \u00b6 Default post formatting option (markdown/bbcode/plaintext/etc...) redirectRootNoLogin , redirectRootLogin \u00b6 These two settings should point to where FE should redirect visitor when they login/open up website root scopeCopy \u00b6 Copy post scope (visibility) when replying to a post. Instance-default. sidebarRight \u00b6 Change alignment of sidebar and panels to the right. Defaults to false . showFeaturesPanel \u00b6 Show panel showcasing instance features/settings to logged-out visitors showInstanceSpecificPanel \u00b6 This allows you to include arbitrary HTML content in a panel below navigation menu. PleromaFE looks for an html page instance/panel.html , by default it's not provided in FE, but BE bundles some default one . De-facto instance-defaults, since user can hide instance-specific panel. subjectLineBehavior \u00b6 How to handle subject line (CW) when replying to a post. * \"email\" - like EMail - prepend re: to subject line if it doesn't already start with it. * \"masto\" - like Mastodon - copy it as is. * \"noop\" - do not copy Instance-default. theme \u00b6 Default theme used for new users. De-facto instance-default, user can change theme. webPushNotifications \u00b6 Enables PushAPI - based notifications for users. Instance-default. Indirect configuration \u00b6 Some features are configured depending on how backend is configured. In general the approach is \"if backend allows it there's no need to hide it, if backend doesn't allow it there's no need to show it. Chat \u00b6 TODO somewhat broken, see: disableChat chat can be disabled by disabling it in backend Private Mode \u00b6 If the private instance setting is enabled in the backend, features that are not accessible without authentication, such as the timelines and search will be disabled for unauthenticated users. Rich text formatting in post formatting \u00b6 Rich text formatting options are displayed depending on how many formatting options are enabled on backend, if you don't want your users to use rich text at all you can only allow \"text/plain\" one, frontend then will only display post text format as a label instead of dropdown (just so that users know for example if you only allow Markdown, only BBCode or only Plain text) Who to follow \u00b6 This is a panel intended for users to find people to follow based on randomness or on post contents. Being potentially privacy unfriendly feature it needs to be enabled and configured in backend to be enabled.","title":"Pleroma-FE configuration and customization for instance administrators"},{"location":"CONFIGURATION/#pleroma-fe-configuration-and-customization-for-instance-administrators","text":"For user configuration, see Pleroma-FE user guide For local development server configuration, see Hacking, tweaking, contributing","title":"Pleroma-FE configuration and customization for instance administrators"},{"location":"CONFIGURATION/#where-configuration-is-stored","text":"PleromaFE gets its configuration from several sources, in order of preference (the one above overrides ones below it) /api/statusnet/config.json - this is generated on Backend and contains multiple things including instance name, char limit etc. It also contains FE/Client-specific data, PleromaFE uses pleromafe field of it. For more info on changing config on BE, look here /static/config.json - this is a static FE-provided file, containing only FE specific configuration. This file is completely optional and could be removed but is useful as a fallback if some configuration JSON property isn't present in BE-provided config. It's also a reference point to check what default configuration are and what JSON properties even exist. In local dev mode it could be used to override BE configuration, more about that in HACKING.md. File is located here . Built-in defaults. Those are hard-coded defaults that are used when /static/config.json is not available and BE-provided configuration JSON is missing some JSON properties. ( Code )","title":"Where configuration is stored"},{"location":"CONFIGURATION/#instance-defaults","text":"Important note that some configurations are treated as \"instance default\" - it means user is able to change this configuration for themselves. Currently, defaults are only applied for new visitors and people who haven't changed the option in question. If you change some instance default option, there is a chance it won't affect some users. There's currently no mechanism for user-settings synchronization across several browsers, user essentially means visitor , most user settings are stored in local storage/IndexedDB and not tied to an account in any way.","title":"Instance-defaults"},{"location":"CONFIGURATION/#options","text":"","title":"Options"},{"location":"CONFIGURATION/#alwaysshowsubjectinput","text":"true - will always show subject line input, false - only show when it's not empty (i.e. replying). To hide subject line input completely, set it to false and subjectLineBehavior to \"noop\"","title":"alwaysShowSubjectInput"},{"location":"CONFIGURATION/#background","text":"Default image background. Be aware of using too big images as they may take longer to load. Currently image is fitted with background-size: cover which means \"scaled and cropped\", currently left-aligned. De-facto instance default, user can choose their own background, if they remove their own background, instance default will be used instead.","title":"background"},{"location":"CONFIGURATION/#collapsemessagewithsubject","text":"Collapse post content when post has a subject line (content warning). Instance-default.","title":"collapseMessageWithSubject"},{"location":"CONFIGURATION/#disablechat","text":"hides the chat (TODO: even if it's enabled on backend)","title":"disableChat"},{"location":"CONFIGURATION/#greentext","text":"Changes lines prefixed with the > character to have a green text color","title":"greentext"},{"location":"CONFIGURATION/#hidefilteredstatuses","text":"Removes filtered statuses from timelines.","title":"hideFilteredStatuses"},{"location":"CONFIGURATION/#hidemutedposts","text":"Removes muted statuses from timelines.","title":"hideMutedPosts"},{"location":"CONFIGURATION/#hidepoststats","text":"Hide repeats/favorites counters for posts.","title":"hidePostStats"},{"location":"CONFIGURATION/#hidesitename","text":"Hide instance name in header.","title":"hideSitename"},{"location":"CONFIGURATION/#hideuserstats","text":"Hide followers/friends counters for users.","title":"hideUserStats"},{"location":"CONFIGURATION/#loginmethod","text":"\"password\" - show simple password field \"token\" - show button to log in with external method (will redirect to login form, more details in BE documentation)","title":"loginMethod"},{"location":"CONFIGURATION/#logo-logomask-logomargin","text":"Instance logo , could be any image, including svg. By default it assumes logo used will be monochrome-with-alpha one, this is done to be compatible with both light and dark themes, so that white logo designed with dark theme in mind won't be invisible over light theme, this is done via CSS3 Masking . Basically - it will take alpha channel of the image and fill non-transparent areas of it with solid color. If you really want colorful logo - it can be done by setting logoMask to false . logoMargin allows you to adjust vertical margins between logo boundary and navbar borders. The idea is that to have logo's image without any extra margins and instead adjust them to your need in layout.","title":"logo, logoMask, logoMargin"},{"location":"CONFIGURATION/#minimalscopesmode","text":"Limit scope selection to Direct , User default and Scope of post replying to . This also makes it impossible to reply to a DM with a non-DM post from PleromaFE.","title":"minimalScopesMode"},{"location":"CONFIGURATION/#nsfwcensorimage","text":"Use custom image for NSFW'd images","title":"nsfwCensorImage"},{"location":"CONFIGURATION/#postcontenttype","text":"Default post formatting option (markdown/bbcode/plaintext/etc...)","title":"postContentType"},{"location":"CONFIGURATION/#redirectrootnologin-redirectrootlogin","text":"These two settings should point to where FE should redirect visitor when they login/open up website root","title":"redirectRootNoLogin, redirectRootLogin"},{"location":"CONFIGURATION/#scopecopy","text":"Copy post scope (visibility) when replying to a post. Instance-default.","title":"scopeCopy"},{"location":"CONFIGURATION/#sidebarright","text":"Change alignment of sidebar and panels to the right. Defaults to false .","title":"sidebarRight"},{"location":"CONFIGURATION/#showfeaturespanel","text":"Show panel showcasing instance features/settings to logged-out visitors","title":"showFeaturesPanel"},{"location":"CONFIGURATION/#showinstancespecificpanel","text":"This allows you to include arbitrary HTML content in a panel below navigation menu. PleromaFE looks for an html page instance/panel.html , by default it's not provided in FE, but BE bundles some default one . De-facto instance-defaults, since user can hide instance-specific panel.","title":"showInstanceSpecificPanel"},{"location":"CONFIGURATION/#subjectlinebehavior","text":"How to handle subject line (CW) when replying to a post. * \"email\" - like EMail - prepend re: to subject line if it doesn't already start with it. * \"masto\" - like Mastodon - copy it as is. * \"noop\" - do not copy Instance-default.","title":"subjectLineBehavior"},{"location":"CONFIGURATION/#theme","text":"Default theme used for new users. De-facto instance-default, user can change theme.","title":"theme"},{"location":"CONFIGURATION/#webpushnotifications","text":"Enables PushAPI - based notifications for users. Instance-default.","title":"webPushNotifications"},{"location":"CONFIGURATION/#indirect-configuration","text":"Some features are configured depending on how backend is configured. In general the approach is \"if backend allows it there's no need to hide it, if backend doesn't allow it there's no need to show it.","title":"Indirect configuration"},{"location":"CONFIGURATION/#chat","text":"TODO somewhat broken, see: disableChat chat can be disabled by disabling it in backend","title":"Chat"},{"location":"CONFIGURATION/#private-mode","text":"If the private instance setting is enabled in the backend, features that are not accessible without authentication, such as the timelines and search will be disabled for unauthenticated users.","title":"Private Mode"},{"location":"CONFIGURATION/#rich-text-formatting-in-post-formatting","text":"Rich text formatting options are displayed depending on how many formatting options are enabled on backend, if you don't want your users to use rich text at all you can only allow \"text/plain\" one, frontend then will only display post text format as a label instead of dropdown (just so that users know for example if you only allow Markdown, only BBCode or only Plain text)","title":"Rich text formatting in post formatting"},{"location":"CONFIGURATION/#who-to-follow","text":"This is a panel intended for users to find people to follow based on randomness or on post contents. Being potentially privacy unfriendly feature it needs to be enabled and configured in backend to be enabled.","title":"Who to follow"},{"location":"HACKING/","text":"Hacking, tweaking, contributing \u00b6 What PleromaFE even is, how it works \u00b6 PleromaFE is an SPA (Single-Page Application) backed by Vue framework. It means that it's just a nearly-empty HTML page with bunch of JavaScript that actually generates and controls DOM (i.e. html elements) in Runtime. Currently, there's no way around it - you have to have Javascript enabled in the browser to make it work, there is a theoretical possibility to generate some HTML server-side but it's not implemented yet. You can serve static html page and everything from any HTTP(S) server but currently it will try to access /api/ path at same domain it's running on, meaning that as of right now you cannot put it on one domain and access the other without proxying requests. Development server does exactly that - it serves static html page with javascript and all other assets, adds some code to automatically reload when changes to code are made and proxies requests to some other server. Setting up develop server \u00b6 Setting up development server is fairly straight-forward. On your system you must have Node.js version 8 and newer installed. For older systems or systems that do not package node you can try NodeSource repositories. Windows support theoretically possible but isn't tested. For fetching dependencies and running basic tasks you will Yarn installed. Clone the repository, cd into it and run yarn to fetch dependencies. If you want to point development server at some instance you will need to copy config/local.example.json to config/local.json and change the target to point at instance you want, otherwise it will point to localhost:4000 which is default address for locally-run Pleroma Backend Run yarn dev - it will start the server. Open localhost:8080 in your browser, it might take a while initially until everything is built first time. Setting up production build \u00b6 This could be a bit trickier, you basically need steps 1-4 from develop build instructions, and run yarn build which will compile and copy eveything needed for production into dist folder. As said before, this technically could be used anywhere with some details. Replacing your instance's frontend with custom FE build \u00b6 This is the most easiest way to use and test FE build: you just need to copy or symlink contents of dist folder into backend's static directory , by default it is located in instance/static , or in /var/lib/pleroma/static for OTP release installations, create it if it doesn't exist already. Be aware that running yarn build wipes the contents of dist folder. Running production build locally or on a separate server \u00b6 This is highly experimental and only tried once, with no actual simple solution available yet You will need an HTTP server that can proxy requests for /api , /instance , /nodeinfo and show index.html for every 404 page. For nginx you'll probably need something like this: server { listen 80 default_server ; index index.html index.htm index.nginx-debian.html ; root /var/www/html location /api { proxy_pass https://example.tld ; } location /instance { proxy_pass https://example.tld ; } location /nodeinfo { proxy_pass https://example.tld ; } location / { try_files $uri $uri/ /index.html ; } } (ed. note: this is close to what i used last time i had to do it, it may not work and need additions, i basically adjusted default nginx server in debian) Basic architecture \u00b6 API, Data, Operations \u00b6 In 99% cases PleromaFE uses MastoAPI with Pleroma Extensions to fetch the data. The rest is either QvitterAPI leftovers or pleroma-exclusive APIs. QvitterAPI doesn't exactly have documentation and uses different JSON structure and sometimes different parameters and workflows, this could be a good reference though. Some pleroma-exclusive API may still be using QvitterAPI JSON structure. PleromaFE supports both formats by transforming them into internal format which is basically QvitterAPI one with some additions and renaming. All data is passed trough Entity Normalizer which can serve as a reference of API and what's actually used, it's also a host for all the hacks and data transformation. For most part, PleromaFE tries to store all the info it can get in global vuex store - every user and post are passed trough updating mechanism where data is either added or merged with existing data, reactively updating the information throughout UI, so if in newest request user's post counter increased, it will be instantly updated in open user profile cards. This is also used to find users, posts and sometimes to build timelines and/or request parameters. PleromaFE also tries to persist this store, however only stable data is stored, such as user authentication and preferences, user highlights. Persistence is performed by saving and loading chunk of vuex store in browser's LocalStorage/IndexedDB. TODO: Refactor API code and document it here Themes \u00b6 PleromaFE uses custom theme \"framework\" which is pretty much just a style tag rendered by vue which only contains CSS3 variables. Every color used in UI should be derived from theme. Theme is stored in a JSON object containing color, opacity, shadow and font information, with most of it being optional. The most basic theme can consist of 4 to 8 \"basic colors\", which is also what previous version of themes allowed, with all other colors being derived from those basic colors, i.e. \"light background\" will be \"background\" color lightened/darkened, \"panel header\" will be same as \"foreground\". The idea is that you can specify just basic color palette and everything else will be generated automatically, but if you really need to tweak some specific color - you can. As said before - older version only allowed 4 to 8 colors, it also used arrays instead of objects, we still support that. The basic colors are: background, foreground, text, links, red, orange, blue, green. First 4 are mandatory, last 4 have default fallbacks since ever more ancient theme formats only had 4 colors. Note that with older version themes used different internal naming when persisting state. Themes are meant to be backwards and somewhat forwards compatible - new colors should properly inherit from some existing one, making it compatible with older versions. When loading newer version of theme all unrecognized colors will be ignored, which for most part should be fine, however adding new features (gradients, masks, whatever it might be) might be breaky. Lastly, pleroma provides some contrast information and generates readable text color automatically, which is done by tracking background/text color pairs and their contrast - if contrast too low it will try to use background color with inverted lightness, if it's still unacceptable it will fall back to pure black/white. Still Image \u00b6 Most images are wrapped in a component called StillImage, which does one simple thing - tries to detect if image is a GIF and if it is (and user has enabled relevant setting) it will show <canvas> with that image instead of actual image. It uses standard method to render an image into canvas which renders first frame of a GIF if it's animated (obviously because canvas by itself isn't animated and you'd need to animate it yourself in JS), it will show actual image on hover. Statuses also allow playing animated avatars when you hover over a post, not just image itself. Contributing \u00b6 Feel free to contribute, most preferred way is by starting a Merge Request in GitLab. Please try to use descriptive names for your branches and merge requests, avoid naming them \"fix-issue-777\" \"777\" and so on.","title":"Hacking, tweaking, contributing"},{"location":"HACKING/#hacking-tweaking-contributing","text":"","title":"Hacking, tweaking, contributing"},{"location":"HACKING/#what-pleromafe-even-is-how-it-works","text":"PleromaFE is an SPA (Single-Page Application) backed by Vue framework. It means that it's just a nearly-empty HTML page with bunch of JavaScript that actually generates and controls DOM (i.e. html elements) in Runtime. Currently, there's no way around it - you have to have Javascript enabled in the browser to make it work, there is a theoretical possibility to generate some HTML server-side but it's not implemented yet. You can serve static html page and everything from any HTTP(S) server but currently it will try to access /api/ path at same domain it's running on, meaning that as of right now you cannot put it on one domain and access the other without proxying requests. Development server does exactly that - it serves static html page with javascript and all other assets, adds some code to automatically reload when changes to code are made and proxies requests to some other server.","title":"What PleromaFE even is, how it works"},{"location":"HACKING/#setting-up-develop-server","text":"Setting up development server is fairly straight-forward. On your system you must have Node.js version 8 and newer installed. For older systems or systems that do not package node you can try NodeSource repositories. Windows support theoretically possible but isn't tested. For fetching dependencies and running basic tasks you will Yarn installed. Clone the repository, cd into it and run yarn to fetch dependencies. If you want to point development server at some instance you will need to copy config/local.example.json to config/local.json and change the target to point at instance you want, otherwise it will point to localhost:4000 which is default address for locally-run Pleroma Backend Run yarn dev - it will start the server. Open localhost:8080 in your browser, it might take a while initially until everything is built first time.","title":"Setting up develop server"},{"location":"HACKING/#setting-up-production-build","text":"This could be a bit trickier, you basically need steps 1-4 from develop build instructions, and run yarn build which will compile and copy eveything needed for production into dist folder. As said before, this technically could be used anywhere with some details.","title":"Setting up production build"},{"location":"HACKING/#replacing-your-instances-frontend-with-custom-fe-build","text":"This is the most easiest way to use and test FE build: you just need to copy or symlink contents of dist folder into backend's static directory , by default it is located in instance/static , or in /var/lib/pleroma/static for OTP release installations, create it if it doesn't exist already. Be aware that running yarn build wipes the contents of dist folder.","title":"Replacing your instance's frontend with custom FE build"},{"location":"HACKING/#running-production-build-locally-or-on-a-separate-server","text":"This is highly experimental and only tried once, with no actual simple solution available yet You will need an HTTP server that can proxy requests for /api , /instance , /nodeinfo and show index.html for every 404 page. For nginx you'll probably need something like this: server { listen 80 default_server ; index index.html index.htm index.nginx-debian.html ; root /var/www/html location /api { proxy_pass https://example.tld ; } location /instance { proxy_pass https://example.tld ; } location /nodeinfo { proxy_pass https://example.tld ; } location / { try_files $uri $uri/ /index.html ; } } (ed. note: this is close to what i used last time i had to do it, it may not work and need additions, i basically adjusted default nginx server in debian)","title":"Running production build locally or on a separate server"},{"location":"HACKING/#basic-architecture","text":"","title":"Basic architecture"},{"location":"HACKING/#api-data-operations","text":"In 99% cases PleromaFE uses MastoAPI with Pleroma Extensions to fetch the data. The rest is either QvitterAPI leftovers or pleroma-exclusive APIs. QvitterAPI doesn't exactly have documentation and uses different JSON structure and sometimes different parameters and workflows, this could be a good reference though. Some pleroma-exclusive API may still be using QvitterAPI JSON structure. PleromaFE supports both formats by transforming them into internal format which is basically QvitterAPI one with some additions and renaming. All data is passed trough Entity Normalizer which can serve as a reference of API and what's actually used, it's also a host for all the hacks and data transformation. For most part, PleromaFE tries to store all the info it can get in global vuex store - every user and post are passed trough updating mechanism where data is either added or merged with existing data, reactively updating the information throughout UI, so if in newest request user's post counter increased, it will be instantly updated in open user profile cards. This is also used to find users, posts and sometimes to build timelines and/or request parameters. PleromaFE also tries to persist this store, however only stable data is stored, such as user authentication and preferences, user highlights. Persistence is performed by saving and loading chunk of vuex store in browser's LocalStorage/IndexedDB. TODO: Refactor API code and document it here","title":"API, Data, Operations"},{"location":"HACKING/#themes","text":"PleromaFE uses custom theme \"framework\" which is pretty much just a style tag rendered by vue which only contains CSS3 variables. Every color used in UI should be derived from theme. Theme is stored in a JSON object containing color, opacity, shadow and font information, with most of it being optional. The most basic theme can consist of 4 to 8 \"basic colors\", which is also what previous version of themes allowed, with all other colors being derived from those basic colors, i.e. \"light background\" will be \"background\" color lightened/darkened, \"panel header\" will be same as \"foreground\". The idea is that you can specify just basic color palette and everything else will be generated automatically, but if you really need to tweak some specific color - you can. As said before - older version only allowed 4 to 8 colors, it also used arrays instead of objects, we still support that. The basic colors are: background, foreground, text, links, red, orange, blue, green. First 4 are mandatory, last 4 have default fallbacks since ever more ancient theme formats only had 4 colors. Note that with older version themes used different internal naming when persisting state. Themes are meant to be backwards and somewhat forwards compatible - new colors should properly inherit from some existing one, making it compatible with older versions. When loading newer version of theme all unrecognized colors will be ignored, which for most part should be fine, however adding new features (gradients, masks, whatever it might be) might be breaky. Lastly, pleroma provides some contrast information and generates readable text color automatically, which is done by tracking background/text color pairs and their contrast - if contrast too low it will try to use background color with inverted lightness, if it's still unacceptable it will fall back to pure black/white.","title":"Themes"},{"location":"HACKING/#still-image","text":"Most images are wrapped in a component called StillImage, which does one simple thing - tries to detect if image is a GIF and if it is (and user has enabled relevant setting) it will show <canvas> with that image instead of actual image. It uses standard method to render an image into canvas which renders first frame of a GIF if it's animated (obviously because canvas by itself isn't animated and you'd need to animate it yourself in JS), it will show actual image on hover. Statuses also allow playing animated avatars when you hover over a post, not just image itself.","title":"Still Image"},{"location":"HACKING/#contributing","text":"Feel free to contribute, most preferred way is by starting a Merge Request in GitLab. Please try to use descriptive names for your branches and merge requests, avoid naming them \"fix-issue-777\" \"777\" and so on.","title":"Contributing"},{"location":"user_guide/","text":"General overview \u00b6 Be prepared for breaking changes, unexpected behavior and this user guide becoming obsolete and wrong. If there was no insanity it would be necessary to create it. --Catbag Pleroma-FE is the default user-facing frontend for Pleroma. If your instance uses Pleroma-FE, you can access it by going to your instance (e.g. https://pleroma.soykaf.com ). After logging in you will have two columns in front of you. Here we're going to keep it to the default behaviour, but some instances swap the left and right columns. If you're on such an instance what we refer to as the left column will be on your right and vice versa. Left column \u00b6 first block: This section is dedicated to posting second block: Here you can switch between the different views for the right column. Optional third block: This is the Instance panel that can be activated, but is deactivated by default. It's fully customisable by instance admins and by default has links to the Pleroma-FE and Mastodon-FE. fourth block: This is the Notifications block, here you will get notified whenever somebody mentions you, follows you, repeats or favorites one of your statuses Right column \u00b6 This is where the interesting stuff happens! There are different views depending on what you choose in the second block of the left panel. Timelines Depending on the timeline you will see different statuses, but each status has a standard structure: Profile pic, name and link to profile. An optional left-arrow if it's a reply to another status (hovering will reveal the reply-to status). Clicking on the profile pic will uncollapse the user's profile where you can find information about the account and can follow, mute or block the account . An arrow icon on the right side allows you to open the status on the instance where it's originating from. A + button on the rightmost side allows you to Expand/Collapse an entire discussion thread. The text of the status, including mentions and attachments. If you click on a mention, it will automatically open the profile page of that person. Four buttons (left to right): Reply, Repeat, Favorite and Add Reaction. The three dots next to it are a dropdown menu for extra options including simple moderation, bookmarking, deleting posts, pinning your own posts to your profile and more. Interactions shows all interactions you've had with people on the network, basically same as notifications except grouped in convenient way. Chats is the chat feature. You can find your friends and start chatting with them. At the moment chat are only one-on-one, but once groups are introduced groupchats will also be possible. About is the about-page and lists the staff, the TOS, activated MRF's, and enabled features Top right \u00b6 The magnifier icon opens the search screen You can search for statuses, people and hashtags. You can import statuses from remote servers by pasting the url to the post in the search field. If you want to search for users that your instance doesn't know about yet, you can search for them using the full name@instance.tld handle. You can also use the full url from their remote profile. The gear icon gives you settings If you have admin rights, you'll see an icon that opens the admin interface The last icon is to log out Bottom right \u00b6 On the bottom right you have the Shoutbox. Here you can communicate with people on the same instance in realtime. It is local-only, very basic and will most probably be removed once the Chats functionality allows group chats.","title":"General overview"},{"location":"user_guide/#general-overview","text":"Be prepared for breaking changes, unexpected behavior and this user guide becoming obsolete and wrong. If there was no insanity it would be necessary to create it. --Catbag Pleroma-FE is the default user-facing frontend for Pleroma. If your instance uses Pleroma-FE, you can access it by going to your instance (e.g. https://pleroma.soykaf.com ). After logging in you will have two columns in front of you. Here we're going to keep it to the default behaviour, but some instances swap the left and right columns. If you're on such an instance what we refer to as the left column will be on your right and vice versa.","title":"General overview"},{"location":"user_guide/#left-column","text":"first block: This section is dedicated to posting second block: Here you can switch between the different views for the right column. Optional third block: This is the Instance panel that can be activated, but is deactivated by default. It's fully customisable by instance admins and by default has links to the Pleroma-FE and Mastodon-FE. fourth block: This is the Notifications block, here you will get notified whenever somebody mentions you, follows you, repeats or favorites one of your statuses","title":"Left column"},{"location":"user_guide/#right-column","text":"This is where the interesting stuff happens! There are different views depending on what you choose in the second block of the left panel. Timelines Depending on the timeline you will see different statuses, but each status has a standard structure: Profile pic, name and link to profile. An optional left-arrow if it's a reply to another status (hovering will reveal the reply-to status). Clicking on the profile pic will uncollapse the user's profile where you can find information about the account and can follow, mute or block the account . An arrow icon on the right side allows you to open the status on the instance where it's originating from. A + button on the rightmost side allows you to Expand/Collapse an entire discussion thread. The text of the status, including mentions and attachments. If you click on a mention, it will automatically open the profile page of that person. Four buttons (left to right): Reply, Repeat, Favorite and Add Reaction. The three dots next to it are a dropdown menu for extra options including simple moderation, bookmarking, deleting posts, pinning your own posts to your profile and more. Interactions shows all interactions you've had with people on the network, basically same as notifications except grouped in convenient way. Chats is the chat feature. You can find your friends and start chatting with them. At the moment chat are only one-on-one, but once groups are introduced groupchats will also be possible. About is the about-page and lists the staff, the TOS, activated MRF's, and enabled features","title":"Right column"},{"location":"user_guide/#top-right","text":"The magnifier icon opens the search screen You can search for statuses, people and hashtags. You can import statuses from remote servers by pasting the url to the post in the search field. If you want to search for users that your instance doesn't know about yet, you can search for them using the full name@instance.tld handle. You can also use the full url from their remote profile. The gear icon gives you settings If you have admin rights, you'll see an icon that opens the admin interface The last icon is to log out","title":"Top right"},{"location":"user_guide/#bottom-right","text":"On the bottom right you have the Shoutbox. Here you can communicate with people on the same instance in realtime. It is local-only, very basic and will most probably be removed once the Chats functionality allows group chats.","title":"Bottom right"},{"location":"user_guide/posting_reading_basic_functions/","text":"Posting, reading, basic functions. \u00b6 Warning Depending on your instance some of the options might not be available or have different defaults After registering and logging in you're presented with your timeline in right column and new post form with timeline list and notifications in the left column. Posts will contain the text you are posting, but some content will be modified: Mentions: Mentions have the form of @user or @user @instance.tld. These will become links to the user's profile. In addition, the mentioned user will always get a notification about the post they have been mentioned in, so only mention users that you want to receive this message. URLs: URLs like http://example.com will be automatically be turned into a clickable links. Hashtags: Hashtags like #cofe will also be turned into links. There is a default character limit of 5000 characters. Let's clear up some basic stuff. When you post something it's called a post or it could be called a status or even a toot or a pr\u00f6\u00f6t depending on whom you ask. Post has body/content but it also has some other stuff in it - from attachments, visibility scope, subject line... Emoji are small images embedded in text, there are two major types of emoji: unicode emoji and custom emoji. While unicode emoji are universal and standardized, they can appear differently depending on where you are using them or may not appear at all on older systems. Custom emoji are a more fun kind - instance administrator can define many images as custom emoji for their users. This works very simple - custom emoji is defined by its shortcode and an image, so that any shortcode enclosed in colons get replaced with image if such shortcode exist. Let's say there's a :pleroma: emoji defined on an instance. That means First time using :pleroma: pleroma! will become First time using pleroma! Note that you can only use emoji defined on your instance, you cannot \"copy\" someone else's emoji, and will have to ask your administrator to copy emoji from other instance to yours. Lastly, there's two convenience options for emoji: an emoji picker (smiley face to the right of \"submit\" button) and autocomplete suggestions - when you start typing :shortcode: it will automatically try to suggest you emoji and complete the shortcode for you if you select one. If emoji doesn't show up in suggestions nor in emoji picker it means there's no such emoji on your instance, if shortcode doesn't match any defined emoji it will appear as text. Attachments are fairly simple - you can attach any file to a post as long as the file is within maximum size limits. If you're uploading explicit material you can mark all of your attachments as sensitive (or add the #nsfw tag) - it will hide the images and videos behind a warning so that it won't be displayed instantly. Subject line also known as CW (Content Warning) could be used as a header to the post and/or to warn others about contents of the post having something that might upset somebody or something among those lines. Several applications allow to hide post content leaving only subject line visible. Using a subject line will not mark your images as sensitive, you will have to do that explicitly (see above). Visiblity scope controls who will be able to see your posts. There are four scopes available: Public : This is the default, and some fediverse software, like GNU Social, only supports this. This means that your post is accessible by anyone and will be shown in the public timelines. Unlisted : This is the same as public, but your post won't appear in the public timelines. The post will still be accessible by anyone who comes across it (for example, by looking at your profile) or by direct linking. They will also appear in public searches. Followers only : This will show your post only to your followers. Only they will be able to interact with it. Be careful: When somebody follows you, they will be able to see all your previous followers only posts as well! If you want to restrict who can follow you, consider locking your account down to only approved followers . Direct : This will only send the message to the people explicitly mentioned in the post. A few things to consider about the security and usage of these scopes: None of these options will change the fact that the messages are all saved in the database unencrypted. They will be visible to your server admin and to any other admin of a server who receives this post. Do not share information that you would consider secret or dangerous. Use encrypted messaging systems for these things. Follower-only posts can lead to fragmented conversations. If you post a follower-only post and somebody else replies to it with a follower-only post, only people following both of you will see the whole conversation thread. Everybody else will only see half of it. Keep this in mind and keep conversations public if possible. Changing scopes during a thread or adding people to a direct message will not retroactively make them see the whole conversation. If you add someone to a direct message conversation, they will not see the post that happened before they were mentioned. Reply-to if you are replying to someone, your post will also contain a note that your post is referring to the post you're replying to. Person you're replying to will receive a notification even if you remove them from mentioned people. You won't receive notifications when replying to your own posts, but it's useful to reply to your own posts to provide people some context if it's a follow-up to a previous post. There's a small \"Reply to ...\" label under post author's name which you can hover on to see what post it's referring to. Sometimes you may encounter posts that seem different than what they are supposed to. For example, you might see a direct message without any mentions in the text. This can happen because internally, the Fediverse has a different addressing mechanism similar to email, with to and cc fields. While these are not directly accessible in PleromaFE, other software in the Fediverse might generate those posts. Do not worry in these cases, these are normal and not a bug. Rich text \u00b6 By default new posts you make are plaintext, meaning you can't make text bold or add custom links or make lists or anything like that. However if your instance allows it you can use Markdown or BBCode or HTML to spice up your text, however there are certain limitations to what HTML tags and what features of Markdown you can use. Here is a small example of some text in markdown. This is an example of markdown text using **bold** and *cursive* text. To get a newline we add two spaces at the end of the previous line. Let's also add a list * with * some * items If you set the input-method to Markdown, and post this, it will look something like Other actions \u00b6 In addition to posting you can also favorite posts also known as liking them and repeat posts (also known as retweeting , boosting and even repr\u00f6\u00f6ting ). Favoriting a post increments a counter on it, notifies the post author of your affection towards that post and also adds that post to your \"favorited\" posts list (in your own profile, \"Favorites\" tab). Repr\u00f6\u00f6ting a post does all that and also repeats this post to your followers and your profile page with a note \" user repeated post\". Your own posts can be deleted, but this will only reliably delete the post from your own instance. Other instances will receive a deletion notice, but there's no way to force them to actually delete a post. In addition, not all instances that contain the message might even receive the deletion notice, because they might be offline or not known to have the post because they received it through a repeat. Lastly, deletion notice might not reach certain frontends and clients - post will be visible for them until page refresh or cache clear, they probably won't be able to interact with it apart from replying to it (which will have reply-to mark missing). If you are a moderator, you can also delete posts by other people. If those people are on your instance, it will delete the post and send out the deletion notice to other servers. If they are not on your instance, it will just remove the post from your local instance. There's also an option to report a user's post which can be used to notify your (and optionally the other instance's) admin that someone is being naughty.","title":"Posting, reading, basic functions."},{"location":"user_guide/posting_reading_basic_functions/#posting-reading-basic-functions","text":"Warning Depending on your instance some of the options might not be available or have different defaults After registering and logging in you're presented with your timeline in right column and new post form with timeline list and notifications in the left column. Posts will contain the text you are posting, but some content will be modified: Mentions: Mentions have the form of @user or @user @instance.tld. These will become links to the user's profile. In addition, the mentioned user will always get a notification about the post they have been mentioned in, so only mention users that you want to receive this message. URLs: URLs like http://example.com will be automatically be turned into a clickable links. Hashtags: Hashtags like #cofe will also be turned into links. There is a default character limit of 5000 characters. Let's clear up some basic stuff. When you post something it's called a post or it could be called a status or even a toot or a pr\u00f6\u00f6t depending on whom you ask. Post has body/content but it also has some other stuff in it - from attachments, visibility scope, subject line... Emoji are small images embedded in text, there are two major types of emoji: unicode emoji and custom emoji. While unicode emoji are universal and standardized, they can appear differently depending on where you are using them or may not appear at all on older systems. Custom emoji are a more fun kind - instance administrator can define many images as custom emoji for their users. This works very simple - custom emoji is defined by its shortcode and an image, so that any shortcode enclosed in colons get replaced with image if such shortcode exist. Let's say there's a :pleroma: emoji defined on an instance. That means First time using :pleroma: pleroma! will become First time using pleroma! Note that you can only use emoji defined on your instance, you cannot \"copy\" someone else's emoji, and will have to ask your administrator to copy emoji from other instance to yours. Lastly, there's two convenience options for emoji: an emoji picker (smiley face to the right of \"submit\" button) and autocomplete suggestions - when you start typing :shortcode: it will automatically try to suggest you emoji and complete the shortcode for you if you select one. If emoji doesn't show up in suggestions nor in emoji picker it means there's no such emoji on your instance, if shortcode doesn't match any defined emoji it will appear as text. Attachments are fairly simple - you can attach any file to a post as long as the file is within maximum size limits. If you're uploading explicit material you can mark all of your attachments as sensitive (or add the #nsfw tag) - it will hide the images and videos behind a warning so that it won't be displayed instantly. Subject line also known as CW (Content Warning) could be used as a header to the post and/or to warn others about contents of the post having something that might upset somebody or something among those lines. Several applications allow to hide post content leaving only subject line visible. Using a subject line will not mark your images as sensitive, you will have to do that explicitly (see above). Visiblity scope controls who will be able to see your posts. There are four scopes available: Public : This is the default, and some fediverse software, like GNU Social, only supports this. This means that your post is accessible by anyone and will be shown in the public timelines. Unlisted : This is the same as public, but your post won't appear in the public timelines. The post will still be accessible by anyone who comes across it (for example, by looking at your profile) or by direct linking. They will also appear in public searches. Followers only : This will show your post only to your followers. Only they will be able to interact with it. Be careful: When somebody follows you, they will be able to see all your previous followers only posts as well! If you want to restrict who can follow you, consider locking your account down to only approved followers . Direct : This will only send the message to the people explicitly mentioned in the post. A few things to consider about the security and usage of these scopes: None of these options will change the fact that the messages are all saved in the database unencrypted. They will be visible to your server admin and to any other admin of a server who receives this post. Do not share information that you would consider secret or dangerous. Use encrypted messaging systems for these things. Follower-only posts can lead to fragmented conversations. If you post a follower-only post and somebody else replies to it with a follower-only post, only people following both of you will see the whole conversation thread. Everybody else will only see half of it. Keep this in mind and keep conversations public if possible. Changing scopes during a thread or adding people to a direct message will not retroactively make them see the whole conversation. If you add someone to a direct message conversation, they will not see the post that happened before they were mentioned. Reply-to if you are replying to someone, your post will also contain a note that your post is referring to the post you're replying to. Person you're replying to will receive a notification even if you remove them from mentioned people. You won't receive notifications when replying to your own posts, but it's useful to reply to your own posts to provide people some context if it's a follow-up to a previous post. There's a small \"Reply to ...\" label under post author's name which you can hover on to see what post it's referring to. Sometimes you may encounter posts that seem different than what they are supposed to. For example, you might see a direct message without any mentions in the text. This can happen because internally, the Fediverse has a different addressing mechanism similar to email, with to and cc fields. While these are not directly accessible in PleromaFE, other software in the Fediverse might generate those posts. Do not worry in these cases, these are normal and not a bug.","title":"Posting, reading, basic functions."},{"location":"user_guide/posting_reading_basic_functions/#rich-text","text":"By default new posts you make are plaintext, meaning you can't make text bold or add custom links or make lists or anything like that. However if your instance allows it you can use Markdown or BBCode or HTML to spice up your text, however there are certain limitations to what HTML tags and what features of Markdown you can use. Here is a small example of some text in markdown. This is an example of markdown text using **bold** and *cursive* text. To get a newline we add two spaces at the end of the previous line. Let's also add a list * with * some * items If you set the input-method to Markdown, and post this, it will look something like","title":"Rich text"},{"location":"user_guide/posting_reading_basic_functions/#other-actions","text":"In addition to posting you can also favorite posts also known as liking them and repeat posts (also known as retweeting , boosting and even repr\u00f6\u00f6ting ). Favoriting a post increments a counter on it, notifies the post author of your affection towards that post and also adds that post to your \"favorited\" posts list (in your own profile, \"Favorites\" tab). Repr\u00f6\u00f6ting a post does all that and also repeats this post to your followers and your profile page with a note \" user repeated post\". Your own posts can be deleted, but this will only reliably delete the post from your own instance. Other instances will receive a deletion notice, but there's no way to force them to actually delete a post. In addition, not all instances that contain the message might even receive the deletion notice, because they might be offline or not known to have the post because they received it through a repeat. Lastly, deletion notice might not reach certain frontends and clients - post will be visible for them until page refresh or cache clear, they probably won't be able to interact with it apart from replying to it (which will have reply-to mark missing). If you are a moderator, you can also delete posts by other people. If those people are on your instance, it will delete the post and send out the deletion notice to other servers. If they are not on your instance, it will just remove the post from your local instance. There's also an option to report a user's post which can be used to notify your (and optionally the other instance's) admin that someone is being naughty.","title":"Other actions"},{"location":"user_guide/settings/","text":"Settings \u00b6 On the top-right you will see a gear icon. Click it to open the settings. General \u00b6 Interface \u00b6 Interface language is where you can set the interface language. The default language is the one that you set in your browser settings. Hide instance-specific panel hides the panel in the lower left that usually contains general information about the server. This will only be visible if your admin has activated this panel and is deactivated by default. Timeline \u00b6 Hide posts of muted users If this is set, 'muting' a user will completely hide their posts instead of collapsing them. Collapse posts with subjects This will collapse posts that contain a subject, hiding their content. Subjects are also sometimes called content warnings. Enable automatic streaming of new posts when scrolled to the top With this enabled, new posts will automatically stream in when you are scrolled to the top. Otherwise, you will see a button on the timeline that will let you display the new posts. Pause streaming when tab is not focused This pauses the automatic streaming that the previous option enables when the tab is out of focus. This is useful if you don't want to miss any new posts. Enable automatic loading when scrolled to the bottom When this is disabled, a button will be shown on the bottom of the timeline that will let you load older posts. Enable reply-link preview on hover Status posts in the timeline and notifications contain links to replies and to the post they are a reply to. If this setting is enabled, hovering over that link will display that linked post in a small hovering overlay. Composing \u00b6 Copy scope when replying makes the scope of a reply be the same as the scope of the post it is replying to. This is useful to prevent accidentally moving private discussions to public, or vice versa. Always show subject field Whether or not to display the 'subject' input field in the post form. If you do not want to use subjects, you can deactivate this. Copy subject when replying controls if the subject of a post will be copied from the post it is replying to. Post status content type selects the default content type of your post. The options are: Plain text, HTML, BBCode and Markdown. Minimize scope selection options will reduce the visibility scopes to 'direct', your default post scope and post scope of post you're replying to. Automatically hide New Post button hides the floating \"New post\" button when scrolling on mobile view. Pad emoji with spaces when adding from picker Will add spaces around emoji you select it from the picker. Attachments \u00b6 Hide attachments in timeline Do not display attachments in timelines. They will still display in expanded conversations. This is useful to save bandwidth and for browsing in public. Hide attachments in conversations Also hide attachments in expanded conversations. Maximum amount of thumbnails per post Exactly that :) Enable clickthrough NSFW attachment hiding Hide attachments that are marked as NSFW/sensitive behind a click-through image.` Preload images This will preload the hidden images so that they display faster when clicking through. Open NSFW attachments with just one click Directly open NSFW attachments in a maximised state instead of revealing the image thumbnail. Play-on-hover GIFs With this activated, GIFs images and avatars will only be animated on mouse hover. Otherwise, they will be always animated. This is very useful if your timeline looks too flashy from people's animated avatars and eases the CPU load. Loop videos Whether to loop videos indefinitely. Loop only videos without sound Some instances will use videos without sounds instead of GIFs. This will make only those videos autoplay. Play videos directly in the media viewer Play videos right in the timeline instead of opening it in a modal Don't crop the attachment in thumbnails if enabled, images in attachments will be fit entirely inside the container instead of being zoomed in and cropped. Notifications \u00b6 Enable web push notifications this enables Web Push notifications, to allow receiving notifications even when the page isn't opened, doesn't affect regular notifications. Fun \u00b6 Meme arrows will make > greentext be shown in green (using the \"green\" from the theme that is used). Profile \u00b6 Here you can set up how you appear to other users among with some other settings: Name is text that displays next to your avatar in posts. Please note that you cannot change your @handle Bio will be displayed under your profile - you can put anything you want there you want for everyone to see. Restrict your account to approved followers only makes your account \"locked\", when people follow you - you have to approve or deny their follow requests, this gives more control over who sees your followers only posts. Default visibility scope is your default post scope for new posts Strip rich text from all posts strips rich text formatting (bold/italics/lists etc) from all incoming posts. This will only affect newly fetched posts. If you're admin or moderator on your instance you also get Show [role] badge in my profile - this controls whether to show \"Admin\" or \"Moderator** label on your profile page. For all options mentioned above you have to click \"Submit\" button for changes to take place Avatar this changes picture next to your posts. Your avatar shouldn't exceed 2 MiB (2097152 bytes) or it could cause problems with certain instances. Banner this changes background on your profile card. Same as avatar it shouldn't exceed 2 MiB limit. Profile Background this changes background picture for UI. It isn't shown to anyone else yet , but some time later it will be shown when viewing your profisle. Security \u00b6 Here you can change your password, revoke access tokens, configure 2-factor authentication (if available). Filtering \u00b6 Types of notifications to show This controls what kind of notifications will appear in notification column and which notifications to get in your system outside the web page Replies in timeline You may know that other social networks like Twitter will often not display replies to other people in your timeline, even if you are following the poster. Pleroma usually will show these posts to you to encourage conversation. If you do not like this behavior, you can change it here. Hide post statistics This hides the number of favorites, number of replies, etc. Hide user statistics This hides the number of followers, friends, etc. Muted words allows a list of words that will be muted (i.e. displayed in a collapsed state) on the timeline and in notifications. An easy way to tune down noise in your timeline. By default posts can be expanded if you want to see them. Hide filtered statuses will hide the filtered / muted posts completely instead of collapsing them. Theme \u00b6 Here you can change the look and feel of Pleroma-FE. You can choose from several instance-provided presets and you can load one from file and save current theme to file. Before you apply new theme you can see what it will look like approximately in preview section. The themes engine was made to be easy to use while giving an option for powerful in-depth customization - you can just tweak colors on \"Common\" tab and leave everything else as is. If there's a little check box next to a color picker it means that color is optional and unless checked will be automatically picked based on some other color or defaults. For some features you can also adjust transparency of it by changing its opacity, you just need to tick checkbox next to it, otherwise it will be using default opacity. Contrast information is also provided - you can see how readable text is based on contrast between text color and background, icons under color pickers represent contrast rating based on WCAG - thumbs up means AAA rating (good), half-filled circle means AA rating (acceptable) and warning icon means it doesn't pass the minimal contrast requirement and probably will be less readable, especially for vision-challenged people, you can hover over icon to see more detailed information. Please note that if background is not opaque (opacity != 1) contrast will be measured based on \"worst case scenario\", i.e. behind semi-transparent background lies some solid color that makes text harder to read, this however is still inaccurate because it doesn't account that background can be noisy/busy, making text even harder to read. Apart from colors you can also tweak shadow and lighting, which is used mostly to give buttons proper relief based on their state, give panes their shade, make things glow etc. It's quite powerful, and basically provides somewhat convenient interface for CSS Shadows . Another thing you can tweak is theme's roundness - some people like sharp edges, some want things more rounded. This is also used if you want circled or square avatars. Lastly, you can redefine fonts used in UI without changing fonts in your browser or system, this however requires you to enter font's full name and having that font installed on your system. Notifications \u00b6 This screen allows more fine-grained control over what notifications to show to you based on whom it comes from. Data Import/Export \u00b6 This allows you to export and import a list of people you follow and block, in case instance's database gets reverted or if you want to move to another server. Note that you CANNOT export/import list of people who follow you , they'll need to follow you back themselves. Mutes and Blocks \u00b6 These screens give access to full list of people you block/mute, useful for un blocking/ un muting people because blocking/muting them most likely removes them out of your sight completely. Version \u00b6 Just displays the backend and frontend version. Useful to mention in bug reports.","title":"Settings"},{"location":"user_guide/settings/#settings","text":"On the top-right you will see a gear icon. Click it to open the settings.","title":"Settings"},{"location":"user_guide/settings/#general","text":"","title":"General"},{"location":"user_guide/settings/#interface","text":"Interface language is where you can set the interface language. The default language is the one that you set in your browser settings. Hide instance-specific panel hides the panel in the lower left that usually contains general information about the server. This will only be visible if your admin has activated this panel and is deactivated by default.","title":"Interface"},{"location":"user_guide/settings/#timeline","text":"Hide posts of muted users If this is set, 'muting' a user will completely hide their posts instead of collapsing them. Collapse posts with subjects This will collapse posts that contain a subject, hiding their content. Subjects are also sometimes called content warnings. Enable automatic streaming of new posts when scrolled to the top With this enabled, new posts will automatically stream in when you are scrolled to the top. Otherwise, you will see a button on the timeline that will let you display the new posts. Pause streaming when tab is not focused This pauses the automatic streaming that the previous option enables when the tab is out of focus. This is useful if you don't want to miss any new posts. Enable automatic loading when scrolled to the bottom When this is disabled, a button will be shown on the bottom of the timeline that will let you load older posts. Enable reply-link preview on hover Status posts in the timeline and notifications contain links to replies and to the post they are a reply to. If this setting is enabled, hovering over that link will display that linked post in a small hovering overlay.","title":"Timeline"},{"location":"user_guide/settings/#composing","text":"Copy scope when replying makes the scope of a reply be the same as the scope of the post it is replying to. This is useful to prevent accidentally moving private discussions to public, or vice versa. Always show subject field Whether or not to display the 'subject' input field in the post form. If you do not want to use subjects, you can deactivate this. Copy subject when replying controls if the subject of a post will be copied from the post it is replying to. Post status content type selects the default content type of your post. The options are: Plain text, HTML, BBCode and Markdown. Minimize scope selection options will reduce the visibility scopes to 'direct', your default post scope and post scope of post you're replying to. Automatically hide New Post button hides the floating \"New post\" button when scrolling on mobile view. Pad emoji with spaces when adding from picker Will add spaces around emoji you select it from the picker.","title":"Composing"},{"location":"user_guide/settings/#attachments","text":"Hide attachments in timeline Do not display attachments in timelines. They will still display in expanded conversations. This is useful to save bandwidth and for browsing in public. Hide attachments in conversations Also hide attachments in expanded conversations. Maximum amount of thumbnails per post Exactly that :) Enable clickthrough NSFW attachment hiding Hide attachments that are marked as NSFW/sensitive behind a click-through image.` Preload images This will preload the hidden images so that they display faster when clicking through. Open NSFW attachments with just one click Directly open NSFW attachments in a maximised state instead of revealing the image thumbnail. Play-on-hover GIFs With this activated, GIFs images and avatars will only be animated on mouse hover. Otherwise, they will be always animated. This is very useful if your timeline looks too flashy from people's animated avatars and eases the CPU load. Loop videos Whether to loop videos indefinitely. Loop only videos without sound Some instances will use videos without sounds instead of GIFs. This will make only those videos autoplay. Play videos directly in the media viewer Play videos right in the timeline instead of opening it in a modal Don't crop the attachment in thumbnails if enabled, images in attachments will be fit entirely inside the container instead of being zoomed in and cropped.","title":"Attachments"},{"location":"user_guide/settings/#notifications","text":"Enable web push notifications this enables Web Push notifications, to allow receiving notifications even when the page isn't opened, doesn't affect regular notifications.","title":"Notifications"},{"location":"user_guide/settings/#fun","text":"Meme arrows will make > greentext be shown in green (using the \"green\" from the theme that is used).","title":"Fun"},{"location":"user_guide/settings/#profile","text":"Here you can set up how you appear to other users among with some other settings: Name is text that displays next to your avatar in posts. Please note that you cannot change your @handle Bio will be displayed under your profile - you can put anything you want there you want for everyone to see. Restrict your account to approved followers only makes your account \"locked\", when people follow you - you have to approve or deny their follow requests, this gives more control over who sees your followers only posts. Default visibility scope is your default post scope for new posts Strip rich text from all posts strips rich text formatting (bold/italics/lists etc) from all incoming posts. This will only affect newly fetched posts. If you're admin or moderator on your instance you also get Show [role] badge in my profile - this controls whether to show \"Admin\" or \"Moderator** label on your profile page. For all options mentioned above you have to click \"Submit\" button for changes to take place Avatar this changes picture next to your posts. Your avatar shouldn't exceed 2 MiB (2097152 bytes) or it could cause problems with certain instances. Banner this changes background on your profile card. Same as avatar it shouldn't exceed 2 MiB limit. Profile Background this changes background picture for UI. It isn't shown to anyone else yet , but some time later it will be shown when viewing your profisle.","title":"Profile"},{"location":"user_guide/settings/#security","text":"Here you can change your password, revoke access tokens, configure 2-factor authentication (if available).","title":"Security"},{"location":"user_guide/settings/#filtering","text":"Types of notifications to show This controls what kind of notifications will appear in notification column and which notifications to get in your system outside the web page Replies in timeline You may know that other social networks like Twitter will often not display replies to other people in your timeline, even if you are following the poster. Pleroma usually will show these posts to you to encourage conversation. If you do not like this behavior, you can change it here. Hide post statistics This hides the number of favorites, number of replies, etc. Hide user statistics This hides the number of followers, friends, etc. Muted words allows a list of words that will be muted (i.e. displayed in a collapsed state) on the timeline and in notifications. An easy way to tune down noise in your timeline. By default posts can be expanded if you want to see them. Hide filtered statuses will hide the filtered / muted posts completely instead of collapsing them.","title":"Filtering"},{"location":"user_guide/settings/#theme","text":"Here you can change the look and feel of Pleroma-FE. You can choose from several instance-provided presets and you can load one from file and save current theme to file. Before you apply new theme you can see what it will look like approximately in preview section. The themes engine was made to be easy to use while giving an option for powerful in-depth customization - you can just tweak colors on \"Common\" tab and leave everything else as is. If there's a little check box next to a color picker it means that color is optional and unless checked will be automatically picked based on some other color or defaults. For some features you can also adjust transparency of it by changing its opacity, you just need to tick checkbox next to it, otherwise it will be using default opacity. Contrast information is also provided - you can see how readable text is based on contrast between text color and background, icons under color pickers represent contrast rating based on WCAG - thumbs up means AAA rating (good), half-filled circle means AA rating (acceptable) and warning icon means it doesn't pass the minimal contrast requirement and probably will be less readable, especially for vision-challenged people, you can hover over icon to see more detailed information. Please note that if background is not opaque (opacity != 1) contrast will be measured based on \"worst case scenario\", i.e. behind semi-transparent background lies some solid color that makes text harder to read, this however is still inaccurate because it doesn't account that background can be noisy/busy, making text even harder to read. Apart from colors you can also tweak shadow and lighting, which is used mostly to give buttons proper relief based on their state, give panes their shade, make things glow etc. It's quite powerful, and basically provides somewhat convenient interface for CSS Shadows . Another thing you can tweak is theme's roundness - some people like sharp edges, some want things more rounded. This is also used if you want circled or square avatars. Lastly, you can redefine fonts used in UI without changing fonts in your browser or system, this however requires you to enter font's full name and having that font installed on your system.","title":"Theme"},{"location":"user_guide/settings/#notifications_1","text":"This screen allows more fine-grained control over what notifications to show to you based on whom it comes from.","title":"Notifications"},{"location":"user_guide/settings/#data-importexport","text":"This allows you to export and import a list of people you follow and block, in case instance's database gets reverted or if you want to move to another server. Note that you CANNOT export/import list of people who follow you , they'll need to follow you back themselves.","title":"Data Import/Export"},{"location":"user_guide/settings/#mutes-and-blocks","text":"These screens give access to full list of people you block/mute, useful for un blocking/ un muting people because blocking/muting them most likely removes them out of your sight completely.","title":"Mutes and Blocks"},{"location":"user_guide/settings/#version","text":"Just displays the backend and frontend version. Useful to mention in bug reports.","title":"Version"},{"location":"user_guide/timelines/","text":"Timelines \u00b6 You have several timelines to browse trough Timeline aka Home Timeline - this timeline contains all posts by people you follow and your own posts, as well as posts mentioning you directly. Bookmarks all the posts you've bookmarked. You can bookmark a post by clicking the three dots on the bottom right of the post and choose Bookmark. Direct Messages all posts with direct scope addressed to you or mentioning you. Public Timelines all public posts made by users on the instance you're on The Whole Known Network also known as TWKN or Federated Timeline - all public posts known by your instance. Due to nature of the network your instance may not know all the posts on the network, so only posts known by your instance are shown there. Note that by default you will see all posts made by other users on your Home Timeline, this contrast behavior of Twitter and Mastodon, which shows you only non-reply posts and replies to people you follow. You can change said behavior in the settings . By default instances will try to send activities (e.g. posts, favorites, etc.) up to 7 days or until the target server received them. For this reason posts that are up to 7 days old and your server didn't know about yet can pop up on your timeline. This is the default behaviour and can be changed by your admin.","title":"Timelines"},{"location":"user_guide/timelines/#timelines","text":"You have several timelines to browse trough Timeline aka Home Timeline - this timeline contains all posts by people you follow and your own posts, as well as posts mentioning you directly. Bookmarks all the posts you've bookmarked. You can bookmark a post by clicking the three dots on the bottom right of the post and choose Bookmark. Direct Messages all posts with direct scope addressed to you or mentioning you. Public Timelines all public posts made by users on the instance you're on The Whole Known Network also known as TWKN or Federated Timeline - all public posts known by your instance. Due to nature of the network your instance may not know all the posts on the network, so only posts known by your instance are shown there. Note that by default you will see all posts made by other users on your Home Timeline, this contrast behavior of Twitter and Mastodon, which shows you only non-reply posts and replies to people you follow. You can change said behavior in the settings . By default instances will try to send activities (e.g. posts, favorites, etc.) up to 7 days or until the target server received them. For this reason posts that are up to 7 days old and your server didn't know about yet can pop up on your timeline. This is the default behaviour and can be changed by your admin.","title":"Timelines"},{"location":"user_guide/users_follow_mute_block/","text":"Users: follow, mute, block \u00b6 When you see someone, you can click on their user picture to view their profile, and click on the userpic in that to see full profile. You can follow them, mute and block them. Following is self-explanatory, it adds them to your Home Timeline, lists you as a follower and gives you access to follower-only posts if they have any. Muting collapses posts and notifications made by them, giving you an option to see the post if you're curious. Clients other than PleromaFE may completely remove their posts. Blocking a user removes them from your timeline and notifications and prevents them from following you (automatically unfollows them from you). Please note that some users can be \"locked\", meaning instead of following them you send a follow request they need to approve for you to become their follower.","title":"Users: follow, mute, block"},{"location":"user_guide/users_follow_mute_block/#users-follow-mute-block","text":"When you see someone, you can click on their user picture to view their profile, and click on the userpic in that to see full profile. You can follow them, mute and block them. Following is self-explanatory, it adds them to your Home Timeline, lists you as a follower and gives you access to follower-only posts if they have any. Muting collapses posts and notifications made by them, giving you an option to see the post if you're curious. Clients other than PleromaFE may completely remove their posts. Blocking a user removes them from your timeline and notifications and prevents them from following you (automatically unfollows them from you). Please note that some users can be \"locked\", meaning instead of following them you send a follow request they need to approve for you to become their follower.","title":"Users: follow, mute, block"}]}