diff --git a/e2e/snapshots/desktop-dark.png b/e2e/snapshots/desktop-dark.png index 2b6b477..8869b32 100644 Binary files a/e2e/snapshots/desktop-dark.png and b/e2e/snapshots/desktop-dark.png differ diff --git a/e2e/snapshots/desktop-light.png b/e2e/snapshots/desktop-light.png index 4739214..d720693 100644 Binary files a/e2e/snapshots/desktop-light.png and b/e2e/snapshots/desktop-light.png differ diff --git a/e2e/snapshots/mobile-dark.png b/e2e/snapshots/mobile-dark.png index 8e81274..3a46f16 100644 Binary files a/e2e/snapshots/mobile-dark.png and b/e2e/snapshots/mobile-dark.png differ diff --git a/e2e/snapshots/mobile-light.png b/e2e/snapshots/mobile-light.png index fba9b1d..65bb148 100644 Binary files a/e2e/snapshots/mobile-light.png and b/e2e/snapshots/mobile-light.png differ diff --git a/e2e/snapshots/non-existent-page/desktop-dark.png b/e2e/snapshots/non-existent-page/desktop-dark.png index a849af3..4f7592b 100644 Binary files a/e2e/snapshots/non-existent-page/desktop-dark.png and b/e2e/snapshots/non-existent-page/desktop-dark.png differ diff --git a/e2e/snapshots/non-existent-page/desktop-light.png b/e2e/snapshots/non-existent-page/desktop-light.png index 2538ed1..82906e6 100644 Binary files a/e2e/snapshots/non-existent-page/desktop-light.png and b/e2e/snapshots/non-existent-page/desktop-light.png differ diff --git a/e2e/snapshots/non-existent-page/mobile-dark.png b/e2e/snapshots/non-existent-page/mobile-dark.png index d3b47cd..40fb2d4 100644 Binary files a/e2e/snapshots/non-existent-page/mobile-dark.png and b/e2e/snapshots/non-existent-page/mobile-dark.png differ diff --git a/e2e/snapshots/non-existent-page/mobile-light.png b/e2e/snapshots/non-existent-page/mobile-light.png index b2f7870..b9ed316 100644 Binary files a/e2e/snapshots/non-existent-page/mobile-light.png and b/e2e/snapshots/non-existent-page/mobile-light.png differ diff --git a/e2e/snapshots/non-existent-page/tablet-dark.png b/e2e/snapshots/non-existent-page/tablet-dark.png index 879d627..5ca7599 100644 Binary files a/e2e/snapshots/non-existent-page/tablet-dark.png and b/e2e/snapshots/non-existent-page/tablet-dark.png differ diff --git a/e2e/snapshots/non-existent-page/tablet-light.png b/e2e/snapshots/non-existent-page/tablet-light.png index 109a352..c1afca1 100644 Binary files a/e2e/snapshots/non-existent-page/tablet-light.png and b/e2e/snapshots/non-existent-page/tablet-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/desktop-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/desktop-dark.png index a7d6bea..259c2d5 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/desktop-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/desktop-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/desktop-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/desktop-light.png index 021a4b6..edd3a20 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/desktop-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/desktop-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/mobile-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/mobile-dark.png index da9612a..9e80cde 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/mobile-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/mobile-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/mobile-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/mobile-light.png index cd44ce6..62e5482 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/mobile-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/mobile-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/desktop-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/desktop-dark.png index e97da01..facf022 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/desktop-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/desktop-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/desktop-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/desktop-light.png index 9544f6b..2bccfd7 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/desktop-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/desktop-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/mobile-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/mobile-dark.png index 762a942..15d1d5b 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/mobile-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/mobile-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/mobile-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/mobile-light.png index cb9e5db..62e5482 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/mobile-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/mobile-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/tablet-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/tablet-dark.png index b0520c5..5bb5f04 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/tablet-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/tablet-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/tablet-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/tablet-light.png index 0af7113..e052281 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/tablet-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/settings-tab/tablet-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/desktop-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/desktop-dark.png index 942487e..85b277f 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/desktop-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/desktop-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/desktop-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/desktop-light.png index be2096a..779a783 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/desktop-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/desktop-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/mobile-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/mobile-dark.png index 080e56f..d8b5976 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/mobile-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/mobile-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/mobile-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/mobile-light.png index ddf219a..91def46 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/mobile-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/mobile-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/tablet-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/tablet-dark.png index b11a8d6..0c226a8 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/tablet-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/tablet-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/tablet-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/tablet-light.png index c02859f..33988aa 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/tablet-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidebar-closed/tablet-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/desktop-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/desktop-dark.png index 66eda3c..06fcb81 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/desktop-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/desktop-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/desktop-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/desktop-light.png index 904c91f..a98e340 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/desktop-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/desktop-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/mobile-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/mobile-dark.png index 9aeb4fd..d5eab49 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/mobile-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/mobile-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/mobile-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/mobile-light.png index f173302..62e5482 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/mobile-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/mobile-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/tablet-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/tablet-dark.png index 6737c15..1239eea 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/tablet-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/tablet-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/tablet-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/tablet-light.png index 5fb0a0c..e052281 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/tablet-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/sidechain-task-modal/tablet-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/desktop-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/desktop-dark.png index c435983..8bf9264 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/desktop-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/desktop-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/desktop-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/desktop-light.png index 40aa7d1..a9a0c14 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/desktop-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/desktop-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/mobile-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/mobile-dark.png index 8a0769a..63e5b1a 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/mobile-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/mobile-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/mobile-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/mobile-light.png index 86e2cfc..fd739d9 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/mobile-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/mobile-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/tablet-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/tablet-dark.png index 431bb69..7736028 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/tablet-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/tablet-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/tablet-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/tablet-light.png index 63f0c8f..42bdb0f 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/tablet-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/start-new-chat/tablet-light.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/tablet-dark.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/tablet-dark.png index 910dd74..56c329c 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/tablet-dark.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/tablet-dark.png differ diff --git a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/tablet-light.png b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/tablet-light.png index 67d8693..e052281 100644 Binary files a/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/tablet-light.png and b/e2e/snapshots/projects/L2hvbWUvcnVubmVyL3dvcmsvY2xhdWRlLWNvZGUtdmlld2VyL2NsYXVkZS1jb2RlLXZpZXdlci9tb2NrLWdsb2JhbC1jbGF1ZGUtZGlyL3Byb2plY3RzL3NhbXBsZS1wcm9qZWN0/sessions/fe5e1c67-53e7-4862-81ae-d0e013e3270b/tablet-light.png differ diff --git a/e2e/snapshots/projects/desktop-dark.png b/e2e/snapshots/projects/desktop-dark.png index 2b6b477..8869b32 100644 Binary files a/e2e/snapshots/projects/desktop-dark.png and b/e2e/snapshots/projects/desktop-dark.png differ diff --git a/e2e/snapshots/projects/desktop-light.png b/e2e/snapshots/projects/desktop-light.png index 4739214..d720693 100644 Binary files a/e2e/snapshots/projects/desktop-light.png and b/e2e/snapshots/projects/desktop-light.png differ diff --git a/e2e/snapshots/projects/mobile-dark.png b/e2e/snapshots/projects/mobile-dark.png index 8e81274..3a46f16 100644 Binary files a/e2e/snapshots/projects/mobile-dark.png and b/e2e/snapshots/projects/mobile-dark.png differ diff --git a/e2e/snapshots/projects/mobile-light.png b/e2e/snapshots/projects/mobile-light.png index fba9b1d..65bb148 100644 Binary files a/e2e/snapshots/projects/mobile-light.png and b/e2e/snapshots/projects/mobile-light.png differ diff --git a/e2e/snapshots/projects/new-project-modal/desktop-dark.png b/e2e/snapshots/projects/new-project-modal/desktop-dark.png index 85c4bf8..d75de5d 100644 Binary files a/e2e/snapshots/projects/new-project-modal/desktop-dark.png and b/e2e/snapshots/projects/new-project-modal/desktop-dark.png differ diff --git a/e2e/snapshots/projects/new-project-modal/desktop-light.png b/e2e/snapshots/projects/new-project-modal/desktop-light.png index cba697c..8126eef 100644 Binary files a/e2e/snapshots/projects/new-project-modal/desktop-light.png and b/e2e/snapshots/projects/new-project-modal/desktop-light.png differ diff --git a/e2e/snapshots/projects/new-project-modal/mobile-dark.png b/e2e/snapshots/projects/new-project-modal/mobile-dark.png index 0a723ce..a669e2f 100644 Binary files a/e2e/snapshots/projects/new-project-modal/mobile-dark.png and b/e2e/snapshots/projects/new-project-modal/mobile-dark.png differ diff --git a/e2e/snapshots/projects/new-project-modal/mobile-light.png b/e2e/snapshots/projects/new-project-modal/mobile-light.png index a995fa7..77d98de 100644 Binary files a/e2e/snapshots/projects/new-project-modal/mobile-light.png and b/e2e/snapshots/projects/new-project-modal/mobile-light.png differ diff --git a/e2e/snapshots/projects/new-project-modal/tablet-dark.png b/e2e/snapshots/projects/new-project-modal/tablet-dark.png index fab35ec..9f075ea 100644 Binary files a/e2e/snapshots/projects/new-project-modal/tablet-dark.png and b/e2e/snapshots/projects/new-project-modal/tablet-dark.png differ diff --git a/e2e/snapshots/projects/new-project-modal/tablet-light.png b/e2e/snapshots/projects/new-project-modal/tablet-light.png index 3da06ed..d862fef 100644 Binary files a/e2e/snapshots/projects/new-project-modal/tablet-light.png and b/e2e/snapshots/projects/new-project-modal/tablet-light.png differ diff --git a/e2e/snapshots/projects/tablet-dark.png b/e2e/snapshots/projects/tablet-dark.png index 67c5805..75397c4 100644 Binary files a/e2e/snapshots/projects/tablet-dark.png and b/e2e/snapshots/projects/tablet-dark.png differ diff --git a/e2e/snapshots/projects/tablet-light.png b/e2e/snapshots/projects/tablet-light.png index 7f47e81..b36d1e7 100644 Binary files a/e2e/snapshots/projects/tablet-light.png and b/e2e/snapshots/projects/tablet-light.png differ diff --git a/e2e/snapshots/tablet-dark.png b/e2e/snapshots/tablet-dark.png index 67c5805..75397c4 100644 Binary files a/e2e/snapshots/tablet-dark.png and b/e2e/snapshots/tablet-dark.png differ diff --git a/e2e/snapshots/tablet-light.png b/e2e/snapshots/tablet-light.png index 7f47e81..b36d1e7 100644 Binary files a/e2e/snapshots/tablet-light.png and b/e2e/snapshots/tablet-light.png differ diff --git a/package.json b/package.json index b69c5a5..87eba24 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "e2e": "./scripts/e2e/exec_e2e.sh", "e2e:start-server": "./scripts/e2e/start_server.sh", "e2e:capture-snapshots": "./scripts/e2e/capture_snapshots.sh", + "lingui:extract": "lingui extract --clean", "lingui:compile": "lingui compile --typescript" }, "dependencies": { @@ -54,6 +55,7 @@ "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-hover-card": "1.1.15", + "@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-select": "2.2.6", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-tabs": "1.1.13", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a9f63a..50c4fc6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,6 +50,9 @@ importers: '@radix-ui/react-hover-card': specifier: 1.1.15 version: 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-popover': + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-select': specifier: 2.2.6 version: 2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) @@ -1339,6 +1342,19 @@ packages: '@types/react': optional: true + '@radix-ui/react-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-popper@1.2.8': resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} peerDependencies: @@ -5573,6 +5589,29 @@ snapshots: optionalDependencies: '@types/react': 19.2.2 + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0) + aria-hidden: 1.2.6 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0) + optionalDependencies: + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) diff --git a/src/app/projects/[projectId]/components/chatForm/ChatInput.tsx b/src/app/projects/[projectId]/components/chatForm/ChatInput.tsx index 0b23ce6..785bad5 100644 --- a/src/app/projects/[projectId]/components/chatForm/ChatInput.tsx +++ b/src/app/projects/[projectId]/components/chatForm/ChatInput.tsx @@ -7,7 +7,14 @@ import { SparklesIcon, XIcon, } from "lucide-react"; -import { type FC, useCallback, useId, useRef, useState } from "react"; +import { + type FC, + useCallback, + useEffect, + useId, + useRef, + useState, +} from "react"; import { toast } from "sonner"; import { Button } from "../../../../../components/ui/button"; import { Input } from "../../../../../components/ui/input"; @@ -59,13 +66,28 @@ export const ChatInput: FC = ({ error, placeholder, buttonText, - minHeight = "min-h-[100px]", + minHeight: minHeightProp = "min-h-[64px]", containerClassName = "", disabled = false, buttonSize = "lg", enableScheduledSend = false, baseSessionId = null, }) => { + // Parse minHeight prop to get pixel value (default to 48px for 1.5 lines) + // Supports both "200px" and Tailwind format like "min-h-[200px]" + const parseMinHeight = (value: string): number => { + // Try to extract pixel value using regex (handles both formats) + const match = value.match(/(\d+)px/); + if (match?.[1]) { + const parsed = parseInt(match[1], 10); + if (!Number.isNaN(parsed)) { + return parsed; + } + } + // Fallback to default + return 48; + }; + const minHeightValue = parseMinHeight(minHeightProp); const { i18n } = useLingui(); const [message, setMessage] = useState(""); const [attachedFiles, setAttachedFiles] = useState< @@ -98,6 +120,28 @@ export const ChatInput: FC = ({ const { config } = useConfig(); const createSchedulerJob = useCreateSchedulerJob(); + // Auto-resize textarea based on content + // biome-ignore lint/correctness/useExhaustiveDependencies: message is intentionally included to trigger resize + useEffect(() => { + const textarea = textareaRef.current; + if (!textarea) return; + + // Reset height to auto to get the correct scrollHeight + textarea.style.height = "auto"; + // Set height to scrollHeight, but respect min/max constraints + const scrollHeight = textarea.scrollHeight; + const maxHeight = 200; // Maximum height in pixels (approx 5 lines) + textarea.style.height = `${Math.max(minHeightValue, Math.min(scrollHeight, maxHeight))}px`; + }, [message, minHeightValue]); + + // Set initial height to 1 line on mount + useEffect(() => { + const textarea = textareaRef.current; + if (!textarea) return; + // Set initial height to minHeight value + textarea.style.height = `${minHeightValue}px`; + }, [minHeightValue]); + const handleSubmit = async () => { if (!message.trim() && attachedFiles.length === 0) return; @@ -328,10 +372,7 @@ export const ChatInput: FC = ({
- +
)} @@ -362,7 +403,10 @@ export const ChatInput: FC = ({ }} onKeyDown={handleKeyDown} placeholder={placeholder} - className={`${minHeight} resize-none border-0 focus-visible:ring-0 focus-visible:ring-offset-0 bg-transparent px-5 py-4 text-lg transition-all duration-200 placeholder:text-muted-foreground/60`} + className="resize-none border-0 focus-visible:ring-0 focus-visible:ring-offset-0 bg-transparent px-5 py-2 text-base transition-all duration-200 placeholder:text-muted-foreground/60 overflow-y-auto leading-6" + style={{ + minHeight: `${minHeightValue}px`, + }} disabled={isPending || disabled} aria-label={i18n._("Message input with completion support")} aria-describedby={helpId} @@ -394,7 +438,7 @@ export const ChatInput: FC = ({ )} -
+
= ({ > - + = ({ {(message.startsWith("/") || message.includes("@")) && ( - + )}
@@ -437,7 +478,7 @@ export const ChatInput: FC = ({ {enableScheduledSend && (
@@ -474,10 +509,7 @@ export const ChatInput: FC = ({ htmlFor="scheduled-time" className="text-xs sr-only" > - + = ({ <> - + ) : ( diff --git a/src/app/projects/[projectId]/components/chatForm/InlineCompletion.tsx b/src/app/projects/[projectId]/components/chatForm/InlineCompletion.tsx index 07c27a7..92f47ae 100644 --- a/src/app/projects/[projectId]/components/chatForm/InlineCompletion.tsx +++ b/src/app/projects/[projectId]/components/chatForm/InlineCompletion.tsx @@ -107,7 +107,7 @@ export const InlineCompletion: FC<{ return (
} + buttonText={} minHeight="min-h-[200px]" containerClassName="px-0 py-6" buttonSize="lg" diff --git a/src/app/projects/[projectId]/components/newChat/NewChatModal.tsx b/src/app/projects/[projectId]/components/newChat/NewChatModal.tsx index c5d1731..00b26b3 100644 --- a/src/app/projects/[projectId]/components/newChat/NewChatModal.tsx +++ b/src/app/projects/[projectId]/components/newChat/NewChatModal.tsx @@ -30,7 +30,7 @@ export const NewChatModal: FC<{ - + diff --git a/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageContent.tsx b/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageContent.tsx index 800dd72..364b1b2 100644 --- a/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageContent.tsx +++ b/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageContent.tsx @@ -2,27 +2,24 @@ import type { FC } from "react"; import { Suspense, useState } from "react"; import { Loading } from "@/components/Loading"; -import { SessionPageMain } from "./SessionPageMain"; -import { SessionSidebar } from "./sessionSidebar/SessionSidebar"; +import { SessionPageMainWrapper } from "./SessionPageMainWrapper"; +import type { Tab } from "./sessionSidebar/schema"; export const SessionPageContent: FC<{ projectId: string; sessionId: string; -}> = ({ projectId, sessionId }) => { + tab: Tab; +}> = ({ projectId, sessionId, tab }) => { const [isMobileSidebarOpen, setIsMobileSidebarOpen] = useState(false); return (
- }> - diff --git a/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageMain.tsx b/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageMain.tsx index 65e4763..3c862c9 100644 --- a/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageMain.tsx +++ b/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageMain.tsx @@ -1,28 +1,37 @@ import { Trans } from "@lingui/react"; -import { useMutation } from "@tanstack/react-query"; +import type { UseMutationResult } from "@tanstack/react-query"; import { GitBranchIcon, - GitCompareIcon, + InfoIcon, LoaderIcon, MenuIcon, PauseIcon, - XIcon, } from "lucide-react"; -import { type FC, useEffect, useMemo, useRef, useState } from "react"; - +import { type FC, type RefObject, useEffect, useMemo, useState } from "react"; import { PermissionDialog } from "@/components/PermissionDialog"; +import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; import { usePermissionRequests } from "@/hooks/usePermissionRequests"; import { useTaskNotifications } from "@/hooks/useTaskNotifications"; -import { Badge } from "../../../../../../components/ui/badge"; -import { honoClient } from "../../../../../../lib/api/client"; -import { useProject } from "../../../hooks/useProject"; +import type { PublicSessionProcess } from "@/types/session-process"; import { firstUserMessageToTitle } from "../../../services/firstCommandToTitle"; -import { useGitCurrentRevisions } from "../hooks/useGit"; +import type { useGitCurrentRevisions } from "../hooks/useGit"; +import { useGitCurrentRevisions as useGitCurrentRevisionsHook } from "../hooks/useGit"; import { useSession } from "../hooks/useSession"; import { useSessionProcess } from "../hooks/useSessionProcess"; import { ConversationList } from "./conversationList/ConversationList"; import { DiffModal } from "./diffModal"; +import { ChatActionMenu } from "./resumeChat/ChatActionMenu"; import { ContinueChat } from "./resumeChat/ContinueChat"; import { ResumeChat } from "./resumeChat/ResumeChat"; @@ -30,35 +39,42 @@ export const SessionPageMain: FC<{ projectId: string; sessionId: string; setIsMobileSidebarOpen: (open: boolean) => void; -}> = ({ projectId, sessionId, setIsMobileSidebarOpen }) => { + isDiffModalOpen: boolean; + setIsDiffModalOpen: (open: boolean) => void; + scrollContainerRef: RefObject; + onScrollToTop?: () => void; + onScrollToBottom?: () => void; + onOpenDiffModal?: () => void; + abortTask?: UseMutationResult; + projectPath?: string; + currentBranch?: string; + sessionProcessStatus?: PublicSessionProcess["status"]; + revisionsData?: ReturnType["data"]; +}> = ({ + projectId, + sessionId, + setIsMobileSidebarOpen, + isDiffModalOpen, + setIsDiffModalOpen, + scrollContainerRef, + onScrollToTop, + onScrollToBottom, + onOpenDiffModal, + abortTask, + projectPath, + currentBranch, + sessionProcessStatus, + revisionsData: revisionsDataProp, +}) => { const { session, conversations, getToolResult } = useSession( projectId, sessionId, ); - const { data: projectData } = useProject(projectId); - // biome-ignore lint/style/noNonNullAssertion: useSuspenseInfiniteQuery guarantees at least one page - const project = projectData.pages[0]!.project; const { currentPermissionRequest, isDialogOpen, onPermissionResponse } = usePermissionRequests(); - const [isDiffModalOpen, setIsDiffModalOpen] = useState(false); - const { data: revisionsData } = useGitCurrentRevisions(projectId); + const { data: revisionsDataFallback } = useGitCurrentRevisionsHook(projectId); + const revisionsData = revisionsDataProp ?? revisionsDataFallback; - const abortTask = useMutation({ - mutationFn: async (sessionProcessId: string) => { - const response = await honoClient.api.cc["session-processes"][ - ":sessionProcessId" - ].abort.$post({ - param: { sessionProcessId }, - json: { projectId }, - }); - - if (!response.ok) { - throw new Error(response.statusText); - } - - return response.json(); - }, - }); const sessionProcess = useSessionProcess(); const relatedSessionProcess = useMemo( @@ -71,7 +87,6 @@ export const SessionPageMain: FC<{ const [previousConversationLength, setPreviousConversationLength] = useState(0); - const scrollContainerRef = useRef(null); // 自動スクロール処理 useEffect(() => { @@ -92,124 +107,162 @@ export const SessionPageMain: FC<{ conversations, relatedSessionProcess?.status, previousConversationLength, + scrollContainerRef.current, ]); return ( <>
-
-
-
- -

- {session.meta.firstUserMessage !== null - ? firstUserMessageToTitle(session.meta.firstUserMessage) - : sessionId} -

+
+
+ +

+ {session.meta.firstUserMessage !== null + ? firstUserMessageToTitle(session.meta.firstUserMessage) + : sessionId} +

+
+
+
+ {projectPath && ( + + + + + {projectPath.split("/").pop()} + + + + {projectPath} + + )} + {currentBranch && ( + + + + + {currentBranch} + + + + + + + )} + {sessionId && ( + + + + {sessionId} + + + + + + + )}
- -
- {project?.claudeProjectPath && ( - - {project.meta.projectPath ?? project.claudeProjectPath} - - )} - {revisionsData?.success && revisionsData.data.currentBranch && ( - - - {revisionsData.data.currentBranch.name} - - )} + {sessionProcessStatus === "running" && ( - {sessionId} + + -
- - {relatedSessionProcess?.status === "running" && ( -
- -
-

- -

-
-
+ )} + {sessionProcessStatus === "paused" && ( + + + + + )} + + + + + +
+
+

+ +

+
+ {projectPath && ( +
+ + + + + + + {projectPath.split("/").pop()} + + + {projectPath} + +
+ )} +
+ + + + + {sessionId} + +
+ {currentBranch && ( +
+ + + + + + {currentBranch} + +
+ )} +
- -
- )} - - {relatedSessionProcess?.status === "paused" && ( -
- -
-

- -

-
- -
- )} + +
@@ -218,7 +271,7 @@ export const SessionPageMain: FC<{ className="flex-1 overflow-y-auto min-h-0 min-w-0" data-testid="scrollable-content" > -
+

- +

)} - - {relatedSessionProcess !== undefined ? ( - - ) : ( - - )}
-
- {/* Fixed Diff Button */} - +
+ +
+ + {/* Fixed Chat Form */} +
+ {relatedSessionProcess !== undefined ? ( + + ) : ( + + )} +
+
{/* Diff Modal */} void; + tab: Tab; +}> = ({ + projectId, + sessionId, + isMobileSidebarOpen, + setIsMobileSidebarOpen, + tab, +}) => { + useSession(projectId, sessionId); + const { data: projectData } = useProject(projectId); + // biome-ignore lint/style/noNonNullAssertion: useSuspenseInfiniteQuery guarantees at least one page + const project = projectData.pages[0]!.project; + const { data: revisionsData } = useGitCurrentRevisions(projectId); + const [isDiffModalOpen, setIsDiffModalOpen] = useState(false); + const scrollContainerRef = useRef(null); + + const abortTask = useMutation({ + mutationFn: async (sessionProcessId: string) => { + const response = await honoClient.api.cc["session-processes"][ + ":sessionProcessId" + ].abort.$post({ + param: { sessionProcessId }, + json: { projectId }, + }); + + if (!response.ok) { + throw new Error(response.statusText); + } + + return response.json(); + }, + }); + + const sessionProcess = useSessionProcess(); + const relatedSessionProcess = useMemo( + () => sessionProcess.getSessionProcess(sessionId), + [sessionProcess, sessionId], + ); + + const handleScrollToTop = () => { + const scrollContainer = scrollContainerRef.current; + if (scrollContainer) { + scrollContainer.scrollTo({ + top: 0, + behavior: "smooth", + }); + } + }; + + const handleScrollToBottom = () => { + const scrollContainer = scrollContainerRef.current; + if (scrollContainer) { + scrollContainer.scrollTo({ + top: scrollContainer.scrollHeight, + behavior: "smooth", + }); + } + }; + + const projectPath = project.meta.projectPath ?? project.claudeProjectPath; + const currentBranch = revisionsData?.success + ? revisionsData.data.currentBranch?.name + : undefined; + + return ( + <> + + setIsDiffModalOpen(true)} + abortTask={abortTask} + projectPath={projectPath} + currentBranch={currentBranch} + sessionProcessStatus={relatedSessionProcess?.status} + revisionsData={revisionsData} + /> + + ); +}; diff --git a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/AssistantConversationContent.tsx b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/AssistantConversationContent.tsx index 7e61883..46cf159 100644 --- a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/AssistantConversationContent.tsx +++ b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/AssistantConversationContent.tsx @@ -58,7 +58,7 @@ export const AssistantConversationContent: FC<{
- +
@@ -115,10 +115,7 @@ export const AssistantConversationContent: FC<{ data-testid="sidechain-task-button" > - + } /> @@ -157,7 +154,7 @@ export const AssistantConversationContent: FC<{

- +

{content.id} @@ -165,10 +162,7 @@ export const AssistantConversationContent: FC<{

- +

- +

{typeof toolResult.content === "string" ? ( diff --git a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/ConversationList.tsx b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/ConversationList.tsx index d7eee55..b54471d 100644 --- a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/ConversationList.tsx +++ b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/ConversationList.tsx @@ -35,7 +35,7 @@ const getConversationKey = (conversation: Conversation) => { } if (conversation.type === "queue-operation") { - return `queue-operation_${conversation.operation}_${conversation.sessionId}`; + return `queue-operation_${conversation.operation}_${conversation.sessionId}_${conversation.timestamp}`; } conversation satisfies never; @@ -52,10 +52,7 @@ const SchemaErrorDisplay: FC<{ errorLine: string }> = ({ errorLine }) => {
- +
@@ -70,36 +67,24 @@ const SchemaErrorDisplay: FC<{ errorLine: string }> = ({ errorLine }) => { > - + - {" "} + {" "} - +
- +
                     {errorLine}
diff --git a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/UserConversationContent.tsx b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/UserConversationContent.tsx
index 1f3e63e..71f8447 100644
--- a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/UserConversationContent.tsx
+++ b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationList/UserConversationContent.tsx
@@ -46,7 +46,7 @@ export const UserConversationContent: FC<{
                 
- + - + - +
- + @@ -118,10 +112,7 @@ export const UserConversationContent: FC<{
- + - + - + - +
- + diff --git a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx index 9b7de1f..c2c9080 100644 --- a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx +++ b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx @@ -64,8 +64,7 @@ export const SidechainConversationModal: FC<
- :{" "} - {title} + : {title} - :{" "} + :{" "} {rootUuid.slice(0, 8)} @@ -103,7 +102,6 @@ export const SidechainConversationModal: FC< diff --git a/src/app/projects/[projectId]/sessions/[sessionId]/components/diffModal/DiffModal.tsx b/src/app/projects/[projectId]/sessions/[sessionId]/components/diffModal/DiffModal.tsx index 4ae65cd..9b4b759 100644 --- a/src/app/projects/[projectId]/sessions/[sessionId]/components/diffModal/DiffModal.tsx +++ b/src/app/projects/[projectId]/sessions/[sessionId]/components/diffModal/DiffModal.tsx @@ -50,11 +50,10 @@ const DiffSummaryComponent: FC = ({ summary, className }) => { - {summary.filesChanged}{" "} - + {summary.filesChanged} - {summary.filesChanged} + {summary.filesChanged}
@@ -417,7 +416,7 @@ export const DiffModal: FC = ({ {isDiffLoading ? ( <> - + ) : ( @@ -467,7 +466,7 @@ export const DiffModal: FC = ({ className="w-full flex items-center justify-between p-2 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors rounded-t-lg" > - + {isCommitSectionExpanded ? ( @@ -488,7 +487,7 @@ export const DiffModal: FC = ({ onClick={handleSelectAll} disabled={commitMutation.isPending} > - + {selectedCount} / {diffData.data.files.length} files @@ -539,10 +535,7 @@ export const DiffModal: FC = ({ htmlFor={commitMessageId} className="text-sm font-medium text-gray-700 dark:text-gray-300" > - +