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.
- The advanced search form is refactored to support the new search operators.
- When user presses '/' or 'Ctrl+K' hotkeys, the search input form in the header is focused.
- This form now has an "Advanced search options" button that redirects to the advanced search form.
- The post attachments now appear in the same order as they were added by user. Previously, attachments were sorted by the upload order.
- User's avatars in the posts are now shown without a loading="lazy" attribute. If the avatar picture is not found, the default avatar is shown.
- Multiple fixes in style handling process:
- The last UNSAFE_* methods were removed from React components.
- iOS has strange behavior with service workers updates, so use the version file method instead.
- The PWA manifest and the service worker was added. The service worker caches all site assets, including web fonts. It also caches user profile pictures (up to 100 entries). The AppUpdated component periodically checks the service worker for update.
- Enable player for video attachments. Add a playback time limit for it.
- The SmartTextarea component now handles the 'onPaste' event more precisely. When the clipboard contains the text and the image in the same time, both are pasted.
- The recipients list of a post was determined incorrectly if some of the post groups were not on the page.
- The 'Privacy' and 'Terms' pages now renders statically from the Markdown files
and available on the
/docs/privacy
and/docs/terms
paths. It makes them accessible for the checking robots, that cannot execute the JavaScript.
- The autocomplete menu now has a links to the found users/groups pages. These links opens in a new tab for the most cases. Links opens in the current tab when the user enters the "@username" in the search bar at the beginning of the query.
- The 'Expandable' component was rewritten using the modern browser APIs. It now properly handles the content updates and does not require the content to be fully inline.
- Style issues for code blocks.
- Potentially dangerous RegExp in the code blocks logic.
- Add support for inline code (single backticks) and code blocks (triple backticks) to post/comment text parser.
- Autocomplete menu did not update properly after the server autocomplete response.
- Add a "description" meta-tag to the index.html.
- Autocomplete for the user/group names in the post and comment inputs. When the user types "@" and some text afterwards, the matched users/groups are shown beneath the text input.
- Switch to V3 server API (with omittedCommentsOffset field and two comments after the fold).
- Update SSI patterns in index.html to support dashes in groupnames.
- Bug on iOS that blocks deletion of post's attachments.
- Ability to "unlock" and preview comments from the banned users and with reply to the banned users.
- Fixed a bug where the first partial opening of comments ("show last N") would open one extra comment.
- Separate local and remote file list changes in the file uploader (finish the fix in 1.131.1).
- Programmatic insertion into the comment text area is now debounced with a timeout of 100ms. It prevents races when multiple files are uploaded at the same time.
- Very long words now breaks up in the comment preview and at the Notifications page.
- Fixed a draft fileIds synchronization bug.
- Allow to unfold comments step by step on the home and feed pages.
- Fixed a bug that caused not all uploaded files to be attached to a post.
- Support for symmetric bans: comments of users, who have banned the viewer, are hidden for the viewer.
- Use blurred low-res preview of NSFW images instead of solid gray panels.
- Fix the comment form's "Cancel" button behavior in the feed.
- Don't show the "Clear" button on empty forms.
- Drafts now can be completely disabled by user.
- Post and comment creation forms now have a "Clear" button that resets the form state.
- After a successful password reset, the user is now redirected to the sign-in page.
- Ability to read other people's minds.
- Youtube returns a 401 response for videos that are not allowed to be embedded. These videos used to cause an error, now they are displayed as previews.
- Fix lightbox for some old attachments that have no sizes in API responses.
-
Drafts. When a user creates/edits a post or comment, the entered text is automatically saved to localStorage. This prevents accidental loss of content in case of a bad connection or browser closure. For posts, saved drafts also contain attachments and feed name information.
Draft data automatically synchronized between the browser tabs, but not between the other user's devices.
Drafts are deleted when a post/comment form has been successfully submitted or explicitly canceled by the user. When the user signs out, all draft data is deleted. Draft data also deletes when the signed in user changes.
User can disable drafts saving on the Settings / Privacy page. In this case, drafts will still work, but will not be saved to persistent storage and will be lost on tab close/reload.
- Incorrect use of 'useEffect' causing a crash on the 'Manage Group Subscribers' page.
- Return the 'maximum-scale=1' back to the "viewport" meta tag, but remove it on non-iOS platforms. This allows to zoom in page on all platforms, but prevents the unwanted auto-zoom on iOS.
- Upgrade React to v18
- Users can now scale the site with a pinch gesture on mobile devices.
- The lightbox code now detects image sizes faster when showing images from text links. User doesn't see a small 100x100 preview anymore.
- Use the latest (v5) version of PhotoSwipe library.
- User can now turn on/off notifications for new comments on the posts they commented on.
- Missing post submission form on group pages.
- The site administrator can now define a list of "privacy control groups" in the config (the privacyControlGroups entry). These groups will be always shown in the feed selector of new or existing posts. The pages of such groups do not show posts by default, and such groups cannot be subscribed to.
- Support for the new "Notify of new comments" feature:
- User can now turn on/off notification for new comments on the specific post via the "More" menu item;
- User can now turn on/off notification for new comments on their own posts;
- The new "Comments" tab has been added to the "Notifications" page.
- The wording "Disable blocked contingent..." (in the context of groups) has been replaced by "Show blocked content..." as more clear.
- Checkboxes in texts was broken during the 'social-text-tokenizer' upgrade.
- Some SASS issues.
- The feed selector ('To:' line) is now always visible in the post creation form.
- The "Edit list" link is no longer shown next to the Home or friend list page title. It has been moved to the "•••" menu on the right side of the list header.
- Upgrade 'social-text-tokenizer' (the post/comment texts parser) to the version 3.0.
- Reddit r/-links were displayed incorrectly.
- During direct message editing, there is no access check of the existing recipients (even if some of them are gone). This check is unnecessary because the message author cannot remove the existing recipients anyway.
- The algorithm for displaying the "Expand" button in "compact" text mode has been fixed.
- Post actions didn't work on the post backlinks page.
- The non-existent post page did not display the correct error message.
- Links to posts and comments are now shorter: e.g.
/user/4a39b8
(a post) or/groupname/f482e5#ad2b
(a comment).- All public URLs and links to posts and comments are now in short format.
- Addresses of posts and comments with leading slash (
/user/...
) are now parses in texts as active links. - Old-fashion links, with long UIDs, are still fully supported.
- New page(s)
/:userName/:postId/backlinks
that displays posts that link to this post. This replaces the old way of displaying backlinks, which used search.
- Spoiler tag can now contain line feeds. In addition, user text formatting utilizes simpler HTML, with fewer wrappers. Visually, the output for the user is not changed (except for line translations in spoilers).
- Text checkboxes are not processed in a special way if there is more than one of them in the text.
- The default font set no longer includes the Helvetica family when the client platform is Windows. Helvetica is not a native font in Windows, and the manually installed version of the font may be incomplete (for example, not contain Cyrillic).
- Updated TWEET_RE regex to support matching x.com in addition to twitter.com.
- Disable player for video attachments until we can deal with the increased traffic from them.
-
Comments can now be used as checklists if the comment text starts with "[ ]" or "[x]" (one can use other symbols in parentheses as well: [v], [*], [🗸], or Russian "Ha").
If the current user matches the author of the comment, an interactive checkbox is displayed at the beginning of the text. When the user clicks the checkbox, the comment text changes to reflect the checkbox state.
For other users, a fixed-width text representation of the checkbox is shown: "[ ]" or "[🗸]".
- Telegram previews now supports dark theme
- Expand texts of translated posts/comments
- Ability to translate the text of comments and posts (if supported by the server). Users can set their language for translation in the preferences (the browser language is used by default). There is a new "Translate to..." item in the "More" menu for comments/posts.
- User can now search for "My feed" in feeds selector
- Increased margin under the "Expand preview" button
- Bookmarklet did not open
- Bookmarklet component is now wrapped in Suspense because it is loaded dynamically
- UserSubscriptionEditPopup did not open when one clicked the 'edit' button
- Fixed import of UserSubscriptionEditPopup component
- The component returned by the 'lazyComponent' helper now receives a reference
- Deprecated 'vazir-font' package replaced with 'vazirmatn'
- Startup styles are applied only to the initial state of the page and do not interfere with application styles.
- The start script that initiates the configuration and sets the color scheme is now injected into the HTML code. The custom configuration is also injected using SSI, if possible. This allows instant access to the configuration, without an additional HTTP request, and allows the correct color scheme to be applied before the document body starts rendering. This, in turn, gets rid of the blinking when the page loads.
- Initial layout styles, to prevent jerking while loading
- Added support for legacy browsers, that doesn't support modern ES features
- Show the next comment in the same comment preview panel when clicking on the "^^" in the comment preview.
- Use Vite as builder and Vitest as test runner. We no longer need Webpack,
Mocha, Jest, and (mostly) Babel! Also:
- 'lodash' replaced with 'lodash-es' for better tree shaking
- Rare used pages, components and libraries now loaded asynchronously
- Multiple cosmetic corrections preparing the transition to Vite as a builder:
- Use Dart Sass instead of node-sass
- Use math.div instead of "/" in SCSS files
- Rename files uses JSX syntax from .js to .jsx
- Remove non-standard do {} syntax
- Use explicit import() statements in the index.jsx
- Use relative css imports for styles from node_modules
- Update stylelint calls and fix styles issues
- The users and groups pages now shows dynamically calculated statistics.
- All "a" links without the "href" attribute and some other pseudo-buttons have been replaced by the ButtonLink component. This improves the keyboard accessibility of the site because ButtonLink is able to focus and click from the keyboard.
- The backlink click now doesn't reload a full page.
- On iOS, the feed selector doesn't focus properly after clicking the Add/Edit button.
- Support for Aparat.com video hosting
- Support for songs on music.youtube.com
- Support for YouTube playlists
- Calender view
- Updated feed selector component:
- The react-select library has been updated from v1 to v5
- It is possible to create posts in non-private groups without being a member of them. A post creation form is available on the pages of such groups.
- All post creation and editing form controls are now accessible from the keyboard.
- The feed selector can search by username and screenname. Search with an incorrect keyboard layout is possible (English, Russian and Ukrainian layouts are supported).
- Privacy indication is improved:
- The "Post" button shows the privacy icon of the post being created.
- The feed selector shows group privacy icons.
- A warning is shown if the post is published in groups with different privacy levels.
- Minor attachment-related issues:
- More reliably detect screenshot paste,
- Proper pass the file name to attachment creation method.
- An error inserting pictures when editing a post
- Titles of YouTube videos are properly displayed now
- Hiding attachments under the 'read more' fold
- A new "Mention @username" item has been added to the post's dropdown menu. By clicking on it, you can start a new comment and mention the person who created the post, or add their @username to the comment you have already started creating.
- Vimeo on demand links support
-
Take Save out of "more" menu
-
The Dropzone library has been replaced with a custom file uploader. Attachments for posts and comments are now uploaded uniformly. The CreatePost and PostEditForm components have been redesigned to utilize the new uploader.
-
The internal SubmittableTextarea component replaced by new SmartTextarea. The SmartTextarea allows to:
- submit text by Enter of Ctrl/Cmd+Enter;
- handle files paste and drag-n-drop;
- insert text to the cursor position using 'insertText' instance method;
- use 'onText' attribute to handle updated text (it is necessary for 'insertText' updates, which doesn't trigger onChange).
This component handles all tasks related to creating/editing posts and comments in a unified way.
- Minor bugs
- Rich event preview on Notifications page. Every event now has a user picture and text of comment or post (if this event is comment- or post-related).
- Reddit's
r/subreddit
and/r/subreddit
addresses are now auto-linked.
- "Delete" item of the "More" menu is visible to the user for every comment in user’s own post
- "Delete" item of the "More" menu is visible to a group admin for every comment
- Incorrect "Block user" popup display on user card.
- "Add comment" link doesn't properly focus input on iOS.
- The "Add comment" input on iOS in the feed view is now correctly focused after creation.
- Broken lightbox view from the comment preview modal window.
- The "Comment" link now always opened and focus the "Add comment" input. Previously, a second click closed the input field.
- Confirmation with short info on click on every "Block user" button.
- Disabling bans in groups:
- Checkbox in group settings (for administrators) to disable/enable bans in groups;
- Add "Disable/Enable blocking in group" buttons on group page;
- Group group-related actions in drop-down menu in group profile;
- New events on Notifications page.
- Reload user/group feed after ban/unban and enable/disable bans in group.
- Show creation time and inviting user in gone user profile.
- Click on main comment link on a single post page now moves focus to the comment form
- Invite-only registration support. Updated invite creation, invite use and sign up forms. There is new section in config, registrationsByInvite, with the formIframeSrc field. It allows to define URL of some external form for manual registration requests.
- TikTok previews now display as static images and load a full-featured embed only after a click.
- Email verification support. If verification is supported by server, the new field (Verification code) is appear in Sign Up and Profile forms. When user sets up or updates email address, they should receive verification code on it and enter that code to the form.
- NodeJS 18.x is supported now
- "Everything", "Search" and "Best of" pages are not available for non-authorized users.
- Updated texts about donations to FreeFeed MTÜ
- Group administrators can now block users in their managed groups. A blocked user cannot post to the group, but can read and comment if the group is not private.
- Video attachments now have a player, when browser supports them
- YouTube shorts now supported in media viewer
- No refresh needed to view private users and groups after subscription approved
- No refresh needed to interact with new subscription requests
- Hidden comment class name updated to avoid interference with Firefox builtin extension style
- Fix broken PhotoSwipe icons
- Restore Vazir font (new css-loader didn't load it in 1.111.0)
- Instagram Reels are supported by native previews. First contribution by Mohammad Jafari. Thanks!
- It is now possible to hide posts by hashtags! Also, the underlying algorithm allows to add other types of hiding criteria in the future.
- Take Save out of "more" menu
- The erroneous "Remove from" items has been removed from the post's "More" menu
- Fixed domain-name in donate link
- On the "Manage Subscribers" group's page, the list of administrators changed as the cursor moved over the group members.
- Do not show "Promote" button for deleted users.
- Restore style of the homefeed-dropdown.
- The
/CURRENT_USERNAME/subscribers
and/CURRENT_USERNAME/subscriptions
addresses now redirects to the corresponding tabs of the/friends
page. - The 'Subscribe' and 'Request a subscription' links no longer open the home feed selection window. The subscription is always made to the main Home feed, and then the user can change the feed.
- Restored "url" and "querystring" polyfills required by webpack.
- Restore use of IEC-units for file-sizes.
- Links to the user/group memories in the sidebar of the user/group-related pages
- Click on the ^^^-reference shows a preview of the referenced comment
- Remove usage of "screen name" in favor of "display name" in UI
- Improve texts for account privacy settings
- Show registration date in Profiles and Groups
- Update "privacy" cookie if it is already set. It should prevent 2-weeks cookie expiration in Safari.
- Add extra space between username and "is not in any of your friend lists" message.
- New "Sanitize media files" page (/settings/sanitize-media) which allows to remove sensitive metadata from the existing media files.
- New frontend setting: comments.hideRepliesToBanned (false by default, can be adjusted on Settings / Appearance page). If it is set to true, comments that starts with a @-mention of banned user are replaced by placeholder ('Comment with reply to blocked user'). Comments authored by the current user are always visible.
- Do not try to preview shorten TikTok URLs in posts.
- Re-release. 1.106.0 has incorrect merge.
- 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
- Display subscription requests alert box on user's profile feed
- "You are subscribed" checkmark in the "All groups" page
- Increase p-break height in posts
- Remove extra whitespace around post actions list
- Keep "back=" in URL when linking from "Sign in" to "Sign up"
- 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.