@hot-updater/console 0.29.5 → 0.29.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import "../_libs/@radix-ui/react-alert-dialog+[...].mjs";
2
2
  import { n as createServerFn, r as TSS_SERVER_FUNCTION } from "./ssr.mjs";
3
- //#region node_modules/.nitro/vite/services/ssr/assets/api-rpc-CVBxLaGD.js
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/api-rpc-Cr26KHOK.js
4
4
  var createServerRpc = (serverFnMeta, splitImportFn) => {
5
5
  const url = "/_serverFn/" + serverFnMeta.id;
6
6
  return Object.assign(splitImportFn, {
@@ -64,8 +64,10 @@ var getBundles = createServerFn({ method: "GET" }).inputValidator((input) => inp
64
64
  const query = {
65
65
  channel: data?.channel ?? void 0,
66
66
  platform: data?.platform ?? void 0,
67
+ page: typeof data?.page === "number" && Number.isInteger(data.page) && data.page > 1 ? data.page : void 0,
67
68
  limit: data?.limit ? Number(data.limit) : 20,
68
- offset: data?.offset ? Number(data.offset) : 0
69
+ after: data?.after ?? void 0,
70
+ before: data?.before ?? void 0
69
71
  };
70
72
  const { databasePlugin } = await prepareConfig();
71
73
  return await databasePlugin.getBundles({
@@ -74,13 +76,19 @@ var getBundles = createServerFn({ method: "GET" }).inputValidator((input) => inp
74
76
  platform: query.platform
75
77
  },
76
78
  limit: query.limit,
77
- offset: query.offset
79
+ page: query.page,
80
+ cursor: query.after || query.before ? {
81
+ after: query.after,
82
+ before: query.before
83
+ } : void 0
78
84
  }) ?? {
79
85
  data: [],
80
86
  pagination: {
81
87
  total: 0,
82
- limit: query.limit,
83
- offset: query.offset
88
+ hasNextPage: false,
89
+ hasPreviousPage: false,
90
+ currentPage: 1,
91
+ totalPages: 0
84
92
  }
85
93
  };
86
94
  } catch (error) {
@@ -8,7 +8,7 @@ import { t as QueryClient } from "../_libs/tanstack__query-core.mjs";
8
8
  import { r as QueryClientProvider } from "../_libs/tanstack__react-query.mjs";
9
9
  import { t as z } from "../_libs/next-themes.mjs";
10
10
  import { t as Toaster } from "../_libs/sonner.mjs";
11
- //#region node_modules/.nitro/vite/services/ssr/assets/router-DA8KAEBI.js
11
+ //#region node_modules/.nitro/vite/services/ssr/assets/router-DB7WR5Zr.js
12
12
  var import_jsx_runtime = require_jsx_runtime();
13
13
  var import_react = /* @__PURE__ */ __toESM(require_react());
14
14
  function HotUpdaterLogo({ className }) {
@@ -94,7 +94,9 @@ function AppSidebar() {
94
94
  search: {
95
95
  channel: void 0,
96
96
  platform: void 0,
97
- offset: void 0,
97
+ page: void 0,
98
+ after: void 0,
99
+ before: void 0,
98
100
  bundleId: void 0
99
101
  },
100
102
  className: "flex items-center gap-3 p-1 group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:p-2",
@@ -119,7 +121,9 @@ function AppSidebar() {
119
121
  search: {
120
122
  channel: void 0,
121
123
  platform: void 0,
122
- offset: void 0,
124
+ page: void 0,
125
+ after: void 0,
126
+ before: void 0,
123
127
  bundleId: void 0
124
128
  },
125
129
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Package, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Bundles" })]
@@ -136,7 +140,9 @@ function AppSidebar() {
136
140
  var homeSearch = {
137
141
  channel: void 0,
138
142
  platform: void 0,
139
- offset: void 0,
143
+ page: void 0,
144
+ after: void 0,
145
+ before: void 0,
140
146
  bundleId: void 0
141
147
  };
142
148
  function NotFoundPage() {
@@ -221,14 +227,17 @@ function RootLayout() {
221
227
  (0, import_react.useEffect)(() => {}, []);
222
228
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarProvider, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AppSidebar, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarInset, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Outlet, {}) })] });
223
229
  }
224
- var $$splitComponentImporter = () => import("./routes-DNQdNaK2.mjs");
230
+ var $$splitComponentImporter = () => import("./routes-FhQwSgxW.mjs");
225
231
  var rootRouteChildren = { IndexRoute: createFileRoute("/")({
226
232
  component: lazyRouteComponent($$splitComponentImporter, "component"),
227
233
  validateSearch: (search) => {
234
+ const parsedPage = typeof search.page === "number" ? search.page : typeof search.page === "string" ? Number(search.page) : void 0;
228
235
  return {
229
236
  channel: search.channel,
230
237
  platform: search.platform,
231
- offset: search.offset,
238
+ page: parsedPage !== void 0 && Number.isInteger(parsedPage) && parsedPage > 1 ? parsedPage : void 0,
239
+ after: search.after,
240
+ before: search.before,
232
241
  bundleId: search.bundleId
233
242
  };
234
243
  }
@@ -17,7 +17,7 @@ import { n as toast } from "../_libs/sonner.mjs";
17
17
  import { t as require_semver } from "../_libs/semver.mjs";
18
18
  import { i as getCoreRowModel, n as useReactTable, r as createColumnHelper, t as flexRender } from "../_libs/@tanstack/react-table+[...].mjs";
19
19
  import { n as require_dayjs_min, t as require_relativeTime } from "../_libs/dayjs.mjs";
20
- //#region node_modules/.nitro/vite/services/ssr/assets/routes-DNQdNaK2.js
20
+ //#region node_modules/.nitro/vite/services/ssr/assets/routes-FhQwSgxW.js
21
21
  var import_jsx_runtime = require_jsx_runtime();
22
22
  var import_react = /* @__PURE__ */ __toESM(require_react());
23
23
  var import_semver = /* @__PURE__ */ __toESM(require_semver());
@@ -639,7 +639,9 @@ function useFilterParams() {
639
639
  const filters = {
640
640
  channel: search.channel,
641
641
  platform: search.platform,
642
- offset: search.offset
642
+ page: search.page,
643
+ after: search.after,
644
+ before: search.before
643
645
  };
644
646
  const bundleId = search.bundleId;
645
647
  const navigateWithSearch = (nextSearch) => {
@@ -651,11 +653,17 @@ function useFilterParams() {
651
653
  const getNextFilters = (newFilters) => {
652
654
  const hasChannel = Object.hasOwn(newFilters, "channel");
653
655
  const hasPlatform = Object.hasOwn(newFilters, "platform");
654
- const hasOffset = Object.hasOwn(newFilters, "offset");
656
+ const hasPage = Object.hasOwn(newFilters, "page");
657
+ const hasAfter = Object.hasOwn(newFilters, "after");
658
+ const hasBefore = Object.hasOwn(newFilters, "before");
659
+ const shouldResetPagination = hasChannel || hasPlatform;
660
+ const nextPage = hasPage && newFilters.page !== void 0 && newFilters.page > 1 ? newFilters.page : void 0;
655
661
  return {
656
662
  channel: hasChannel ? newFilters.channel : filters.channel,
657
663
  platform: hasPlatform ? newFilters.platform : filters.platform,
658
- offset: hasChannel || hasPlatform ? "0" : hasOffset ? newFilters.offset : filters.offset
664
+ page: shouldResetPagination ? void 0 : hasPage ? nextPage : filters.page,
665
+ after: shouldResetPagination ? void 0 : hasAfter ? newFilters.after : filters.after,
666
+ before: shouldResetPagination ? void 0 : hasBefore ? newFilters.before : filters.before
659
667
  };
660
668
  };
661
669
  const setFilters = (newFilters) => {
@@ -674,7 +682,9 @@ function useFilterParams() {
674
682
  navigateWithSearch({
675
683
  channel: void 0,
676
684
  platform: void 0,
677
- offset: void 0,
685
+ page: void 0,
686
+ after: void 0,
687
+ before: void 0,
678
688
  bundleId: void 0
679
689
  });
680
690
  };
@@ -714,7 +724,8 @@ function PromoteChannelDialog({ bundle, open, onOpenChange, onSuccess }) {
714
724
  const openBundleDetail = (nextBundleId, nextChannel) => {
715
725
  setBundleId(nextBundleId, {
716
726
  channel: nextChannel,
717
- offset: "0"
727
+ after: void 0,
728
+ before: void 0
718
729
  });
719
730
  };
720
731
  const handlePromote = async () => {
@@ -1638,22 +1649,37 @@ var bundleColumns = [
1638
1649
  cell: (info) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TimestampDisplay, { uuid: info.getValue() })
1639
1650
  })
1640
1651
  ];
1641
- function BundlesTable({ bundles, selectedBundleId, onRowClick }) {
1642
- const { filters, setFilters } = useFilterParams();
1643
- const currentOffset = Number(filters.offset || 0);
1652
+ function BundlesTable({ bundles, pagination, selectedBundleId, onRowClick }) {
1653
+ const { setFilters } = useFilterParams();
1644
1654
  const table = useReactTable({
1645
1655
  data: bundles,
1646
1656
  columns: bundleColumns,
1647
1657
  getCoreRowModel: getCoreRowModel()
1648
1658
  });
1659
+ const hasNextPage = pagination?.hasNextPage ?? false;
1660
+ const hasPreviousPage = pagination?.hasPreviousPage ?? false;
1661
+ const currentPage = pagination?.currentPage ?? 1;
1662
+ const totalPages = pagination?.totalPages ?? 0;
1649
1663
  const handlePreviousPage = () => {
1650
- setFilters({ offset: Math.max(0, currentOffset - 20).toString() });
1664
+ const previousCursor = pagination?.previousCursor ?? bundles[0]?.id;
1665
+ if (!previousCursor) return;
1666
+ setFilters({
1667
+ page: Math.max(1, currentPage - 1),
1668
+ after: void 0,
1669
+ before: previousCursor
1670
+ });
1651
1671
  };
1652
1672
  const handleNextPage = () => {
1653
- setFilters({ offset: (currentOffset + 20).toString() });
1673
+ const nextCursor = pagination?.nextCursor ?? bundles.at(-1)?.id;
1674
+ if (!nextCursor) return;
1675
+ setFilters({
1676
+ page: currentPage + 1,
1677
+ after: nextCursor,
1678
+ before: void 0
1679
+ });
1654
1680
  };
1655
- const hasNextPage = bundles.length === 20;
1656
- const hasPreviousPage = currentOffset > 0;
1681
+ const startEntry = bundles.length === 0 ? 0 : (currentPage - 1) * 20 + 1;
1682
+ const endEntry = startEntry === 0 ? 0 : startEntry + bundles.length - 1;
1657
1683
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
1658
1684
  className: "space-y-4",
1659
1685
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
@@ -1688,35 +1714,54 @@ function BundlesTable({ bundles, selectedBundleId, onRowClick }) {
1688
1714
  "Showing ",
1689
1715
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
1690
1716
  className: "text-foreground",
1691
- children: currentOffset + 1
1717
+ children: startEntry
1692
1718
  }),
1693
- " ",
1694
- "to",
1719
+ " to",
1695
1720
  " ",
1696
1721
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
1697
1722
  className: "text-foreground",
1698
- children: currentOffset + bundles.length
1723
+ children: endEntry
1699
1724
  }),
1700
- " ",
1701
- "entries"
1725
+ " entries"
1702
1726
  ]
1703
1727
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
1704
- className: "flex items-center gap-2",
1705
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, {
1706
- variant: "outline",
1707
- size: "sm",
1708
- onClick: handlePreviousPage,
1709
- disabled: !hasPreviousPage,
1710
- className: "h-8 px-3 text-xs",
1711
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronLeft, { className: "h-3.5 w-3.5 mr-1" }), "Previous"]
1712
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, {
1713
- variant: "outline",
1714
- size: "sm",
1715
- onClick: handleNextPage,
1716
- disabled: !hasNextPage,
1717
- className: "h-8 px-3 text-xs",
1718
- children: ["Next", /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronRight, { className: "h-3.5 w-3.5 ml-1" })]
1719
- })]
1728
+ className: "flex items-center gap-3",
1729
+ children: [
1730
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
1731
+ className: "text-xs text-muted-foreground font-medium",
1732
+ children: [
1733
+ "Page ",
1734
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
1735
+ className: "text-foreground",
1736
+ children: currentPage
1737
+ }),
1738
+ totalPages > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
1739
+ " ",
1740
+ "of ",
1741
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
1742
+ className: "text-foreground",
1743
+ children: totalPages
1744
+ })
1745
+ ] }) : null
1746
+ ]
1747
+ }),
1748
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, {
1749
+ variant: "outline",
1750
+ size: "sm",
1751
+ onClick: handlePreviousPage,
1752
+ disabled: !hasPreviousPage,
1753
+ className: "h-8 px-3 text-xs",
1754
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronLeft, { className: "h-3.5 w-3.5 mr-1" }), "Previous"]
1755
+ }),
1756
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, {
1757
+ variant: "outline",
1758
+ size: "sm",
1759
+ onClick: handleNextPage,
1760
+ disabled: !hasNextPage,
1761
+ className: "h-8 px-3 text-xs",
1762
+ children: ["Next", /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronRight, { className: "h-3.5 w-3.5 ml-1" })]
1763
+ })
1764
+ ]
1720
1765
  })]
1721
1766
  })]
1722
1767
  });
@@ -1787,10 +1832,13 @@ function BundlesPage() {
1787
1832
  const { data: bundlesData, isLoading } = useBundlesQuery({
1788
1833
  channel: filters.channel,
1789
1834
  platform: filters.platform,
1790
- offset: filters.offset,
1835
+ page: filters.page,
1836
+ after: filters.after,
1837
+ before: filters.before,
1791
1838
  limit: "20"
1792
1839
  });
1793
1840
  const bundles = bundlesData?.data ?? [];
1841
+ const pagination = bundlesData?.pagination;
1794
1842
  const selectedBundleFromList = activeBundleId ? bundles.find((bundle) => bundle.id === activeBundleId) ?? null : null;
1795
1843
  const { data: selectedBundleFromQuery, isPending: isSelectedBundlePending } = useBundleQuery(activeBundleId);
1796
1844
  const selectedBundle = selectedBundleFromQuery ?? selectedBundleFromList;
@@ -1815,6 +1863,7 @@ function BundlesPage() {
1815
1863
  className: "flex-1 p-6 space-y-6 bg-muted/5",
1816
1864
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BundlesTable, {
1817
1865
  bundles,
1866
+ pagination,
1818
1867
  selectedBundleId: bundleId,
1819
1868
  onRowClick: (bundle) => setBundleId(bundle.id)
1820
1869
  })
@@ -4269,7 +4269,7 @@ function getResponse() {
4269
4269
  return getH3Event().res;
4270
4270
  }
4271
4271
  async function getStartManifest(matchedRoutes) {
4272
- const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-DTbQVOpU.mjs");
4272
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-bE9hwtzg.mjs");
4273
4273
  const startManifest = tsrStartManifest();
4274
4274
  const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes["__root__"] || {};
4275
4275
  rootRoute.assets = rootRoute.assets || [];
@@ -4408,43 +4408,43 @@ function createMultiplexedStream(jsonStream, rawStreams) {
4408
4408
  var manifest = {
4409
4409
  "51a34c05479a893c7d320bd4cd1604427289d667698c48b9f30a01aabf8a5e68": {
4410
4410
  functionName: "getConfig_createServerFn_handler",
4411
- importer: () => import("./api-rpc-CVBxLaGD.mjs")
4411
+ importer: () => import("./api-rpc-Cr26KHOK.mjs")
4412
4412
  },
4413
4413
  "79ada05964de8f2123bfcd62b10097d59bf8fd689ef5c7161031e5871d8396c5": {
4414
4414
  functionName: "getChannels_createServerFn_handler",
4415
- importer: () => import("./api-rpc-CVBxLaGD.mjs")
4415
+ importer: () => import("./api-rpc-Cr26KHOK.mjs")
4416
4416
  },
4417
4417
  "f8bdca3d0579adb812d6404f55d9261a89cdb025e920b1fcad82883646a5fe9e": {
4418
4418
  functionName: "getConfigLoaded_createServerFn_handler",
4419
- importer: () => import("./api-rpc-CVBxLaGD.mjs")
4419
+ importer: () => import("./api-rpc-Cr26KHOK.mjs")
4420
4420
  },
4421
4421
  "00ccacb4a0212c83ec29f4d11719046ad91ea8291cfc557d514dbf00d3bd7f5f": {
4422
4422
  functionName: "getBundles_createServerFn_handler",
4423
- importer: () => import("./api-rpc-CVBxLaGD.mjs")
4423
+ importer: () => import("./api-rpc-Cr26KHOK.mjs")
4424
4424
  },
4425
4425
  "1bd85c2a50e24785cb6abb023a247a9f048f37ddfa85cbb1c57e579563bad013": {
4426
4426
  functionName: "getBundle_createServerFn_handler",
4427
- importer: () => import("./api-rpc-CVBxLaGD.mjs")
4427
+ importer: () => import("./api-rpc-Cr26KHOK.mjs")
4428
4428
  },
4429
4429
  "e000081a14772a0496dfdf615232fbbb1a23b89191d0e32f89a05dd67a1916f7": {
4430
4430
  functionName: "getBundleDownloadUrl_createServerFn_handler",
4431
- importer: () => import("./api-rpc-CVBxLaGD.mjs")
4431
+ importer: () => import("./api-rpc-Cr26KHOK.mjs")
4432
4432
  },
4433
4433
  "67f90ce4cd10fd0226cd9d77cdcd8d0f25a59a6ac406360b655e44296bc4208b": {
4434
4434
  functionName: "updateBundle_createServerFn_handler",
4435
- importer: () => import("./api-rpc-CVBxLaGD.mjs")
4435
+ importer: () => import("./api-rpc-Cr26KHOK.mjs")
4436
4436
  },
4437
4437
  "c4ef3bbb77ea8a4410623fd18a4741e2ff0668b1a97510bcdd032a8428eaa5da": {
4438
4438
  functionName: "promoteBundle_createServerFn_handler",
4439
- importer: () => import("./api-rpc-CVBxLaGD.mjs")
4439
+ importer: () => import("./api-rpc-Cr26KHOK.mjs")
4440
4440
  },
4441
4441
  "16cc7c2f080ea5b73e0c6bba815b110dbd7727796036d248ba0d8ae819ddef08": {
4442
4442
  functionName: "createBundle_createServerFn_handler",
4443
- importer: () => import("./api-rpc-CVBxLaGD.mjs")
4443
+ importer: () => import("./api-rpc-Cr26KHOK.mjs")
4444
4444
  },
4445
4445
  "3a27ff5679228b86a346b3fe42142e7a5bf0264f73173c0dbe5f07fb37c43cf7": {
4446
4446
  functionName: "deleteBundle_createServerFn_handler",
4447
- importer: () => import("./api-rpc-CVBxLaGD.mjs")
4447
+ importer: () => import("./api-rpc-Cr26KHOK.mjs")
4448
4448
  }
4449
4449
  };
4450
4450
  async function getServerFnById(id) {
@@ -4747,7 +4747,7 @@ var entriesPromise;
4747
4747
  var baseManifestPromise;
4748
4748
  var cachedFinalManifestPromise;
4749
4749
  async function loadEntries() {
4750
- const routerEntry = await import("./router-DA8KAEBI.mjs");
4750
+ const routerEntry = await import("./router-DB7WR5Zr.mjs");
4751
4751
  return {
4752
4752
  startEntry: await import("./start-DQK0r85G.mjs"),
4753
4753
  routerEntry
@@ -1,17 +1,17 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/_tanstack-start-manifest_v-DTbQVOpU.js
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/_tanstack-start-manifest_v-bE9hwtzg.js
2
2
  var tsrStartManifest = () => ({
3
3
  "routes": {
4
4
  "__root__": {
5
5
  "filePath": "/home/runner/work/hot-updater/hot-updater/packages/console/src/routes/__root.tsx",
6
6
  "children": ["/"],
7
- "preloads": ["/assets/main-Dlx8-qN-.js"]
7
+ "preloads": ["/assets/main-hOHGHX7C.js"]
8
8
  },
9
9
  "/": {
10
10
  "filePath": "/home/runner/work/hot-updater/hot-updater/packages/console/src/routes/index.tsx",
11
- "preloads": ["/assets/routes-DB0tWmiJ.js"]
11
+ "preloads": ["/assets/routes-B2UPnemG.js"]
12
12
  }
13
13
  },
14
- "clientEntry": "/assets/main-Dlx8-qN-.js"
14
+ "clientEntry": "/assets/main-hOHGHX7C.js"
15
15
  });
16
16
  //#endregion
17
17
  export { tsrStartManifest };
@@ -74,121 +74,121 @@ var public_assets_data_default = {
74
74
  "/apple-touch-icon.png": {
75
75
  "type": "image/png",
76
76
  "etag": "\"329e-uyxOmLQHjRnOIdaE3FE7O/uZ9l4\"",
77
- "mtime": "2026-04-08T00:38:59.362Z",
77
+ "mtime": "2026-04-09T04:37:20.841Z",
78
78
  "size": 12958,
79
79
  "path": "../public/apple-touch-icon.png"
80
80
  },
81
81
  "/favicon-16x16.png": {
82
82
  "type": "image/png",
83
83
  "etag": "\"240-h6ktCVLfjIcsDJuLwUXP4nCJxlI\"",
84
- "mtime": "2026-04-08T00:38:59.362Z",
84
+ "mtime": "2026-04-09T04:37:20.841Z",
85
85
  "size": 576,
86
86
  "path": "../public/favicon-16x16.png"
87
87
  },
88
88
  "/favicon-32x32.png": {
89
89
  "type": "image/png",
90
90
  "etag": "\"4f0-0qQrV3Eq3PzIigrp+8htf8vFCYA\"",
91
- "mtime": "2026-04-08T00:38:59.362Z",
91
+ "mtime": "2026-04-09T04:37:20.841Z",
92
92
  "size": 1264,
93
93
  "path": "../public/favicon-32x32.png"
94
94
  },
95
95
  "/favicon.ico": {
96
96
  "type": "image/vnd.microsoft.icon",
97
97
  "etag": "\"3c2e-eMwmbJNNg6G+Uu+rqWtuvtI2Om4\"",
98
- "mtime": "2026-04-08T00:38:59.362Z",
98
+ "mtime": "2026-04-09T04:37:20.841Z",
99
99
  "size": 15406,
100
100
  "path": "../public/favicon.ico"
101
101
  },
102
102
  "/logo.svg": {
103
103
  "type": "image/svg+xml",
104
104
  "etag": "\"478-zKvD9Jp5dDLCBmng0McewYMBxfs\"",
105
- "mtime": "2026-04-08T00:38:59.362Z",
105
+ "mtime": "2026-04-09T04:37:20.841Z",
106
106
  "size": 1144,
107
107
  "path": "../public/logo.svg"
108
108
  },
109
109
  "/manifest.json": {
110
110
  "type": "application/json",
111
111
  "etag": "\"258-CQdbkGDhbZhU+yrcSXanXKWFEpw\"",
112
- "mtime": "2026-04-08T00:38:59.362Z",
112
+ "mtime": "2026-04-09T04:37:20.841Z",
113
113
  "size": 600,
114
114
  "path": "../public/manifest.json"
115
115
  },
116
116
  "/robots.txt": {
117
117
  "type": "text/plain; charset=utf-8",
118
118
  "etag": "\"43-BEzmj4PuhUNHX+oW9uOnPSihxtU\"",
119
- "mtime": "2026-04-08T00:38:59.362Z",
119
+ "mtime": "2026-04-09T04:37:20.842Z",
120
120
  "size": 67,
121
121
  "path": "../public/robots.txt"
122
122
  },
123
123
  "/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2": {
124
124
  "type": "font/woff2",
125
125
  "etag": "\"6568-cF1iUGbboMFZ8TfnP5HiMgl9II0\"",
126
- "mtime": "2026-04-08T00:38:58.608Z",
126
+ "mtime": "2026-04-09T04:37:20.110Z",
127
127
  "size": 25960,
128
128
  "path": "../public/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2"
129
129
  },
130
130
  "/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2": {
131
131
  "type": "font/woff2",
132
132
  "etag": "\"493c-n3Oy9D6jvzfMjpClqox+Zo7ERQQ\"",
133
- "mtime": "2026-04-08T00:38:58.608Z",
133
+ "mtime": "2026-04-09T04:37:20.110Z",
134
134
  "size": 18748,
135
135
  "path": "../public/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2"
136
136
  },
137
137
  "/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2": {
138
138
  "type": "font/woff2",
139
139
  "etag": "\"2be0-BP5iTzJeB8nLqYAgKpWNi5o1Zm8\"",
140
- "mtime": "2026-04-08T00:38:58.608Z",
140
+ "mtime": "2026-04-09T04:37:20.110Z",
141
141
  "size": 11232,
142
142
  "path": "../public/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2"
143
143
  },
144
144
  "/assets/inter-greek-wght-normal-CkhJZR-_.woff2": {
145
145
  "type": "font/woff2",
146
146
  "etag": "\"4a34-xor/hj4YNqI52zFecXnUbzQ4Xs4\"",
147
- "mtime": "2026-04-08T00:38:58.608Z",
147
+ "mtime": "2026-04-09T04:37:20.110Z",
148
148
  "size": 18996,
149
149
  "path": "../public/assets/inter-greek-wght-normal-CkhJZR-_.woff2"
150
150
  },
151
151
  "/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2": {
152
152
  "type": "font/woff2",
153
153
  "etag": "\"14c4c-zz61D7IQFMB9QxHvTAOk/Vh4ibQ\"",
154
- "mtime": "2026-04-08T00:38:58.608Z",
154
+ "mtime": "2026-04-09T04:37:20.110Z",
155
155
  "size": 85068,
156
156
  "path": "../public/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2"
157
157
  },
158
158
  "/assets/inter-latin-wght-normal-Dx4kXJAl.woff2": {
159
159
  "type": "font/woff2",
160
160
  "etag": "\"bc80-8R1ym7Ck2DUNLqPQ/AYs9u8tUpg\"",
161
- "mtime": "2026-04-08T00:38:58.608Z",
161
+ "mtime": "2026-04-09T04:37:20.110Z",
162
162
  "size": 48256,
163
163
  "path": "../public/assets/inter-latin-wght-normal-Dx4kXJAl.woff2"
164
164
  },
165
165
  "/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2": {
166
166
  "type": "font/woff2",
167
167
  "etag": "\"280c-nBythjoDQ0+5wVAendJ6wU7Xz2M\"",
168
- "mtime": "2026-04-08T00:38:58.608Z",
168
+ "mtime": "2026-04-09T04:37:20.110Z",
169
169
  "size": 10252,
170
170
  "path": "../public/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2"
171
171
  },
172
- "/assets/routes-DB0tWmiJ.js": {
172
+ "/assets/main-hOHGHX7C.js": {
173
173
  "type": "text/javascript; charset=utf-8",
174
- "etag": "\"33432-UyAsBMnU9T2V9ystwTzCbstnIm0\"",
175
- "mtime": "2026-04-08T00:38:58.608Z",
176
- "size": 209970,
177
- "path": "../public/assets/routes-DB0tWmiJ.js"
174
+ "etag": "\"788a3-A8ULZwvGbIKabx1wm5k6Lq13AEw\"",
175
+ "mtime": "2026-04-09T04:37:20.109Z",
176
+ "size": 493731,
177
+ "path": "../public/assets/main-hOHGHX7C.js"
178
+ },
179
+ "/assets/routes-B2UPnemG.js": {
180
+ "type": "text/javascript; charset=utf-8",
181
+ "etag": "\"336ff-oAMV4fdXFnmSDlXpOuKZEqPpSek\"",
182
+ "mtime": "2026-04-09T04:37:20.110Z",
183
+ "size": 210687,
184
+ "path": "../public/assets/routes-B2UPnemG.js"
178
185
  },
179
186
  "/assets/styles-Bfxg4M1x.css": {
180
187
  "type": "text/css; charset=utf-8",
181
188
  "etag": "\"16bc6-p7C0HAFVLco8kaVMGNcx6RYBlpk\"",
182
- "mtime": "2026-04-08T00:38:58.608Z",
189
+ "mtime": "2026-04-09T04:37:20.110Z",
183
190
  "size": 93126,
184
191
  "path": "../public/assets/styles-Bfxg4M1x.css"
185
- },
186
- "/assets/main-Dlx8-qN-.js": {
187
- "type": "text/javascript; charset=utf-8",
188
- "etag": "\"787be-CeNiIm+8hi12YIUcPI+BeocO3xE\"",
189
- "mtime": "2026-04-08T00:38:58.606Z",
190
- "size": 493502,
191
- "path": "../public/assets/main-Dlx8-qN-.js"
192
192
  }
193
193
  };
194
194
  //#endregion
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hot-updater/console",
3
3
  "type": "module",
4
- "version": "0.29.5",
4
+ "version": "0.29.6",
5
5
  "files": [
6
6
  ".output",
7
7
  "package.json"
@@ -10,7 +10,7 @@
10
10
  "./package.json": "./package.json"
11
11
  },
12
12
  "peerDependencies": {
13
- "@hot-updater/cli-tools": "0.29.5"
13
+ "@hot-updater/cli-tools": "0.29.6"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@base-ui/react": "^1.3.0",
@@ -58,10 +58,10 @@
58
58
  "vite-tsconfig-paths": "^6.1.1",
59
59
  "vitest": "4.1.0",
60
60
  "web-vitals": "^5.1.0",
61
- "@hot-updater/cli-tools": "0.29.5",
62
- "@hot-updater/core": "0.29.5",
63
- "@hot-updater/mock": "0.29.5",
64
- "@hot-updater/plugin-core": "0.29.5"
61
+ "@hot-updater/cli-tools": "0.29.6",
62
+ "@hot-updater/core": "0.29.6",
63
+ "@hot-updater/mock": "0.29.6",
64
+ "@hot-updater/plugin-core": "0.29.6"
65
65
  },
66
66
  "description": "React Native OTA solution for self-hosted",
67
67
  "license": "MIT",