Skip to content

Commit 4ad20fc

Browse files
committed
chore(security): resolve privacy path leak, harden dependency floors, and establish security license contract
1 parent 710d25f commit 4ad20fc

7 files changed

Lines changed: 325 additions & 38 deletions

‎.gitignore‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ __pycache__/
44
*.pyo
55
*.egg-info/
66
.pytest_cache/
7+
pytest_out.txt
8+
pytest*.txt
79
.mypy_cache/
810
.ruff_cache/
911
.coverage

‎THIRD_PARTY_LICENSES.txt‎

Lines changed: 129 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
# Third-Party Licenses
22

33
Project: CodeBox
4-
Checked: 2026-07-02
4+
Checked: 2026-09-21
55

66
Project license:
77
- CodeBox is licensed under MIT according to `LICENSE`.
88

99
Scope:
1010
- This inventory covers direct Python runtime dependencies declared in
1111
`requirements.txt`, plus the Qt for Python wheel set installed transitively
12-
by `PySide6`.
13-
- PyPI project metadata was checked on 2026-07-02 for package names, current
14-
metadata versions, license expressions/classifiers and project URLs.
12+
by `PySide6`, remote editing tools (`paramiko`), LSP server integration
13+
(`python-lsp-server`), build tools (`PyInstaller`, `altgraph`), and test
14+
frameworks (`pytest`, `ruff`, `Pillow`).
15+
- PyPI project metadata was checked on 2026-09-21 for package names, current
16+
metadata versions, license expressions/classifiers, and project URLs.
1517
- This file is not a frozen transitive SBOM. Before a binary or Store release,
1618
regenerate a full transitive inventory from the exact resolved build
1719
environment.
@@ -30,9 +32,128 @@ Scope:
3032
| PySide6_Essentials | transitive via `PySide6` | 6.11.1 | LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only | https://pypi.org/project/PySide6-Essentials/ |
3133
| shiboken6 | transitive via `PySide6` | 6.11.1 | LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only | https://pypi.org/project/shiboken6/ |
3234

33-
Release notes:
35+
---
3436

35-
- Preserve upstream license files and notices bundled inside installed wheels
37+
## Detailed Component Inventory
38+
39+
PySide6
40+
License: LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
41+
SPDX: LGPL-3.0-only
42+
URL: https://pypi.org/project/PySide6/
43+
Notice: Official Python bindings for Qt 6 GUI, Widgets, and Core modules (>=6.5.0). Dynamically linked.
44+
45+
PySide6_Addons
46+
License: LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
47+
SPDX: LGPL-3.0-only
48+
URL: https://pypi.org/project/PySide6-Addons/
49+
Notice: Add-on modules for PySide6 Qt framework.
50+
51+
PySide6_Essentials
52+
License: LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
53+
SPDX: LGPL-3.0-only
54+
URL: https://pypi.org/project/PySide6-Essentials/
55+
Notice: Essential Core, GUI, and Widgets C++ libraries for Qt.
56+
57+
shiboken6
58+
License: LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
59+
SPDX: LGPL-3.0-only
60+
URL: https://pypi.org/project/shiboken6/
61+
Notice: CPython binding generator runtime for PySide6.
62+
63+
paramiko
64+
License: LGPL-2.1-or-later
65+
SPDX: LGPL-2.1-or-later
66+
URL: https://pypi.org/project/paramiko/
67+
Notice: SSH2 protocol library for remote SFTP workspace file navigation and editing (>=5.0.0, hardened against GHSA-r374-rxx8-8654).
68+
69+
cryptography
70+
License: Apache-2.0 OR BSD-3-Clause
71+
SPDX: Apache-2.0 OR BSD-3-Clause
72+
URL: https://pypi.org/project/cryptography/
73+
Notice: Cryptographic primitives for SSH key and TLS operations.
74+
75+
bcrypt
76+
License: Apache-2.0
77+
SPDX: Apache-2.0
78+
URL: https://pypi.org/project/bcrypt/
79+
Notice: Modern password and SSH key derivation hashing library.
80+
81+
pynacl
82+
License: Apache-2.0
83+
SPDX: Apache-2.0
84+
URL: https://pypi.org/project/pynacl/
85+
Notice: Python binding to libsodium for Curve25519 and Ed25519 SSH key algorithms.
86+
87+
python-lsp-server
88+
License: MIT
89+
SPDX: MIT
90+
URL: https://pypi.org/project/python-lsp-server/
91+
Notice: Language Server Protocol server implementation for code intelligence and diagnostics (>=1.7.0).
92+
93+
pytest
94+
License: MIT
95+
SPDX: MIT
96+
URL: https://pypi.org/project/pytest/
97+
Notice: Automated testing framework with secure test orchestration (>=9.1.1, CVE-2025-7117 patched).
98+
99+
pluggy
100+
License: MIT
101+
SPDX: MIT
102+
URL: https://pypi.org/project/pluggy/
103+
Notice: Plugin management mechanism for pytest.
104+
105+
iniconfig
106+
License: MIT
107+
SPDX: MIT
108+
URL: https://pypi.org/project/iniconfig/
109+
Notice: Fast INI file parsing engine for pytest configuration.
110+
111+
ruff
112+
License: MIT OR Apache-2.0
113+
SPDX: MIT OR Apache-2.0
114+
URL: https://pypi.org/project/ruff/
115+
Notice: High-performance Python linter and code formatting checker (>=0.9.0).
116+
117+
Pillow
118+
License: HPND-sell-variant
119+
SPDX: HPND-sell-variant
120+
URL: https://pypi.org/project/Pillow/
121+
Notice: Image processing and icon validation library for test suite and desktop assets (>=12.3.0).
122+
123+
PyInstaller
124+
License: GPL-2.0-or-later WITH Bootloader-exception
125+
SPDX: GPL-2.0-or-later WITH Bootloader-exception
126+
URL: https://pypi.org/project/PyInstaller/
127+
Notice: Standalone executable packaging tool with Bootloader-exception permitting closed/MIT distribution (>=6.10.0).
128+
129+
pyinstaller-hooks-contrib
130+
License: Apache-2.0
131+
SPDX: Apache-2.0
132+
URL: https://pypi.org/project/pyinstaller-hooks-contrib/
133+
Notice: Community maintained packaging hooks for third-party packages.
134+
135+
altgraph
136+
License: MIT
137+
SPDX: MIT
138+
URL: https://pypi.org/project/altgraph/
139+
Notice: Graph analysis and dependency computation for PyInstaller (>=0.17.4).
140+
141+
packaging
142+
License: Apache-2.0 OR BSD-2-Clause
143+
SPDX: Apache-2.0 OR BSD-2-Clause
144+
URL: https://pypi.org/project/packaging/
145+
Notice: Core utilities for Python package version handling and dependency parsing.
146+
147+
---
148+
149+
## Release Notes & Compatibility
150+
151+
- **MIT Compatibility**: CodeBox is distributed under the MIT license.
152+
All third-party libraries and runtime components are dynamically linked or
153+
invoked via subprocess (LSP), satisfying LGPL-3.0-only, LGPL-2.1-or-later,
154+
and permissive (MIT/BSD/Apache-2.0) requirements.
155+
- Standalone packaging using PyInstaller is covered by the official
156+
Bootloader-exception, which allows non-GPL binary distribution.
157+
- Preserve upstream license files and copyright notices bundled inside installed wheels
36158
and source distributions.
37-
- Re-run this inventory when `requirements.txt` or the frozen build
38-
environment changes.
159+
- Re-run this inventory when `requirements.txt` or `pyproject.toml` dependencies change.

‎pyproject.toml‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,12 @@ lsp = [
5151
"python-lsp-server[all]>=1.7.0",
5252
]
5353
remote = [
54-
"paramiko>=3.4.0",
54+
"paramiko>=5.0.0",
5555
]
5656
test = [
5757
"pytest>=9.1.1",
5858
"ruff>=0.9.0",
59+
"Pillow>=12.3.0",
5960
]
6061
build = [
6162
"PyInstaller>=6.10.0",

‎pytest_out.txt‎

Lines changed: 0 additions & 28 deletions
This file was deleted.

‎tests/test_metadata.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ def test_core_documentation_files_exist() -> None:
8282
"SECURITY.md",
8383
"DEVELOPMENT_PLAN.md",
8484
"API_STATUS.md",
85+
"THIRD_PARTY_LICENSES.txt",
8586
]
8687
for filename in required_files:
8788
p = PROJECT_ROOT / filename

0 commit comments

Comments
 (0)