From d2a4728ae1fdac5f1e214370ecaca8b13867f573 Mon Sep 17 00:00:00 2001 From: akadeepesh Date: Wed, 26 Aug 2026 14:44:30 +0530 Subject: [PATCH] feat(webui): redesign the config UI with tabs and a diff-based tree MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the single always_include/always_exclude pane with five tabs: Files, AI selection, Workspace, Advanced, and a live Raw JSON preview. The file tree and pattern list now render as a diff — a solid gutter and +/- marks on every row — instead of checkboxes, matching the git-diff mental model the rest of the tool already uses. Still a single dependency-free HTML string: no build step, no Node.js, no network calls from the page itself. Typography uses each OS's own system font stack rather than a bundled or CDN-fetched face, to keep that property. Pattern-list and tree updates are now applied optimistically on every edit instead of waiting on the debounced /api/preview round-trip. --- contextzip/webui/assets.py | 1141 +++++++++++++++++++++--------------- 1 file changed, 657 insertions(+), 484 deletions(-) diff --git a/contextzip/webui/assets.py b/contextzip/webui/assets.py index f765999..ba94566 100644 --- a/contextzip/webui/assets.py +++ b/contextzip/webui/assets.py @@ -10,14 +10,27 @@ no build step, no CDN fetches) rather than a directory of static assets: - Zero runtime dependency — no Node.js, no bundler, nothing beyond the stdlib http.server already used in server.py. - Zero network calls from the page itself — everything it needs (the - tree, suggestions, save) comes from the same-origin local server; - there are no @@ -997,10 +1168,12 @@ INDEX_HTML = r""" TOKEN_ERROR_HTML = """ contextzip