Skip to content

Add gif functionality using klipy - #970

Merged
7w1 merged 7 commits into
SableClient:devfrom
nikiwastaken:feat/gif-support
Jun 29, 2026
Merged

Add gif functionality using klipy#970
7w1 merged 7 commits into
SableClient:devfrom
nikiwastaken:feat/gif-support

Conversation

@nikiwastaken

Copy link
Copy Markdown
Contributor

Description

Based on work in #677.

Gif search functionality using klipy. Set your api token in config.json, also requires a mxc proxy. Favoriting gifs works by using account data.

Fixes #60

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings

AI disclosure:

I did not use AI for my changes. To quote the original PR:

The changes to renderItem() to support GIFs were AI generated. It returns GIF Items and ensures they are scaled properly.

Those seem sane.

@nikiwastaken
nikiwastaken requested review from 7w1 and hazre as code owners June 21, 2026 13:22
@nikiwastaken

Copy link
Copy Markdown
Contributor Author

I am not particularly sure about having the favorites button in two different places. The actual logic is similar but distinct enough that splitting it off into a separate component is also awkward.

@7w1 7w1 mentioned this pull request Jun 21, 2026
11 tasks
7w1 added a commit that referenced this pull request Jun 21, 2026
<!-- Please read
https://github.com/SableClient/Sable/blob/dev/CONTRIBUTING.md before
submitting your pull request -->

### Description

<!-- Please include a summary of the change. Please also include
relevant motivation and context. List any dependencies that are required
for this change. -->

Cherry picked from #970 

#### Type of change

- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- [ ] This change requires a documentation update

### Checklist:

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings

### AI disclosure:

- [ ] Partially AI assisted (clarify which code was AI assisted and
briefly explain what it does).
- [ ] Fully AI generated (explain what all the generated code does in
moderate detail).
<!-- Write any explanation required here, but do not generate the
explanation using AI!! You must prove you understand what the code in
this PR does. -->
@7w1

7w1 commented Jun 23, 2026

Copy link
Copy Markdown
Member

I'll apply to get the api key updated to a production one and then this should be ready to merge whenever we get that

@7w1 7w1 mentioned this pull request Jun 23, 2026
11 tasks

@dozro dozro left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

code lgtm overall, haven't tested functionality tho

@7w1
7w1 enabled auto-merge June 29, 2026 14:55
@7w1
7w1 disabled auto-merge June 29, 2026 14:56
@7w1
7w1 enabled auto-merge June 29, 2026 15:40
@7w1
7w1 added this pull request to the merge queue Jun 29, 2026
Merged via the queue into SableClient:dev with commit 4c1c522 Jun 29, 2026
12 checks passed
charm-cloudhub-social Bot pushed a commit to CloudHub-Social/Charm-1.0 that referenced this pull request Jul 9, 2026
> [!IMPORTANT]
> Merging this PR will create a new release.

## Features

* Added a GIF search functionality
([SableClient#970](<SableClient#970>) by @7w1,
@nikiwastaken)
* Change unverified device flow.
([SableClient#1017](<SableClient#1017>) by
@nikiwastaken, @nushea)
* Change animal identity to allow arbitrary animals
([SableClient#984](<SableClient#984>) by @nushea)
* Add a new Mobile Context
([SableClient#946](<SableClient#946>) by @7w1,
@nushea)
* Add bookmark functionality using account data
([SableClient#1000](<SableClient#1000>) by
@nikiwastaken, @nushea)
* Add Copy Message button to copy unformatted version.
([SableClient#1001](<SableClient#1001>) by @nushea)
* Change profile handle part to a button that copies it
([SableClient#981](<SableClient#981>) by @nushea)
* Add reactions to arbitrary events
([SableClient#946](<SableClient#946>) by @7w1,
@nushea)
* Added a gallery support as per msc4274
([SableClient#1019](<SableClient#1019>) by
@nikiwastaken, @nushea)
* Add a context menu for copying and downloading images.
([SableClient#994](<SableClient#994>) by
@nikiwastaken, @nushea)
* Add search message keybind and combine sidebar items.
([SableClient#943](<SableClient#943>) by @nushea)
* Add option for showing icons only when available and changed default
to it ([SableClient#978](<SableClient#978>) by
@nushea)
* Add CTRL+E shortcut to editor to bring sticker menu up
([SableClient#982](<SableClient#982>) by @nushea)
* Redesign the user menu tab
([SableClient#990](<SableClient#990>) by
@nikiwastaken, @nushea)
* Modify large parts of the mobile view of Sable!
([SableClient#1017](<SableClient#1017>) by
@nikiwastaken, @nushea)
* Improved sliding sync (only requests specific room state data),
cleaned up and fixed most flickering issues, and added buttons in
developer tools to request full state.
([SableClient#1020](<SableClient#1020>) by @7w1)

### Revamped the calling experience in Sable!
([SableClient#841](<SableClient#841>) by @7w1)

- Pulled the latest Element Call updates.
- Style improvements to the call widget so it uses the Sable theme and
fonts.
- Added support for custom ringtones and ringbacks.
- Added call permissions.
- Fixed various bugs around call ending, declining, and joining.

## Fixes

* Allow favoriting all animated attachment types
([SableClient#1029](<SableClient#1029>) by
@nikiwastaken)
* Updated emojis to use stable 1.19 identifiers
([SableClient#1034](<SableClient#1034>) by @7w1)
* Swap to using the stable identifier `m.recent_emoji` for recent emojis
and add migration logic.
([SableClient#1009](<SableClient#1009>) by @7w1)
* Add a direct link to room/space settings when the current sticker list
is empty ([SableClient#1016](<SableClient#1016>) by
@7w1, @ellieplayswow)
* Fix leaving modal looking outsized
([SableClient#991](<SableClient#991>) by @nushea)
* Fix cat status not being present on its own.
([SableClient#971](<SableClient#971>) by
@nikiwastaken)
* Fix encrypted thread messages not appearing until reopened.
([SableClient#975](<SableClient#975>) by @7w1)
* Fix codebase issues with gadient themes
([SableClient#1007](<SableClient#1007>) by @nushea)
* Fix account switcher's add account button redirecting to the wrong
path when hashRouter is enabled
([SableClient#993](<SableClient#993>) by
@ephemeralfog)
* Fix the image viewer header not being fully visible on smaller phone
screens. ([SableClient#1035](<SableClient#1035>) by
@7w1)
* Fix mentions not sending in non-textual replies
([SableClient#1004](<SableClient#1004>) by @nushea)
* Fixed oidc device delete key being incorrect.
([SableClient#1030](<SableClient#1030>) by @7w1)
* Fix crash when opening pins with stickers.
([SableClient#972](<SableClient#972>) by @7w1)
* Fix pixelated image scaling not pixelating when zoomed in.
([SableClient#1033](<SableClient#1033>) by @7w1)
* Fix registration not working when accessed from add account button
([SableClient#992](<SableClient#992>) by
@ephemeralfog)
* Reverse the order of message header elements in the right aligned
bubbles layout. ([SableClient#967](<SableClient#967>)
by @ephemeralfog)
* Fixed outdated Firefox versions and some Safari versions not being
able to send messages.
([SableClient#1010](<SableClient#1010>) by @7w1)
* Fix timeline sorting order regression when "show hidden events" is
enabled. ([SableClient#974](<SableClient#974>) by
@7w1)
* Fix ghost quickmenu
([SableClient#946](<SableClient#946>) by @7w1,
@nushea)
* Fix Collapsed mode showing the wrong icon
([SableClient#978](<SableClient#978>) by @nushea)
* Fix poll crashing sable if interacted with different clients
([SableClient#969](<SableClient#969>) by @nushea)
* Fix video player sometimes not working
([SableClient#1031](<SableClient#1031>) by @nushea)
* Add support for searching users via nicknames in the autocomplete
menu. ([SableClient#1028](<SableClient#1028>) by
@7w1)
* Update `@sableclient/twemoji-font` to fix missing Twemoji emoji
coverage. ([SableClient#964](<SableClient#964>) by
@7w1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GIF Search

3 participants