diff --git a/.node-version b/.node-version index 9be0c7058..08b7109d0 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -18.20.7 +18.20.8 diff --git a/.stylelintrc.json b/.stylelintrc.json index d6689cc01..c91107595 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -1,6 +1,5 @@ { "extends": [ - "stylelint-rscss/config", "stylelint-config-standard", "stylelint-config-recommended-scss", "stylelint-config-html", @@ -8,15 +7,6 @@ ], "rules": { "declaration-no-important": true, - "rscss/no-descendant-combinator": false, - "rscss/class-format": [ - false, - { - "component": "pascal-case", - "variant": "^-[a-z]\\w+", - "element": "^[a-z]\\w+" - } - ], "selector-class-pattern": null, "import-notation": null, "custom-property-pattern": null, diff --git a/CHANGELOG.md b/CHANGELOG.md index 9844319e3..c2f0e7d17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,74 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## 2.8.0 +### Changed +- BREAKING: static/img/nsfw.2958239.png is now static/img/nsfw.DepQPhG0.png, which may affect people who specify exactly this path as the cover image +- BREAKING: static/emoji.json is replaced with a properly hashed path under static/js in the production build, meaning server admins cannot provide their own set of unicode emojis by overriding this file (custom (image-based) emojis not affected) +- Speed up initial boot. +- Updated our build system to support browsers: + Safari >= 15 + Firefox >= 115 + Android > 4 + no Opera Mini support + no IE support + no "dead" (unmaintained) browsers support + +This does not guarantee that browsers will or will not work. + +- Use /api/v1/accounts/:id/follow for account subscriptions instead of the deprecated routes +- Modal layout for mobile has new layout to make it easy to use +- Better display of mute reason on posts +- Simplify the OAuth client_name to 'PleromaFE' +- Partially migrated from vuex to pinia +- Authenticate and subscribe to streaming after connection +- Tabs now have indentation for better visibility of which tab is currently active +- Upgraded Vue to version 3.5 + +### Added +- Support bookmark folders +- Some new default color schemes +- Added support for fetching /{resource}.custom.ext to allow adding instance-specific themes without altering sourcetree +- Post actions customization +- Support displaying time in absolute format +- Add draft management system +- Compress most kinds of images on upload. +- Added option to always convert images to JPEG format instead of using WebP when compressing images. +- Added configurable image compression option in general settings, allowing users to control whether images are compressed before upload. +- Inform users that Smithereen public polls are public +- Splash screen + loading indicator to make process of identifying initialization issues and load performance +- UI for making v3 themes and palettes, support for bundling v3 themes +- Make UserLink wrappable + +### Fixed +- Fixed occasional overflows in emoji picker and made header scrollable +- Updated shadow editor, hopefully fixed long-standing bugs, added ability to specify shadow's name. +- Checkbox vertical alignment +- Check for canvas extract permission when initializing favicon service +- Fix some of the color manipulation functions +- Fix draft saving when auto-save is off +- Switch from class hack to normalButton attribute for emoji count popover +- Fix emoji inconsistencies in notifications, +- Fix some emoji not scaling with interface +- Make sure hover style is also applied to :focus-visible +- Improved ToS and registration +- Fix small markup inconsistencies +- Fixed modals buttons overflow +- Fix whitespaces for multiple status mute reasons, display bot status reason +- Create an OAuth app only when needed +- Fix CSS compatibility issues in style_setter.js for older browsers like Palemoon +- Proper sticky header for conversations on user page +- Add text label for more actions button in post status form +- Reply-or-quote buttons now take less space +- Allow repeats of own posts with private scopes +- Bookmarks visible again on mobile +- Remove focusability on hidden popover in subject input +- Show only month and day instead of weird "day, hour" format. + +### Removed +- BREAKING: drop support for browsers that do not support ` diff --git a/src/components/button.style.js b/src/components/button.style.js index 410d2f7e0..887ff91b5 100644 --- a/src/components/button.style.js +++ b/src/components/button.style.js @@ -9,9 +9,9 @@ export default { // However, cascading still works, so resulting state will be result of merging of all relevant states/variants // normal: '' // normal state is implicitly added, it is always included toggled: '.toggled', - focused: ':focus-visible', + focused: ':focus-within', pressed: ':focus:active', - hover: ':hover:not(:disabled)', + hover: ':is(:hover, :focus-visible):not(:disabled)', disabled: ':disabled' }, // Variants are mutually exclusive, each component implicitly has "normal" variant, and all other variants inherit from it. @@ -89,6 +89,13 @@ export default { shadow: ['--buttonDefaultHoverGlow', '--buttonPressedBevel'] } }, + { + state: ['toggled', 'focused'], + directives: { + background: '--accent,-24.2', + shadow: ['--buttonDefaultHoverGlow', '--buttonPressedBevel'] + } + }, { state: ['toggled', 'disabled'], directives: { @@ -99,7 +106,7 @@ export default { { state: ['disabled'], directives: { - background: '$blend(--accent 0.25 --parent)', + background: '$blend(--inheritedBackground 0.25 --parent)', shadow: ['--buttonDefaultBevel'] } }, diff --git a/src/components/button_unstyled.style.js b/src/components/button_unstyled.style.js index a387ed954..9e1a2ca90 100644 --- a/src/components/button_unstyled.style.js +++ b/src/components/button_unstyled.style.js @@ -6,8 +6,8 @@ export default { states: { toggled: '.toggled', disabled: ':disabled', - hover: ':hover:not(:disabled)', - focused: ':focus-within' + hover: ':is(:hover, :focus-visible):not(:disabled)', + focused: ':focus-within:not(:is(:focus-visible))' }, validInnerComponents: [ 'Text', diff --git a/src/components/chat_list_item/chat_list_item.scss b/src/components/chat_list_item/chat_list_item.scss index 9711b41d6..dcef6380e 100644 --- a/src/components/chat_list_item/chat_list_item.scss +++ b/src/components/chat_list_item/chat_list_item.scss @@ -17,7 +17,6 @@ width: 100%; box-sizing: border-box; overflow: hidden; - word-wrap: break-word; } .heading { diff --git a/src/components/chat_message/chat_message.scss b/src/components/chat_message/chat_message.scss index f7254ea35..c058f8172 100644 --- a/src/components/chat_message/chat_message.scss +++ b/src/components/chat_message/chat_message.scss @@ -107,8 +107,7 @@ .outgoing { display: flex; flex-flow: row wrap; - align-content: end; - justify-content: flex-end; + place-content: end flex-end; .chat-message-inner { align-items: flex-end; diff --git a/src/components/chat_title/chat_title.vue b/src/components/chat_title/chat_title.vue index 0213b86fb..72660cca0 100644 --- a/src/components/chat_title/chat_title.vue +++ b/src/components/chat_title/chat_title.vue @@ -39,7 +39,6 @@ text-overflow: ellipsis; white-space: nowrap; display: inline; - word-wrap: break-word; overflow: hidden; } diff --git a/src/components/checkbox/checkbox.vue b/src/components/checkbox/checkbox.vue index 0cd3d95a4..c8bba4c44 100644 --- a/src/components/checkbox/checkbox.vue +++ b/src/components/checkbox/checkbox.vue @@ -1,7 +1,7 @@