File tree Expand file tree Collapse file tree
app/(interfaces)/chat/components/input Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -198,9 +198,9 @@ export const ChatInput: React.FC<{
198198 e . stopPropagation ( )
199199 handleRemoveFile ( file . id )
200200 } }
201- className = 'absolute top-[2px] right-[2px] size-11 items-start justify-end p-0 focus-visible:opacity-100 md:size-[16px] md:opacity-0 md:group-hover:opacity-100'
201+ className = 'absolute top-[2px] right-[2px] size-11 items-start justify-end p-0 focus-visible:opacity-100 md:pointer-fine: size-[16px] md:pointer-fine: opacity-0 md:pointer-fine :group-hover:opacity-100'
202202 >
203- < span className = 'flex size-7 items-center justify-center rounded-full bg-black/60 text-white md:size-4' >
203+ < span className = 'flex size-7 items-center justify-center rounded-full bg-black/60 text-white md:pointer-fine: size-4' >
204204 < X className = 'size-[10px]' />
205205 </ span >
206206 </ Button >
Original file line number Diff line number Diff line change @@ -56,7 +56,6 @@ export function SettingsMobileNavigation<Section extends SettingsSection>({
5656 </ Chip >
5757 ) }
5858 < ChipSelect
59- aria-label = 'Settings section'
6059 value = { selectedSection }
6160 options = { items . map ( ( item ) => ( { value : item . id , label : item . label , icon : item . icon } ) ) }
6261 onChange = { ( value ) => {
Original file line number Diff line number Diff line change 1+ /** Cache keys shared by server hydration and client integration-availability reads. */
12export const integrationAvailabilityKeys = {
23 all : [ 'allowedIntegrations' ] as const ,
34 environments : ( ) => [ ...integrationAvailabilityKeys . all , 'env' ] as const ,
45}
56
7+ /** Delay before cached availability is eligible for revalidation. */
68export const INTEGRATION_AVAILABILITY_STALE_TIME = 5 * 60 * 1000
Original file line number Diff line number Diff line change @@ -234,26 +234,16 @@ function handleRootPathRedirects(
234234) : NextResponse | null {
235235 const url = request . nextUrl
236236
237- if ( url . pathname !== '/' ) {
237+ if ( url . pathname !== '/' || url . searchParams . has ( 'home' ) ) {
238238 return null
239239 }
240240
241- if ( ! isHosted && ! isDev ) {
242- // Self-hosted production: Always redirect based on session.
243- if ( hasActiveSession ) {
244- return NextResponse . redirect ( new URL ( APP_ENTRY_PATH , request . url ) )
245- }
246- return NextResponse . redirect ( new URL ( '/login' , request . url ) )
241+ if ( hasActiveSession ) {
242+ return NextResponse . redirect ( new URL ( APP_ENTRY_PATH , request . url ) )
247243 }
248244
249- // For root path, redirect authenticated users into the app
250- // Unless they have a 'home' query parameter (e.g., ?home)
251- // This allows intentional navigation to the homepage from anywhere in the app
252- if ( hasActiveSession ) {
253- const isBrowsingHome = url . searchParams . has ( 'home' )
254- if ( ! isBrowsingHome ) {
255- return NextResponse . redirect ( new URL ( APP_ENTRY_PATH , request . url ) )
256- }
245+ if ( ! isHosted && ! isDev ) {
246+ return NextResponse . redirect ( new URL ( '/login' , request . url ) )
257247 }
258248
259249 return null
Original file line number Diff line number Diff line change @@ -918,7 +918,7 @@ async function exerciseViewport(
918918 exact : true ,
919919 } )
920920 await expectContained ( page , navigation )
921- await navigation . getByRole ( 'button' , { name : 'Settings section ' , exact : true } ) . tap ( )
921+ await navigation . getByRole ( 'button' , { name : 'General ' , exact : true } ) . tap ( )
922922 await expectContained ( page , page . getByRole ( 'menu' ) )
923923 await page . getByRole ( 'menuitem' , { name : 'General' , exact : true } ) . tap ( )
924924 await expect ( page . getByRole ( 'menu' ) ) . toHaveCount ( 0 )
You can’t perform that action at this time.
0 commit comments