repo descriptions updated

This commit is contained in:
2026-08-08 10:36:34 +00:00
parent daeb08c054
commit 2786f12ab6
13 changed files with 94 additions and 89 deletions
+9
View File
@@ -49,3 +49,12 @@ venv/
.idea/
.DS_Store
Thumbs.db
# Maintainer-only development context (never commit)
.internal/
AI_CONTENT.md
AI_CONTENT_ANALYSE.txt
AI_CONTEXT.md
AI_CONTEXT_ANALYSE.txt
DEVELOPMENT_NOTES.md
DEVELOPMENT_CONTEXT.md
+10 -17
View File
@@ -1,26 +1,19 @@
# Contributing to AssetManager
Contributions, bug reports, and forks are welcome.
Contributions and bug reports are welcome.
## Pull requests
- A pull request is a proposal. The maintainer decides whether, when, and in which form it is included.
- By intentionally submitting a contribution, you confirm that you are authorized to publish it and that it may be licensed under the Apache License 2.0.
- Do not copy third-party source code, graphics, or text without a demonstrably compatible license and all required copyright or license notices.
- Mention other products in public source code, comments, release notes, and documentation only when documenting an actual integration, dependency, or required compatibility. Pure product comparisons do not belong in the public source tree.
- Keep changes focused on the affected area and avoid modifying existing functionality without a valid technical reason.
- Add every new user-visible string to the existing translation system for all supported languages.
- New or changed user interfaces must work in both light and dark mode.
- For a release, update `VERSION`, `app/version.py`, `README.md`, and the corresponding file under `docs/version-history/`.
- Keep each pull request focused on a clear feature, fix, or documentation improvement.
- Do not include credentials, personal data, private infrastructure details, logs, databases, backups, or runtime configuration.
- Do not copy third-party source code, graphics, or text unless the license is compatible and all required notices are preserved.
- Mention third-party products only when documenting an actual integration, dependency, or compatibility requirement.
- Add user-visible text through the translation system for every supported language.
- User-interface changes must remain usable in both light and dark mode.
- Update relevant public documentation when released behavior changes.
## Before submitting
```bash
python tools/check_public_release.py
python tools/check_translations.py
python tools/validate_release.py
```
By intentionally submitting a contribution, you confirm that you are authorized to publish it and that it may be distributed under the Apache License 2.0 used by this project.
## Third-party components
Review every new dependency for license compatibility, provenance, maintenance status, and security risks. Update `THIRD_PARTY_NOTICES.md` and preserve all required license or NOTICE files in distributed products.
Review new dependencies for license compatibility, provenance, maintenance status, and security risks. Update `THIRD_PARTY_NOTICES.md` when a distributed dependency changes.
+52 -59
View File
@@ -1,38 +1,39 @@
# AssetManager 0.5.5.41
# AssetManager 0.5.5.42
AssetManager is a self-hosted web application for managing IT equipment and other organizational assets. The project is released under the **Apache License 2.0** and may be used, modified, and redistributed for private and commercial purposes.
AssetManager is a self-hosted web application for managing IT equipment and other organizational assets. It provides asset inventory, software inventory, remote job execution, reporting, privacy/retention documentation, and optional integration with MeshCentral.
The project is licensed under the **Apache License 2.0** and may be used, modified, and redistributed for private and commercial purposes under the terms of that license.
## Features
- configurable asset categories, fields, and status values
- asset lists, detail views, history, assignment, and return workflows
- Excel import and export, bulk changes, duplicate merging, and tree views
- hardware and software inventory
- job definitions and job execution with status tracking, callbacks, retries, and logs
- local user management and optional LDAP authentication
- protected local emergency administrator even when LDAP is enabled
- roles, visibility rules, translations, dark mode, and configurable appearance
- integrated backup and restore functions
- configurable asset categories, fields, status values, images, and assignments
- asset lists, detail views, history, bulk editing, Excel import/export, duplicate merging, and tree views
- hardware and software inventory with comparison and aggregation views
- job definitions and remote job execution with status tracking, callbacks, retries, and logs
- optional MeshCentral integration through the MeshCtrl command-line interface
## MeshCentral integration
The integration is optional. AssetManager uses MeshCtrl for supported device queries and remote jobs. It does not access the MeshCentral database directly. MeshCentral and MeshCtrl are independent third-party projects and are not part of this repository; they are installed as dependencies during the Docker build.
- local users, optional LDAP/Active Directory authentication, and a protected local emergency administrator
- roles and asset visibility rules
- multilingual user interface, dark mode, charts, and configurable appearance
- integrated application backup and restore
- privacy and retention documentation with text, HTML, and Excel exports
## Requirements
- Docker Engine with Docker Compose
- a suitable DNS name and HTTPS reverse proxy are recommended for production installations
- optionally, a reachable MeshCentral instance
- optionally, LDAP or Active Directory
- a supported PostgreSQL container as defined by `docker-compose.yml`
- a suitable DNS name and HTTPS reverse proxy are recommended for production use
- optional: reachable MeshCentral instance
- optional: LDAP or Active Directory
## Installation
Create the local environment file:
```bash
cp .env.example .env
```
Set at least these values in `.env`:
Set at least the required secrets in `.env`:
```env
POSTGRES_PASSWORD=CHANGE_ME
@@ -41,13 +42,13 @@ LOCAL_ADMIN_USERNAME=emergency-admin
LOCAL_ADMIN_PASSWORD=CHANGE_ME_MIN_12_CHARS
```
Then start the application:
Start the application:
```bash
docker compose up -d --build
```
By default, the application is available on port `8088`.
By default, AssetManager is exposed on port `8088`.
## Persistent data
@@ -63,11 +64,29 @@ data/
└── scripts/ deployed scripts
```
These directories and `.env` may contain credentials, personal data, or internal operational data and must not be committed to a public repository.
These directories and `.env` may contain credentials, personal data, or internal operational information and must not be committed to a public repository.
## Authentication
AssetManager supports local authentication and LDAP/Active Directory authentication. A protected local emergency administrator can be configured through environment variables so that administrative access remains possible if LDAP is unavailable.
LDAP debug logging is optional and should normally remain disabled. When disabled, LDAP logs contain only reduced authentication information.
## MeshCentral integration
MeshCentral integration is optional. AssetManager uses MeshCtrl for supported device queries, synchronization, presence information, file transfer, and remote jobs. AssetManager does not access the MeshCentral database directly.
MeshCentral and MeshCtrl are independent third-party projects and are not part of this repository. They are installed as dependencies during the Docker build.
## Privacy and retention
The application includes a **Security & Privacy** section for documenting processing activities, data categories, retention periods, recipients, international transfers, technical and organizational measures, and deletion checks. Reports can be exported as text, HTML, or Excel.
Deletion functions are restricted to administrators. Exported reports do not include passwords, callback tokens, or other secrets.
## Updating
Always back up `.env` and the complete `data/` directory before updating. Copy the new `assetmanager/` directory over the existing project directory and run:
Back up `.env` and the complete `data/` directory before updating. Copy the new `assetmanager/` directory over the existing project directory and rebuild the application container:
```bash
docker compose down
@@ -75,45 +94,19 @@ docker compose up -d --build
docker compose logs --tail=100 -f
```
Detailed release notes are stored in [`docs/version-history/`](docs/version-history/README.md).
## Creating a sanitized public source archive
The exporter creates a sanitized ZIP archive with exactly one top-level directory named `assetmanager/`:
```bash
python tools/create_github_source.py
```
Before exporting, the script validates versions, license metadata, sensitive runtime files, and unwanted product-comparison references.
## Validation
```bash
python tools/check_public_release.py
python tools/check_translations.py
python tools/validate_release.py
```
## Documentation
- [Client communication and software deployment architecture](docs/architecture/SOFTWARE-CLIENT-ARCHITECTURE.md)
- [Version history](docs/version-history/README.md)
- [Contributing](CONTRIBUTING.md)
- [Security policy](SECURITY.md)
- [Third-party notices](THIRD_PARTY_NOTICES.md)
## Third-party components
Direct dependencies and their license types are listed in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). During the Docker build, license files from the installed Python and Node.js packages are collected under `/app/THIRD_PARTY_LICENSES/`.
## Contributing
Contributions and forks are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md). A submission is a proposal and does not create an obligation to include it in the official project.
Historical release notes are available in [`docs/version-history/`](docs/version-history/README.md).
## Security
Do not disclose credentials or exploitable details in a public issue. See [SECURITY.md](SECURITY.md).
Do not commit credentials, tokens, private keys, personal data, runtime databases, logs, backups, or internal deployment details. Security reporting guidance is available in [SECURITY.md](SECURITY.md).
## Third-party components
Direct dependencies and license information are listed in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). During the Docker build, license files from installed Python and Node.js packages are collected under `/app/THIRD_PARTY_LICENSES/`.
## Contributing
Contributions and bug reports are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for repository contribution requirements.
## License
+1 -1
View File
@@ -1 +1 @@
0.5.5.41
0.5.5.42
+1 -1
View File
@@ -1,2 +1,2 @@
APP_VERSION = "0.5.5.41"
APP_VERSION = "0.5.5.42"
__version__ = APP_VERSION
+2
View File
@@ -163,3 +163,5 @@ See [UPDATE-NOTE.md](UPDATE-NOTE.md).
- [0.5.5.39](UPDATE-0.5.5.39.md) Privacy read-only tabs and permission-aware dashboard counts.
- [0.5.5.40](UPDATE-0.5.5.40.md) Privacy exports available to all authenticated users.
- [0.5.5.41](UPDATE-0.5.5.41.md) Configurable MeshCentral matching and synchronization dry run.
- [0.5.5.42](UPDATE-0.5.5.42.md) — public repository documentation cleanup
-2
View File
@@ -1,7 +1,5 @@
# AssetManager 0.3.7 - Internationalization foundation
Stable rollback reference: 0.3.6.3 (German-only UI).
New:
- English source/fallback language and German translation
- Per-user language setting
-2
View File
@@ -1,14 +1,12 @@
# AssetManager 0.3.8.0 - Central field catalog and MeshCentral GUI configuration
IMPORTANT:
- Stable rollback version before this structural migration: 0.3.7.10
- Create a PostgreSQL/database backup before first start.
- Do not copy .env, config.json, data, uploads or logs from this ZIP.
New database objects:
- field_definitions
- asset_field_values
- mesh_field_mappings (prepared for future database-backed mappings)
- category_fields.field_definition_id
Design:
-1
View File
@@ -11,5 +11,4 @@ Changes:
Important:
- .env, config.json, database data, uploads and logs are not included.
- The rollback version before this structural change remains 0.3.7.10.
- Create a PostgreSQL backup before installation.
+10
View File
@@ -0,0 +1,10 @@
# AssetManager 0.5.5.42
## Repository documentation cleanup
- Simplified the public README to released functionality, installation, operation, security, privacy, dependencies, updating, contribution information, and licensing.
- Removed proposal-style architecture documentation from the public documentation tree.
- Removed historical rollback and tentative implementation notes from public release notes.
- Added Git ignore rules for maintainer-only development context and AI/chat handover files.
- Updated the public-source exporter and release checker so maintainer-only files cannot be included in public source archives.
- No application runtime logic, database schema, or user configuration was changed.
+3 -1
View File
@@ -13,7 +13,7 @@ TEXT_SUFFIXES = {
".css", ".env", ".html", ".ini", ".js", ".json", ".md", ".py",
".sh", ".toml", ".txt", ".yaml", ".yml", ".ps1", ".cmd", ".bat",
}
SKIP_DIRS = {".git", ".venv", "venv", "__pycache__", "dist", "THIRD_PARTY_LICENSES"}
SKIP_DIRS = {".git", ".venv", "venv", "__pycache__", "dist", "THIRD_PARTY_LICENSES", ".internal"}
ALLOWED_RUNTIME_MARKER = ".gitkeep"
FORBIDDEN_FILES = {
".env",
@@ -21,6 +21,8 @@ FORBIDDEN_FILES = {
"data/config/APPINFO.json",
"app/main_old.py",
"PRUEFEN-0.5.5.5.sh",
"AI_CONTENT.md", "AI_CONTENT_ANALYSE.txt", "AI_CONTEXT.md", "AI_CONTEXT_ANALYSE.txt",
"DEVELOPMENT_NOTES.md", "DEVELOPMENT_CONTEXT.md",
}
FORBIDDEN_RUNTIME_DIRS = {
"data/postgres", "data/uploads", "data/logs", "data/backups",
+3 -1
View File
@@ -13,7 +13,7 @@ from zipfile import ZIP_DEFLATED, ZipFile
ROOT = Path(__file__).resolve().parents[1]
EXCLUDED_NAMES = {
".git", ".venv", "venv", "__pycache__", ".pytest_cache", ".mypy_cache",
".ruff_cache", "dist", "THIRD_PARTY_LICENSES",
".ruff_cache", "dist", "THIRD_PARTY_LICENSES", ".internal",
}
EXCLUDED_FILES = {
".env",
@@ -22,6 +22,8 @@ EXCLUDED_FILES = {
"app/main_old.py",
"assetmanager.db",
".public-release-local-patterns",
"AI_CONTENT.md", "AI_CONTENT_ANALYSE.txt", "AI_CONTEXT.md", "AI_CONTEXT_ANALYSE.txt",
"DEVELOPMENT_NOTES.md", "DEVELOPMENT_CONTEXT.md",
}
RUNTIME_DIRS = {
"data/postgres", "data/uploads", "data/logs", "data/backups",
+3 -4
View File
@@ -55,7 +55,6 @@ def check_repository_documentation() -> None:
ROOT / "CONTRIBUTING.md",
ROOT / "SECURITY.md",
ROOT / "THIRD_PARTY_NOTICES.md",
ROOT / "docs" / "architecture" / "SOFTWARE-CLIENT-ARCHITECTURE.md",
ROOT / "docs" / "version-history" / "README.md",
ROOT / "docs" / "version-history" / f"UPDATE-{(ROOT / 'VERSION').read_text(encoding='utf-8').strip()}.md",
]
@@ -117,10 +116,10 @@ def check_job_definition_frontend() -> None:
template_dir = APP_DIR / "templates" / "jobs"
required_templates = {
"powershell_wrapper.ps1": ["{{JobId}}", "{{CallbackUrl}}", "Eigene Befehle hier einfügen"],
"python_wrapper.py.txt": ["{{JobId}}", "{{CallbackUrl}}", "Eigene Befehle hier einfügen"],
"powershell_wrapper.ps1": ["{{JobId}}", "{{CallbackUrl}}"],
"python_wrapper.py.txt": ["{{JobId}}", "{{CallbackUrl}}"],
"bash_wrapper.sh": ["{{JobId}}", "{{CallbackUrl}}", "${status}", "${code}"],
"cmd_wrapper.cmd": ["{{JobId}}", "{{CallbackUrl}}", "Eigene Befehle hier einfügen"],
"cmd_wrapper.cmd": ["{{JobId}}", "{{CallbackUrl}}"],
"powershell_test.txt": ["{{AssetName}}", "{{Hostname}}"],
"python_test.txt": ["{{AssetName}}", "{{Hostname}}"],
"bash_test.txt": ["{{AssetName}}", "{{Hostname}}"],