Commit Graph

343 Commits

Author SHA1 Message Date
Matthieu Jacq
2c7d48cf4e
feat: configure CSP for self-hosting and multiple ports in dev mode (#1364)
Closes #1358 
Closes #1359

⚠️ Need to update the preview and prod environment with a
"NEXT_PUBLIC_FRONTEND_URL" variable before merging.
2023-10-09 17:02:15 +02:00
Mamadou DICKO
77e135fb5b
test: add chat e2e tests (#1344)
- Brain selection
- Chat deletion
- Unplug chat
- Plug chat
2023-10-09 15:23:24 +02:00
Mamadou DICKO
f13f08c5c5
feat: update onboarding steps (#1337)
https://github.com/StanGirard/quivr/issues/1331


https://github.com/StanGirard/quivr/assets/63923024/eef62e2a-3c7c-4b08-b69c-2ba4d3b4b1be
2023-10-05 18:03:46 +02:00
Nick Guernsey
253e866a86
feat: enhance user page UI (#1319)
# Description

Hope ya'll don't mind, I updated the User Profile's UI to be a bit more
readable. Kept the design neutral to not impose styles.

I also kept the original toggle buttons for Theme and Language in case
we still want to use those in other places in the app, where a select
menu isn't necessary.

## Checklist before requesting a review

Please delete options that are not relevant.

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented hard-to-understand areas
- [ ] I have ideally added tests that prove my fix is effective or that
my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged

## Screenshots (if appropriate):


https://github.com/StanGirard/quivr/assets/64866427/d0320852-ece1-4002-a180-0005df132e71


https://github.com/StanGirard/quivr/assets/64866427/be3c67ec-8d42-44f9-8131-35a70aec20ef

---------

Co-authored-by: Zineb El Bachiri <100568984+gozineb@users.noreply.github.com>
Co-authored-by: Stan Girard <girard.stanislas@gmail.com>
2023-10-05 17:50:02 +02:00
Matthieu Jacq
d0e363e66e
feat: enable CSP in all environments (local/preview/prod) (#1334)
# Description

Enable CSP in all environments (local/preview/prod).

Relies on NEXT_PUBLIC_ENV env variable, which should be
`'local'|'preview'|'prod'`

# Comparison of old and new CSP values (tested locally)

## Before

### CSP (for prod only)

```
default-src 'self' https://fonts.googleapis.com https://xxx.supabase.co https://api.june.so https://www.quivr.app/; connect-src 'self' https://xxx.supabase.co http://localhost:5050 https://api.june.so https://api.openai.com https://cdn.growthbook.io https://vitals.vercel-insights.com/v1/vitals; img-src 'self' https://www.gravatar.com data:; media-src 'self' https://user-images.githubusercontent.com https://www.quivr.app/ https://quivr-cms.s3.eu-west-3.amazonaws.com; script-src 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com/ https://www.quivr.app/ https://www.google-analytics.com/; frame-ancestors 'none'; style-src 'unsafe-inline' https://www.quivr.app/;
```

## After

### Prod CSP (iso with before)

```
default-src 'self' https://fonts.googleapis.com https://xxx.supabase.co https://api.june.so https://www.quivr.app/; connect-src 'self' https://xxx.supabase.co http://localhost:5050 https://api.june.so https://api.openai.com https://cdn.growthbook.io https://vitals.vercel-insights.com/v1/vitals; img-src 'self' https://www.gravatar.com data:; media-src 'self' https://user-images.githubusercontent.com https://www.quivr.app/ https://quivr-cms.s3.eu-west-3.amazonaws.com; script-src 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com/ https://www.quivr.app/ https://www.google-analytics.com/; frame-ancestors 'none'; style-src 'unsafe-inline' https://www.quivr.app/;
```

### Preview CSP

```
default-src 'self' https://fonts.googleapis.com https://xxx.supabase.co https://api.june.so https://preview.quivr.app/; connect-src 'self' https://xxx.supabase.co http://localhost:5050 https://api.june.so https://api.openai.com https://cdn.growthbook.io https://vitals.vercel-insights.com/v1/vitals; img-src 'self' https://www.gravatar.com data:; media-src 'self' https://user-images.githubusercontent.com https://www.quivr.app/ https://quivr-cms.s3.eu-west-3.amazonaws.com; script-src 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com/ https://preview.quivr.app/ https://www.google-analytics.com/; frame-ancestors 'none'; style-src 'unsafe-inline' https://preview.quivr.app/;
```

### Local CSP

```
default-src 'self' https://fonts.googleapis.com https://xxx.supabase.co https://api.june.so http://localhost:3000 http://localhost:3001; connect-src 'self' https://xxx.supabase.co http://localhost:5050 https://api.june.so https://api.openai.com https://cdn.growthbook.io https://vitals.vercel-insights.com/v1/vitals; img-src 'self' https://www.gravatar.com data:; media-src 'self' https://user-images.githubusercontent.com https://www.quivr.app/ https://quivr-cms.s3.eu-west-3.amazonaws.com; script-src 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com/ http://localhost:3000 http://localhost:3001 https://www.google-analytics.com/; frame-ancestors 'none'; style-src 'unsafe-inline' http://localhost:3000 http://localhost:3001;
```

# 🧪 External checks

Syntax checked with https://csp-evaluator.withgoogle.com/ (for the 3
environments).

---------

Co-authored-by: gozineb <zinebe@theodo.fr>
2023-10-05 17:37:25 +02:00
Mamadou DICKO
28ef515458
feat: update onboarding controller and fix typo (#1333)
<img width="525" alt="Screenshot 2023-10-05 at 10 55 29"
src="https://github.com/StanGirard/quivr/assets/63923024/d7a4e7ef-e73f-46d0-8499-06c5e951f64a">


<img width="1207" alt="Screenshot 2023-10-05 at 10 49 45"
src="https://github.com/StanGirard/quivr/assets/63923024/50eba38a-b2cb-4e7d-82b1-ceca60abdad4">

https://github.com/StanGirard/quivr/issues/1328
2023-10-05 11:31:26 +02:00
Matthieu Jacq
f030db6952
feat: restructure the sidebar of the brains management page (#1325)
* 🧩 Possibility to chose which buttons to display in the sidebar

* Button "Back to chat"

* 💄 Remove the frame around the brains library page

* Give a size to the image in the profile button (for performance)

* Optional prop showButtons in the sidebar

* remove duration on waitFor and set sidebar animation duration to 200ms
2023-10-04 18:12:27 +02:00
Mamadou DICKO
85eba3da70
feat: add onboarding step 3 (#1324)
* feat: add OnboardingContext

* feat: add Step3 boilerplate

* feat: activate step3

* feat: add <Step3/> content

* feat: add shouldStream guard on useStreamText
2023-10-04 16:26:56 +02:00
Matthieu Jacq
945178de39
fix: 🐛📱 height now matches mobile height (#1323) 2023-10-04 12:04:57 +02:00
Mamadou DICKO
bf5b7553d5
fix: wrap parsing with try catch (#1321) 2023-10-04 11:26:25 +02:00
Mamadou DICKO
bf7cdae4ab
feat(onboarding): add questions suggestions layout (#1318)
* refactor: update ChatInput

* feat(chat): add questions suggestion layout
2023-10-03 18:34:28 +02:00
Mamadou DICKO
6d0bc9b6ac
feat(onboarding): add step 2 (#1314)
* refactor: move onboarding step1 to components folder

* feat(onboarding): add on step2
2023-10-03 18:26:40 +02:00
Matthieu Jacq
403cdaa354
fix: remove undesired outlines around divs (#1316) 2023-10-03 18:03:05 +02:00
Matthieu Jacq
a61a18f4f4
fix: replace next/image's layout deprecated attribute (#1313) 2023-10-03 16:52:31 +02:00
Matthieu Jacq
ed358c7fa3
refactor: ♻️ ContentSecurityPolicy as an object (#1312)
* ♻️  ContentSecurityPolicy as an object

* CSP: Remove redundant operation
2023-10-03 16:16:02 +02:00
Matthieu Jacq
958993a960
feat: ↕️ maximize brain management page (#1308) 2023-10-03 14:56:31 +02:00
Matthieu Jacq
18f76a5341
feat: ↕️ Maximise chat window (#1301)
* 🔥 Remove Chat page intro (component and translations)

* Centered full-size chat window (partial)

* fix: gray background when adding a document

* chat window: responsive padding

* cleaner navbar display condition
2023-10-03 12:18:49 +02:00
Mamadou DICKO
808b8ffa12
feat: update chat list on new chat first message (#1305)
* feat: refecth chats list on first message

* style: change chat items colors
2023-10-03 12:08:14 +02:00
Mamadou DICKO
63e90a317c
feat: add onboarding first step (#1303)
* refactor: split <MessageRow /> into small components

* feat: add onboarding page first step
2023-10-03 11:25:16 +02:00
Mamadou DICKO
64fbd79b75
feat: allow users to turn private brain to public (#1300) 2023-10-02 17:04:05 +02:00
Matthieu Jacq
1e0c0c4a54
fix: 🐛 Sidebar content should not hide the sidebar footer (#1298) 2023-10-02 15:36:40 +02:00
Matthieu Jacq
c140b9c517
feat: responsive sidebar (#1279)
* 💄 The chat sidebar takes the full height

* 💄 redesign of the action section and buttons in the sidebar

*  Sidebar header

* ♻️  Refact sidebar filesystem structure

* ♻️  Create a separate reusable sidebar component

* 🐛 Fix sidebar quick open/close on mobile

* 💄 New open/close sidebar button

* fix: error message + sidebar height issue + mobile width incoherence

* ♻️  Rename and move the sidebar footer

* 💄 sidebar toggle: color on hover

* apply sidebar to brains-management

* 💄 Larger sidebar

* 🚨Pass existing tests

*  Test the sidebar

*  Test the open and close buttons in the sidebar
2023-10-02 14:42:23 +02:00
Nick Guernsey
92494aa6c6
fix(Select): fix JSX typo (#1292)
* fix: fixed clipRule typo

* fix: fill-rule typo
2023-10-02 09:33:18 +02:00
Nick Guernsey
522f2cd79f
fix: prevent fetch when user is not logged in (#1293) 2023-10-02 09:27:17 +02:00
Stan Girard
ead1ae86fc
feat(user_settings): increased (#1291) 2023-09-30 22:32:53 +02:00
Mamadou DICKO
a1e6d400b2
test: add e2e for crawling (#1288)
* feat: update translations

* fix: update createBrain tests

* test: add crawl e2e test
2023-09-29 13:15:37 +02:00
Mamadou DICKO
36fd146fed
feat: improve app ux (#1281)
* style: make FeedItemIcon the same size

* feat: update feed component brain selector label position

* style: change purple to 600

* feat: improve already dropped file message ux

* feat: autoclose feedinput on chatId change

* style: change chat colors

* feat: prevent linebreak in knowledge to upload row

* feat(textFIeld): avoid textfield content going under icon

* feat(knowledgeToUpload): add tooltip on urls and files name

* feat(feedBrain): auto scroll on messages when feed modal get opened

* style: update colors

* refactor: rename uploadCard to FeedCard
2023-09-29 10:24:31 +02:00
Zineb El Bachiri
c215284fe9
🚑 return to old CSP syntax (#1282) 2023-09-28 18:24:31 +02:00
Zineb El Bachiri
b64fc044c4
feat: knowledge tab add button (#1277)
* 🚧 🌐 knowledge traductions

* 🔥 replace useKnowledge hook

*  AddKnowledge in knowledge  tab

* 🚧 extract feedBrain in chat hook

* ♻️ use feedBrain method as a prop in KnowledgeToFeedInput

*  custom feedBrain for chat and brain management

*  add loader when deleting

* 🚑 remove chat after auto creation for each feed action

* 🚚 rename KnowledgeProvider into KnowledgeToFeedProvider
2023-09-28 15:39:30 +02:00
Mamadou DICKO
2226eef06b
feat(chatPage): update ui add new feed component (#1275)
* feat(brains): remove unrelevent buttons on management page

* feat: improve feed input ux

* feat: update brain knowledge context add knowledge to feed logic

* feat: allow to drop files everywhere in the chat section

* style: add slide in effect when opening feed card

* test(chatPage): fix failing tests
2023-09-28 11:29:55 +02:00
Matthieu Jacq
b6f38f7aff
fix: 🔒️ add gravatar.com to the content security policy (#1273)
* fix: 🔒️ add gravatar.com to the content security policy

* 🎨 cleaner ContentSecurityPolicy string definition
2023-09-27 15:57:44 +02:00
Mamadou DICKO
ef78dec810
feat: improve knowledge feed process ux (#1274)
* style(deleteBrainModal): reduce buttons space

* refactor: add KnowledgeToFeedInput

* feat: update translations

* feat: update knowledge feed component

* style: reduce knowledge to upload displayer size

* feat: move KnowledgeToFeedInput to @lib

* refactor: rename useSelectedChatPage to useChatNotificationsSync

* feat: change chatPage bg to gray when feed card is opened

* style: change feed process submit button bg to purple
2023-09-27 15:39:04 +02:00
Matthieu Jacq
7470d389a7
feat: 👤 Implement gravatar (#1268)
*  Implement gravatar

* ♻️  refact gravatar url generation with a custom hook

* review: do not add a default value to the email if undefined
2023-09-27 14:41:08 +02:00
Mamadou DICKO
ef2bada3a5
style: improve ui (#1263)
* feat: align brain acces status change confirmation buttons

* style(brainManagement): reduce remove/unsubscribe button margin

* style(brainManagement): align confirmationModal buttons

* feat: update modal display status logic

* feat(BrainsLibrary): add brains management button

* style: improve public brain item ui

* style: make brain library responsive

* feat: auto close subscription modal on subscribe

* feat: add empty brain description message

* test: fix failing linter tests
2023-09-27 09:50:27 +02:00
Rahil Ahmad
a9fdbd51e4
FIX #1220 UX Upload improvement (#1259)
Co-authored-by: Mamadou DICKO <63923024+mamadoudicko@users.noreply.github.com>
Co-authored-by: Zineb El Bachiri <100568984+gozineb@users.noreply.github.com>
2023-09-27 09:22:22 +02:00
Mamadou DICKO
c8f045dfad
feat: save last chat config and make it default one (#1266)
* fix(RBAC): skip validation for unplug

* feat(chatSettings): set last config as default

---------

Co-authored-by: Zineb El Bachiri <100568984+gozineb@users.noreply.github.com>
2023-09-26 18:41:02 +02:00
Matthieu Jacq
da6d5b698d
feat(nav): 🚚 Move Brain and User buttons to the sidebar in the chat (#1262)
* 🚚 Move Brain and User buttons to the sidebar in the chat

* 🚨 fix linter warnings

* 🚚 Move sidebar actions to a dedicated component

*  Fix failing tests

* 💄 Style sidebar buttons

* 🚚 move nav components under ChatsListItem and User components accordingly

* Display email in the user button

* ♻️  use the UserData hook in the UserPage component

* Do not display the top navbar on the chat page

* ⚰️ remove the social icons at the bottom of the chat sidebar

* ️UserButton: get email from the Supabase context instead of a call api

* 🚨 Fix unit-tests

* 💄 Crop email in UserButton if necessary

* UserButton: display empty string if the email is undefined
2023-09-26 18:26:19 +02:00
Mamadou DICKO
a4a2d769b3
feat: allow setting public brain status to private (#1258)
* feat: refetch brains list on when new brain is added

* feat: update BrainConfig type

* feat: update useSettingsTab add usebrainFormState and useSettings tab

* feat: add <PrivateAccessConfirmationModal/> modal

* feat: update translations

* feat: handle brain status change to private

* feat: validate chat access

* test: fix failaing tests and remove deprecated
2023-09-26 10:35:52 +02:00
Riccardo Linares
4b88c89814
Update next.config.js (#1251)
Removing typo in next.confing.js
2023-09-26 09:36:53 +02:00
Matthieu Jacq
4acdb0ae55
feat(user): 🚚 Move language and theme buttons to the User page (#1256)
* feat(user): 🚚 Move language and theme buttons in the User page

* ⚰️  Remove obsolete test (DocumentData.test.ts)

* fix(user_settings): ⚰️  remove settings header
2023-09-26 09:29:30 +02:00
Mamadou DICKO
1643b54b7b
feat: allow user to unsubscribe from a brain (#1254)
* feat: update translations

* feat: add <DeleteOrUnsubscribeConfirmationModal />

* test(DeleteOrUnsubscribeConfirmationModal): update tests

* feat: redirect to /brains-management on invalid brain id

* refactor: move delete_brain_user to delete_brain_users

* feat: add /POST '/brains/{brain_id}/subscribe'

* feat: handle public brain unsubscription
2023-09-25 14:22:59 +02:00
Stan Girard
5e2d8a6b59 fix(preview): import 2023-09-22 18:15:39 +02:00
Stan Girard
c1ec7b8944
fix(preview): fixed a few bugs unchecked (#1247) 2023-09-22 18:04:45 +02:00
Zineb El Bachiri
d2b4ef4aff
feat: knowledge tab list (#1222)
*  get all knowledge utils

*  add remove knowledge and update router

*  new knowledge provider

* 🚨 remove eslint -disable

*  new useKnowledgeApi

*  set up KnowledgeItem

*  add KnowledgeTable component in knowledge tab

* 🔥 remove DocumentData replaced by KnowledgeItem

* 🐛 fix weird characters instead of '/'

* 💄 truncate knowledge name

*  add DownloadUploadedKnowledge component

* ⚰️ unused code

* 🏷️ introduce UploadedKnowledge and CrawledKnowledge types

* 💄 remove thread

* 💄 bin for delete knowledge

* 🌐 update wording for knowledge tab

* 🔇 remove logs and comments
2023-09-22 16:06:04 +02:00
Mamadou DICKO
48bdbbb3e9
feat(publicBrain): disable subscribe button when already subscribed and refetch brains list (#1246)
* feat(brainSettings): add getBrainPermissions

* feat(publicBrain): disable subscription button when already subscribed

* feat(publicBrains): refecth brains list onSubscribe
2023-09-22 12:37:50 +02:00
Mamadou DICKO
2c9a0c1ed2
feat: activate public brain subscription (#1241)
* feat: add public brain details modal

* feat(brain): add subscription route

* feat: activate subscription button

* feat: add last_update column to brain table

* feat: display last update on public brain details page

* feat: change RBAC rule for public brains

* feat: maintain brain last_update time
2023-09-22 11:44:09 +02:00
Stan Girard
f1804dec5c fix: 🐛 blog
too many lines
2023-09-21 22:02:50 +02:00
Stan Girard
65de6839fc docs(blog): updated 2023-09-21 21:14:01 +02:00
Stan Girard
cdc097901e fix(cms): changed url 2023-09-21 14:31:07 +02:00
Stan Girard
f2937a7eee feat(cms): added images 2023-09-21 14:23:22 +02:00