Commit graph

7,245 commits

Author SHA1 Message Date
e52157042d Merge pull request 'migrate to conversation API (replaces "direct" timeline)' (#470) from Oneric/akkoma-fe:conversations-api into develop
Reviewed-on: AkkomaGang/akkoma-fe#470
2026-01-11 15:55:01 +00:00
Oneric
9b45a382b0 Show total count of unread DM conversations in sidebar
In preparation to an eventual switch to native Masto API format,
as well as flexibility to backends without the extension,
the entity normaliser just copies the count paramter to the same path
2025-12-30 00:00:00 +00:00
Oneric
d73d7a2a0d Automatically update follow request count shown in sidebar
The current user info fetcher will also be used for
total unread DM counts in the future.

To avoid any future mishaps with improperly stopped fetchers etc,
this  does not use the existing 'setCurrentUser' method but a new
update method with a safeguard against accidentally changing the
identity.
2025-12-30 00:00:00 +00:00
Oneric
252f8c5e2d components/side_drawer: drop call to non-existent action
This is the only place such an action is referenced
2025-12-30 00:00:00 +00:00
Oneric
8d24b877e0 Allow editing DM conversation recipients
Unfortunately the backend currently only accepts query parameters here
instead of JSON bodies as preferred by almost all oter endpoints.
2025-12-30 00:00:00 +00:00
Oneric
b3b998fd1f components/dm_conv_timeline: show conversation details in header
This also allows marking the conversation
as read etc from its timeline view.
2025-12-30 00:00:00 +00:00
Oneric
2e53ee6536 components/dm_conv_card: make compactness and status preview configurable 2025-12-30 00:00:00 +00:00
Oneric
9fdf2d22a7 By default require confirmation to delete a dm conversation 2025-12-30 00:00:00 +00:00
Oneric
df9bb44e14 Allow deleting conversations from overview 2025-12-30 00:00:00 +00:00
Oneric
3d4c79b344 Allow marking conversations as read 2025-12-30 00:00:00 +00:00
Oneric
0da1a32767 Add basic UI for conversation API
This replaces the removed "direct" timeline.
Curtnetly this is a read-only interface missing ways to
mark conversations as read, dismiss/delete conversations
or modify the core members of a conversation.

Future work may also add QoL stuff like automatic implicit addressing of
core members or (provided another backend extension) add messages to a
conversation without replying to something particular.
2025-12-30 00:00:00 +00:00
3a20ec5162 Merge pull request 'show more reblog info' (#468) from Oneric/akkoma-fe:reblog-info into develop
Reviewed-on: AkkomaGang/akkoma-fe#468
2025-12-22 16:48:21 +00:00
Oneric
28d0a30888 Remove DM timeline
It has been long deprecated and even already removed from Mastodon
and our existing implementation suffers from bugs (at least on
large/some instances), see:
   AkkomaGang/akkoma#798

Except for pleroma-derived web frontends, other clients generally don't
seem to make use of this timeline either, often also omitting an
interface for the conversations API.

Even if it worked properly, this isn’t the best way to present
DMs as all threads with different participants or topics are mixed
together in one linear timeline. The conversations API which suceeded
it in Mastodon and our backend already supports offers a much better
interface.
2025-12-22 00:00:00 +00:00
Oneric
2fb38a597c service/api: fix encoding of arrays in query parameters 2025-12-22 00:00:00 +00:00
2760495b54 Update README.md 2025-12-21 03:57:46 +00:00
2ef333dafc Merge pull request 'Fix setting persistence to local browser storage' (#469) from Oneric/akkoma-fe:fix-settings-local-persistence into develop
Reviewed-on: AkkomaGang/akkoma-fe#469
2025-12-19 19:20:14 +00:00
6d260c08c0 Merge pull request 'Improve still image detction without media proxy' (#466) from Oneric/akkoma-fe:still-image-accuracy into develop
Reviewed-on: AkkomaGang/akkoma-fe#466
2025-12-19 17:39:25 +00:00
Oneric
7456b8b02f components/status: show when a reblog happened 2025-12-19 00:00:00 +00:00
Oneric
d83fd8b1cd Fix setting persistence to local browser storage
Fixes regression in f2c55423fd.
Ideally, this would only set state for what was actually changed
rather than rewriting the entire storage each time, which would also
have avoided this issue.

The fix is somehwat hacky not working with an empty path list or
parsed/internal fields not at the top-level of a path, but in practice
this seems to be always called with well bheaving paths. Should this ever
become an issue, this should migrating to the overall saner updating
approach described in the preceding paragraph.

Note: the cloneDeep call was originally added in
a97c07bfdf as part of
https://git.pleroma.social/pleroma/pleroma-fe/-/merge_requests/1385
Though it is not clear why setState would mangle its data argument
as it supposedly does to necessitate this copying.
2025-12-19 00:00:00 +00:00
Oneric
8f948d52f5 still-image: remove excessive pixelArt detection log 2025-12-19 00:00:00 +00:00
tea
9a671325ad components/status: display repeat visibility
Cherry-picked-from: ac9c512c48
2025-12-19 00:00:00 +00:00
Oneric
26a4188620 still-image: always fetch local content for animaton detection
Fixes: AkkomaGang/akkoma-fe#381
2025-12-19 00:00:00 +00:00
Oneric
b839a25060 still-image: detect animated APNG by extension
If they use the canonical apng extension specified by IANA.
2025-11-26 00:00:00 +00:00
09fba6bada Merge pull request 'readme: Update corepack install command' (#463) from norm/akkoma-fe:readme-corepack into develop
Reviewed-on: AkkomaGang/akkoma-fe#463
Reviewed-by: Oneric <oneric@noreply.akkoma>
2025-11-23 11:50:03 +00:00
4d85f0a074 readme: Update corepack install command
As of Node 25, corepack will no longer be included by default in
the distribution:
https://github.com/nodejs/TSC/pull/1697

A separate corepack package is already available in npm, which
should work the same as the corepack that was included in Node 24
and prior.

The rest of the build instructions should remain the same.
2025-11-17 11:38:01 -05:00
a1e83062b4 Merge pull request 'Allow using regex filters for mutes' (#461) from Oneric/akkoma-fe:regex-mute-filter into develop
Reviewed-on: AkkomaGang/akkoma-fe#461
2025-11-09 13:16:04 +00:00
Oneric
4315788019 Add support for regex mute filters
This makes any filter that starts and ends in forward slashes act as a
regex filter instead of a simple substring filter.
In case any existing plain-text rule already matches this
it will need to be updated adding an additional layer of slashes
and escapes as needed. However, this is thought to be sufficiently uncommon.

Instead of using trailing flags as modifier complicating parsing further,
any modifications to regex matching must be done via local modifiers. See
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Modifier
2025-10-26 00:00:00 +00:00
Oneric
f2c55423fd config: add infrastructure to cache parsed config values
Using muteWords as an example.
Currently this doesn’t help much
but the subsequent commit will extend muteWord capabilities
making parsing more costly
2025-10-26 00:00:00 +00:00
9bbc68536c Merge pull request 'Fix internal boost visibility scope' (#455) from NixLynx/akkoma-fe:boost-fix into develop
Reviewed-on: AkkomaGang/akkoma-fe#455
Reviewed-by: Oneric <oneric@noreply.akkoma>
2025-10-25 18:17:30 +00:00
Oneric
c5f068d6fa scope_utils: replace compare with isSubScope
Visibility scopes have no total order, but the function signature
of a compare function implies/requires such.

This led to the scope selector showing "local" as a possible option
on some original post scopes it was not actually compatible with.
The negotiated initially selected value was already correct though.
2025-10-25 00:00:00 +00:00
Nix Lynx
98826e8462 Fix internal boost visibility scope
Fixes d617a9596a
2025-10-25 00:00:00 +00:00
b13ecbcf6f Merge pull request 'Various small fixes' (#459) from Oneric/akkoma-fe:varfixes-20251018 into develop
Reviewed-on: AkkomaGang/akkoma-fe#459
2025-10-24 18:56:42 +00:00
66b026561f Ensure attachment descriptions fill full width
Was noticeable by e.g. the scrollbar being shown somewhere inside the
container and not being able to scroll near the edges if each line of
text was sufficiently short.

Directly implements the suggesstion from
AkkomaGang/akkoma-fe#456 (comment)
2025-10-24 00:00:00 +00:00
Oneric
c925f7f91b Fix failed media uploads bricking the frontend
The upload call hid errors and the entity normaliser lets them pass
through as well (assuming it must be an already "correctly" formatted
legacy qvitter response), which led to errors being added to the the
draft as if it was a valid attachment object.
On later use of this error exceptions occur breaking the frontend and
due to being saved as part of a draft this could only be recovered by
clearing local client data.

Fixes: AkkomaGang/akkoma-fe#339
2025-10-24 00:00:00 +00:00
Oneric
c3673eb53a Always use AP ID when copying post link
This is the canonical reference to a post and works best for lookups on
other servers. Previously this canonical ID was not accessible from the
frontend at all.

The "source" button continues to redirect to the preferred display URL
though (if set), since this is as the name suggests the preferred URL
for viewing the post in a browser (it might however not work when the
source instance restricts unauthenticated access even to local content).

This lifts the redundancy between the "source" and "copy link" buttons.

Since the legac qvitter API is still accounted for in the entity
normaliser, we just assume its external_url serves as both the canoncial
location and preferred display URL. It is dubious however, if this
codepath can even still be triggered at all and it likely makes more
sense to purge all remnants of the legacy API from the codebase.

Resolves: AkkomaGang/akkoma-fe#166
2025-10-18 00:00:00 +00:00
Oneric
f0c149950c Fix image attachments overflowing their container
This reverts commit e1b4d8f59a
and obsoletes commit c2db0e66ef
which already unset min-height in notifications where this
caused images to become effectively invisible.

Image previews are currently designed to always show the full image
scaled down as needed. With min-height though they were allowed to
take the full width even if it caused overflows in vertical direction.
This happened to look kind of fine with only easy-to-miss overflows
in the main post view if each preview row had the same amount of
columns, but creates jarring overlaps otherwise.

Fixes: AkkomaGang/akkoma-fe#456
2025-10-18 00:00:00 +00:00
3d54c8274f Merge pull request 'media_modal: fix image load handler wiring' (#454) from novenary/akkoma-fe:media_modal/load_handler into develop
Reviewed-on: AkkomaGang/akkoma-fe#454
2025-10-14 12:40:54 +00:00
novenary
f6bf484d4b media_modal: fix image load handler wiring
The media modal was changed to use still_image, but the attribute
pointing to the image load event handler wasn't updated.
This causes the modal to remain in the loading state forever.

Fixes: f48138c979
2025-10-14 15:36:22 +03:00
57a809946c Merge pull request 'Don’t litter tokens and Iceshrimp.NET support' (#452) from Oneric/akkoma-fe:frugal-tokens-and-iceshrimp.net into develop
Reviewed-on: AkkomaGang/akkoma-fe#452
2025-10-13 12:22:33 +00:00
2f64931d5b Merge pull request 'Show inline link for unresolvble posts and quoted quotes' (#453) from Oneric/akkoma-fe:quote-doesnt-exist-and-cant-hurt-you into develop
Reviewed-on: AkkomaGang/akkoma-fe#453
2025-10-13 12:17:48 +00:00
Hannah Ward
c2db0e66ef unset min-height for attachments in notifications 2025-10-13 13:07:57 +01:00
762676e105 and again 2025-10-13 10:49:35 +01:00
1fa242232e bump version 2025-10-13 10:48:46 +01:00
Oneric
e71da57845 Show inline link for unresolvble posts and quoted quotes
Previously those two cases just weren’t recognisable as quotes at all.

Fixes: AkkomaGang/akkoma-fe#310
2025-10-13 00:00:00 +00:00
Oneric
877dde80c9 user_card: don't set replied-to-status id to a boolean
Instead, just also prefill the text wuth the user handle
for pure mentions.
This lead to us sending a boolean status id to the backend
which presumably only didn't cause problems in *oma backends
because API spec validation dropped the value with a mismatched type.
On an Iceshrimp.NET backend this caused errors to pop up.

There are more conditions gated by replyTo in the post form but
no longer triggering them doesn't seem to have any noticeable effect.
The one noticeable change being mentions now share a draft save slot
with regular message composing (before all mention messages shared the
same reply:true slot), but this seems sensible enough.
2025-10-12 00:00:00 +00:00
Oneric
f885728ccd Lock package manager version
At least modern versions of corepack'ed yarn
(as build instructions tell use to use)
reaaally want to add this to the lockfile,
so let it do so to not need to constantly
be wary of uncommited changes here.
2025-10-12 00:00:00 +00:00
Oneric
4cb74a3fbe Clean up app tokens on logout
We don’t need them after initial account registration
and they just clutter the database otherwise

Together with the preceding commit this should get the
flood of garbage tokens into our database under control.
(We still want to fix the backends cleanup of old,
 already existing tokens though)

Fixes: AkkomaGang/akkoma-fe#429
2025-10-12 00:00:00 +00:00
Kopper
e79916e78e Do not create OAuth app until login
Original commit amended with a fix for registrations;
they need to (now) create an app and fetch an app-only token
before doing anything else, as this endpoint requires such a token.

Co-authored-by: Oneric <oneric@onierc.stub>

Cherry-picked-from: 0e25b94186
2025-10-12 00:00:00 +00:00
Kopper
3881f87c79 Properly pass credentials for follow requests and followed hashtags
This only worked in *oma due to legacy session-cookie auth kicking in
(which we should really get around to fully purge).

Cherry-picked-from: e8896fad15
2025-10-11 00:00:00 +00:00
Kopper
82647e8e98 Accept full URLs for /api/v1/pleroma/emoji
The frontend assumes these URLs will be relative to the target instance,
which may not be the case for non-*oma backends like Iceshrimp.NET
due to the backend storing emoji in an external object storage depending
on configuration.

Cherry-picked-from: c147c2aeb3
2025-10-11 00:00:00 +00:00