Repository navigation
fix: restore colour-scheme opt-in and harden extension lifecycle - #178
Open
FanaticPythoner wants to merge 4 commits into
Open
FanaticPythoner wants to merge 4 commits into
FanaticPythoner wants to merge 4 commits into
Conversation
Restore explicit colour-scheme activation so foreground-only custom highlights retain their configured colours without injected backgrounds. Highlight configuration: - default useColourScheme to false in both settings namespaces and runtime - delegate settings snapshots to config.shouldUseColourScheme() - cancel pending highlights and prune decoration state for hidden editors - skip delayed highlights for closed or no-longer-visible editors Runtime lifecycle and tree interactions: - add an activation scheduler for timeouts, intervals, and immediates - dispose the previous runtime before reactivation and make teardown idempotent across deactivation and subscription disposal - cancel scheduled work, clear scan/document state and highlight caches, settle progress sessions, and dispose output channels and tree resources - guard queued commands, context changes, tree mutations, and asynchronous completions against disposed runtimes - settle pending tree UI turns during teardown without revealing nodes - cancel stale active-editor tracking and recheck editor and settings state before passive reveals - return indexed tree elements directly and preserve reveal error propagation through command boundaries - dispose line-flash decorations without writing to closed editors - add generation queries to repeated exports to avoid cached documents - dispose tree change emitters and pending expansion-state writes once Search and cleanup: - track every active ripgrep process and cancel concurrent searches - guard process completion and pattern cleanup against repeated events - stop consuming output after process completion begins - remove the inert ripgrepMaxBuffer setting from both namespaces, runtime options, legacy migration, localization, documentation, and fixtures - remove unused detection and colour/icon parameters, helper functions, imports, and obsolete runtime state Release and packaging: - restrict the canonical VSIX matrix to nine native targets - remove web target handling from ripgrep mappings, package staging, PR preview labels, and bundle checks - require one matching ripgrep executable and its metadata per target - derive stable and nightly build targets from targets.json - exclude .forge from Git, npm, and VSIX packages - exclude development-container files from npm packages and omit packaging ignore files from the opposite distribution format Documentation and dependencies: - document colour-scheme opt-in, native platform coverage, the Node extension-host requirement, and incremental ripgrep output parsing - correct the foregroundColourScheme setting name in README - add missing Simplified Chinese diagnostic and current-scan commands and translate remaining manifest command and setting strings - refresh browserslist, baseline-browser-mapping, caniuse-lite, electron-to-chromium, node-releases, and update-browserslist-db - refresh brace-expansion, fast-uri, js-yaml, qs, side-channel, and undici, including associated lockfile integrity and dependency metadata Regression coverage and evidence: - cover manifest/runtime opt-in, authoritative snapshot policy, and foreground-only custom highlights while retaining explicit palettes - cover scheduler cancellation, synchronous clocks, repeated disposal, hidden-editor highlights, and pending tree UI teardown - cover stale tracking, reveal failures, closed-editor line flashes, repeated export generations, and activation resource cleanup - assert concurrent ripgrep cancellation and single pattern cleanup - enforce localization coverage, 72 settings per namespace, native target membership, executable metadata, and packaging exclusions - align release, Marketplace, and PR preview fixtures with native targets - extend performance harnesses with editor visibility events and disposal - add the two-scenario highlight latency and RSS comparison artifact - refresh the regex-registry equivalence report Fixes #110
PR VSIX: unavailableNo installable bundle matches Reason: CI concluded with |
Settings compatibility: - centralize grouped and historical flat Todo Tree setting mappings - apply VS Code user, workspace, folder, and language precedence; resolve same-scope ties as current, grouped Todo Tree, then flat keys - merge object settings without mutating source values and preserve explicit false, zero, empty arrays, and empty objects - generate 108 Todo Tree settings entries from current schemas and retained historical metadata; check alias consistency before packaging - map historical scan-mode, toolbar-button, and scheme settings; retain Todo Tree view-placement and output-buffer setting metadata - remove obsolete current-namespace tree preferences and Todo Tree deprecation notices; share schemas and localized setting descriptions - accept capture-group highlight types, theme colors, and CSS color strings in default and custom highlight schemas - resolve toolbar buttons individually and keep add/remove-tag writes at the configured scope Settings import and public identity: - replace activation-time settings rewrites and version-gated migration prompts with direct reads and explicit Import Todo Tree Settings - copy recognized settings into unset destinations at their original scopes, including exact single and combined language override blocks - preserve source, unrelated, unknown, and retained historical settings; leave existing destinations intact and make repeated import idempotent - serialize import requests, observe destination propagation, and report source changes, cancellation, and write failures with typed errors - remove Todo Tree command/context aliases and the todotree-export provider while retaining the existing view/container identifiers - replace the old compatibility suite with identity and migration tests covering mapped keys, scope precedence, empty values, object merging, retries, delayed propagation, cancellation, and added folders Runtime and scan handling: - scope scan state, timers, document queues, and Git polling guards to each activation; reset transient tree overrides during initialization - derive open-file membership from editor tabs, including hidden and diff tabs; prune closed-tab queues and refresh open-file results - refresh tag-group lookup before snapshots and scans, rescan existing editors after regex edits, and rebuild snapshots on folder changes - restore optional glob-scoped workspace file watching for external creation, edits, and deletion; invalidate affected document caches and dispose replaced or disabled watchers - wait for all cache-reset operations, aggregate failures, clear icon, highlight, document, and submodule caches, and rebuild rendered state - cover reactivation callbacks, regex/group edit ordering, hidden tabs, final-tab closure, cache-deletion failures, and watcher ownership Detection and highlight data: - reuse resource snapshots and scan contexts across default, Markdown, embedded-language, and custom-regex detection - centralize regex-source construction, cache capture metadata by regex source, and cache comment-trim patterns per scan context - collect comment matches with flatMap instead of repeated growing-array copies and find newline offsets with indexOf - use Map, Set, null-prototype records, and own-property checks for tag groups, highlight/subtag ranges, counts, exports, and glob handling - cover UTF-16/newline boundaries, 8,000 separated comment blocks, snapshot-controlled regions and regexes, trim-pattern caching, and prototype-named tags through grouping, highlights, and counts Codicons and generated assets: - replace gutter letter badges with 639 bundled SVG glyphs resolved through 934 Codicon and product-icon aliases - replace the old name-only tables and downloader with an asset compiler that checks archive integrity, version, SVGs, and alias targets - include source provenance, content/code licenses, and generation docs - derive icon filenames from SVG SHA-256 digests, share canonical assets, escape Codicon color substitutions, and reject unknown names - cover every bundled alias, distinct RGB values, inherited-property rejection, and regeneration after icon storage is removed Tree export: - disambiguate same-line matches with columns and notebook source IDs while preserving prototype-named paths and multiline todo text - replace treeify with an iterative text formatter that handles prototype-free records, shared subtrees, and multiline branches, and rejects invalid containers and cycles with typed errors - add JSON and text export regressions for reserved names, duplicate positions, notebook cells, invalid nodes, and shared references Native Methodical QA: - add isolated VSIX installation and native workbench execution through Xvfb, CDP, and X11 with owned profiles, shared data, logs, and cleanup - define a 4-theme, 9-mode, 8-profile highlight matrix for each settings namespace, totaling 576 cases, plus a focused Codicon overlay - cover palette opt-in/out, explicit backgrounds, opacity, font styles, theme colors, disabled highlighting, subtags, and Codicon gutters - compare independent expected ranges, computed styles, overlay/gutter counts, geometry within one CSS pixel, and fixture color contrast - verify requested Codicon SVG digests and native image decoding; retain screenshots, DOM, ruler canvases, settings, source fixtures, editor identity, and the installed VSIX digest - add customer probes for contributed commands, filters, navigation, scan/view controls, diagnostics, exports, cache reset, and notebook edits, same-line cells, and closed-editor cleanup - add live grouped/flat settings, schema negative controls, import, precedence, watcher, JSONC, combined-language, and added-folder flows - add X11 focus/keyboard helpers, OCR readiness, capture acknowledgments, and notification/render readiness checks - generate indexed screenshot and ruler galleries with source hashes; constrain replacement evidence to successful matching flows and VSIXs - add customer/settings/migration fixtures, a pinned upstream settings inventory, and native QA execution and evidence documentation Build, benchmark, and evidence maintenance: - remove regexp-match-indices, its regexp-tree dependency, and treeify from package metadata and the lockfile - simplify webpack to the JavaScript build and remove unused TypeScript loader rules and registry patterns - track retired regex consumers separately from missing coverage and fail the equivalence CLI on hardcoded regexes, uncovered sources, or behavior differences - isolate historical bundles and regex-index dependencies in VM contexts; resolve upstream dependencies from their installation and preserve host-native RegExp behavior - use the selected baseline identity and separate current/baseline settings fixtures in performance scenarios; model editor tab groups - isolate smoke-run editor data and remove ELECTRON_RUN_AS_NODE from editor launches - align manifest, language-matrix, parity, regex, packaging, and workflow tests with the generated settings and asset contracts - remove obsolete Codicon build exclusions and trailing ignore whitespace Documentation and localization: - document settings precedence, source-preserving import, retained historical settings, current command IDs, and export-scheme changes - correct subtag inheritance, customHighlight naming, gutter support, prototype-tag configuration, highlight wording, and regex argument documentation - rename the import command in English and Simplified Chinese and remove unused duplicate namespace and deprecation strings
Upstream parity: - add and export ensureUpstreamDependencies for source loading and compiled-bundle preparation, including cached bundle reuse - install locked dependencies in the pinned upstream checkout once per loader instance, recording readiness only after installation succeeds - replace the build-only node_modules existence check with shared initialization that propagates failures and permits subsequent retries - condense loader documentation and clarify the OpenSSL requirement PR VSIX cleanup: - name the staging upload step and expose its artifact ID as a test-build job output - require a nonempty artifact ID for cleanup while retaining always() across publish outcomes Regression coverage: - add bootstrap tests for installation ordering, dependency reuse, cached bundles, nonzero exits, spawn errors, and successful retries - assert the staging upload output binding and exercise cleanup with and without an artifact ID across successful, failed, cancelled, and skipped publish results
The workflow now resolves publish targets from the immutable checkout and writes `targets` output only after target-list verification. Workflow: - move platform target resolution after immutable workflow checkout - parse and verify `scripts/release/targets.json` through `verifyTargetMap` before emitting `targets=` - keep immutable targets when trusted manifest data is missing, malformed, or drifted Tests: - add `runPlatformTargetResolution` workflow-step harness with staged manifests and isolated output targets - add coverage for manifest drift, malformed trusted content, missing build manifest, invalid target lists, and output-write failures - assert workflow step ordering and resolved `targets` propagation into platform build inputs
This branch has not been deployed
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.
Restore explicit colour-scheme activation so foreground-only custom
highlights retain their configured colours without injected backgrounds.
Highlight configuration:
Runtime lifecycle and tree interactions:
idempotent across deactivation and subscription disposal
settle progress sessions, and dispose output channels and tree resources
completions against disposed runtimes
state before passive reveals
propagation through command boundaries
Search and cleanup:
options, legacy migration, localization, documentation, and fixtures
imports, and obsolete runtime state
Release and packaging:
PR preview labels, and bundle checks
packaging ignore files from the opposite distribution format
Documentation and dependencies:
extension-host requirement, and incremental ripgrep output parsing
and translate remaining manifest command and setting strings
electron-to-chromium, node-releases, and update-browserslist-db
including associated lockfile integrity and dependency metadata
Regression coverage and evidence:
foreground-only custom highlights while retaining explicit palettes
hidden-editor highlights, and pending tree UI teardown
repeated export generations, and activation resource cleanup
membership, executable metadata, and packaging exclusions
Fixes #110