Conversation
New "Install" entry in the card's three-dots menu calls the same core.install_plugin pipeline as the plugin details page (repo id and plugin list passed through, min-app-version guard shows the usual bulletin). Like other actions it can be relocated onto the card as a "+" pill via the plugin card editor — off by default; relocate_install joins the defaults, the preview wiring and every relocate key list. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0171ySGWMBZa2pESv9uTT44H
Those who know, know. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0171ySGWMBZa2pESv9uTT44H
Both catalogs built their whole chrome (search bar, pills, results scroll — hundreds of python->java bridge calls) synchronously inside beforeCreateView, blocking the UI thread for ~half a second: the fragment appeared late and its open animation dropped every frame. beforeCreateView now returns a light shell (a background-colored FrameLayout, a handful of calls) and the untouched heavy builder runs 120ms later via a posted runnable, landing inside the shell while the open animation plays. Ordering with data arrival: - plugins: already supported — the _data_ready_before_view flag is consumed by build_list_view's load gate, no changes needed; - icons: _update_current_fragment_icons flags _data_ready_pending when the chrome isn't built yet, and the shell wrapper applies the data right after _build_chrome (the renamed, otherwise untouched old beforeCreateView body) finishes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0171ySGWMBZa2pESv9uTT44H
The catalog entry chrome (search pill, AI/count/filter/sort header, results scroll) is now built on the java side by the new kawaii.packetik.catalog.CatalogChromeNative dex: the same tree used to take hundreds of python->java bridge calls, which was the bulk of the half-second entry cost. Python looks the interactive children up by tag, inserts the telegram EditTextBoldCursor into the tagged slot (the one class the dex cannot compile against) and wires all listeners. listView.py is restructured so both view sources share one copy of the logic: the search/clear/AI/filter/sort handlers and the text watcher are hoisted to module level, the original python chrome builder stays intact as _build_chrome_python and remains the automatic fallback when the dex is missing or the tags do not resolve. The shared tail (load gate, scroll-to-top pill, listeners, banner) is untouched apart from a reparent guard on the scroll view. dexLoader gains catalogChromeCreate; catalog.dex ships in packit/dex/ and joins the build script's package list. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0171ySGWMBZa2pESv9uTT44H
All PackIt HTTP tasks ran through client_utils.run_on_queue — the host's plugins DispatchQueue, the same one PluginsController uses to open every plugin settings screen. With github raw timing out at 10-20s (as in the reported log), one hung fetch froze the queue: no PackIt tab could open until the timeout fired, and the other catalog's data waited 20+ seconds behind it. New utils/netQueue.py provides PackIt-owned executors: - run_io — a 3-worker pool for independent fetches; used by both catalog loaders, the updates widget prefetch and the plugins-update checks (only the queue call sites whose tasks actually do HTTP were switched, verified per site); - run_serial_io — a single lane for RepositoryManager tasks, keeping their previous relative ordering around the repo cache files. The host queue now carries no PackIt network I/O, so slow GitHub can only delay the data of the screen that asked for it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0171ySGWMBZa2pESv9uTT44H
Round two of the hybrid: CatalogChromeNative gains createIconsChrome (search pill + repo/count/sort header + results scroll, geometry matching the python builder; shared private helpers with the plugins chrome, which now reuses them too). The icons fragment follows the same restructure as listView did: search/clear/repo/sort handlers and the text watcher hoisted to module level and shared by both view sources, the original python builder kept intact as _build_chrome_python and used automatically when the dex or tags are unavailable. The one python-built view is the telegram EditTextBoldCursor dropped into the tagged slot. Entry polish: the shell->chrome deferral drops from 120ms to 30ms — with the kotlin skeleton the build fits in a frame or two, so content appears almost immediately after the open animation starts; and the plugins delegate no longer builds a search index for an empty list on the click path (json + first dlopen moved off the tap). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0171ySGWMBZa2pESv9uTT44H
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.