All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- New flag on the "Privacy" Settings page: "Remove geolocation and other sensitive metadata from photos and videos you post".
- Show "you are subscribed" checkmark in "all groups" list
- Increase p-break height in posts
- Remove extra whitespace around post actions list
- Display an indicator between comments that are more than 6 days apart
- Backlinks indication under the post (in form of "N references to this post" link)
- Allow users to leave the direct message (except the author of the message)
- GitHub workflow for creating PR preview on surge.sh
- Internal bugs related to the showing of direct post destination feeds during and after editing
- The link preview components was refactored to use the modern web APIs and the modern React practices.
- Accept Apple-music urls without ?l= parameter
- New syntax for the distant comment ^-references. The near references uses a familiar syntax ^, ^^…, but starting from five caps these references now inserted as ^5, ^6 and so on.
- New appearance flag allows to use post/users hides not only in main Home feed, but also in Discussions, Everything, Best of… and user's friend lists pages. This flag is off by default.
- Support for cross-platform usernames, i.e. user@mokum, user@lj and so on. The services shortcodes and formats should be defined in the config.json (see textFormatter.foreignMentionServices in config/default.js).
- Native previews for Apple Music
- The comment ^-references are now based of comments sequentional numbers. It makes them stable and independent of user's appearance settings. Event if user chooses to hide comments from blocked users, the ^-references will point to the right places.
- In the dark theme, the Embedly iframes had a white background. For some unclear reason we should 'color-scheme' CSS property for the iframe to make it background transparent again.
- Blur (un-focus) the ButtonLink conponent after the mouse click. This prevents an unwanted onClick from being triggered if the user presses the spacebar (to scroll) after a mouse click.
- Fix inverted autoplay setting for Vimeo (introduced in 1.102.3)
- Generate proper embed-player for private Vimeo videos
- Detect legacy "http" Vimeo urls
- Re-release. 1.102.1 did not include proper version information.
- Merge bug that prevents the "Text scale" controll on Appearence page from working.
- 'webpack-cli' was updated to fix the dev server.
- The 'color-scheme' CSS property now applies on dark/light site mode. This property allows to set color scheme for browser UI elements such as scrollbars and form inputs.
- "Grips" in sidebar for drag and sort home feeds. Previously, the drag zone matched the feed link itself, and that was inconvenient, especially on mobile screens.
- "More" menu to posts
- There are two text submit modes now: the Mobile and the Desktop mode. The site
will try to automatically determine whether it runs on desktop or mobile
browser. User can manually select the submit mode, this setting will be saved
in browser storage.
- In Mobile mode, the Ctrl+Enter and Cmd+Enter acts as submit and Enter press caused line break.
- In Desktop mode, the Enter press acts as submit, to insert a new line user should press Shift+Enter or Alt+Enter.
- Some frontend preferences defaults can now be overridden depending on the account's createdAt date. It is useful for the new defaults that breaks the old behaviour and shouldn't affect the existing users.
- The Space+Enter functionality is removed. It is no longer necessary since we have Mobile submit mode now.
- Re-release. 1.101.1 did not include proper version information.
- In the old days, users could create groups with groupnames up to 27 characters long. Now the client router supports these names.
- User can adjust the site font size in settings' Appearance tab. This setting is saved locally in web browser and can be different for each browser and each device. The available font size range is 80% - 150% relative to the default size.
- Notification messages for the 'backlink_in_post' and 'backlink_in_comment' events.
- Post can now have an empty body if it contains one or more attachments.
- The sidebar memories years now starts from 2005.
- Fix the mobile Chrome unwanted font boosting
- Fix invalis data of the some archive posts
- Warning about the orphan groups on the "Delete account" page.
- Lightbox-navigation between attachments of single comment
- The Highcharts library replaced by the Recharts due to license incompatibility.
- Group admins now can remove a post from one group at a time (#1398)
- Show missing throbber in "more comments" loader
- Added explicit error-handlers to naked promises
- Display usernames of gone users in post comments in grey color
- Headers of sidebar blocks are links now
- "More" menu for comments with all comment-related actions and information
- Changes in search field on the "All Groups" page now resets the page number to the first page. Also the page and the query string are now synchronized with the URL's query parameters.
- A group table on 'All Groups" page is scrollable on narrow screens now
- Fix accessibility-labels of comment-likes (actions were opposite to the real ones)
- Removed thin red line in upload preview
- Point beta-reports to "beta" group instead of "support"
- Accept the 'q' GET-parameter as search query in the header form
- Typo on Donate page
- Generate '_dist/version.txt' file during production build. This file contains build version and date and can be used to auto-check the client updates.
- The client now can detect the updates of its code on the server and advice the user to reload the page. This feature is turned off by default. When enabled, the client makes a HEAD request every 5 minutes (configurable) to the specific address ("/version.txt" is recommended) and looks for the specific response header ("Last-Modified" by default). When the header value is changed, the information bar is shown to the user: “There’s a new update for FreeFeed available! Refresh_the_page when you are ready.”
- Confirmation dialog when the private user wants to unsubscribe someone from himself.
- Donation 'traffic light' in the sidebar. This widget depends of
donations.statusAccount
config field (null by default means no widget). This field should contain the username of the group (or user) whose screenname sets the donate status. The available statuses are 'Very good', 'Good', 'OK', 'Very low', 'Low', 'Critical'. The widget performs case-independent search for these substrings in the screenname. - Donation parameters (PayPal button ids, LiberaPay and YooMoney widgets) are now configurable by config.
- New mobile-friendly Sidebar and search-input
- When the user visits the post by non-canonical URL, the client replaces URL to canonical one, keeping the query string and hash if present. Previously the query string and hash were not preserved.
- The scroll compensation isn't applied now when the window scrollY position is 0. So when some content appears on the top of the page, it will not caused scroll compensation and will not be hidden under the top window edge.
- The info popups now shows properly for users that changed their usernames.
- The 'beta' cookie is now re-installed every time the application started. This is to trick Safari that deletes cookies after 7 days.
- Removed old invalid links to Clio and "Archives F.A.Q."
- Post created by the user with 'Create post' from is showing with expanded comments. The user can add multiple comments to the newly created post and they will not be suddenly collapsed.
- If the anonymous user visits the page that require authorization, the browser
redirects to the
/signin?back=…
page. Previously, the back parameter included only the pathname of the page, not the query and hash. It is fixed, and now it includes pathname + query + hash. It is especially important for the magic links to the token creation page. - The COMPLETE_POST_COMMENTS responses was not fully processed, leading to
Cannot read property 'username' of null
errors when updating comments. - Tapping a user link was sometimes recognized as a mouse click on iOS devices.
- Make reducers compatible with offline state (they didn't know how to handle connectivity errors previously)
- The 'Sign In' link in the header now has '?back=...' parameter that will redirect user back to the viewed page after sign in.
- Forced page reloading after sign out. This guarantees a complete reinitialization of the state, which, unfortunately, is difficult to achieve by other methods.
- Handle incorrect memory-urls as explicit "error 404"
- Properly update state of groups in realtime
- Error timestamp in error boundary message
- The COMPLETE_POST_COMMENTS responses was not fully processed, leading to
Cannot read property 'username' of null
errors when updating comments. - Deleting the friend list may have caused an error in the sidebar.
- Underline sidebar links on hover
- User links in the sidebar (link to the current user and to the recent groups) doesn't show informational popup anymore.
- The numbers of likes of omitted comments now updates in the real time.
- The posts and comments data now fully rewrites on feed update. It has been broken in recent releases and click on FreeFeed logo wasn't collapse expanded comments and likes
- Moved comments highlight logic from redux to PostComments' state
- Update comments data on realtime event
- Restore highlighting of comments on author name hover (regression in 1.95.0)
- Set beta channel flag after the preferences update response
- Group screennames in the right menu and in the page titles now updates in the real time
- Links between All Groups and Your Groups pages
- Jest-based snapshot tests
- Remove previews for the Reddit links. Reddit embeds can contain a video with sound that plays automatically in the feed.
- The logic for expanding/collapsing comments has been rewritten. Now up to two comments can be seen after the fold. If after deleting a comment there are no comments left before or after the fold, new data is fetched from the server. If any of the comments are being edited, they won't fold until the editing is finished.
- Tiktok previews work for videos with empty title
- Optimized build results: split code in smaller js-bundles, pre-compress js/css files
- On touch devices, where hover is not available, the user info popup now appears after clicking the user link. To navigate to the user's page, you need to click on the link inside the popup.
- Raised maximum length of posts and comments to 3000 chars
- Raised minimum password length to 9 chars
- Move "fold comments" label above the readmore
- Tweaked russian-language text for welcome screen
- Removed Auth token reissue and inter-tab synchronization logic
- Added some ARIA-roles markup
- Changed the authorization tokens reissue algorithm. Now any tab can reissue tokens. Tabs uses locking for conflict protection and listens for the token changes from the other tabs.
- Avoid breaking lines in stats of private users
- Fix errors when signing out from some of sub-pages of settings
- A tall Embedly previews now folded to a reasonable height
- Created subscription requests are now visible at 'Requests' page without full page reload.
- Fix profile head layout in narrow screens
- Prevent statlinks from wrapping on narrow screens
- Avoid showing "edit list" control for anonymous users
- Remove ellipsis on narrow screens on group header
- Improved english text on welcome screen
- Text is properly selectable (select, copy, paste) even if it has spoiler-tags in it
- Selecting text does not reveal spoiler contents on Windows
- Improve auto-direction support in text inputs (useful for right-to-left languages)
- Load external css-files after inline styles. Otherwise, rules priority was broken
- Prevent display of link previews from inside spoilers
- Focus is removed from post textarea after posting
- Fix highlight color of expand-panel
- Fix YouTube previews
- Use open-source Vazir font to display Persian letters
- New authorization sessions support. User is now able to view and manage (close) their authorization sessions on the special settings page.
- User's stats block (on her feed-page) has "All posts" link now
- "All Groups" page can be filtered now
- "Spoiler" texts can be hidden by clicking on them
- The "Beta version" functionality. The instance can be declared as beta version. In this case the "Beta" subheader and the floating "Report a bug" button is shown.
- Restored accidentally deleted "Browse" word from sidebar
- Compensate the unwanted scrolling on iOS Chrome after lightbox closing.
- Prevent early close of the comment-likes list (It started to close after opening in React 17)
- Developers can use the config.json file in the project root during the dev. server run. This file will not be included in compiled code but it is useful for development because config changes now doesn't require full client rebuild.
- Developer server (started by
yarn start
) now listening all network interfaces instead of just 127.0.0.1. It helps to debug client on different devices in same network. - Tweaked contrast of spoiler-tags (they're WCAG compatible now)
- Don't close clikes-panel on click inside of it (still close it on click outside)
- Wait up to 250ms after click to show fully rendered clikes panel. Show throbber if data is not ready after that
- Resolved regression (removed prematurely enabled react-17)
- Prevent conflict between spoilers and 'read more'
- Link to results in Vote2020 block
- Use different style for "vote2020" block (thanks to @clbn)
- A 'Not Found' page for URI's that does not match any of the site routes.
- A <spoiler> tag for the sensitive or spoiler texts.
- Support for FreeFeed's Supervisory Board 2020 election
- Applied some rendering optimisations
- Show explicit error if config.json failed to load, and it wasn't 404
- Embedly previews handle light/dark theme switching properly
- Home feed edition popups now closes when the Esc key is pressed or the shadow overlay is clicked
- Incorrect sorting of recent groups when getting real-time updates
-
Google Analytics ID isn't hardcoded in index.jade anymore.
-
Client now supports arbitrary list of external identity providers that are available on the server.
- Update version in footer
- SoundCloud links previews
- Support of well-known URL for changing passwords
- Spotify links previews
- Links to the images hosted on Dropbox are now correctly displayed in a lightbox
- Improve mentions parsing
- Cut the post links in texts after the first UUID octet block
- Describe new search-syntax rules
- Add support for URLs ending with asterisk
- The sidebar block headers can be multiline now. It is useful for long variable phrases like “Memories of September 30”. Also, we prevent linebreaks between month and day in the Memories header.