Akhil/optimise backend v2 - #221
Merged
Merged
Conversation
…T7 split Only addHistoryItem and substituteVariables are used; remove clearHistory, deleteHistoryItem, setActiveEnvId, addEnvironment, updateEnvironment, deleteEnvironment. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace infinite-scroll + slice pattern with react-window v2 List component so only visible rows are rendered regardless of history size. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cap Monaco input at 2 MB; show amber banner with download-full-body button for oversized responses. Extract truncateBody helper + test. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds CollectionsSidebarSkeleton and ResponsePanelSkeleton to improve perceived performance during data loading. Skeleton state is shown when isLoading is true and content array is empty, preventing layout shift while maintaining A11y with role="status" and aria-busy="true". Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replaces static imports with next/dynamic (ssr:false) for both CodeGenerator and EnvironmentManager, and conditionally mounts each component only when its dialog open state is true so the chunks are fetched on first open rather than on initial page load. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…it-out triggers - Restore IconCode from @tabler/icons-react for CodeGenerator button - Restore IconSettings from @tabler/icons-react for EnvironmentManager button - Add h-8 w-8 className to CodeGenerator button for consistent sizing Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace static CodeEditor imports in request-tabs and response-panel with next/dynamic (ssr: false) so Monaco is excluded from the initial route bundle. Wrap each dynamic result in React.memo and stabilise the onChange handler in request-tabs with useCallback to prevent unnecessary Monaco remounts on parent re-renders. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove AnimatePresence + motion.div from tab-bar; replace the two layoutId indicators (background highlight + underline) with a single pair of absolute <span> elements whose left/width are measured via useLayoutEffect and animated with Tailwind transition-all duration-200. Drag-to-reorder continues to use native HTML5 drag. Tab insert/remove is now immediate (no enter/exit animation — acceptable per brief). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ic updates
Adds POST /api-client/collections/{id}/items:apply-delta that walks the
items tree in-memory for add/update/delete/move ops and persists atomically
with a single update_one; invalidates via bump_version(ns="api_client").
Frontend useCollections switches saveRequest/deleteItem/addFolder/renameFolder
to the delta endpoint with optimistic updates + server-reconcile rollback.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…rites Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ition Collapse secondary toolbar buttons (Code, Save, Import cURL, Env Manager, Help) into a MoreVertical DropdownMenu on mobile. Desktop layout unchanged. Env Select stays inline on mobile for quick switching. Separate scroll containers for request/response panels with useLayoutEffect + ref-based scroll memory so position is restored on panel toggle. All 27 locale files updated with ApiClient.toolbar.* keys (English fallbacks for non-English). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… refactor Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…bort on unmount Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ebounce clobber, remove dup save dialog, plug _apply_move data-loss path, wire history skeleton, tighten delta tests - C1: closeTab/duplicateTab now compute all state outside updaters using tabsRef/activeTabIdRef; no setState calls inside setTabs updater - C2: lastPushedRef guards localUrl reset so only external url changes (tab switch, cURL import) sync down — not our own debounce writes - C3: remove SaveRequestDialog + collections/onSave/saveDefaultName props from RequestPanel; toolbar instance in api-client.tsx covers both layouts - I4: _apply_move validates new_parent_id exists before extracting item; raises HTTP 400 instead of silently dropping the item - I5: _mock_find_one_and_update stores last_update_query; add/delete tests assert $set payload; new test_apply_delta_move_unknown_parent_returns_400 - I6: handleBodyContentChange dep changed from [normalizedBody] to [updateBody] - I7: isHistoryLoading added to useHistory/HistoryState; HistoryListSkeleton rendered in collections-sidebar while loading && history.length === 0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.