Skip to content

Vcvk - #282

Merged
shareui merged 6 commits into
mainfrom
vcvk
Jul 17, 2026
Merged

Vcvk#282
shareui merged 6 commits into
mainfrom
vcvk

Conversation

@shareui

@shareui shareui commented Jul 17, 2026

Copy link
Copy Markdown
Owner

No description provided.

claude added 6 commits July 17, 2026 16:16
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
@shareui
shareui merged commit 864f735 into main Jul 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants