Replace fire-and-forget key delivery with a sync-status protocol that verifies key consistency between main thread and Service Worker using SHA-256 fingerprints via MessageChannel request-response. - SW (ts/sw.ts): persist keys in IndexedDB, auto-restore on activate; respond to sync-status queries with loaded keys + fingerprints; support cryptio-clear-keys to wipe memory + DB. - New ts/utils/swSync.ts: single entry point for SW registration, key sync, and status verification. Controller change listener re-syncs on SW restart. Deduplicates concurrent sync calls. - Deleted ts/utils/swKeySender.ts (replaced by swSync.ts). - Remove SW registration (~55 lines) from cryptioSaveImage.ts; setup() now calls syncSWStatus(). - uploadUtils.ts: drop 5-retry preview loop (~6.4s worst case); single attempt with syncSWStatus fallback on failure. - cryptioSettings.ts: sync after key changes; clearSWKeys() on Clear All. - cryptioUploadImage/Video.ts: syncSWStatus in setup + preview fallback. - types.ts: add SWStatus interface.
84 lines
1.8 KiB
TOML
84 lines
1.8 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=70.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "cryptio"
|
|
version = "0.0.2"
|
|
description = "A collection of custom nodes for ComfyUI"
|
|
authors = [{ name = "ComfyUI-CryptoIO", email = "thesoup@foxmail.com" }]
|
|
readme = "README.md"
|
|
license = { text = "GNU General Public License v3" }
|
|
requires-python = ">=3.10"
|
|
classifiers = []
|
|
dependencies = [
|
|
"av",
|
|
"cryptography",
|
|
]
|
|
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"bump-my-version",
|
|
"coverage", # testing
|
|
"mypy", # linting
|
|
"pre-commit", # runs linting on commit
|
|
"pytest", # testing
|
|
"ruff", # linting
|
|
]
|
|
|
|
[project.urls]
|
|
Repository = "https://github.com/Suzu008/cryptio"
|
|
BugTracker = "https://github.com/Suzu008/cryptio/issues"
|
|
Documentation = "https://github.com/Suzu008/cryptio/wiki"
|
|
|
|
|
|
[tool.comfy]
|
|
PublisherId = "Suzu008"
|
|
DisplayName = "CryptIO"
|
|
Icon = ""
|
|
Tags = []
|
|
Repository = "https://github.com/Suzu008/cryptio"
|
|
|
|
includes = []
|
|
|
|
[tool.setuptools.package-data]
|
|
"*" = ["*.*"]
|
|
|
|
[tool.pytest.ini_options]
|
|
minversion = "8.0"
|
|
testpaths = ["tests"]
|
|
|
|
[tool.mypy]
|
|
files = "."
|
|
|
|
# Use strict defaults
|
|
strict = true
|
|
warn_unreachable = true
|
|
warn_no_return = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
# Don't require test functions to include types
|
|
module = "tests.*"
|
|
allow_untyped_defs = true
|
|
disable_error_code = "attr-defined"
|
|
|
|
[tool.ruff]
|
|
# extend-exclude = ["static", "ci/templates"]
|
|
line-length = 140
|
|
src = ["src", "tests"]
|
|
target-version = "py39"
|
|
|
|
# Add rules to ban exec/eval
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"S102", # exec-builtin
|
|
"S307", # eval-used
|
|
"W293",
|
|
"F", # The "F" series in Ruff stands for "Pyflakes" rules, which catch various Python syntax errors and undefined names.
|
|
# See all rules here: https://docs.astral.sh/ruff/rules/#pyflakes-f
|
|
]
|
|
|
|
[tool.ruff.lint.flake8-quotes]
|
|
inline-quotes = "double"
|