pinafore

Alternative web client for Mastodon (UNMAINTAINED)

AGPL-3.0 License

Stars
1K
Committers
55

Bot releases are hidden (Show)

pinafore - v1.11.0

Published by nolanlawson over 5 years ago

v1.11.0

New features

You can now set focal points on media! Just click the crosshair symbol on an image, then click-and-drag, click, or fill in the X/Y coordinates to set the focal point for the image.

  • feat: add ability to set focal points for media #1303

Bugfixes

  • fix: fix return focus on keyboard-clicking media #1306
  • fix: use focusin/focusout instead of custom events #1308
  • fix: fix poll color inside of notifications #1304

Full changelog

pinafore - v1.10.0

Published by nolanlawson over 5 years ago

v1.10.0

The main new feature in this release is support for uploading and playing audio files (new in Mastodon v2.9+). Enjoy!

  • feat: add support for audio attachments #1293
  • tests: try to make tests less flaky #1292
  • chore: update deps #1291
  • chore: update tested mastodon to v2.9.2 #1289
  • docs: update docs on exporting #1290
pinafore - v1.9.1

Published by nolanlawson over 5 years ago

v1.9.1

This is a small bugfix release. If you use push notifications, you may find that you need to reset your push notifications after this.

Note that Pinafore can only have push notifications for one instance at a time. This is a limitation in how the browser's Service Worker push notification API works.

  • chore: update webpack to 4.34.0 #1286
  • chore: update rollup to 1.15.6 #1285
  • fix report dialog not taking comments #1282 #1283
  • fix: push subscriptions per instance #1277
  • chore: Update css-loader to the latest version 🚀 #1280
  • fix: Esc key dismisses tooltip #1268
pinafore - v1.9.0

Published by nolanlawson over 5 years ago

v1.9.0

New features

Wellness settings

Social media is great. But it can also cause anxiety, feelings of isolation, and addiction. The new "wellness" settings contain some tools you can use to have more control over your social media experience.

Go to Settings → Wellness to try these settings out:

  • Hide follower counts (capped at 10)
  • Hide boost counts
  • Hide favorite counts
  • Hide unread notifications count (i.e. the red dot)
  • Grayscale mode (automatically adjusts to dark grayscale in supported browsers)

You can also remove boosts from the Home timeline, or filter notifications by type (e.g. removing boost/fav/follow notifications) in the instance settings.

Everyone's experience with social media is different, so some of these features may work for you, whereas others might not. But the tools are now at your disposal!

  • feat: implement wellness settings #1256
  • fix: fix disableNotificationsBadge aria-label #1260
  • fix: fix grayscale in firefox #1261

Grayscale themes

In addition to the full-on "grayscale mode" in the Welness Settings, there are two new themes: Grayscale and Dark Grayscale.

Note that these themes just change the look-and-feel of the app; they don't turn all images or emoji to grayscale as the "grayscale mode" does.

Option to disable infinite scroll

Some users, especially keyboard and screenreader users, may prefer not to have new statuses load at the top or bottom of the timeline. With this option (available at Settings → General), you can disable infinite scroll entirely. Instead, you press "show more" buttons at the top or the bottom of the timeline.

This may be especially helpful for keyboard users who have trouble reaching the "reload" button in the toast that appears at the bottom of the screen. Fixed footers don't mix very well with infinite scroll, but now you can simply disable infinite scroll entirely.

  • feat: add option to disable infinite scroll #1253

Bugfixes

More reliable "reload" button

The "reload" button that pops up when a new version of the app is available has become a bit flaky in Chrome due to a change in their Service Worker implementation. This has been fixed.

For v1.9.0 you may find that you still need to reload twice in order to get the update, but future updates should come immediately when you press "reload."

  • fix: fix service worker for real #1258

Other bugfixes and perf improvements

Unescaped HTML like   should no longer appear in card titles and descriptions. The "show more" button should correctly reflect the filtered count rather than the raw count. There are also some perf and design improvements.

  • perf: don't interate through all of localStorage in inline script #1264
  • perf: lazy-load the ComposeBox #1262
  • fix: fix compose toolbar on iphone 4 again #1259
  • fix: fix "Show more" button in Notifications timeline when filtered #1255
  • fix: fix compose button toolbar style on small devices #1254
  • fix: unescape html in card titles/descriptions #1252

Full changelog

pinafore - v1.8.0

Published by nolanlawson over 5 years ago

v1.8.0

New features

Polls

You can now create and vote on polls, and get notifications when a poll has finished. Thanks to @sgenoud for help on this!

  • feat: Add poll results to a status #1219
  • fix: tweak poll results style and fix a11y #1220
  • feat: add poll result push notifications #1227
  • feat: add poll notifications #1229
  • fix: show poll results, time remaining, allow refresh #1233
  • feat: vote on polls #1234
  • feat: ability to create polls #1235
  • fix: poll button label is backwards #1238
  • fix: add tests for polls, improve a11y of poll form #1239
  • fix: add <select> aria-label, remove unnecessary aria-labelledby #1242

Filters

The following timeline filters are now available:

  • Home: boosts, replies
  • Notifications: boosts, favs, new followers, mentions, poll results

Filter settings are on a per-instance basis. You can find them under Settings → Instances → (Instance name).

Filters are applied client-side, and are not synced with the server, as Mastodon does not support an official API for this.

Regex/word filters are still on the backlog: #1225

  • feat: add home/notification filter settings #1226
  • fix: fix unread notifications badge for filters #1231

Bugfixes

Better push notifications

Push notifications now show a Pinafore icon and fav/boost icons, and correctly allow you to fav or boost a status that you're notified of.

  • fix: add push notification badge #1246
  • fix: various push notification fixes #1245
  • fix: fix bug when faving/boosting push notification #1244

Better media upload UI

The media upload UI has better color contrast and other a11y fixes. It should be easier to type the descriptions in particular, because there's more space for the textarea.

  • fix: improve UI/a11y of media upload #1241
  • fix: improve media upload a11y #1240
  • fix: minor tweaks to PushNotificationSettings #1222

a11y fixes

"Reduce motion" now correctly disables any "slide" animations in the compose box. Color contrast has been improved in dark mode.

  • fix: fix reduceMotion of svelte slide transition #1237
  • fix: improve color contrast of dark themes #1249

"x minutes ago" updates automatically

Text like "20 seconds ago" or "5 minutes ago" will now update automatically. Care is taken to avoid excessive CPU usage when periodically updating the UI, and this fix actually includes some performance improvements to avoid excessive re-renders.

  • fix: poll for updates to timeago displays #1232

Other bugfixes

  • fix: statuses in own thread should not have cursor:pointer #1250
  • chore: update deps #1247
  • chore: Update stringz to the latest version 🚀 #1228
  • fix: change wording in show/hide sensitive media #1221
  • fix: separate "inline theme" from "default theme" #1216
  • chore: update to esm 3.2.25 #1217
  • chore: Update rollup-plugin-terser to the latest version 🚀 #1218
  • chore: Update assert to the latest version 🚀 #1212
  • fix: use only one 180x180px touch icon #1213
  • fix: improve focus style on dialog list item #1208
  • fix: don't autosuggest when text ends with punctuation #1207

Full changelog

pinafore - v1.7.0

Published by nolanlawson over 5 years ago

v1.7.0

Thanks to @sgenoud for help with this release!

Features

Notification filters

You can now filter notifications by "all" vs "mentions." Full filter support is still in progress: https://github.com/nolanlawson/pinafore/issues/369.

  • feat: implement notification filters (all vs mentions) #1177
  • fix: redesign tabs slightly #1178

Reload to update

When an app update is available, there is now a "reload" button inside of the alert. This is helpful for PWA interfaces that don't have a reload button.

  • feat: add snackbar alert with refresh button #1193

Option to disable OpenGraph cards

You can now hide the OpenGraph cards (i.e. the link previews) if you don't like them.

  • feat: add option to disable open graph cards #1161

Bugfixes

Improved and accessible autocomplete

The autocomplete widget is now fully accessible, and it searches for accounts remotely as well as locally.

  • fix: fix autosuggested accounts order #1187
  • fix: fix autosuggest width on mobile #1186
  • fix: make autosuggestion accessible #1183
  • fix: do remote search when autosuggesting accounts #1182
  • fix: throttle XHRs from autosuggest #1190
  • fix: fix flash of searched content in autosuggest #1188

Improved iOS design

@sgenoud has helped out with revamping the iOS design, and fixing the style for devices with a "notch," such as the iPhone X.

  • fix: Fix ios design issues #1199
  • fix: fix style of snackbar on mobile #1197

Less flaky streaming

Pinafore now closes its WebSocket and IndexedDB connections when "frozen" (e.g. as a background tab). This minimizes resource usage and increases the likelihood that, when reopening the app after a long time, notifications and updates will start streaming in normally.

  • fix: close IDB connections when page is frozen #1196
  • fix: close/open websocket on freeze/resume events #1195
  • fix: use fibonacci instead of exponential when streaming #1205

"What's an instance?"

There is now a small tooltip on the word "instance" in the signup page that explains what an instance is, for the benefit of newcomers to the fediverse.

  • fix: add tooltip info on what an instance is #1175

Other bugfixes

  • fix: fix some dialog state issues #1203
  • fix: fix aria-hidden on toast #1194
  • fix: use inputmode=url for instance input #1184
  • fix: fix autofocus in emoji dialog search #1173
  • fix: fix profile clicks from compose dialog #1160
  • fix: Unstretch the card image #1157 (thanks @sgenoud!)

Full changelog

pinafore - v1.6.1

Published by nolanlawson over 5 years ago

v1.6.1

Quick bugfix release.

  • fix: fix dialogs within dialogs not opening #1154
  • fix: fix modal dialog width #1152
pinafore - v1.6.0

Published by nolanlawson over 5 years ago

v1.6.0

New features

Direct messages UI (thank you @sgenoud!)

  • feat: Adds a basic conversations timeline #1137
  • fix: tweaks to conversations (direct) UI #1137

Account page filters (e.g. media, toots with replies)

  • feat: add account page filters #1124

OpenGraph cards UI (thanks again @sgenoud!)

  • feat: Add support for Open Graph cards #1121
  • fix: slight tweaks to opengraph card #1128
  • fix: add placeholder icon for opengraph cards without images #1131
  • fix: Remove placeholder for cards without images #1135
  • fix: Add hostname when description is missing #1145
  • feat: Add a shortcut to opening the cards link #1134

PWA support on iOS 12.2+ (@sgenoud strikes again!)

  • fix: Enable PWA support for iOS devices #1120

Add a setting to reload the page (once again, Mr. @sgenoud)

  • feat: Add a setting to reload the page #1132

Bugfixes

You can finally press the back button on Android to dismiss the modal dialog!

  • fix: back button dismisses the modal dialog #826
  • fix: fix and test shortcut keys in modals #1115

Better scrollbar styling and support (thanks @sgenoud!)

  • fix: Disable custom scrollbars by default on iOS #1133
  • fix: Manage the width to take scrollbars into account #1138

Full changelog

pinafore - v1.5.1

Published by nolanlawson over 5 years ago

v1.5.1

Fixes a bug with the "remove emoji from display names" option, as well as ARIA labels for toots originating from Pleroma.

  • fix: fix removing emoji from display names #1114
  • fix: fix aria-labels for pleroma #1113
pinafore - v1.5.0

Published by nolanlawson over 5 years ago

v1.5.0

Features

You can now tap . (the period key) and the timeline will scroll to the top and show new toots.

  • feat: implement "." keyboard shortcut #1105

Bugfixes

  • fix: fix spaces in status aria-labels #1111
  • fix: always show the home compose box #1109
  • fix: fix background on dark mode emoji #1102
  • fix: fix media button focus outline #1103

full changelog

pinafore - v1.4.0

Published by nolanlawson over 5 years ago

v1.4.0

New features

There is a new dark theme called "Mastodon" designed to look like the Mastodon frontend. Thanks @jeroenpraat!

  • feat: Plus theme with Mastodon standard web-app colors (called mastodon) #1090

Bug fixes

Pinafore now properly supports Pleroma "snowflake" IDs. Thanks @uiri!

  • test: better idb migration test #1080
  • fix: fix pleroma snowflake IDs for real #1084
  • fix: Fix reversed base62 encoding #1083
  • test: add IndexedDB tests #1075
  • fix: use correct sorting for snowflake IDs #1074

Pinafore has a new version of emoji-mart (the emoji picker), with better accessibility and some bugfixes.

  • chore: update to emoji-mart 2.10.0 #1097
  • chore: update emoji-mart again for more testing #1095
  • chore: update to latest emoji-mart #1091
  • chore: Update emoji-regex to the latest version 🚀 #1079

Pinafore now has a privacy policy that explicitly states that it does not collect any personal information.

  • fix: add a privacy policy #1078

Performance improvements

The Docker build is now much smaller (1G -> 189M). Thanks @stanclai!

  • perf: Reduce docker image #1064
  • Clean yarn cache during docker image build phase #1073
  • perf: reduce install size using yarn --production #1066

Pinafore itself is a bit smaller (911.66kB -> 878.28kB total JS size) and faster to build (by ~15s) due to using Preact instead of Inferno and some other fixes:

  • perf: remove stats.json from webpack #1098
  • perf: switch from inferno to preact, use emoji-mart prerelease #1094
  • perf: build url regex in advance #1069
  • perf: reduce size of ShortcutHelpInfo.html #1068
  • perf: use a separate icons.svg file #1067

Full changelog

pinafore - v1.3.1

Published by nolanlawson over 5 years ago

v1.3.1

  • fix: fix aria-posinset should be 1-based #1055
  • fix: fix closing of account options dialog #1060
  • fix: fix undefined error in media dialog scroll #1048

Full changelog

pinafore - v1.3.0

Published by nolanlawson over 5 years ago

v1.3.0

Features

Report a toot or account

You can now report accounts and toots. Press "…" on either a toot or an account, choose "Report," then fill out the form to report any number of recent toots from that account. You can also forward the report to remote moderators.

  • feat: report an account or toots #1016

Mute notifications

When muting an account, you can now choose whether or not to mute notifications (which essentially acts as an invisible block).

  • feat: allow muting notifications when muting #1013

Moved accounts

When an account has moved, you'll now see a notice on their profile saying that the account is moved.

  • feat: add "accout has moved" banner #1032

Bugfixes

Static Node server

To better match how the pinafore.social production server actually runs, node server.js is now a static Express server with some minor routing logic. This should result in fewer inconsistencies between self-hosting and pinafore.social.

  • fix: use static server for node server.js #1041

a11y: keyboard shortcuts correctly set focus

Using the j/k or / keys to move up and down the timeline will now correctly set the focus on the highlighted toot. The focus style no longer changes the background, but instead adds a standard focus outline.

  • fix: j/k shortcuts correctly set active element #1028

keyboard shortcuts for pinned toots work

You can now use j/k or / to cycle through pinned toots as well as regular toots.

  • fix: fix keyboard shortcuts for pinned toots #1033

Video posters work now

"Poster" placeholder images for <video>s were broken in the media dialog, but they're fixed now.

  • fix: fix /undefined request for gifv #1044
  • fix: fix /undefined request for video poster #1043

Fixed a bug where pinned toots wouldn't appear sometimes

  • fix: fix pinned toots not in IDB #1040

Full changelog

pinafore - v.1.2.0

Published by nolanlawson over 5 years ago

v1.2.0

Features

Share a toot (Chrome/Android only, Safari/iOS soon)

Using the Web Share API, you can now tap the "…" on a toot and choose "share toot" to share to other apps.

Currently this is just for Chrome/Android, but Safari on iOS support is coming in iOS 12.1.

  • feat: implement Web Share API #991

Bugfixes and performance improvements

Zeit Now v2

The main https://pinafore.social instance is now hosted on Zeit Now v2 using a static server. This should mean a faster and more reliable server.

  • chore: upgrade to zeit 2 #998

A note on self-hosting

Self-hosters do not have to change anything; the self-hosted version of Pinafore is still a Node server which you can run using node server.js or the Docker container.

This does mean, though, that self-hosted Pinafore is slightly different from production Pinafore. But in practice, the differences should be extremely minor.

You can also run the static version of Pinafore yourself using the export command, but it's generally not recommended because you have to manage CSP and dynamic routes yourself. (For a flavor of what you would need to do, see our Zeit now.json file.)

Also, keep in mind that the self-hosted model is still a first-class citizen. In fact, all our integration tests run against it, so it's more likely to be correct than the Zeit version.

a11y and design improvements

The navbar now has an active state, and the theme picker allows you to tap the color square itself to change the theme. The design of buttons was also tweaked to better match the navbar.

  • fix: improve a11y, move preview box inside label #997
  • fix: improve active state of navbar #996
  • fix: tweak primary button border color #987
  • fix: fix style of compose box in reply #983

cache improvements

We got rid of CSP nonces and are using checksums instead. This allows us to increase the cache max-age on resources. This change applies to both the production version and the self-hosted version.

  • fix: increase cache, use csp checksums over nonce #988
  • fix: fix style of compose box in reply #983

Full changelog

pinafore - v1.1.0

Published by nolanlawson over 5 years ago

v1.1.0

New features

Web share target

You can now share from other apps to Pinafore when it's installed as a homescreen app. Currently this only works in Chrome for Android.

  • feat: implement web share target #980

Bugfixes

Reduced server-side memory usage

Typical server-side memory usage of Pinafore has been reduced from ~300MB to ~48MB.

There are new instructions in the README for admins who want to get the lightest possible footprint for Pinafore. The TL;DR is to run node server.js instead of either yarn start or npm start.

The bulk of the perf improvement will come whether or not you change this, though. Those who use Docker will also get all the benefits automatically.

  • perf: reduce server-side memory usage of Pinafore #973

Run Pinafore on a custom port

Previously, if you were trying to get Pinafore to run on a port other than 4002, it probably didn't work. Now it does; you can set it using e.g. PORT=1337 node server.js.

  • fix: fix port not defaulting to 4002, add server.js #976

Automatic dark mode

The dark theme is now the default if your OS is in dark mode. Currently this only works in Safari Technology Preview in macOS Mojave, but it's coming soon to Chrome and Firefox as well.

  • fix: set dark theme based on prefers-color-scheme #966

a11y: fix color contrast

The contrast has been increased for all the primary buttons ("TOOT!" etc.). This now gets us a 100% accessibility score from Lighthouse.

The color contrast on the settings menu in dark mode has also been increased.

  • fix: fix default contrast ratio for button #978
  • fix: fix legibility of settings text in dark themes #965

Other improvements

  • fix: fix slim size compose dialog #979
  • perf: prefetch all internal links #981
  • perf: remove duplicate custom props from theme CSS #969
  • fix: don't show theme picker if not logged in #967

Full changelog

pinafore - v1.0.1

Published by nolanlawson over 5 years ago

v1.0.1

This is a quick bugfix release to fix right-clicking to download an image in the media carousel.

  • fix: allow right-click to save image #962
  • perf: use keyed each for media #963

Full changelog

pinafore - v1.0.0

Published by nolanlawson over 5 years ago

v1.0.0

Breaking changes

This release switches Pinafore from npm to yarn. Those who self-host Pinafore should read BREAKING_CHANGES.md to see how to update.

New features

Media carousel

Pinafore has a new media carousel! I wrote a blog post about how it works.

It also has some awesome keyboard shortcuts ( and to navigate left and right) thanks to @charlag! (#930)

Quicker instance switching

There are now fewer taps involved in switching instances, thanks to some great work by @blackle! (#945)

You can now tap the "star" icon under Settings → Instances, rather than having to go to the Instance page, scroll all the way to the bottom, and tap "switch to this instance."

Making instance switching even easier is still on the backlog (https://github.com/nolanlawson/pinafore/issues/11), but this helps out immensely!

Bugfixes

  • fix: disable smooth scroll for users who prefer reduced motion #958
  • fix: fix hand cursor on non-tappable status #955
  • fix: fix items appearing over nav #949
  • fix: do not add duplicates to threads #944

Full changelog

pinafore - v0.18.0

Published by nolanlawson over 5 years ago

v0.18.0 (2019-01-27)

Full Changelog

Implemented enhancements:

  • Keyboard shortcuts "m" and "p" on notification should use favoriter/boster, not author #905
  • Add keyboard shortcuts for composing a new toot and scrolling to the top #895

Fixed bugs:

  • Copy link to toot button does not work in iOS Safari #912
  • Alt key should be ignored by keyboard shortcuts #896
  • Can't interact with notifications (reply, open) using keyboard shortcuts #894

Closed issues:

  • Add direct messages timeline #897

Merged pull requests:

pinafore - v0.17.0

Published by nolanlawson almost 6 years ago

v0.17.0

Features

  • feat: keyboard shortcuts (hotkeys) #870, #886, #887, #888, #889 (thanks @szermatt!)
  • feat: wrap long posts with spoilers #873 (thanks @uiri!)
  • feat: Add labels to theme groups #867 (thanks @nspenner!)
  • feat: date title shows absolute date #890

Bugfixes and perf improvements

  • fix: Make external links open in new tab in Pleroma (#892, #893) (thanks @uiri!)
  • fix: add better browser notification badges #857
  • perf: use lodash-lite for some functions #853
  • fix: fix unnecessary request for theme-undefined.css #852
  • perf: load Toast asynchronously #851

Full changelog: https://github.com/nolanlawson/pinafore/compare/v0.16.0...v0.17.0

pinafore - v0.16.0

Published by nolanlawson almost 6 years ago

Features

  • feat: add full emoji picker using emoji-mart #836

Bugfixes

  • Fix Pleroma compability issue in media modal #829 (thank you @Sirikon!)
  • fix: preserve newlines correctly in delete-and-redraft #845

Other

  • chore: upgrade travis/now to node v10 #834

Full changelog: https://github.com/nolanlawson/pinafore/compare/v0.15.0...v0.16.0

Package Rankings
Top 6.73% on Proxy.golang.org
Badges
Extracted from project README
No Maintenance Intended