Skip to content
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.

## [Unreleased] - 2026-09-23 (Pfad A: Technical Hygiene, CI Lifecycle & Lock Defense)

### Documentation and localization
- Add complete Bengali and Portuguese guides, completing the eleven World Set documentation languages with reciprocal navigation and discovery indexing. Runtime UI remains six locales; runtime and version1.2.0 unchanged.
- Add the complete Arabic guide with reciprocal nine-language documentation navigation and discovery indexing. Runtime UI remains six locales; runtime and version1.2.0 unchanged.
- Add the complete Hindi guide with reciprocal eight-language documentation navigation and discovery indexing. Runtime UI remains six locales; runtime and version1.2.0 unchanged.
- Add the complete French guide with reciprocal seven-language documentation navigation and discovery indexing. Runtime UI remains six locales; runtime and version1.2.0 unchanged.
- Add the complete Russian guide, reciprocal six-language navigation and discovery indexing. Documentation languages and the existing six runtime UI languages remain distinct; no runtime or version change.
- Add the complete Japanese README against the corrected source, with reciprocal five-language navigation and discovery indexing. Runtime UI remains six locales; runtime and version1.2.0 are unchanged.
- Correct EN/DE/ES/ZH source descriptions before further translations: describe confirmed profile replacement, user-controlled export fields, platform launch and network limits, QSettings persistence, product separation, actual CI scope, and separate dependency licenses. Replace unsupported competitor guarantees with project capabilities and limits; align discovery text and existing metadata checks. No runtime or version change.
- Added the Simplified Chinese README (`README_zh.md`) and synchronized the EN/DE/ES language selectors and `llms.txt` index. The runtime UI language set remains six locales (`de`, `en`, `es`, `zh`, `ja`, `ru`).

### Fixed (Repo Hygiene, T-20260926-510472849)
- Untracked `BEFUNDE.md`, `STORE_CONTRACT.md` (internal Store release/versioning bookkeeping) and `_WARTUNG/msix_staging/` (staged MSIX build output) -- all stay on disk locally (gitignored), nothing was deleted. `PRODUCT_BOUNDARIES.md`, `scripts/verify_product_boundaries.py` and `tests/test_store_contract.py` now cite/check `STORE_LISTING.md`/`WINDOWS_STORE_PREP.md`/`store_package.json` only.
- `MARKETING-LOG.txt` and `RUNTIME_DAILY_CARE.md` were untracked in an earlier, over-eager pass on this branch and are restored here: `MARKETING-LOG.txt` is a deliberate public artifact (`pyproject.toml` project.url, a dedicated test); `RUNTIME_DAILY_CARE.md` is linked from README.md/README_de.md/README.es.md and is genuine migration/ops documentation, not agent scratch state.
Expand Down
107 changes: 55 additions & 52 deletions README.es.md

Large diffs are not rendered by default.

113 changes: 58 additions & 55 deletions README.md

Large diffs are not rendered by default.

349 changes: 349 additions & 0 deletions README_ar.md

Large diffs are not rendered by default.

349 changes: 349 additions & 0 deletions README_bn.md

Large diffs are not rendered by default.

107 changes: 55 additions & 52 deletions README_de.md

Large diffs are not rendered by default.

349 changes: 349 additions & 0 deletions README_fr.md

Large diffs are not rendered by default.

349 changes: 349 additions & 0 deletions README_hi.md

Large diffs are not rendered by default.

351 changes: 351 additions & 0 deletions README_ja.md

Large diffs are not rendered by default.

349 changes: 349 additions & 0 deletions README_pt.md

Large diffs are not rendered by default.

349 changes: 349 additions & 0 deletions README_ru.md

Large diffs are not rendered by default.

330 changes: 330 additions & 0 deletions README_zh.md

Large diffs are not rendered by default.

27 changes: 14 additions & 13 deletions llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,31 @@ Canonical repository: https://github.com/file-bricks/SoftwareCenter
Owner: file-bricks
Primary language: Python
Primary UI stack: PySide6
License: MIT
License: MIT for project source; dependencies have separate terms

## Summary

SoftwareCenter is a lightweight, cross-platform desktop organizer for software shortcuts. It organizes files and apps into renamable tabs using a clean PySide6 UI, saves view/tab states dynamically, and supports profile import/export (`softwarecenter-profile-v1.json`).

Discovery positioning: local-first PySide6 app launcher, desktop shortcut organizer, offline software launcher, tab-based program organizer, portable app profile manager.
Discovery positioning: local-first PySide6 app launcher, desktop shortcut organizer, tab-based program organizer, profile export and confirmed replacement import.

## Current Scope

- Primary platform: Cross-platform desktop (Windows, macOS, Linux).
- Build targets: PyInstaller standalone executables.
- Runtime UI languages: German, English, Spanish, Chinese (zh), Japanese, and Russian (six); README editions describe documentation availability and do not add UI locales.
- Non-goals: Network package installation, automatic software updates, cloud-account synchronizations.

## Important Files

- `README.md`: English GitHub entry point; `README_de.md`: German documentation; `README.es.md`: Spanish documentation.
- `README.md`: English canonical GitHub entry point and source of truth; `README_de.md`: German documentation; `README.es.md`: Spanish documentation; `README_zh.md`: Simplified Chinese documentation. `README_ja.md`: Japanese documentation. `README_ru.md`: Russian documentation. `README_fr.md`: French documentation. `README_hi.md`: Hindi documentation. `README_ar.md`: Arabic documentation. `README_bn.md`: Bengali documentation. `README_pt.md`: Portuguese documentation.
- `SoftwareCenter.py`: Main PySide6 application.
- `NOTICE`: Open-source attribution notice (Lukas Geiger, file-bricks, open-bricks umbrella).
- `SECURITY.md`: Hardened bilingual security policy (Supported versions, 48h SLA, invariants).
- `THIRD_PARTY_LICENSES.md`: Dependency inventory, SPDX identifiers, LGPLv3 dynamic linking guarantees, and 10 runtime invariants.
- `SECURITY.md`: Bilingual security policy, supported versions, reporting channels, and published response commitments.
- `THIRD_PARTY_LICENSES.md`: Dependency metadata and license inventory; not a blanket permissive-license or packaged-build compliance guarantee.
- `EXPORTFORMAT.md`: Schema definition for versioned profile JSON.
- `MARKETING-LOG.txt`: Target personas, dual-language search term matrices, competitive comparison, and governance invariants.
- `tests/`: Pytest suite (260+ tests certifying platform, metadata parity, boundaries, persistence, context-menu entry management, Tier-2 6-language internationalization, and trusted WACK tool discovery).
- `tests/`: Regression and metadata tests for named fixtures and contracts, including persistence, product separation, six UI languages, and WACK tool discovery; tests are not certification.

## Verification

Expand Down Expand Up @@ -58,12 +59,12 @@ SoftwareCenter is a local desktop application (PySide6/Python) for shortcut mana
- A cloud-synced launcher platform
- Microsoft Configuration Manager Software Center, SCCM/MECM, Intune Company Portal, or a remote deployment portal

## Architecture & Security Invariants
## Implementation Scope and Boundaries

- **100% Local-First:** Zero network egress, no background servers, no telemetry.
- **Unprivileged Execution:** Runs strictly in user space without requesting administrative (UAC) elevation.
- **Non-Destructive Operations:** Shortcut deletion only detaches UI metadata; target executables are never modified or removed.
- **Safe Link Resolution:** Safely parses Windows `.lnk`, macOS `.app`, and Linux `.desktop` targets without executing shell scripts.
- **Network:** The inspected organizer code has no account, telemetry, or cloud-sync implementation. URLs and launched programs can use the network; no runtime egress guarantee is made.
- **Launch context:** Platform APIs open targets; child-process privileges are not enforced or verified by the organizer.
- **Entry removal and import:** Removing an entry removes its saved reference without deleting the target. Import replaces the current profile after confirmation. Exported labels, paths, and notes can contain private details.
- **Platform handlers:** Windows shortcut lookup uses COM with a PowerShell fallback; Linux desktop commands and external applications may execute. Target behavior is not sandboxed.

## Audience

Expand All @@ -79,10 +80,10 @@ local-first software shortcuts manager tab organizer
PySide6 application launcher cross-platform Windows macOS Linux
softwarecenter-profile-v1.json profile export import
drag and drop desktop shortcut organizer Python
offline desktop organizer no cloud no telemetry
local desktop organizer with profile export
PyInstaller PySide6 portable app launcher
desktop shortcut organizer with tabs
offline software launcher no cloud no telemetry
desktop shortcut launcher with local settings
local PySide6 app launcher for Windows macOS Linux
portable software profile export import JSON
```
Expand Down
8 changes: 4 additions & 4 deletions tests/test_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,15 +317,15 @@ def test_target_personas_present_in_all_readmes():
assert "Persona 1:" in text_es and "Persona 2:" in text_es and "Persona 3:" in text_es and "Persona 4:" in text_es


def test_comparative_matrix_present_in_all_readmes():
def test_capability_boundaries_present_in_all_readmes():
text_en = (ROOT / "README.md").read_text(encoding="utf-8")
text_de = (ROOT / "README_de.md").read_text(encoding="utf-8")
text_es = (ROOT / "README.es.md").read_text(encoding="utf-8")

for text in [text_en, text_de, text_es]:
assert "Stardock Fences" in text
assert "SyMenu" in text
assert "Launchy / Flow Launcher" in text
assert "QSettings" in text
assert "softwarecenter-profile-v1.json" in text
assert "CI_CONTRACT.md" in text


def test_third_party_licenses_md_contract_and_invariants():
Expand Down
Loading