All Versions
Latest Version
Avg Release Cycle
86 days
Latest Release
1629 days ago

Changelog History

  • v0.11.1

    December 30, 2019
  • v0.11.0

    December 15, 2019
  • v0.10.0

    October 06, 2019
  • v0.9.3 Changes

    August 29, 2018

    0.9.3 (2018-08-29)

    ๐Ÿ›  Fixed

    • โšก๏ธ Update pycryptodome due to CVE-2018-15560 security issue.
  • v0.9.2 Changes

    August 11, 2018

    0.9.2 (2018-08-11)

    ๐Ÿ›  Fixed

    โšก๏ธ Update to federation which switches crypto libraries to fix CVE-2018-6594.

    Note! If you don't use pip-sync to deploy, then you must do pip uninstall pycrypto before deploying, or things will break badly.

  • v0.9.1 Changes

    August 11, 2018

    0.9.1 (2018-08-11)

    ๐Ÿ›  Fixed

    • ๐Ÿš€ Django bumped to 2.0.8 to fix a security issue. This issue did not affect Socialhome, but we're upgrading just to be sure.
  • v0.9.0 Changes

    July 20, 2018

    0.9.0 (2018-07-21)

    โž• Added

    โž• Add possibility to configure Sentry for error reporting.

    Adding the Sentry project DSN as SENTRY_DSN=foo to environment variables will make all error level exceptions be raised to Sentry. To change the level, define SENTRY_LEVEL with a valid Python logging module level.

    ๐Ÿ‘‰ Add NodeInfo2 support. For organization details, admin name and email will be published if the new setting SOCIALHOME_SHOW_ADMINS is set to True (default False).

    โž• Add possibility to delete user account (#131)

    Deletion is permanent and will delete all created content including uploaded images. Delete request for profile and related content will be sent to remote servers.

    โž• Add user export API (#478)

    New API endpoints /api/profiles/create_export/ will create an export and /api/profiles/retrieve_export/ will retrieve the export zip file. Export will contain a JSON file of the user, profile, followers and content. A zip file of uploaded images will also be included.

    โž• Add user data export to user account page (#478)

    The account page now has a button to request an export of user data. In addition to user and profile data, this export contains a list of profiles followed, content (including shares and replies) and a zip file of image uploads. An email notification will be sent to the user once the export is ready for download from the account page.

    ๐Ÿ†• New environment variable DJANGO_TIMEZONE allows easily customizing the time zone that the Socialhome instance runs on. It defaults to UTC.

    ๐Ÿ“š Staff users can now access the admin and task queue (background jobs) pages via the new "gears" menu in the navbar. See <documentation on how to make a user admin.

    โž• Add an easily customizable robots.txt with default rules

    0๏ธโƒฃ The rules by default disallow all except direct links to content, the root profile and the public stream. Server admins can customize the rules easily via the admin interface.

    Admins can now add Terms of Service and Privacy Policy documents to the site (#477)

    0๏ธโƒฃ Terms of Service and Privacy policy documents are good to have. These tell people visiting your site what rules you operate with. Socialhome provides default templates you can activate with a few clicks.

    โšก๏ธ To review and enable the policy documents, log in as admin and access the admin pages through the navigation bar cogs menu. Scroll down and locate "Policy documents". There are two types of documents, the Terms of Service and Privacy Policy. Each one can be edited in draft mode and then published. Further updates in draft mode will not overwrite the last published version, until published.

    โšก๏ธ To publish the documents, open them, review the text and then change the status below the document to "published". Click Save - this version is now published. To edit in draft mode, switch the status back and the current edited revision will not show to users. You can also send email updates to users from the policy documents list. Select the policy documents you wish the send an email about, choose "Send email" from the actions list and confirm.

    Published policy documents are shown to both authenticated and unauthenticated users via the navigation bar cogs menu.

    Searching for hashtags is now possible using the global search

    The global search now in addition to profile results returns also results of matching hashtags. If the search term includes the hash ('#') and matches exactly to a tag, an instant redirect will be made to the tag stream.

    ๐Ÿ“œ Mentions are now parsed out of incoming remote content and locally created content.

    ๐Ÿ’ป Currently the only syntax supported is the Diaspora mentions syntax, ie @{Name; [email protected]}. Currently Socialhome users can create mentions by using the syntax manually. UI layer will be added later to choose people using the standard @ syntax to trigger search.

    When mentioned, local users will be sent an email notification with a link to the content.

    Note to admins : A script is provided if you want to parse old content for mentions. Run ./ runscript link_old_mentions if you wish to parse the content from the last year and create the links. This will also send out email notifications.

    Admin now has a section for Content items and Profiles, for debugging purposes. The User admin was also improved.

    Limited content is now supported ๐Ÿ™ˆ ๐Ÿ’ช (#302)

    ๐Ÿ”จ Limited content can now be created using the web create form. Note, API does not currently allow creating limited content (except replies to limited content). Once create form is ported to the API, things should be refactored there, right now had no bandwidth to ensure both work.

    ๐Ÿ”’ Limited content is shown in the stream with a lock symbol. The create shows some extra fields for limited content. These include "recipients" and "include following". Recipients is a comma separated list of target profile handles the limited content will be sent to. Include following will populate recipients (on save) with all the profiles that one follows. Later on we will add contact lists for better targeting.

    ๐Ÿšš Limited content visibilities can be edited. If someone is removed from the target recipients, a retraction will be sent to try and delete the content remotely from the target recipient.

    Currently recipients must already be known to the server, in the future a remote search will be done if the profile is not known. Any known remote profile can be targeted - it is up to the receiving server to decide whether to accept it or not. For local profiles, those of visibility SELF (ie hidden) cannot be targeted.

    There is also a new stream "Limited" available. It shows all limited content visible to you.

    โž• Add "Local" stream which contains only content from users registered on the same server. (#491)

    ๐Ÿ”„ Changed

    โฌ†๏ธ Bump Django to 2.0 ๐ŸŽ‰ (#460)

    Only precache for users who have been active (#436)

    ๐Ÿšง Don't precache items into streams for users who have not been active. Controlled by the same settings as the maintenance of precached streams. Will reduce unnecessary background jobs and make Redis memory usage even more stable.

    ๐Ÿ”ง Provided Circus configuration now ensures RQ worker processes are not allowed to endlessly hog server memory. In some rare cases it has happened that normally very stable RQ worker processes have hogged several gigabytes of memory due to reasons which are still being investigated. Now Circus will end those processes automatically.

    ๐Ÿšš Moved user account, logout, email management and API token pages links under the new "gears" menu in the navbar. These links used to be in the profile page menu.

    ๐Ÿ›  Fixed

    • ๐Ÿ‘ Allow search with Diaspora handle that contains port (#457)
    • Important for server admins. There was a mistake in the production Redis connection settings. The setting was not following the given configuration in the documentation. Now the possibility to set REDIS_URL (undocumented) directly has been removed and will raise an error. Use the REDIS_HOST, REDIS_DB, REDIS_PORT and REDIS_PASSWORD settings instead when needed.
    • 0๏ธโƒฃ Ensure all streams Redis keys have a default expiry of 30 days.
    • ๐Ÿ›  Fix parsing of remote profile names by also using last_name attribute, where given (#414)
    • ๐Ÿ‘‰ Show possible validation errors on create form instead of just not allowing a save.
    • ๐Ÿ›  Fix failure of processing remote retractions of replies or shares in some situations.

    โœ‚ Removed

    • ๐Ÿšš Legacy streams routes /public/, /followed/ and /tags/<name>/ have been removed. They already partially broke in the Vue.js streams rewrite.
  • v0.8.0 Changes

    March 06, 2018

    0.8.0 (2018-03-06)

    โž• Added

    ๐Ÿ‘ RFC3033 webfinger support for Diaspora protocol (#405)

    ๐Ÿ‘ This allows better profile discovery by remote non-Socialhome servers.

    โž• Added better streams precache maintenance in regards to inactive users (#436)

    Two new settings have been added:


    ๐Ÿšš If a user has been more than the set days without logging in, when trimming the precaches for that user, the inactive setting will be used instead. By default this means that precaches for users that haven't logged in for 90 days are removed. This is done to ensure Redis memory usage is predictable and stable in relation to active users.

    ๐Ÿ‘‰ Users who have been inactive for longer than the X days will still get their stream content normally but instead of getting a fast stream render from the cache, the items will be calculated using databse queries, which produces a slower stream load experience.

    โž• Added management command to delete local users and remote profiles

    ๐Ÿ“š This allows removing users who want their account to be deleted (coming to UI soon, sorry) and also deleting content and locking remote spam accounts. See documentation for details.

    ๐Ÿ”„ Changed

    Setting SOCIALHOME_RELAY_DOMAIN is now called SOCIALHOME_RELAY_ID. We're slowly replacing all direct Diaspora handle references with Diaspora URI format profile ID's in preparation for ActivityPub protocol addition.

    โšก๏ธ No action needed from server admins unless you have changed this setting, in which case it should be updated accordingly.

    ๐Ÿ‘ Start sending profile changes to remote nodes as public messages for better efficiency

    ๐Ÿ›ฐ Start sending federation payloads in new format (federation #59)

    This could drop federation compatibility with some really old servers in the fediverse, but adds compatibility to for example GangGo which is now able to receive Socialhome content.

    Stop requesting Twitter widget script for each tweet OEmbed (#202)

    Since Vue streams all tweets are initialized programmatically as they are rendered in the stream so we don't need to have the script tag on each oembed separately.

    /api-token-auth/ endpoint now returns limited profile information in addition to token

    ๐Ÿ›  Fixed

    ๐Ÿ›  Fix precached streams maintenance job. (#436)

    ๐Ÿšง Due to mistake in regexp not all old precached stream items were pruned in maintenance. Now fixed which should ensure Redis memory usage does not suffer from unreasonable increase over time.

    ๐Ÿ›  Fix profile discovery from current stable Diaspora (#413)

    โœ… A bug in Diaspora caused Socialhome profile discovery to fail. Introduce some patches to our webfinger to work around the bug and make profiles available to latest Diaspora versions.

    ๐Ÿ›  Fix receiving public content from GangGo (federation #115)

    ๐Ÿ›  Fix various errors in search for remote profiles

    For example GNU Social implements webfinger but the necessary attributes we need are not present and were causing errors.

    โž• Add missing titles and OG tags back to streams (#428)

    These disappeared in the rewrite of streams in 0.7.0. Also added a few new head tags improving author information in single content view and telling Twitter to not track users so much.

  • v0.7.0 Changes

    February 04, 2018

    0.7.0 (2018-02-04)

    ๐Ÿ†• New Vue.js frontend

    The work that started at a small hackathon in Helsinki in July 2017 is finally finished! The old buggy and hard to maintain Django template + jQuery based frontend has been completely rewritten in Vue.js. This provides a modern frontend code base, making it possible to add new features faster and to spend less time fixing bugs in the spaghetti code.

    A huge thanks goes out to @christophehenry doing most of the work in pushing this rewrite through!

    โž• Added

    Possibility to skip adding an OEmbed or OpenGraph preview to content. (#364)

    There is a new checkbox on content create that allows skipping adding a link preview to the content.

    โž• Add maintenance job to groom precache information from Redis. This ensures Redis memory usage stays stable.

    Important for server admins. There is a new process to run that is responsible for scheduling these maintenance jobs. The process is executed as a Django management command ie python rqscheduler.

    • If you already use the provided Circus configuration to run Socialhome, you don't need to do anything. When you restart Socialhome, the updated Circus configuration will automatically be used and the scheduler process started by Circus.
    • If you have a custom setup, preferring to run all processes manually, ensure one rqscheduler process is running at all times to ensure maintenance jobs and other future scheduled jobs are executed.

    A new configuration item SOCIALHOME_STREAMS_PRECACHE_SIZE is available to set the maximum size of precached stream items per user, per stream. This defaults to 100 items. Increasing this setting can radically increase Redis memory usage. If you have a lot of users, you might consider decreasing this setting if Redis memory usage climbs up too high.

    ๐ŸŒฒ It is now possible to use email for log-in. (#377)

    โž• Added a Code of Conduct document. All contributors to Socialhome are expected to honour these simple rules to ensure our project is a safe place to contribute to.

    Read the Code of Conduct here.

    Profile API has 4 new read only fields:

    • followers_count - Count of followers the given Profile has. For remote profiles this will contain only the count of followers on this server, not all the followers the profile has.
    • following_count - Count of local and remote profiles this Profile is following. For remote profiles this will contain only the count of profiles following this profile on this particular server.
    • has_pinned_content - Boolean indication whether the local profile has pinned any Content to their profile stream. Always false for remote profiles.

    - user_following - Boolean whether logged in user is following the profile.

    ๐Ÿ‘€ There is now a management command to generate dummy content for development environment purposes. See development pages.

    ๐Ÿ‘€ Installation docs now have an example SystemD service configuration, see installation-other-systemd. (#397)

    Content API has a new read only field has_twitter_oembed. This is true if the content text had a Tweet URL and a fetch for the OEmbed code has been successfully made.

    Content create page now has an option to disable federating to remote servers when saving the content. (#296)

    โšก๏ธ The content will still update to local streams normally. Federating the content can be enabled on further saves.

    If signups are closed, the signup link will now stay active but will point to a list of Socialhome nodes. (#354)

    ๐Ÿ”ง By default this URL is, but can be configured by the server admin.

    ๐Ÿ”„ Changed

    When processing a remote share of local content, deliver it also to all participants in the original shared content and also to all personal followers. (#206)

    ๐Ÿ‘ Allow creating replies via the Content API.

    Replies are created by simply passing in a parent with the ID value of the target Content. It is not possible to change the parent value for an existing reply or root level Content object once created. When creating a reply, you can omit visibility from the sent data. Visibility will be used from the parent Content item automatically.

    โœ‚ Removed Opbeat integration related configuration. The service is being ramped down. (#393)

    โšก๏ธ If as a server administrator you have enabled Opbeat monitoring, it will stop working on this update.

    ๐Ÿ†• New VueJS stream is now default o/ (#202)

    0๏ธโƒฃ Old stream can still be accessed using the user preferences or by passing a vue=0 parameter in the URL. All existing users have been migrated to use the new VueJS streams by default.

    ๐Ÿ›  Fixed

    ๐Ÿ“Œ Redirect back to profile instead of home view after organize pinned content save action. (#313)

    ๐Ÿ›  Fix searching of an unknown remote profile by handle using uppercase letters resulting in an invalid local profile creation.

    ๐Ÿ›  Fix Content querysets not correctly including the 'through' information which tells what content caused a share to be added to a stream. (#412)

    This information was already correctly added in the streams precalculation phase, but if the cache started cold or a viewing user cycled through all cached content ID's and wanted some more, the database queries did not return the right results.

    Attempt to fetch OEmbed and OpenGraph previews of URL's in content in the order of the links found. (#365)

    Previous behaviour lead to fetching previews of urls in random order, leading to a different url preview on different Socialhome servers.

    ๐Ÿ›  Fix remote profile retrieval from remote servers which don't support legacy Diaspora protocol webfinger. (#405)

    ๐Ÿ†• New version of federation library defaults to trying the new style webfinger with a fall back to legacy.

  • v0.6.0 Changes

    November 13, 2017

    0.6.0 (2017-11-13)

    โž• Added

    Profile "All content" streams now include the shares the profile has done. (#206)

    ๐Ÿ’ป Streams API now has endpoints for profile streams to match the profile streams in the UI. (#194)

    • /api/streams/profile-all/{id}/ - fetches all content by the given profile (including shares), ordered by created date in reverse order (= new stuff first).

    - /api/streams/profile-pinned/{id}/ - fetches pinned content by the given profile, ordered as set by the profile owner.

    ๐Ÿ†• New fields added to Content API:

    • is_nsfw, boolean value, true if the content text has the tag #nsfw in it.

    - share_of, if the content_type is share, this will contain the ID of the shared Content.

    If an incoming share references a remote target that doesn't yet exist locally, it and the author profile will be fetched and imported over the network. (#206)

    ๐Ÿ‘€ There are now Docker files for doing development work for Socialhome. See the docs here.

    ๐Ÿ”ง Third-party applications can now be added to enhance Socialhome or replace some of the core functionality, using configuration. The following new settings are available:

    • SOCIALHOME_ADDITIONAL_APPS - List of additional applications to use in Django settings.
    • SOCIALHOME_ADDITIONAL_APPS_URLS - Additional third-party URL's to add to core url configuration.

    - SOCIALHOME_HOME_VIEW - Override the home view with another view defined with this setting.

    Content API now has a new shares endpoint. (#206)

    This allows retrieving all the shares done on a Content.

    ๐Ÿฑ We now have a logo โœŒ


    ๐Ÿ‘€ The logo also comes in a light version, for dark backgrounds. See brand for details.

    ๐Ÿ”„ Changed

    ๐Ÿ”ง Logging configuration changes:

    • Removed separate logfile for the federation loggers. Now all logs go to one place. Setting SOCIALHOME_LOGFILE_FEDERATION has been removed.

    - Added possibility to direct Django and application logs using a defined level to syslog. Adds three settings, SOCIALHOME_LOG_TARGET to define whether to log to file or syslog, SOCIALHOME_SYSLOG_LEVEL to define the level of syslog logging and SOCIALHOME_SYSLOG_FACILITY to define the syslog logging facility. See configuration documentation.

    Important! The file to place configuration environment variables has changed to .env.

    โš  This is a more standard file name for environment variables than the previous env.local. For now we'll still load from the old file too, but a warning will be displayed to rename the file.

    ๐Ÿ’ฅ Breaking change. API Content serialization now returns list of tags as name of tag, not ID as before. The names do not contain the character "#".

    Content API replies endpoint now includes all the replies on the shares of the Content too.

    ๐Ÿ‘‰ Use modified timestamp for created timestamp when federating out to remote nodes. (#314)

    ๐Ÿ‘ This makes edits federate more reliably to some remote platforms that support edits.

    Stream grid item reply icon changed from "envelope" to "comments". (#339)

    ๐Ÿ›  Fixed

    ๐Ÿ›  Fix various issues with OpenGraph tags parsing by switching to self-maintained fork of python-opengraph.

    Share button is no longer visible if not signed in (#325)

    ๐Ÿ›  Remote profile image urls that are relative are now fixed to be absolute when importing the profile from remote (#327)

    ๐Ÿ›  Fix poor performance of fetching replies.

    ๐ŸŽ When adding replies of shares to the collection of replies fetched when clicking the reply icon in the UI, a serious performance regression was also added. Database queries have now been optimized to fetch replies faster again.

    When editing a reply, the user is now redirected back to the parent content detail view instead of going to the reply detail view. (#315)

    ๐Ÿ›  Fix regression on visibility of remote replies on shares.

    ๐Ÿš€ Replies inherit the parent object visibility and share visibility defaults to non-public in the federation library. Diaspora protocol removed the public property from shares in a recent release, which meant that we started getting all shares as non-public from the federation layer. This meant that all comments on the shares were processed as non-public too.

    0๏ธโƒฃ With a change in the federation layer, Diaspora protocol shares are now public by default.

    Fixed Streams API content user_is_author value always having false value.