<commit_before># Filters

Social messaging/chat based around context, people and quality filters. Free and open source. Decentralised. Translatable.

## Quick start for users

* [filters.social](https://filters.social)
* Register for an account (you can read posts without)
* Put in tags in the top box to switch contexts.
* Messages automatically get tagged with the context they're in. Plus things like author and a message id for replies.
* You can use special filters like `author=` to filter down further. There's a big button to help you with all of these (and they're listed below).
* All filters/tags can be reversed/negated with an exclamation point `!author=filipnest` or `!poetry`.
* You can vote on posts. And filter based on who's voted on them using `upvoted=username` and `downvoted=username` filters. Or only show posts that have a certain number of votes with the `minpoints=` filter.
* `#hashtags` work within messages (the same as switching/adding contexts). As do `@mentions`. `@@username` is a private message.
* You can set global filters for your username to filter out stuff regardless of current context.
* You can listen to other instances of filters (that's the decentralised part).

## Quick start for developers

* `npm install filters.social`
* `cd node_modules\filters.social`
* `npm start`

This will run on port 80 and put files and data in an automatically created `/data` directory. See config file section lower down for more information on settings you can pass in as arguments. You can pass a `config` argument to point to a JSON file with these set. For example `npm start config=myconfig.json`.

## Main, slower, about
<commit_msg>Update readme developer instructions<commit_after># Filters

Social messaging/chat based around context, people and quality filters. Free and open source. Decentralised. Translatable.

## Quick start for users

* [filters.social](https://filters.social)
* Register for an account (you can read posts without)
* Put in tags in the top box to switch contexts.
* Messages automatically get tagged with the context they're in. Plus things like author and a message id for replies.
* You can use special filters like `author=` to filter down further. There's a big button to help you with all of these (and they're listed below).
* All filters/tags can be reversed/negated with an exclamation point `!author=filipnest` or `!poetry`.
* You can vote on posts. And filter based on who's voted on them using `upvoted=username` and `downvoted=username` filters. Or only show posts that have a certain number of votes with the `minpoints=` filter.
* `#hashtags` work within messages (the same as switching/adding contexts). As do `@mentions`. `@@username` is a private message.
* You can set global filters for your username to filter out stuff regardless of current context.
* You can listen to other instances of filters (that's the decentralised part).

## Quick start for developers

### As a global NPM module

* `npm install -g filters.social`
* `filters` + config parameters

If this doesn't work you may need to run `npm link`.

### From git/files

* Clone or download this
* Run `npm install` in the root directory to install dependencies
* Run `npm start` + config parameters

This will run on port 80 and put files and data in an automatically created `/data` directory. See config file section lower down for more information on settings you can pass in as arguments. You can pass a `config` argument to point to a JSON file with these set. For example `npm start config=myconfig.json`.

## Main, slower, about

{'fraction_non_alphanumeric': 0.07200669829751605, 'fraction_numerical': 0.0011163829193413341, 'mean_word_length': 4.463414634146342, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1578213', 'n_tokens_mistral': 948, 'n_tokens_neox': 900, 'n_words': 528}