Skip to content

Support for Bubble timeline on Akkoma and Chuckya#858

Draft
Steffo99 wants to merge 12 commits intocheeaun:mainfrom
Steffo99:feature/akkoma-bubble
Draft

Support for Bubble timeline on Akkoma and Chuckya#858
Steffo99 wants to merge 12 commits intocheeaun:mainfrom
Steffo99:feature/akkoma-bubble

Conversation

@Steffo99
Copy link
Copy Markdown
Contributor

@Steffo99 Steffo99 commented Oct 5, 2024

Closes #601.

Still very work in progress, but wanted to share it in the meantime!

Screenshot

Not really necessary, but all pull requests look nicer with images!

@Steffo99 Steffo99 changed the title Initial support for Akkoma's bubble timeline Support for Bubble timeline on instance where it is available Oct 11, 2024
@Steffo99 Steffo99 changed the title Support for Bubble timeline on instance where it is available Support for Bubble timeline on instances where it is available Oct 11, 2024
@Steffo99
Copy link
Copy Markdown
Contributor Author

Figured out how to add it to the shortcut menu, but I'm struggling to understand how to add a new input type to the shortcut settings (the "variant" option would need a <select>).

For now I've set its type to "text", and I'm having the user input the string corresponding to the chosen variant manually.

More screenshots!

@cheeaun cheeaun added enhancement New feature or request akkoma labels Oct 14, 2024
@Steffo99 Steffo99 force-pushed the feature/akkoma-bubble branch from 3727666 to ae9330a Compare December 9, 2024 03:13
@Steffo99 Steffo99 changed the title Support for Bubble timeline on instances where it is available Support for Bubble timeline on Akkoma and Chuckya Dec 9, 2024
@Steffo99
Copy link
Copy Markdown
Contributor Author

Steffo99 commented Dec 9, 2024

This works everywhere now, and even has a proper dropdown:

I think I also stumbled upon a bug in the import of shortcuts, which I think I fixed in 369935f.

@Steffo99 Steffo99 marked this pull request as ready for review December 9, 2024 04:24
@Steffo99
Copy link
Copy Markdown
Contributor Author

Steffo99 commented Dec 9, 2024

CCing @TheEssem, who might (or might not) be interested in this implementation, as author of TheEssem/mastodon@07ff6d0

@donfeduardo
Copy link
Copy Markdown

I think I managed to fix the merge conflicts on my fork without botching anything, so I have this running on my instance. If there's anything in particular you want another pair of eyes on, let me know.

@donfeduardo
Copy link
Copy Markdown

This is perhaps a dumb question, and I swear I've searched, but what's the best way to deal with merge conflicts on the default PO file at src/locals/en.po? When I first merged this branch I just manually looked for the strings in question as a way to learn how the code worked, but that's impractical. When watching the build output after merging with the current release, I saw messages from lingui extract. Should I be running npm run messages:extract on its own, should I just run a build after a merge and let the file be replaced that way before committing it to my local repo, or is there some other best practice I should be following?

@Steffo99
Copy link
Copy Markdown
Contributor Author

"Should I be running npm run messages:extract on its own, should I just run a build after a merge and let the file be replaced that way before committing it to my local repo, or is there some other best practice I should be following?"
@donfeduardo

I think just running a build should be enough for the relevant files to be replaced, although I never really explored how the localization system works, so perhaps @cheeaun might be able to provide a better answer :)

@paulo-roger
Copy link
Copy Markdown

Thank you so much! Is it implemented?

@Steffo99 Steffo99 force-pushed the feature/akkoma-bubble branch 2 times, most recently from 382d200 to 7c81ba1 Compare September 9, 2025 04:58
@Steffo99
Copy link
Copy Markdown
Contributor Author

Steffo99 commented Sep 9, 2025

Rebased onto 226fd66 and reorganized commits to be atomic.

@cheeaun please have a look when you can!

@cheeaun
Copy link
Copy Markdown
Owner

cheeaun commented Sep 9, 2025

@Steffo99 this has been a while 😮‍💨. Would be useful to see some screenshots of this working 😁

Comment thread src/components/nav-menu.jsx Outdated
Comment thread src/components/shortcuts-settings.jsx Outdated
Comment thread src/components/shortcuts-settings.jsx Outdated
Comment thread src/utils/supports.js Outdated
@Steffo99 Steffo99 force-pushed the feature/akkoma-bubble branch from af86bb9 to 7d9c1e8 Compare September 10, 2025 08:27
@Steffo99
Copy link
Copy Markdown
Contributor Author

A few more screenshots!

2025-09-10 10-59-49 2025-09-10 11-2-15 2025-09-10 11-3-17 2025-09-10 11-7-41 2025-09-10 11-9-05

Comment thread src/pages/public.jsx
Comment on lines +45 to -43
// TODO: this switches depending on our current instance, and not the instance we're viewing
let endpoint;
if(supports('@akkoma/bubble-timeline')) {
endpoint = masto.v1.timelines.bubble
}
else {
endpoint = masto.v1.timelines.public
}

const publicIterator = useRef();
async function fetchPublic(firstLoad) {
if (firstLoad || !publicIterator.current) {

// TODO: same as above for Pixelfed here
const opts = {
limit: LIMIT,
local: isLocal || undefined,
local: variant === 'local' || undefined,
bubble: variant === 'bubble' || undefined,
remote: variant === 'federated' && supports('@pixelfed/global-feed') || undefined,
};
if (!isLocal && supports('@pixelfed/global-feed')) {
opts.remote = true;
}
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have a way to check supports for the instance we're viewing, instead of the one we're logged in to?

This breaks from Mastodon to Pixelfed or between Akkoma and anything else...

@Steffo99 Steffo99 requested a review from cheeaun September 11, 2025 13:45
@Steffo99 Steffo99 marked this pull request as draft September 11, 2025 13:53
@donfeduardo
Copy link
Copy Markdown

It seems to be time to rebase this again, since src/pages/public.jsx has changed recently. Also in fixing the merge conflicts this time around I discovered a couple bugs:

  1. The endpoint variable gets set to the bubble timeline on every load. This breaks the local and federated timelines. I solved this by changing the conditional to if(supports('@akkoma/bubble-timeline') && variant === 'bubble')
  2. Even when that's properly set, if you switch between the bubble timeline and one of the other views, the list isn't reset. I solved this one with if (publicIterator.endpoint && publicIterator.endpoint != endpoint) { publicIterator.current = undefined; } publicIterator.endpoint = endpoint;

AFAICT this doesn't have any negative side effects, and the list properly reloads if the active timeline is switched.

@Steffo99
Copy link
Copy Markdown
Contributor Author

I'm not too interested in working on rebasing this at the moment @donfeduardo, should I add you as contributor to my fork so that you can edit this pull request?

@donfeduardo
Copy link
Copy Markdown

Sure, why not. I don't know if anybody else but me is even trying to use this, but I'd love to have easier merges even if I have to make them happen myself.

@Steffo99
Copy link
Copy Markdown
Contributor Author

Steffo99 commented Mar 15, 2026 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

akkoma enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Request] Akkoma Bubble Support

4 participants