Merged
Conversation
# Conflicts: # src/App.tsx
…nglish translation
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…igration Agent-Logs-Url: https://github.com/NaviAndrei/PromptLibrary/sessions/bd54c7c0-8efd-40cd-91e7-952291a5c184 Co-authored-by: NaviAndrei <85543388+NaviAndrei@users.noreply.github.com>
…geUsage Agent-Logs-Url: https://github.com/NaviAndrei/PromptLibrary/sessions/d9681aa7-ace5-4a76-be9f-95084318ca04 Co-authored-by: NaviAndrei <85543388+NaviAndrei@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Release v1.2.5 focuses on scaling the app for larger datasets and improving UX/performance by moving primary persistence to IndexedDB, adding full-text search + advanced filtering, and introducing several sidebar utilities (templates, storage meter, cleanup suggestions).
Changes:
- Replace localStorage persistence for core data (prompts/workspaces/history) with IndexedDB + add one-time migration hook.
- Add in-memory full-text search (FlexSearch) and a consolidated filtering hook (search/tag/workspace/model/date-range).
- Improve UX/perf via prompt-list refactor (virtualization, exports, drag/drop workspace moves) and new sidebar tools (templates, storage usage, cleanup assistant), plus CI enhancements.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| vite.config.ts | Removes PWA plugin usage; adds build chunking/sourcemaps and notes about PWA compatibility. |
| tsconfig.app.json | Tightens TS config (explicit noImplicitAny). |
| src/utils/db.ts | Adds low-level IndexedDB wrapper with stores for prompts/workspaces/history. |
| src/hooks/useIndexedDB.ts | New IndexedDB hook with localStorage migration + batch persistence. |
| src/services/SearchService.ts | New singleton FlexSearch-backed service for prompt searching. |
| src/hooks/usePromptFilters.ts | Centralizes filtering logic and maintains search index incrementally. |
| src/hooks/useLocalStorage.ts | Adds toast feedback + emits storage-sync events on writes. |
| src/components/PromptList.tsx | Major refactor: virtualized list mode, batch export, JSON export, DnD draggable prompts, component extraction. |
| src/components/WorkspaceManager.tsx | Adds drop targets for moving prompts between workspaces. |
| src/components/VariableInjector.tsx | Adds typed variables + presets saved to localStorage + improved a11y hints. |
| src/components/TemplateManager.tsx | Adds prompt template selection/CRUD stored in localStorage. |
| src/components/StorageUsage.tsx | Adds UI for quota/usage estimate + online/offline badge. |
| src/components/CleanupAssistant.tsx | Adds heuristics to suggest deleting large/duplicate/stale prompts. |
| src/components/ErrorBoundary.tsx | Adds global error boundary and wraps App in main.tsx. |
| src/main.tsx | Wraps App with ErrorBoundary. |
| src/index.css | Adds styles for new UI pieces (presets, DnD feedback, sidebar layout tweaks) + comment spelling fixes. |
| src/types/flexsearch.d.ts | Adds local type declarations for FlexSearch. |
| src/types.ts | Adds PromptTemplate + DateRange types. |
| src/App.tsx | Switches to IndexedDB hooks, adds template integration, drag/drop move handler, and advanced filter bar. |
| README.md | Updates feature list/stack to reflect v1.2.5. |
| CHANGELOG.md | Adds v1.2.5 release notes. |
| package.json / package-lock.json | Bumps version, adds flexsearch/react-window deps, adds overrides. |
| .github/workflows/ci.yml | Adds CodeQL + separate typecheck/lint/build audit jobs. |
Comments suppressed due to low confidence (1)
src/components/VariableInjector.tsx:216
aria-describedby/idvalues are built fromv.name, and variable names are allowed to contain spaces ([\w\s-]+). IDs with spaces are invalid HTML and can break accessibility mappings. Generate a sanitized id (e.g., slugify/replace non-alphanumerics) or use the array index to create a stable, valid id.
<select
className="variable-input variable-input-select"
value={values[v.name] || ''}
onChange={e => handleChange(v.name, e.target.value)}
aria-label={`Select value for variable ${v.name}`}
aria-describedby={`variable-help-${v.name}`}
>
<option value="">Choose an option...</option>
{v.options.map(opt => (
<option key={opt} value={opt}>{opt}</option>
))}
</select>
) : (
<input
type={v.type}
className={`variable-input ${v.type === 'number' ? 'variable-input-number' : ''}`}
placeholder={`Value for ${v.name}`}
value={values[v.name] || ''}
onChange={e => handleChange(v.name, e.target.value)}
aria-label={`Enter value for variable ${v.name}`}
aria-describedby={`variable-help-${v.name}`}
/>
)}
<span id={`variable-help-${v.name}`} className="hide-visually">
Input value for the dynamic variable {v.name} which will be injected into the prompt.
</span>
</div>
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.