ankidroid / Anki-Android

AnkiDroid: Anki flashcards on Android. Your secret trick to achieve superhuman information retention.
GNU General Public License v3.0
8.81k stars 2.25k forks source link

Prepare SvelteKit changes for Anki 24.06 #16232

Closed david-allison closed 5 months ago

david-allison commented 7 months ago

Blocker for AnkiDroid 2.18 release

Some SvelteKit changes are necessary

BrayanDSO commented 7 months ago

Anki's reference: https://github.com/ankitects/anki/pull/3077

dae commented 7 months ago

The svelte changes are not in .1

BrayanDSO commented 7 months ago

Oh yeah, it's in 24.04.2beta1 https://github.com/ankitects/anki/compare/24.04.1...24.04.2beta1, not in 24.04.1

BrayanDSO commented 6 months ago

Got to the point of loading index.html all the immutable resources (css, js, etc), but keep running into this error "Error: Not found: /sveltekit/graphs" (source)

Currently with no time or interest to diagnose

david-allison commented 6 months ago

Got a patch/branch? I'm also time-limited

dae commented 6 months ago

For it to work, the webview should request '/graphs'. The web server should catch that request, and return the contents of index.html. You'll need to teach the web server the various endpoints it should map to index.html, like /graphs, /deck-options/{deck-id}, etc.

BrayanDSO commented 6 months ago

The webview should request '/graphs'. The web server should catch that request, and return the contents of index.html.

I did that

Patches:

Anki-Android ```patch Subject: [PATCH] wip --- Index: AnkiDroid/src/main/java/com/ichi2/anki/pages/AnkiServer.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/pages/AnkiServer.kt b/AnkiDroid/src/main/java/com/ichi2/anki/pages/AnkiServer.kt --- a/AnkiDroid/src/main/java/com/ichi2/anki/pages/AnkiServer.kt (revision bc58dceaad164f3cfeb9a16729dcb890f5ab5fa2) +++ b/AnkiDroid/src/main/java/com/ichi2/anki/pages/AnkiServer.kt (revision 6917cac9ab6466dc015d349cf5cd08dbdac46e68) @@ -49,7 +49,10 @@ buildResponse(exception.localizedMessage?.encodeToByteArray(), status = Response.Status.INTERNAL_ERROR) } } - Method.GET -> newFixedLengthResponse(Response.Status.NOT_FOUND, null, null) + Method.GET -> { + Timber.d("Rejecting GET request to server %s", session.uri) + newFixedLengthResponse(Response.Status.NOT_FOUND, null, null) + } Method.OPTIONS -> buildResponse(null) else -> newFixedLengthResponse(null) } Index: AnkiDroid/src/main/java/com/ichi2/anki/pages/PageFragment.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/pages/PageFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/pages/PageFragment.kt --- a/AnkiDroid/src/main/java/com/ichi2/anki/pages/PageFragment.kt (revision bc58dceaad164f3cfeb9a16729dcb890f5ab5fa2) +++ b/AnkiDroid/src/main/java/com/ichi2/anki/pages/PageFragment.kt (revision 6917cac9ab6466dc015d349cf5cd08dbdac46e68) @@ -25,8 +25,6 @@ import androidx.fragment.app.Fragment import com.google.android.material.appbar.MaterialToolbar import com.ichi2.anki.R -import com.ichi2.themes.Themes -import timber.log.Timber /** * Base class for displaying Anki HTML pages @@ -72,14 +70,11 @@ webViewClient = onCreateWebViewClient(savedInstanceState) webChromeClient = onCreateWebChromeClient(savedInstanceState) } - val nightMode = if (Themes.currentTheme.isNightMode) "#night" else "" - val url = server.baseUrl() + "backend/web/$pageName.html$nightMode" - Timber.i("Loading $url") + val url = "${server.baseUrl()}graphs" webView.loadUrl(url) view.findViewById(R.id.toolbar).apply { - title = this@PageFragment.title setNavigationOnClickListener { requireActivity().onBackPressedDispatcher.onBackPressed() } Index: AnkiDroid/src/main/java/com/ichi2/anki/pages/PageWebViewClient.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/pages/PageWebViewClient.kt b/AnkiDroid/src/main/java/com/ichi2/anki/pages/PageWebViewClient.kt --- a/AnkiDroid/src/main/java/com/ichi2/anki/pages/PageWebViewClient.kt (revision bc58dceaad164f3cfeb9a16729dcb890f5ab5fa2) +++ b/AnkiDroid/src/main/java/com/ichi2/anki/pages/PageWebViewClient.kt (revision 6917cac9ab6466dc015d349cf5cd08dbdac46e68) @@ -15,17 +15,12 @@ */ package com.ichi2.anki.pages -import android.graphics.Bitmap -import android.webkit.ValueCallback import android.webkit.WebResourceRequest import android.webkit.WebResourceResponse import android.webkit.WebView import android.webkit.WebViewClient -import androidx.core.view.isVisible -import com.google.android.material.color.MaterialColors import com.ichi2.anki.OnPageFinishedCallback import com.ichi2.utils.AssetHelper -import com.ichi2.utils.toRGBHex import timber.log.Timber import java.io.IOException @@ -43,86 +38,67 @@ view: WebView, request: WebResourceRequest ): WebResourceResponse? { - val path = request.url.path - if (request.method == "GET" && path?.startsWith("/backend/web") == true) { - try { - val mime = AssetHelper.guessMimeType(path) - val inputStream = view.context.assets.open(path.substring(1)) - return WebResourceResponse(mime, null, inputStream) - } catch (_: IOException) { - Timber.w("%s not found", path) - } - } - return super.shouldInterceptRequest(view, request) - } - - override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { - super.onPageStarted(view, url, favicon) - view?.let { webView -> - val bgColor = MaterialColors.getColor(webView, android.R.attr.colorBackground).toRGBHex() - webView.evaluateAfterDOMContentLoaded( - """document.body.style.setProperty("background-color", "$bgColor", "important"); - console.log("Background color set");""" - ) - } - } - - override fun onPageFinished(view: WebView?, url: String?) { - super.onPageFinished(view, url) - if (view == null) return - onPageFinishedCallback?.onPageFinished(view) - if (promiseToWaitFor == null) { - /** [PageFragment.webView] is invisible by default to avoid flashes while - * the page is loaded, and can be made visible again after it finishes loading */ - Timber.v("displaying WebView") - view.isVisible = true - } else { - view.evaluateJavascript("""$promiseToWaitFor.then(() => { console.log("page-fully-loaded:"); window.location.href = "page-fully-loaded:" } )""") { - Timber.v("waiting for '$promiseToWaitFor' before displaying WebView") - } - } - } - - @Suppress("DEPRECATION") // still needed for API 23 - override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { - if (view == null || url == null) return super.shouldOverrideUrlLoading(view, url) - if (handleUrl(view, url)) { - return true + val originalPath = request.url.path + var path = request.url.path + Timber.d("${request.method} ${request.url.path}") + if (request.method != "GET" || path == null) return null + + if (path == "/favicon.png") { + return WebResourceResponse("image/x-icon", null, view.context.assets.open("backend/web/imgs/favicon.ico")) + } + + val immutable = "immutable" in path + + if (path.startsWith("/_app/")) { + path = "/sveltekit/app/${path.substring(6)}" + } + if (isSvelteKitPage(path.substring(1).substringBefore("/"))) { + path = "/sveltekit/index.html" + } + val mimeType = AssetHelper.guessMimeType(path) + val dataPath = "backend/web$path" + try { + val inputStream = view.context.assets.open(dataPath) + val response = WebResourceResponse(mimeType, null, inputStream) + if (immutable) { + response.responseHeaders = mapOf("Cache-Control" to "max-age=31536000") + } + return response + } catch (_: IOException) { + Timber.w("Not found %s", dataPath) } - return super.shouldOverrideUrlLoading(view, url) + Timber.d(originalPath) + return null } - override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean { - if (view == null || request == null) return super.shouldOverrideUrlLoading(view, request) - if (handleUrl(view, request.url.toString())) { - return true - } - return super.shouldOverrideUrlLoading(view, request) - } +// override fun onPageFinished(view: WebView?, url: String?) { +// super.onPageFinished(view, url) +// val css = """ +// .night-mode button { --canvas: #606060; --fg: #eee; } +// :root { --canvas: #ffffff; --fg: #000000; } +// body { background-color: var(--canvas); } +// """.trimIndent() +// val script = """ +// const style = document.createElement("style"); +// style.innerHTML = `$css`; +// document.head.appendChild(style); +// +// """.trimIndent() +// view?.evaluateJavascript(script, null) +// } +} - private fun handleUrl(view: WebView, url: String): Boolean { - if (url == "page-fully-loaded:") { - Timber.v("displaying WebView after '$promiseToWaitFor' executed") - view.isVisible = true - return true - } - return false +fun isSvelteKitPage(path: String): Boolean { + return when (path) { + "graphs", + "congrats", + "card-info", + "change-notetype", + "deck-options", + "import-anki-package", + "import-csv", + "import-page", + "image-occlusion" -> true + else -> false } } - -fun WebView.evaluateAfterDOMContentLoaded(script: String, resultCallback: ValueCallback? = null) { - evaluateJavascript( - """ - var codeToRun = function() { - $script - } - - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", codeToRun); - } else { - codeToRun(); - } - """.trimIndent(), - resultCallback - ) -} Index: AnkiDroid/src/main/res/layout/page_fragment.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/AnkiDroid/src/main/res/layout/page_fragment.xml b/AnkiDroid/src/main/res/layout/page_fragment.xml --- a/AnkiDroid/src/main/res/layout/page_fragment.xml (revision bc58dceaad164f3cfeb9a16729dcb890f5ab5fa2) +++ b/AnkiDroid/src/main/res/layout/page_fragment.xml (revision 6917cac9ab6466dc015d349cf5cd08dbdac46e68) @@ -19,6 +19,7 @@ android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="invisible"/> + android:visibility="visible" + /> \ No newline at end of file Index: AnkiDroid/src/main/res/layout/statistics.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/AnkiDroid/src/main/res/layout/statistics.xml b/AnkiDroid/src/main/res/layout/statistics.xml --- a/AnkiDroid/src/main/res/layout/statistics.xml (revision bc58dceaad164f3cfeb9a16729dcb890f5ab5fa2) +++ b/AnkiDroid/src/main/res/layout/statistics.xml (revision 6917cac9ab6466dc015d349cf5cd08dbdac46e68) @@ -29,8 +29,7 @@ + android:layout_height="match_parent" /> \ No newline at end of file ```
Anki-Android-Backend ```patch Index: anki IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/anki b/anki --- a/anki (revision ea684c64e7e00b271af718376e983ce7d88814f3) +++ b/anki @@ -1,1 +1,1 @@ -ccd9ca1a8309b80bcb50ddc5d99c7ce63440bce9 \ No newline at end of file +c29125939db1dbb9ef48d42f425eb70abaee53ad \ No newline at end of file Index: Cargo.lock IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/Cargo.lock b/Cargo.lock --- a/Cargo.lock (revision ea684c64e7e00b271af718376e983ce7d88814f3) +++ b/Cargo.lock (date 1715542566523) @@ -500,9 +500,9 @@ [[package]] name = "burn" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b703e5dae87b2146649b64af54688ff86e16cf69fd19d28c43c8f9656d7d7c" +checksum = "3960b57a6ad4baf54d1dba766965e4559c4b9a8f391107fee5de29db57265840" dependencies = [ "burn-core", "burn-train", @@ -510,21 +510,22 @@ [[package]] name = "burn-autodiff" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f306e1b2e480fa0960c3130a68ca5e0fa54b3e33ed2fda7cf2121434703dd771" +checksum = "cf9479c28bdce3f2b1541f0a9215628f6256b5f3d66871192a3c56d55171d28e" dependencies = [ "burn-common", "burn-tensor", "derive-new", + "log", "spin", ] [[package]] name = "burn-candle" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc87b644a2d83cc1b7c05d1176e9e24fb6394272256ab9ab8324ff7c4fe0e6a0" +checksum = "d811c54fa6d9beb38808a1aabd9515c39090720cae572d54f25c041b1702e8fd" dependencies = [ "burn-tensor", "candle-core", @@ -534,9 +535,9 @@ [[package]] name = "burn-common" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1267068969f094323b62693df0c3b45d3b08a0568f3c3467e6a5c3207e6807c8" +checksum = "8d9540b2f45a2d337220e702d7a87572c8e1c78db91a200b22924a8c4a6e9be4" dependencies = [ "async-trait", "derive-new", @@ -550,9 +551,9 @@ [[package]] name = "burn-compute" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b51588cf7c84976f6241a9ac5f77857712b8bf443dab77296c260785033fe8" +checksum = "3e890d8999b25a1a090c2afe198243fc79f0a299efb531a4871c084b0ab9fa11" dependencies = [ "burn-common", "derive-new", @@ -568,9 +569,9 @@ [[package]] name = "burn-core" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b11d8fd1e8c656eee1a0bb503b798c4583904dcaf7a369cbb8fdfd3acc3d0ab" +checksum = "8af6bc0afe55a57ff0b08f52302df4e3d09f96805a4f1e15c521f1082cb02b4f" dependencies = [ "bincode", "burn-autodiff", @@ -578,7 +579,6 @@ "burn-common", "burn-dataset", "burn-derive", - "burn-fusion", "burn-ndarray", "burn-tch", "burn-tensor", @@ -587,8 +587,8 @@ "flate2", "half", "hashbrown 0.14.3", - "libm", "log", + "num-traits", "rand", "rmp-serde", "serde", @@ -598,9 +598,9 @@ [[package]] name = "burn-dataset" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6050891281ae38ee9dc24d1d5badd084247717b15e3dcdae562a81456a41c6e" +checksum = "3feae7766b56e947d38ac4d6903388270d848609339a147a513145703426f6db" dependencies = [ "csv", "derive-new", @@ -624,9 +624,9 @@ [[package]] name = "burn-derive" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f149de5f32baa3f2191c374edab71e5a323bade05eb6092c702aed76cdcb7b" +checksum = "8618ac2c171c7054ffd3ce8da15c3d4b11dc805eb393065c74c05882ef79d931" dependencies = [ "derive-new", "proc-macro2", @@ -636,9 +636,9 @@ [[package]] name = "burn-fusion" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f512f780beaefca46088c4e4a80595511fbc3b35545118281fbf49f1fca767b4" +checksum = "8d77b882d131a67d15f91b915fb3e0a5add73547e7352310d33c877fbe77c79e" dependencies = [ "burn-common", "burn-tensor", @@ -649,11 +649,32 @@ "spin", ] +[[package]] +name = "burn-jit" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cb62a93030a690c329b95c01b43e3064a4bd36031e9111d537641d36e42f3ac" +dependencies = [ + "burn-common", + "burn-compute", + "burn-fusion", + "burn-tensor", + "bytemuck", + "derive-new", + "hashbrown 0.14.3", + "log", + "num-traits", + "rand", + "serde", + "spin", + "text_placeholder", +] + [[package]] name = "burn-ndarray" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aef9fb0b72a1c0a112ed51e35284fb663d3ba3fd98f3a3bfa32db39fd24ae4d" +checksum = "05f40bb0b5938937a721045752f1ec1baee8a873429fd17e6e6f2155c6cdf33a" dependencies = [ "burn-autodiff", "burn-common", @@ -670,9 +691,9 @@ [[package]] name = "burn-tch" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d7aec36d836c5a11714480089738120899e2c91f6fe2e23abd09ec4a68a803" +checksum = "8cb9c2b547499a3d990e93b950965b9a478edfec4a7bf98d5d4412ff8c897129" dependencies = [ "burn-tensor", "half", @@ -683,15 +704,14 @@ [[package]] name = "burn-tensor" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad09aeb0f2428a4ee91f9876a7d71cef6feb1fcacdab6389362dd878ec5f9b27" +checksum = "bfa19c21f54e1a189be3bbaec45efafdf1c89b2763710b381c9f32ae25e7dbe8" dependencies = [ "burn-common", "derive-new", "half", "hashbrown 0.14.3", - "libm", "num-traits", "rand", "rand_distr", @@ -700,9 +720,9 @@ [[package]] name = "burn-train" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5536e98b23dd5047728f288e61e8a4d9fbffef6f55086d3483c2464758508d" +checksum = "0a0014ee82ef967bd82dda378cfaf340f255c39c729e29ac3bc65d3107e4c7ee" dependencies = [ "burn-core", "derive-new", @@ -715,24 +735,21 @@ [[package]] name = "burn-wgpu" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "231d2deb14a02838c29dd5e90d1a87a9578d76bda7b02d5c7a77e5440ef6ae95" +checksum = "1575890471123109c6aeb725c52ac649fa9e0013e2303f57dc534d5e0cb857e5" dependencies = [ "burn-common", "burn-compute", + "burn-fusion", + "burn-jit", "burn-tensor", "bytemuck", "derive-new", "futures-intrusive", "hashbrown 0.14.3", "log", - "num-traits", "pollster", - "rand", - "serde", - "spin", - "text_placeholder", "wgpu", ] @@ -797,9 +814,9 @@ [[package]] name = "candle-core" -version = "0.3.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57433f80b510bc603fd9e52c5a15eb44a8ac70112b95b28b0ab8fb1c1f001822" +checksum = "6f1b20174c1707e20f4cb364a355b449803c03e9b0c9193324623cf9787a4e00" dependencies = [ "byteorder", "gemm", @@ -810,7 +827,7 @@ "rand", "rand_distr", "rayon", - "safetensors", + "safetensors 0.4.3", "thiserror", "yoke", "zip", @@ -838,6 +855,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" version = "0.4.37" @@ -888,10 +911,35 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] -name = "com-rs" -version = "0.2.1" +name = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] name = "combine" @@ -1049,9 +1097,9 @@ [[package]] name = "d3d12" -version = "0.7.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" +checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" dependencies = [ "bitflags 2.4.1", "libloading 0.8.1", @@ -1171,6 +1219,18 @@ "cfg-if", ] +[[package]] +name = "enum-as-inner" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.57", +] + [[package]] name = "env_logger" version = "0.10.1" @@ -1213,7 +1273,7 @@ checksum = "279d3efcc55e19917fff7ab3ddd6c14afb6a90881a0078465196fe2f99d08c56" dependencies = [ "bit_field", - "flume 0.10.14", + "flume", "half", "lebe", "miniz_oxide", @@ -1342,18 +1402,6 @@ "spin", ] -[[package]] -name = "flume" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" -dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "spin", -] - [[package]] name = "fnv" version = "1.0.7" @@ -1408,9 +1456,9 @@ [[package]] name = "fsrs" -version = "0.5.5" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a04c31041078628c5ce7310be96c987bf7f33a3f8815fa0fcdb084eb31feba" +checksum = "b85b59d59f4ad51dc0abf80b5c420ed0e2cf00a41639674c690f8fadbc68dd4a" dependencies = [ "burn", "itertools 0.12.1", @@ -1546,9 +1594,9 @@ [[package]] name = "gemm" -version = "0.16.15" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b3afa707040531a7527477fd63a81ea4f6f3d26037a2f96776e57fb843b258e" +checksum = "6ab24cc62135b40090e31a76a9b2766a501979f3070fa27f689c27ec04377d32" dependencies = [ "dyn-stack", "gemm-c32", @@ -1566,9 +1614,9 @@ [[package]] name = "gemm-c32" -version = "0.16.15" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cc3973a4c30c73f26a099113953d0c772bb17ee2e07976c0a06b8fe1f38a57d" +checksum = "b9c030d0b983d1e34a546b86e08f600c11696fde16199f971cd46c12e67512c0" dependencies = [ "dyn-stack", "gemm-common", @@ -1581,9 +1629,9 @@ [[package]] name = "gemm-c64" -version = "0.16.15" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30362894b93dada374442cb2edf4512ddf19513c9bec88e06a445bcb6b22e64f" +checksum = "fbb5f2e79fefb9693d18e1066a557b4546cd334b226beadc68b11a8f9431852a" dependencies = [ "dyn-stack", "gemm-common", @@ -1596,9 +1644,9 @@ [[package]] name = "gemm-common" -version = "0.16.15" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "988499faa80566b046b4fee2c5f15af55b5a20c1fe8486b112ebb34efa045ad6" +checksum = "a2e7ea062c987abcd8db95db917b4ffb4ecdfd0668471d8dc54734fdff2354e8" dependencies = [ "bytemuck", "dyn-stack", @@ -1611,13 +1659,14 @@ "raw-cpuid", "rayon", "seq-macro", + "sysctl", ] [[package]] name = "gemm-f16" -version = "0.16.15" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6cf2854a12371684c38d9a865063a27661812a3ff5803454c5742e8f5a388ce" +checksum = "7ca4c06b9b11952071d317604acb332e924e817bd891bec8dfb494168c7cedd4" dependencies = [ "dyn-stack", "gemm-common", @@ -1633,9 +1682,9 @@ [[package]] name = "gemm-f32" -version = "0.16.15" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bc84003cf6d950a7c7ca714ad6db281b6cef5c7d462f5cd9ad90ea2409c7227" +checksum = "e9a69f51aaefbd9cf12d18faf273d3e982d9d711f60775645ed5c8047b4ae113" dependencies = [ "dyn-stack", "gemm-common", @@ -1648,9 +1697,9 @@ [[package]] name = "gemm-f64" -version = "0.16.15" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35187ef101a71eed0ecd26fb4a6255b4192a12f1c5335f3a795698f2d9b6cf33" +checksum = "aa397a48544fadf0b81ec8741e5c0fba0043008113f71f2034def1935645d2b0" dependencies = [ "dyn-stack", "gemm-common", @@ -1682,9 +1731,9 @@ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "js-sys", @@ -1695,9 +1744,9 @@ [[package]] name = "gif" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" dependencies = [ "color_quant", "weezl", @@ -1780,9 +1829,9 @@ [[package]] name = "glow" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "886c2a30b160c4c6fec8f987430c26b526b7988ca71f664e6a699ddf6f9601e4" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" dependencies = [ "js-sys", "slotmap", @@ -1820,11 +1869,10 @@ [[package]] name = "gpu-allocator" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40fe17c8a05d60c38c0a4e5a3c802f2f1ceb66b76c67d96ffb34bef0475a7fad" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" dependencies = [ - "backtrace", "log", "presser", "thiserror", @@ -1873,9 +1921,9 @@ [[package]] name = "half" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ "bytemuck", "cfg-if", @@ -1917,14 +1965,14 @@ [[package]] name = "hassle-rs" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" dependencies = [ - "bitflags 1.3.2", - "com-rs", + "bitflags 2.4.1", + "com", "libc", - "libloading 0.7.4", + "libloading 0.8.1", "thiserror", "widestring", "winapi", @@ -2138,9 +2186,9 @@ [[package]] name = "image" -version = "0.24.7" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" dependencies = [ "bytemuck", "byteorder", @@ -2148,7 +2196,6 @@ "exr", "gif", "jpeg-decoder", - "num-rational", "num-traits", "png", "qoi", @@ -2271,9 +2318,9 @@ [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -2379,9 +2426,9 @@ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "mac" @@ -2466,9 +2513,9 @@ [[package]] name = "memmap2" -version = "0.7.1" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" dependencies = [ "libc", "stable_deref_trait", @@ -2558,9 +2605,9 @@ [[package]] name = "naga" -version = "0.14.2" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae585df4b6514cf8842ac0f1ab4992edc975892704835b549cf818dc0191249e" +checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" dependencies = [ "bit-set", "bitflags 2.4.1", @@ -2610,6 +2657,15 @@ "rand_distr", ] +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + [[package]] name = "new_debug_unreachable" version = "1.0.4" @@ -2671,23 +2727,12 @@ "autocfg", "num-traits", ] - -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -3260,9 +3305,9 @@ [[package]] name = "raw-window-handle" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +checksum = "8cc3bcbdb1ddfc11e700e62968e6b4cc9c75bb466464ad28fb61c5b2c964418b" [[package]] name = "rawpointer" @@ -3272,9 +3317,9 @@ [[package]] name = "rayon" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -3282,9 +3327,9 @@ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -3578,6 +3623,16 @@ "serde_json", ] +[[package]] +name = "safetensors" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ced76b22c7fba1162f11a5a75d9d8405264b467a07ae0c9c29be119b9297db9" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "same-file" version = "1.0.6" @@ -3915,12 +3970,11 @@ [[package]] name = "spirv" -version = "0.2.0+1.5.4" +version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 1.3.2", - "num-traits", + "bitflags 2.4.1", ] [[package]] @@ -4048,6 +4102,20 @@ "unicode-xid", ] +[[package]] +name = "sysctl" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" +dependencies = [ + "bitflags 2.4.1", + "byteorder", + "enum-as-inner", + "libc", + "thiserror", + "walkdir", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -4080,7 +4148,7 @@ "libc", "ndarray", "rand", - "safetensors", + "safetensors 0.3.3", "thiserror", "torch-sys", "zip", @@ -4111,9 +4179,9 @@ [[package]] name = "termcolor" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -4131,18 +4199,18 @@ [[package]] name = "thiserror" -version = "1.0.52" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d" +checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.52" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" +checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" dependencies = [ "proc-macro2", "quote", @@ -4657,9 +4725,9 @@ [[package]] name = "uuid" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ "getrandom", "rand", @@ -4719,9 +4787,9 @@ [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4729,9 +4797,9 @@ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -4744,9 +4812,9 @@ [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -4756,9 +4824,9 @@ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4766,9 +4834,9 @@ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -4779,9 +4847,9 @@ [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-streams" @@ -4798,9 +4866,9 @@ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -4824,19 +4892,19 @@ [[package]] name = "weezl" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "wgpu" -version = "0.18.0" +version = "0.19.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e7d227c9f961f2061c26f4cb0fbd4df0ef37e056edd0931783599d6c94ef24" +checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" dependencies = [ "arrayvec", "cfg-if", - "flume 0.11.0", + "cfg_aliases", "js-sys", "log", "naga", @@ -4855,16 +4923,19 @@ [[package]] name = "wgpu-core" -version = "0.18.1" +version = "0.19.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef91c1d62d1e9e81c79e600131a258edf75c9531cbdbde09c44a011a47312726" +checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" dependencies = [ "arrayvec", "bit-vec", "bitflags 2.4.1", + "cfg_aliases", "codespan-reporting", + "indexmap", "log", "naga", + "once_cell", "parking_lot", "profiling", "raw-window-handle", @@ -4878,9 +4949,9 @@ [[package]] name = "wgpu-hal" -version = "0.18.1" +version = "0.19.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84ecc802da3eb67b4cf3dd9ea6fe45bbb47ef13e6c49c5c3240868a9cc6cdd9" +checksum = "fc1a4924366df7ab41a5d8546d6534f1f33231aa5b3f72b9930e300f254e39c3" dependencies = [ "android_system_properties", "arrayvec", @@ -4888,6 +4959,7 @@ "bit-set", "bitflags 2.4.1", "block", + "cfg_aliases", "core-graphics-types", "d3d12", "glow", @@ -4903,6 +4975,7 @@ "log", "metal", "naga", + "ndk-sys", "objc", "once_cell", "parking_lot", @@ -4921,9 +4994,9 @@ [[package]] name = "wgpu-types" -version = "0.18.0" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d5ed5f0edf0de351fe311c53304986315ce866f394a2e6df0c4b3c70774bcdd" +checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" dependencies = [ "bitflags 2.4.1", "js-sys", Index: build_rust/src/main.rs IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/build_rust/src/main.rs b/build_rust/src/main.rs --- a/build_rust/src/main.rs (revision ea684c64e7e00b271af718376e983ce7d88814f3) +++ b/build_rust/src/main.rs (date 1715732661897) @@ -1,8 +1,9 @@ -use anki_io::{copy_file, create_dir_all, read_dir_files}; +use anki_io::{copy_file, create_dir_all}; use anki_process::CommandExt; use anyhow::Result; use camino::{Utf8Path, Utf8PathBuf}; use std::env::consts::OS; +use std::fs; use std::fs::File; use std::io::{BufRead, BufReader, BufWriter, Write}; use std::path::{Path, PathBuf}; @@ -68,21 +69,15 @@ "ts:reviewer:reviewer.css", "ts:reviewer:reviewer_extras_bundle.js", "ts:reviewer:reviewer_extras.css", - "qt:aqt:data:web:pages", + "qt:aqt:data:web", ]) .ensure_success()?; - create_dir_all(artifacts_dir.join("web"))?; + copy_dir_all("anki/out/qt/_aqt/data/web/", artifacts_dir.join("web"))?; + // directories starting with `_` are ignored by default: + // https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/tools/aapt/AaptAssets.cpp;l=62;drc=835dfe50a73c6f6de581aaa143c333af79bcca4d + fs::rename(artifacts_dir.join("web/sveltekit/_app"), artifacts_dir.join("web/sveltekit/app"))?; - let web_dir = artifacts_dir.join("web"); - for file in read_dir_files("anki/out/qt/_aqt/data/web/pages")? { - let file = file?; - let path = file.path(); - copy_file( - &path, - web_dir.join(path.file_name().unwrap().to_str().unwrap()), - )?; - } copy_file( "anki/out/ts/reviewer/reviewer_extras_bundle.js", artifacts_dir.join("web/reviewer_extras_bundle.js"), @@ -318,3 +313,17 @@ Ok(()) } + +fn copy_dir_all(src: impl AsRef, dst: impl AsRef) -> io::Result<()> { + fs::create_dir_all(&dst)?; + for entry in fs::read_dir(src)? { + let entry = entry?; + let ty = entry.file_type()?; + if ty.is_dir() { + copy_dir_all(entry.path(), dst.as_ref().join(entry.file_name()))?; + } else { + fs::copy(entry.path(), dst.as_ref().join(entry.file_name()))?; + } + } + Ok(()) +} ```
dae commented 6 months ago

Where is isSvelteKitPage() called?

BrayanDSO commented 6 months ago

It isn't called because I didn't see the need.

Anki uses it there because mediasrv.py needs to differentiate between all the different requests in the app (media, reviewer JS, etc), but in AnkiDroid we can have the webview isolated to only the Svelte pages

There's these other calls, but they only make sense in Anki's architecture, AFAICT

https://github.com/ankitects/anki/blob/e50a768e44c4ac30c8e180e410791841ce1f2f13/qt/aqt/mediasrv.py#L729

https://github.com/ankitects/anki/blob/e50a768e44c4ac30c8e180e410791841ce1f2f13/qt/aqt/webview.py#L138


For context, only one graphs request is made to the webview, which is the one that successfully loads index.html, which loads all the CSS and JS files successfully, but client.js says that it couldn't find sveltekit/graphsalthough no new requests are made.

dae commented 6 months ago

For it to work, the webview should request '/graphs'.

but client.js says that it couldn't find sveltekit/graphs

BrayanDSO commented 6 months ago

Got it to work. Thanks!

I updated the patch. Idk when Anki will release it or when AnkiDroid will ship it, and I'm going to be out for some time, so I probably won't finish it out.

About the patch, the stuff I removed (like setting the background) was just to simplify the debugging process and should be added back. Also did that because I expect most of the PageFragment classes to be refactored and perhaps removed