AI Slop 2.0#32
Conversation
Updated README with new images and improved descriptions.
There was a problem hiding this comment.
Pull request overview
This PR migrates the app from the legacy Rollup + single-page Svelte entrypoint to a SvelteKit-based renderer (with route-based pages and SvelteKit server endpoints acting as a backend-for-frontend), while also modernizing state/storage, adding monitoring/playground surfaces, and introducing a Vitest test suite.
Changes:
- Replace legacy
src/main.js/src/App.svelte+ Storeon router workspace with SvelteKit routes/layouts and new UI components undersrc/lib/**. - Add SvelteKit server endpoints under
src/routes/api/elastic/**backed by a shared Elasticsearch client helper (src/lib/server/elastic.js). - Introduce Vitest + Testing Library tests across stores and UI components, plus new Vite/SvelteKit configuration.
Reviewed changes
Copilot reviewed 208 out of 258 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| vite.config.js | Adds Vite config for SvelteKit + Testing Library + Vitest environment globs. |
| updater.js | Adds/relocates Electron auto-updater helper to repo root. |
| svelte.config.js | Adds SvelteKit config (adapter-node) and path aliases. |
| static/global.css | Adjusts .scrollable overflow behavior for the new table layout approach. |
| src/workspace/WorkSpace.svelte | Removes legacy workspace router-based container. |
| src/workspace/index/Index.svelte | Removes legacy index page/tab container (replaced by SvelteKit routes/layout). |
| src/workspace/import-export/components/TypeSelector.svelte | Removes legacy Import/Export UI (feature appears removed/reworked). |
| src/workspace/import-export/components/RemoteIndexSelector.svelte | Removes legacy Import/Export remote index selector. |
| src/workspace/import-export/components/Options.svelte | Removes legacy Import/Export options editor. |
| src/workspace/import-export/components/OptionItem.svelte | Removes legacy Import/Export option row. |
| src/workspace/import-export/components/LogOutput.svelte | Removes legacy Import/Export log output UI. |
| src/workspace/import-export/components/LogFilterCheckbox.svelte | Removes legacy Import/Export log filter control. |
| src/workspace/import-export/components/LogControls.svelte | Removes legacy Import/Export log controls UI. |
| src/workspace/import-export/components/Log.svelte | Removes legacy Import/Export log wrapper. |
| src/workspace/import-export/components/FileSelector.svelte | Removes legacy IPC-backed file picker component. |
| src/workspace/import-export/components/DirSelector.svelte | Removes legacy IPC-backed directory picker component. |
| src/workspace/dashboard/Dashboard.svelte | Removes legacy dashboard tabbed container (replaced by SvelteKit dashboard routes/layout). |
| src/utils/helpers.js | Removes legacy helpers location (replaced by src/lib/utils/helpers.js). |
| src/store/routes.js | Removes Storeon router module (routing moved to SvelteKit). |
| src/store/history.js | Removes legacy local-storage backed history module (replaced by src/lib/store/history.js). |
| src/store/app.js | Removes legacy app module (replaced by src/lib/store/app.js). |
| src/smoke.test.js | Adds a basic Vitest smoke test. |
| src/routes/search/+page.svelte | Adds SvelteKit Search page wiring to src/lib/workspace/search. |
| src/routes/playground/+page.svelte | Adds SvelteKit Playground page wiring. |
| src/routes/monitoring/overview/+page.svelte | Adds SvelteKit Monitoring overview page wiring. |
| src/routes/monitoring/nodes/+page.svelte | Adds SvelteKit Monitoring nodes page wiring. |
| src/routes/monitoring/+page.js | Adds default Monitoring redirect route. |
| src/routes/monitoring/+layout.svelte | Adds Monitoring layout wrapper integrating MonitoringLayout. |
| src/routes/index/+page.svelte | Adds empty /index page placeholder for layout-driven index UI. |
| src/routes/index/+layout.svelte | Adds Index section layout with IndexSelector and tab navigation via nested routes. |
| src/routes/index/[index]/settings/+page.svelte | Adds Index Settings tab route. |
| src/routes/index/[index]/overview/+page.svelte | Adds Index Overview tab route. |
| src/routes/index/[index]/mapping/+page.svelte | Adds Index Mapping tab route. |
| src/routes/index/[index]/aliases/+page.svelte | Adds Index Aliases tab route. |
| src/routes/index/[index]/+page.js | Adds redirect from /index/:index to /index/:index/overview. |
| src/routes/dashboard/shards/+page.svelte | Adds Dashboard Shards route wiring. |
| src/routes/dashboard/indices/+page.svelte | Adds Dashboard Indices route wiring. |
| src/routes/dashboard/allocation/+page.svelte | Adds Dashboard Allocation route wiring. |
| src/routes/dashboard/+page.js | Adds default Dashboard redirect route. |
| src/routes/dashboard/+layout.svelte | Adds Dashboard layout including DashboardTabs. |
| src/routes/api/elastic/test/+server.js | Adds API endpoint to test Elasticsearch connectivity through server helper. |
| src/routes/api/elastic/shards/+server.js | Adds API endpoint for _cat/shards. |
| src/routes/api/elastic/search/uri/+server.js | Adds API endpoint for URI querystring search. |
| src/routes/api/elastic/search/body/+server.js | Adds API endpoint for body search. |
| src/routes/api/elastic/request/+server.js | Adds generic API endpoint for arbitrary transport requests. |
| src/routes/api/elastic/nodes/stats/+server.js | Adds API endpoint for node stats. |
| src/routes/api/elastic/indices/+server.js | Adds API endpoint for _cat/indices. |
| src/routes/api/elastic/index/wipe/+server.js | Adds API endpoint for delete-by-query wipe. |
| src/routes/api/elastic/index/settings/+server.js | Adds API endpoint for updating index settings. |
| src/routes/api/elastic/index/open/+server.js | Adds API endpoint to open index. |
| src/routes/api/elastic/index/mapping/+server.js | Adds API endpoint for mapping updates (supports properties-only vs per-type paths). |
| src/routes/api/elastic/index/get/+server.js | Adds API endpoint to fetch index info. |
| src/routes/api/elastic/index/delete/+server.js | Adds API endpoint to delete index. |
| src/routes/api/elastic/index/create/+server.js | Adds API endpoint to create index. |
| src/routes/api/elastic/index/close/+server.js | Adds API endpoint to close index. |
| src/routes/api/elastic/index/clone/+server.js | Adds API endpoint to clone index. |
| src/routes/api/elastic/document/update/+server.js | Adds API endpoint to update document fields. |
| src/routes/api/elastic/document/index/+server.js | Adds API endpoint to index/put a document. |
| src/routes/api/elastic/document/delete/+server.js | Adds API endpoint to delete a document. |
| src/routes/api/elastic/cluster/stats/+server.js | Adds API endpoint for cluster stats. |
| src/routes/api/elastic/cluster/health/+server.js | Adds API endpoint for cluster health. |
| src/routes/api/elastic/allocation/+server.js | Adds API endpoint for _cat/allocation. |
| src/routes/api/elastic/alias/delete/+server.js | Adds API endpoint to delete an alias. |
| src/routes/api/elastic/alias/create/+server.js | Adds API endpoint to create/update an alias. |
| src/routes/+page.js | Adds root redirect to the dashboard route. |
| src/routes/+layout.svelte | Adds global app layout (Storeon provider, hydration, GA config, header/footer, modal, notifications). |
| src/routes/+layout.js | Disables prerendering for the app layout. |
| src/main.js | Removes legacy Svelte SPA entrypoint. |
| src/lib/workspace/search/SearchControls.svelte.test.js | Adds tests for SearchControls stats and view toggles. |
| src/lib/workspace/search/Search.svelte.test.js | Adds render-smoke test for Search tab. |
| src/lib/workspace/search/Search.svelte | Switches JSONEditor to lazy-loaded dynamic import for bundle/runtime compatibility. |
| src/lib/workspace/search/profiling/Shard.svelte.test.js | Adds tests for profiling Shard component. |
| src/lib/workspace/search/profiling/Shard.svelte | Adds keyed each-block for shard searches list. |
| src/lib/workspace/search/profiling/Search.svelte.test.js | Adds render-smoke test for profiling Search component. |
| src/lib/workspace/search/profiling/Search.svelte | Adds keyed each-blocks for query/collector lists. |
| src/lib/workspace/search/profiling/Query.svelte.test.js | Adds render-smoke test for profiling Query component. |
| src/lib/workspace/search/profiling/Query.svelte | Adds keyed each-blocks for breakdown/children recursion lists. |
| src/lib/workspace/search/profiling/index.js | Introduces helper utilities for profiling (timing conversions, coloring, ES-version aware accessors). |
| src/lib/workspace/search/profiling/Collector.svelte.test.js | Adds render-smoke test for profiling Collector component. |
| src/lib/workspace/search/profiling/Collector.svelte | Adds keyed each-block for collector recursion list. |
| src/lib/workspace/search/profiling/Aggregations.svelte.test.js | Adds render-smoke test for profiling Aggregations component. |
| src/lib/workspace/search/profiling/Aggregations.svelte | Adds keyed each-block for aggregation list. |
| src/lib/workspace/search/ProfileTable.svelte | Adds keyed each-block for affected shards accordion. |
| src/lib/workspace/search/EditControls.svelte.test.js | Adds render-smoke test for new EditControls component. |
| src/lib/workspace/search/EditControls.svelte | Adds extracted edit-document controls with update/reindex/cancel actions. |
| src/lib/workspace/playground/KeyValueList.svelte.test.js | Adds tests for Playground key/value editor. |
| src/lib/workspace/playground/KeyValueList.svelte | Adds key/value list editor for Playground headers/params. |
| src/lib/workspace/monitoring/overview/Overview.svelte.test.js | Adds tests for Monitoring overview UI. |
| src/lib/workspace/monitoring/nodes/Nodes.svelte.test.js | Adds tests for Monitoring nodes charts (with ResizeObserver/uPlot mocks). |
| src/lib/workspace/monitoring/MonitoringTabs.svelte.test.js | Adds tests for Monitoring tab navigation. |
| src/lib/workspace/monitoring/MonitoringTabs.svelte | Adds monitoring tab bar component driven by $page.url.pathname. |
| src/lib/workspace/monitoring/MonitoringLayout.svelte.test.js | Adds tests for monitoring layout controls (auto-refresh toggle). |
| src/lib/workspace/index/tabs/Templates.svelte.test.js | Adds tests for Templates placeholder tab. |
| src/lib/workspace/index/tabs/Templates.svelte | Adds Templates placeholder content. |
| src/lib/workspace/index/tabs/Status.svelte.test.js | Adds tests for Status placeholder tab. |
| src/lib/workspace/index/tabs/Status.svelte | Adds Status placeholder content. |
| src/lib/workspace/index/tabs/Settings.svelte.test.js | Adds tests for Settings tab buttons/editor presence. |
| src/lib/workspace/index/tabs/Settings.svelte | Refactors Settings tab to use shared JsonEditor component and fixes error message text. |
| src/lib/workspace/index/tabs/Monitoring.svelte.test.js | Adds tests for Index Monitoring placeholder tab. |
| src/lib/workspace/index/tabs/Monitoring.svelte | Adds Index Monitoring placeholder content. |
| src/lib/workspace/index/tabs/Mapping.svelte.test.js | Adds tests for Mapping tab buttons/editor presence. |
| src/lib/workspace/index/tabs/Mapping.svelte | Refactors Mapping tab to use shared JsonEditor component. |
| src/lib/workspace/index/tabs/Index.svelte.test.js | Adds tests for Index overview action buttons. |
| src/lib/workspace/index/tabs/Index.svelte | Refactors Index tab to use JsonEditor component and SvelteKit navigation helpers. |
| src/lib/workspace/index/tabs/AliasTableCell.svelte.test.js | Adds tests for alias table cell rendering/actions. |
| src/lib/workspace/index/tabs/AliasTableCell.svelte | Adds alias table cell renderer with View/Update/Delete actions. |
| src/lib/workspace/index/tabs/Aliases.svelte.test.js | Adds tests for Aliases tab table rendering. |
| src/lib/workspace/index/tabs/Aliases.svelte | Ensures index info is fetched on mount and refactors derived rows generation. |
| src/lib/workspace/dashboard/shards/Shards.svelte.test.js | Adds tests for Shards dashboard controls and refresh action. |
| src/lib/workspace/dashboard/shards/Shards.svelte | Migrates shards table rendering to VirtualTable and refines sorting/search handling. |
| src/lib/workspace/dashboard/indices/Indices.svelte.test.js | Adds tests for Indices dashboard controls. |
| src/lib/workspace/dashboard/indices/Indices.svelte | Migrates indices table rendering to VirtualTable and refines sorting/search handling. |
| src/lib/workspace/dashboard/indices/Cell.svelte.test.js | Adds tests for indices cell rendering (health label, index link). |
| src/lib/workspace/dashboard/indices/Cell.svelte | Updates index link generation to use SvelteKit resolve() and improves markup. |
| src/lib/workspace/dashboard/DashboardTabs.svelte.test.js | Adds tests for dashboard tab navigation links. |
| src/lib/workspace/dashboard/DashboardTabs.svelte | Adds dashboard tab bar component driven by $page.url.pathname. |
| src/lib/workspace/dashboard/allocation/Allocation.svelte.test.js | Adds tests for Allocation dashboard controls. |
| src/lib/workspace/dashboard/allocation/Allocation.svelte | Migrates allocation table rendering to VirtualTable and refines sorting/search handling. |
| src/lib/utils/storage.test.js | Adds unit tests for electron-backed storage wrapper. |
| src/lib/utils/storage.js | Adds storage abstraction over window.electron.ipcRenderer.store. |
| src/lib/utils/onlineCheck.js | Adds online/offline listener helper used by layout hydration. |
| src/lib/utils/helpers.js | Reintroduces helper utilities under src/lib/utils/ for SvelteKit imports. |
| src/lib/store/server.js | Adds server store module for Elasticsearch version info. |
| src/lib/store/search.js | Switches search persistence to electron-store via setStorage and adds hydrate handler. |
| src/lib/store/notifications.test.js | Adds tests for notifications store behavior/deduplication. |
| src/lib/store/notifications.js | Adds notifications store module (add/delete/shift + connected/disconnected hooks). |
| src/lib/store/internet.test.js | Adds tests for internet online/offline store module. |
| src/lib/store/internet.js | Adds internet store module for online/offline state. |
| src/lib/store/index.js | Updates store composition (removes router/importExport; adds monitoring/playground modules). |
| src/lib/store/history.test.js | Adds tests for connection history normalization/deduplication and size cap. |
| src/lib/store/history.js | Adds new history store module backed by setStorage, with normalization and dedupe. |
| src/lib/store/elasticsearch/shards.js | Adds default sorting initialization when shards are fetched. |
| src/lib/store/elasticsearch/indices.test.js | Adds tests for indices store init/update/disconnected behavior. |
| src/lib/store/elasticsearch/indices.js | Adds default sorting initialization when indices are fetched. |
| src/lib/store/elasticsearch/index.js | Adds index store module for selected index + fetching info. |
| src/lib/store/elasticsearch/allocation.js | Adds default sorting initialization when allocation is fetched. |
| src/lib/store/connection.test.js | Adds tests for connection store hydration/update/clear. |
| src/lib/store/connection.js | Refactors connection store to hydrate externally and persist via setStorage; tracks ES version. |
| src/lib/store/app.test.js | Adds tests for app theme state and hydrate/toggle behavior. |
| src/lib/store/app.js | Adds app store module using setStorage and hydrate handler. |
| src/lib/server/elastic.js | Adds shared server-side Elasticsearch client factory and request handler wrapper. |
| src/lib/header/OnlineIndicator.svelte.test.js | Adds tests for online/offline indicator rendering. |
| src/lib/header/OnlineIndicator.svelte | Adds online/offline indicator bound to Storeon internet state. |
| src/lib/header/Header.svelte.test.js | Adds tests for header navigation links and connection/version display. |
| src/lib/header/Header.svelte | Adds new header with SvelteKit route links, connection modal loader, and IPC hooks. |
| src/lib/footer/Footer.svelte.test.js | Adds tests for footer content and theme toggle control. |
| src/lib/footer/Footer.svelte | Fixes package.json import path and minor markup formatting. |
| src/lib/components/tables/Table.svelte.test.js | Adds tests for table empty state and row rendering. |
| src/lib/components/tables/Table.svelte | Refactors table props and derived CellRenderer/sorting handling. |
| src/lib/components/tables/RowCell.svelte.test.js | Adds tests for default row cell rendering. |
| src/lib/components/tables/RowCell.svelte | Simplifies RowCell props to only what it uses. |
| src/lib/components/tables/Column.svelte.test.js | Adds tests for Column header uppercase rendering. |
| src/lib/components/tables/Column.svelte | Adds Column header component. |
| src/lib/components/pagination/Pagination.svelte.test.js | Adds tests for pagination rendering and navigation callbacks. |
| src/lib/components/pagination/Pagination.svelte | Refactors pagination UI to use buttons and improves derived logic. |
| src/lib/components/notifications/Success.svelte.test.js | Adds tests for success notification rendering. |
| src/lib/components/notifications/Success.svelte | Adds success notification component. |
| src/lib/components/notifications/Notifications.svelte.test.js | Adds tests for notifications list rendering. |
| src/lib/components/notifications/Notifications.svelte | Adds notifications list container bound to store state. |
| src/lib/components/notifications/Notification.svelte.test.js | Adds tests for error/success notification rendering. |
| src/lib/components/notifications/Notification.svelte | Adds auto-dismiss notification wrapper with transitions and delete action. |
| src/lib/components/notifications/Error.svelte.test.js | Adds tests for error notification rendering. |
| src/lib/components/notifications/Error.svelte | Adds error notification component. |
| src/lib/components/modal/ViewAliasFilterDialog/ViewAliasFilterDialog.svelte.test.js | Adds tests for alias filter viewer dialog rendering. |
| src/lib/components/modal/ViewAliasFilterDialog/ViewAliasFilterDialog.svelte | Adds dialog to view alias filter JSON. |
| src/lib/components/modal/Modal.svelte.test.js | Adds smoke test for modal mounting/context. |
| src/lib/components/modal/Modal.svelte | Refactors modal provider (state defaults, sizing, context setup, render semantics). |
| src/lib/components/modal/EditAliasDialog/EditAliasDialog.svelte.test.js | Adds tests for edit-alias dialog form rendering. |
| src/lib/components/modal/EditAliasDialog/EditAliasDialog.svelte | Lazily loads JSONEditor for alias editing. |
| src/lib/components/modal/CreateIndexDialog/CreateIndexDialog.svelte.test.js | Adds tests for create-index dialog rendering. |
| src/lib/components/modal/CreateIndexDialog/CreateIndexDialog.svelte | Lazily loads JSONEditor for index settings editor and normalizes form markup. |
| src/lib/components/modal/CreateAliasDialog/CreateAliasDialog.svelte.test.js | Adds tests for create-alias dialog rendering. |
| src/lib/components/modal/CreateAliasDialog/CreateAliasDialog.svelte | Lazily loads JSONEditor for alias filter editor and normalizes form markup. |
| src/lib/components/modal/ConnectionDialog/ManageConnectionsDialog.svelte.test.js | Adds tests for manage connections dialog behavior. |
| src/lib/components/modal/ConnectionDialog/Headers.svelte.test.js | Adds tests for headers list rendering. |
| src/lib/components/modal/ConnectionDialog/Headers.svelte | Adds stable keyed each-block for header items. |
| src/lib/components/modal/ConnectionDialog/HeaderItem.svelte.test.js | Adds tests for header item input rendering. |
| src/lib/components/modal/ConnectionDialog/HeaderItem.svelte | Adds header row item component (name/value + delete). |
| src/lib/components/modal/ConnectionDialog/ConnectDialog.svelte.test.js | Adds tests for connect dialog behavior and IPC new-window action. |
| src/lib/components/modal/CloneIndexDialog/CloneIndexDialog.svelte.test.js | Adds tests for clone index dialog rendering. |
| src/lib/components/modal/CloneIndexDialog/CloneIndexDialog.svelte | Adds clone index dialog (form + API call + refresh actions). |
| src/lib/components/JsonEditor.svelte.test.js | Adds smoke test for JsonEditor wrapper. |
| src/lib/components/JsonEditor.svelte | Adds reusable JSONEditor wrapper with dynamic import and bindable editor handle. |
| src/lib/components/inputs/IndexSelector.svelte.test.js | Adds basic render test for IndexSelector. |
| src/lib/components/inputs/IndexSelector.svelte | Adds IndexSelector built on AdvancedDropdown and indices store data. |
| src/lib/components/inputs/ConnectionSelector.svelte.test.js | Adds basic render test for ConnectionSelector. |
| src/lib/components/inputs/ConnectionSelector.svelte | Adds ConnectionSelector built on AdvancedDropdown and history store. |
| src/lib/components/inputs/AdvancedDropdown.svelte.test.js | Adds basic render test for AdvancedDropdown. |
| src/lib/components/inputs/AdvancedDropdown.svelte | Refines props formatting and updates inverted selector CSS selector. |
| src/lib/components/buttons/IconButton.svelte.test.js | Adds tests for IconButton rendering/click/loading/title. |
| src/lib/components/buttons/IconButton.svelte | Adds IconButton component with hover/focus styling behavior. |
| src/lib/components/buttons/ButtonTinyBasic.svelte.test.js | Adds tests for ButtonTinyBasic rendering/click/loading. |
| src/lib/components/buttons/ButtonTinyBasic.svelte | Adds small semantic UI button component with theme inversion support. |
| src/header/Header.svelte | Removes legacy header tied to Storeon router and ipc-renderer wrapper. |
| src/components/tabs/TabLink.svelte | Removes legacy tabs link component. |
| src/components/tabs/TabContent.svelte | Removes legacy tabs content component. |
| src/App.svelte | Removes legacy top-level SPA App container. |
| src/app.html | Adds SvelteKit app HTML template with stylesheet links and window.global shim. |
| src/api/ipc-renderer.js | Removes legacy renderer-side IPC helper (replaced by preload.js bridge). |
| rollup.config.js | Removes legacy Rollup build config. |
| README.md | Updates screenshots and documents new features and scripts (test/lint). |
| public/index.html | Removes legacy static HTML entrypoint. |
| preload.js | Adds Electron preload bridge exposing limited IPC channels and storage APIs. |
| eslint.config.mjs | Adds ignores for build artifacts and generated output. |
| app/updater.js | Removes old updater implementation under app/. |
| app/requests-node-proxy.js | Removes legacy axios-based Node proxy (replaced by SvelteKit API routes). |
| app/ipc-main.js | Removes legacy IPC main wrapper. |
| app/dumper/dumper.js | Removes legacy Import/Export dumper integration. |
| AGENTS.md | Adds contributor/agent guide for the new SvelteKit + Electron architecture. |
| .gitignore | Adds ignores for SvelteKit/Electron build output and release artifacts. |
| .github/workflows/release.yml | Injects PUBLIC_GA_ID env into build steps for releases. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
implementing connections via ssh tunnel
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 223 out of 270 changed files in this pull request and generated 3 comments.
Comments suppressed due to low confidence (1)
src/lib/components/pagination/Pagination.svelte:96
- These pagination controls are
<button>elements but don’t specifytype="button". If this component is ever rendered inside a<form>, the defaulttype="submit"can cause unintended form submissions when users paginate. Addtype="button"to each button here.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
Major architectural rewrite of Elastron, bumping the app from 1.7.0 → 2.0.0. The renderer was migrated from a Rollup-bundled Svelte SPA to a SvelteKit (adapter-node) server forked by Electron at runtime, and Elasticsearch logic moved out of the main process into proper backend-for-frontend HTTP routes. Along the way: SSH tunneling, a query playground, cluster monitoring, multi-window support, ES9 client, list virtualization, and a comprehensive Vitest test suite.
Architecture
Features
Tooling & quality