nicolium: changelog page structure

Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
nicole mikołajczyk
2026-03-20 13:54:34 +01:00
parent 10ee44c4df
commit c9adbe82c9

View File

@ -4,180 +4,177 @@
Changes made since the project forked from Soapbox in April 2024.
This changelog does not include a lot of UI changes, consistency improvements, optimizations, accessibility improvements and updates for improved backend compatibility. It's too hard to maintain such a list manually and it wouldn't be really that useful.
> This changelog does not cover every UI change, consistency improvement, optimization, accessibility improvement, or backend compatibility update — maintaining such a list manually would be impractical.
### Major changes
- Switched to a separate library [`pl-api`](https://codeberg.org/nicolium/nicolium/src/branch/develop/packages/pl-api) for Mastodon API integration. It is mostly written from scratch, inheriting minor code parts from Soapbox/Mastodon. This also comes with improved compatibility with various Mastodon API extensions and abstracts out the implementation details.
- Migrated client data stores from Redux to Zustand and remote data stores to TanStack Query. Stores have been migrated away from `immutable`.
- Migrated router from React Router to TanStack Router.
- Styles are being migrated from TailwindCSS to SCSS.
- Cat ears.
### Added
- Cat ears
**Behavior:**
#### Behavior
- Notifications of the same type and reposts of the same post are grouped client-side.
- Date is displayed for notifications that are not about new posts.
- Replies to your posts are displayed differently to other mentions in notification list.
- Hashtags from the last line of a post are displayed in a separate component. Adapted [from Mastodon](https://github.com/mastodon/mastodon/pull/26499).
- Native grouped notifications are used on Mastodon.
- Likes, reposts and reactions lists are displayed on long press of respective buttons.
- Date is displayed for notifications that are not about new posts.
- Replies to your posts are displayed differently from other mentions in the notification list.
- Hashtags from the last line of a post are displayed in a separate component. Adapted [from Mastodon](https://github.com/mastodon/mastodon/pull/26499).
- Likes, reposts, and reactions lists are displayed on long press of respective buttons.
- User local time is displayed on profile and in account hover card, if specified in profile fields.
- Poll results can be displayed before voting.
- By default, home timeline remembers the moment you stopped scrolling and restores the position when you're back in the app.
- A 'Skip pinned posts' button was added to user profiles.
- Home timeline remembers scroll position by default and restores it when you return to the app.
- A "Skip pinned posts" button was added to user profiles.
- Posts in timelines are displayed grouped together if they belong to the same context.
**Settings:**
- You can add image description to your avatar/backend, if supported by backend.
- GoToSocial users can manage post interaction policies.
- Users can set interface theme color.
- Users can adjust interface size.
- Users can use system font for emoji rendering.
**Composing posts:**
#### Composing posts
- WYSIWYG text formatting, available if Markdown is supported.
- When writing posts, links to statuses are added as quotes, when supported by backend.
- You can select post language manually, when composing.
- You can write posts with multiple language versions, when supported by backend.
- Language detection is done client-side for composed posts, utilizing `fasttext.wasm.js`.
- Draft posts. They are stored locally only and work with any backend.
- New visibility scopes are supported local-only and list-only for Pleroma. Local-only is a separate switch on GoToSocial.
- On backends that support explicit mentioning, you can choose to include mentions in your replies body.
- GoToSocial users can set per-post interaction policies.
- When adding a URL with tracking parameters, a suggestion to remove them from the URL is displayed.
- On supported backends, you can see post preview before posting.
- When entering a long, all-lowercase hashtag, a suggestion about hashtag accessibility is displayed.
- Links to statuses are added as quotes when supported by backend.
- Manual post language selection.
- Posts with multiple language versions, when supported by backend.
- Client-side language detection for composed posts via `fasttext.wasm.js`.
- Draft posts, stored locally and compatible with any backend.
- New visibility scopes: local-only and list-only for Pleroma; local-only as a separate switch on GoToSocial.
- Optional inclusion of mentions in reply body on backends that support explicit mentioning.
- Per-post interaction policies for GoToSocial users.
- Suggestion to remove tracking parameters when adding a URL.
- Post preview before posting, on supported backends.
- Suggestion about hashtag accessibility when entering long, all-lowercase hashtags.
**Dashboard:**
#### Features
- Dashboard main page displays metrics included in Mastodon admin dashboard, if supported by backend.
**Features:**
- The most recent scrobble is displayed on user profile/card.
- Most recent scrobble is displayed on user profile/card.
- Users can generate _interaction circles_ for their profiles.
- You can bite users, if supported by backend.
- You can browse Bubble timeline, if supported by backend.
- Mastodon displays trending articles on Search page.
- Posts can be addressed to lists of users, on Pleroma.
- Support for events with external registration.
- Added a dedicated wrench reaction button.
- Interaction requests are supported. You can review pending requests and you get informed if your backend doesn't let you reply to a post. Supported on GoToSocial.
- Events with external sign up are supported.
- Bite users, if supported by backend.
- Bubble timeline, if supported by backend.
- Mastodon displays trending articles on the Search page.
- Posts can be addressed to lists of users on Pleroma.
- Events with external registration.
- Dedicated wrench reaction button.
- Interaction requests: review pending requests and get informed if your backend doesn't let you reply to a post (GoToSocial).
- Application name used to post a status is displayed.
- Outgoing follow requests are displayed, if supported by backend.
- It is possible to remove tracking parameters from URLs in displayed posts.
- Displayed media now have a button for alternative text preview.
- Links in displayed posts can be configured to always display target domain, even when it's not a part of their content.
- Users can configure redirects from popular websites to proxy services like Nitter and Piped in displayed posts.
- It is possible to boost a post with specific visibility, if supported by backend.
- Pleroma shoutbox is displayed on chats page.
- Displaying user-provided media can be disabled, media descriptions will be displayed instead.
- MFM can be displayed on compatible backends.
- Lists can be set as exclusive and replies policy can be set up, if supported by backend.
- Threads can be displayed in a linear view, similarly to traditional Pleroma-FE, as an alternative to tree view. You can expand spoilers with one click.
- Iceshrimp.NET drive is supported, allowing to upload and manage files and attach them to uploaded posts.
- Posts (including private ones, also for unauthenticated users) can be translated locally, on browsers supporting Translator API.
- You can set blocks to auto-expire on Pleroma.
- Antennas and circles are supported on Mastodon forks that implement those.
- Remove tracking parameters from URLs in displayed posts.
- Button for alternative text preview on displayed media.
- Option to always display target domain for links, even when not part of content.
- Configurable redirects from popular websites to proxy services like Nitter and Piped in displayed posts.
- Boost a post with specific visibility, if supported by backend.
- Pleroma shoutbox on the chats page.
- Option to disable user-provided media, showing descriptions instead.
- MFM rendering on compatible backends.
- Exclusive lists and replies policy, if supported by backend.
- Linear thread view (similar to traditional Pleroma-FE) as an alternative to tree view, with one-click spoiler expansion.
- Iceshrimp.NET drive support for uploading, managing, and attaching files to posts.
- Local post translation (including private posts, also for unauthenticated users) on browsers supporting the Translator API.
- Auto-expiring blocks on Pleroma.
- Antennas and circles on Mastodon forks that implement those.
#### Settings
- Image descriptions for avatar/header, if supported by backend.
- GoToSocial users can manage post interaction policies.
- Interface theme color selection.
- Adjustable interface size.
- Option to use system font for emoji rendering.
#### Dashboard
- Dashboard main page displays metrics from the Mastodon admin dashboard, if supported by backend.
### Changed
**Behavior:**
#### Behavior
- Separated favourites from reaction emojis. Limit for one reaction per post is removed. Facebook-like emoji reaction bar is removed.
- Separated favourites from reaction emojis; removed per-post reaction limit and Facebook-like emoji reaction bar.
- Simplified sensitive text/media logic.
- Reposting user is mentioned, when replying to a reposted status.
- Notification types filtering options are reasonably merged.
- Reposting user is mentioned when replying to a reposted status.
- Notification type filtering options are reasonably merged.
- Search results are never cleared by just leaving the page.
- Status spoilers are displayed with a collapse/expand button, not in an overlay.
- Status spoilers use a collapse/expand button instead of an overlay.
- Mentions and hashtags in bio no longer link to external pages.
- Quotes are counted with reblogs for non-detailed statuses.
- Reactions/favourites/reblogs list modal is displayed on long press.
- Various accessibility changes, focused on screen reader compatibility.
- Posts in timelines are now displayed grouped together if they belong to the same context.
- Various accessibility improvements, focused on screen reader compatibility.
- Users get asked to update account note when blocking/muting accounts.
- Bookmark folder selection modal lets you filter folders by searching.
- Improved provding meta information for posts to improve Reader Mode on Firefox.
- Bookmark folder selection modal supports filtering by search.
- Improved meta information for posts to improve Reader Mode on Firefox.
**Settings:**
#### Composing posts
- Moved missing description confirmation option back to Settings page.
- Custom emojis are split into categories.
- GoToSocial users can post with a date in the past.
- Post scopes renamed to match Mastodon wording.
#### Settings
- Missing description confirmation option moved back to the Settings page.
- Profile fields can be reordered on the Edit profile page.
- Explicit addressing can be disabled on supported backends.
- Developers options are no longer hidden behind a challenge.
- Developer options are no longer hidden behind a challenge.
**Composing posts:**
#### UI
- Custom emojis are now split into categories.
- GoToSocial users can post with date in the past.
- Post scopes were renamed to match wording used by Mastodon.
**UI changes:**
- Removed header. Search bar and profile dropdown are moved to the sidebar. Mobile sidebar button is moved to the thumb navigation.
- Floating action button for creating new posts is moved to the thumb navigation.
- Mobile sidebar UI is changed to look like a popover.
- Added some animations, improved consistency of the existing ones.
- Max width of the layout is increased.
- Updated Lists UI, to match the overall style.
- RSS button is displayed in account header for local users, when unauthenticated.
- Removed header; search bar and profile dropdown moved to the sidebar; mobile sidebar button moved to thumb navigation.
- Floating action button for new posts moved to thumb navigation.
- Mobile sidebar styled as a popover.
- Added animations and improved consistency of existing ones.
- Increased max width of the layout.
- Updated Lists UI to match overall style.
- RSS button displayed in account header for local users when unauthenticated.
- Conversations page is always displayed, even when Chats are supported.
- Made it woke.
- Emojis are zoomed on hover.
- Event create/edit form is now a page, instead of a modal.
- A star is used for favorite icon, instead of a heart.
- Emojis zoom on hover.
- Event create/edit form is now a page instead of a modal.
- Star used for favourite icon instead of a heart.
- Account avatars are squared.
- Background gradients can be disabled. Some other visual behavior depends on this setting.
- Tabler Icons were replaced with Phosphor Icons.
- The entire loading process uses the same animation now.
- Changed status info and notification title design.
- Background gradients can be disabled; some visual behavior depends on this setting.
- Tabler Icons replaced with Phosphor Icons.
- Unified loading animation across the entire loading process.
- Redesigned status info and notification title.
- Redesigned audio/video player controls.
- Some UI elements like sliders got animations and accessibility improvements.
- Animations and accessibility improvements for UI elements like sliders.
**Internal:**
#### Internal
- Migrated client data stores from Redux to Zustand and remote data stores to TanStack Query. Stores have been migrated away from `immutable`.
- Posts are now emojified during render, instead of when inserting posts to the state.
- Posts are emojified during render instead of when inserting into state.
- Barrel exports are no longer used.
- Search page uses URL params now.
- Search page uses URL params.
- Themes use `adoptedStyleSheets` to work with stricter CSP.
- Settings store uses a different key in development environment.
- Styles are being migrated from TailwindCSS to just scss.
- Default max image size is increased to match Mastodon limits.
- Router has been migrated from React Router to TanStack Router.
- Default max image size increased to match Mastodon limits.
**Dependencies:**
#### Dependencies
- Replaced `react-popper` and `react-overlays` with `@floating-ui/react`.
- `uuid` package is replaced by the `randomUUID()` method.
- Some libraries, like the PullToRefresh component, have been included directly into the app.
- `react-motion` dependency has been removed, adopting migration to `@react-spring/web` from Mastodon.
- A fork of `react-hotkeys` has been replaced with new hotkey handling system from Mastodon.
- FlexSearch was replaced with `fuzzysort` package for emoji search.
- Replaced `uuid` package with the `randomUUID()` method.
- Inlined some libraries, like the PullToRefresh component, directly into the app.
- Removed `react-motion`; adopted migration to `@react-spring/web` from Mastodon.
- Replaced a fork of `react-hotkeys` with Mastodon's hotkey handling system.
- Replaced FlexSearch with `fuzzysort` for emoji search.
- Replaced ESLint with `oxfmt` and `oxlint`.
### Removed
- Removed Truth Social-specific features.
- Removed Nostr-specific stuff.
- Removed Rumble-specific embed handling.
- Removed option that pretends to disable name editing for verified users.
- Removed Call to Action banner.
- Removed links to block explorers for crypto addresses.
- Removed support for custom apps provided during build.
- Removed so called 'GDPR banner'.
- Removed embed page which loads too much for the use case.
- Truth Social-specific features.
- Nostr-specific features.
- Rumble-specific embed handling.
- Option that pretends to disable name editing for verified users.
- Call to Action banner.
- Links to block explorers for crypto addresses.
- Support for custom apps provided during build.
- So called 'GDPR banner'.
- Embed page (loaded too much for the use case).
### Fixed
- When initializing FaviconService, canvas export permission is checked.
- Canvas export permission is checked when initializing FaviconService.
- Improved regex for mentions in post composer.
- Post tombstones don't interrupt status navigation with hotkeys.
- Post tombstones no longer interrupt status navigation with hotkeys.
- Emojis are supported in poll options.
- Unsupported content types are not listed as available, when composing a post.
- Unsupported content types are not listed as available when composing a post.
- Admin dashboard now works on non-Pleroma backends.
- Removed excessive calls to `fetchOwnAccounts`.
- Media modal displays the whole thread correctly.