mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-03-23 12:03:07 +00:00
Fix: memory and context views mobile friendly (#818)
* Changes from fix/memory-and-context-mobile-friendly * fix: Improve file extension detection and add path traversal protection * refactor: Extract file extension utilities and add path traversal guards Code review improvements: - Extract isMarkdownFilename and isImageFilename to shared image-utils.ts - Remove duplicated code from context-view.tsx and memory-view.tsx - Add path traversal guard for context fixture utilities (matching memory) - Add 7 new tests for context fixture path traversal protection - Total 61 tests pass Addresses code review feedback from PR #813 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * test: Add e2e tests for profiles crud and board background persistence * Update apps/ui/playwright.config.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: Add robust test navigation handling and file filtering * fix: Format NODE_OPTIONS configuration on single line * test: Update profiles and board background persistence tests * test: Replace iPhone 13 Pro with Pixel 5 for mobile test consistency * Update apps/ui/src/components/views/context-view.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * chore: Remove test project directory * feat: Filter context files by type and improve mobile menu visibility --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit is contained in:
@@ -17,6 +17,12 @@ export const ACCEPTED_TEXT_TYPES = ['text/plain', 'text/markdown', 'text/x-markd
|
||||
// File extensions for text files (used for validation when MIME type is unreliable)
|
||||
export const ACCEPTED_TEXT_EXTENSIONS = ['.txt', '.md'];
|
||||
|
||||
// File extensions for markdown files
|
||||
export const MARKDOWN_EXTENSIONS = ['.md', '.markdown'];
|
||||
|
||||
// File extensions for image files (used for display filtering)
|
||||
export const IMAGE_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg', '.bmp'];
|
||||
|
||||
// Default max file size (10MB)
|
||||
export const DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024;
|
||||
|
||||
@@ -234,3 +240,29 @@ export function getTextFileMimeType(filename: string): string {
|
||||
}
|
||||
return 'text/plain';
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a filename has a markdown extension
|
||||
*
|
||||
* @param filename - The filename to check
|
||||
* @returns True if the filename has a .md or .markdown extension
|
||||
*/
|
||||
export function isMarkdownFilename(filename: string): boolean {
|
||||
const dotIndex = filename.lastIndexOf('.');
|
||||
if (dotIndex < 0) return false;
|
||||
const ext = filename.toLowerCase().substring(dotIndex);
|
||||
return MARKDOWN_EXTENSIONS.includes(ext);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a filename has an image extension
|
||||
*
|
||||
* @param filename - The filename to check
|
||||
* @returns True if the filename has an image extension
|
||||
*/
|
||||
export function isImageFilename(filename: string): boolean {
|
||||
const dotIndex = filename.lastIndexOf('.');
|
||||
if (dotIndex < 0) return false;
|
||||
const ext = filename.toLowerCase().substring(dotIndex);
|
||||
return IMAGE_EXTENSIONS.includes(ext);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user