Repository navigation
Conversation
|
Sorry I had some trouble reproducing the eslint failures locally, pushed now @danny-avila |
rubentalstra
left a comment
There was a problem hiding this comment.
please have a look at the translation files. please only keep the en language keys.
|
@danny-avila or @berry-13 do we already use a different package for drag? |
|
@rubentalstra yes we use |
|
Apologies, i'd missed that, will draft and refactor! |
e0d35cb to
741b95c
Compare
There was a problem hiding this comment.
Pull Request Overview
This pull request adds a conversation‐pin feature with drag & drop reordering support. Key changes include updates to the data schemas and API endpoints for pinning conversations, modifications to the client-side conversation grouping to separate pinned items, and the introduction of new mutations and components to handle pin toggling and reordering.
Reviewed Changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| packages/data-schemas/src/types/convo.ts | Added optional fields isPinned and pinnedOrder to the conversation type. |
| packages/data-schemas/src/schema/convo.ts | Updated the schema to include isPinned and pinnedOrder with appropriate defaults and indexes. |
| packages/data-provider/src/* | Extended types, API endpoints, and data service functions to support pin and reorder mutations. |
| client/src/utils/convos.ts | Modified conversation grouping to separate and sort pinned conversations. |
| client/src/components/Conversations/* | Introduced new components and mutations to support pin toggling and drag & drop reordering. |
| api/server/routes/convos.js and api/models/Conversation.js | Added routes and auto-assignment logic for pinnedOrder during pin/unpin operations. |
Comments suppressed due to low confidence (2)
client/src/components/Conversations/PinnedConversations.tsx:108
- [nitpick] Consider renaming 'localPinnedOrder' to 'pinnedConversationsState' to more clearly indicate that it holds the local state for the order of pinned conversations.
const [localPinnedOrder, setLocalPinnedOrder] = useState<TConversation[]>([]);
api/models/Conversation.js:102
- Add a clarifying comment regarding the initialization logic for 'pinnedOrder', explaining that it assigns (maxOrder?.pinnedOrder ?? -1) + 1 to ensure new pins are ordered correctly even when no previous pinned conversations exist.
if (update.isPinned === true && update.pinnedOrder === undefined) {
82f9650 to
a54bbe2
Compare
|
@rubentalstra I've rebased and just assumed that this issue we noted is resolved, if you're able to trigger another build? |
|
@danny-avila The only urgency I can assign to this is my excitement to use the feature myself in my production Librechat! Would you mind triggering the build please? 🤞🏻 |
|
Im someone looking into getting this merged? |
|
I didn't want to keep Danny's probably busy being inducted at Clickhouse this week? :-D |
08e2a2b to
60dc351
Compare
|
Now rebased and ready for merge again |
60dc351 to
f517e26
Compare
|
Thanks for triggering the rerun @rubentalstra - hopefully Clickhouse sponsorship leads to normal automatic pipelines, I feel bad putting you out asking you to run pipelines all the time. I think i've now fixed the unit tests 🙏🏻 |
|
Le sigh, these test failures look to be present on |
|
I'm afraid I'm being totally stonewalled on this everyone. No one with merge rights from Librechat is engaging and maintaining this PR through merge conflicts is becoming quite a chore. I'm really disappointed but I'm going to close this PR. If anyone thinks they've got the ear of a Librechat merger please get in touch and i'll gladly reopen it, but I can't keep resolving conflicts and crossing my fingers that they'll get around to it with no communication. |
|
@henricook Thank you for your work on this. We merged it into our forks (one public, one private) awhile ago and it's worked great. |
Pin Conversations
Docs update: LibreChat-AI/docs#310
Summary
This feature was requested and was also something I'd personally really like. I'm sorry it's not on the roadmap but I took Danny's comment on the Issue as blessing enough and went ahead and did it.
Please do let me know if I've done anything egregious and/or you'd like any changes!
Change Type
Please delete any irrelevant options.
Testing
I've added unit tests and done a click test, here's a video of the original work:
Screencast.From.2025-05-25.11-06-19.mp4
After a helpful suggestion in comments by @rubentalstra I went back and added drag and drop reordering to pinned items too, here's a vid of that, there's a refresh in the middle to double-check persistence is fine (that's why the screen goes blank):
Screencast.From.2025-05-26.11-36-55.mp4
Test Configuration:
N/A
Checklist
Please delete any irrelevant options.