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/ .idea/
.DS_Store .DS_Store
Thumbs.db 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 # Contributing to AssetManager
Contributions, bug reports, and forks are welcome. Contributions and bug reports are welcome.
## Pull requests ## Pull requests
- A pull request is a proposal. The maintainer decides whether, when, and in which form it is included. - Keep each pull request focused on a clear feature, fix, or documentation improvement.
- 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 include credentials, personal data, private infrastructure details, logs, databases, backups, or runtime configuration.
- Do not copy third-party source code, graphics, or text without a demonstrably compatible license and all required copyright or license notices. - Do not copy third-party source code, graphics, or text unless the license is compatible and all required notices are preserved.
- 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. - Mention third-party products only when documenting an actual integration, dependency, or compatibility requirement.
- Keep changes focused on the affected area and avoid modifying existing functionality without a valid technical reason. - Add user-visible text through the translation system for every supported language.
- Add every new user-visible string to the existing translation system for all supported languages. - User-interface changes must remain usable in both light and dark mode.
- New or changed user interfaces must work in both light and dark mode. - Update relevant public documentation when released behavior changes.
- For a release, update `VERSION`, `app/version.py`, `README.md`, and the corresponding file under `docs/version-history/`.
## Before submitting 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.
```bash
python tools/check_public_release.py
python tools/check_translations.py
python tools/validate_release.py
```
## Third-party components ## 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 ## Features
- configurable asset categories, fields, and status values - configurable asset categories, fields, status values, images, and assignments
- asset lists, detail views, history, assignment, and return workflows - asset lists, detail views, history, bulk editing, Excel import/export, duplicate merging, and tree views
- Excel import and export, bulk changes, duplicate merging, and tree views - hardware and software inventory with comparison and aggregation views
- hardware and software inventory - job definitions and remote job execution with status tracking, callbacks, retries, and logs
- 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
- optional MeshCentral integration through the MeshCtrl command-line interface - optional MeshCentral integration through the MeshCtrl command-line interface
- local users, optional LDAP/Active Directory authentication, and a protected local emergency administrator
## MeshCentral integration - roles and asset visibility rules
- multilingual user interface, dark mode, charts, and configurable appearance
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. - integrated application backup and restore
- privacy and retention documentation with text, HTML, and Excel exports
## Requirements ## Requirements
- Docker Engine with Docker Compose - Docker Engine with Docker Compose
- a suitable DNS name and HTTPS reverse proxy are recommended for production installations - a supported PostgreSQL container as defined by `docker-compose.yml`
- optionally, a reachable MeshCentral instance - a suitable DNS name and HTTPS reverse proxy are recommended for production use
- optionally, LDAP or Active Directory - optional: reachable MeshCentral instance
- optional: LDAP or Active Directory
## Installation ## Installation
Create the local environment file:
```bash ```bash
cp .env.example .env cp .env.example .env
``` ```
Set at least these values in `.env`: Set at least the required secrets in `.env`:
```env ```env
POSTGRES_PASSWORD=CHANGE_ME POSTGRES_PASSWORD=CHANGE_ME
@@ -41,13 +42,13 @@ LOCAL_ADMIN_USERNAME=emergency-admin
LOCAL_ADMIN_PASSWORD=CHANGE_ME_MIN_12_CHARS LOCAL_ADMIN_PASSWORD=CHANGE_ME_MIN_12_CHARS
``` ```
Then start the application: Start the application:
```bash ```bash
docker compose up -d --build docker compose up -d --build
``` ```
By default, the application is available on port `8088`. By default, AssetManager is exposed on port `8088`.
## Persistent data ## Persistent data
@@ -63,11 +64,29 @@ data/
└── scripts/ deployed scripts └── 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 ## 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 ```bash
docker compose down docker compose down
@@ -75,45 +94,19 @@ docker compose up -d --build
docker compose logs --tail=100 -f docker compose logs --tail=100 -f
``` ```
Detailed release notes are stored in [`docs/version-history/`](docs/version-history/README.md). Historical release notes are available 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.
## Security ## 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 ## 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 __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.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.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.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 # AssetManager 0.3.7 - Internationalization foundation
Stable rollback reference: 0.3.6.3 (German-only UI).
New: New:
- English source/fallback language and German translation - English source/fallback language and German translation
- Per-user language setting - Per-user language setting
-2
View File
@@ -1,14 +1,12 @@
# AssetManager 0.3.8.0 - Central field catalog and MeshCentral GUI configuration # AssetManager 0.3.8.0 - Central field catalog and MeshCentral GUI configuration
IMPORTANT: IMPORTANT:
- Stable rollback version before this structural migration: 0.3.7.10
- Create a PostgreSQL/database backup before first start. - Create a PostgreSQL/database backup before first start.
- Do not copy .env, config.json, data, uploads or logs from this ZIP. - Do not copy .env, config.json, data, uploads or logs from this ZIP.
New database objects: New database objects:
- field_definitions - field_definitions
- asset_field_values - asset_field_values
- mesh_field_mappings (prepared for future database-backed mappings)
- category_fields.field_definition_id - category_fields.field_definition_id
Design: Design:
-1
View File
@@ -11,5 +11,4 @@ Changes:
Important: Important:
- .env, config.json, database data, uploads and logs are not included. - .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. - 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", ".css", ".env", ".html", ".ini", ".js", ".json", ".md", ".py",
".sh", ".toml", ".txt", ".yaml", ".yml", ".ps1", ".cmd", ".bat", ".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" ALLOWED_RUNTIME_MARKER = ".gitkeep"
FORBIDDEN_FILES = { FORBIDDEN_FILES = {
".env", ".env",
@@ -21,6 +21,8 @@ FORBIDDEN_FILES = {
"data/config/APPINFO.json", "data/config/APPINFO.json",
"app/main_old.py", "app/main_old.py",
"PRUEFEN-0.5.5.5.sh", "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 = { FORBIDDEN_RUNTIME_DIRS = {
"data/postgres", "data/uploads", "data/logs", "data/backups", "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] ROOT = Path(__file__).resolve().parents[1]
EXCLUDED_NAMES = { EXCLUDED_NAMES = {
".git", ".venv", "venv", "__pycache__", ".pytest_cache", ".mypy_cache", ".git", ".venv", "venv", "__pycache__", ".pytest_cache", ".mypy_cache",
".ruff_cache", "dist", "THIRD_PARTY_LICENSES", ".ruff_cache", "dist", "THIRD_PARTY_LICENSES", ".internal",
} }
EXCLUDED_FILES = { EXCLUDED_FILES = {
".env", ".env",
@@ -22,6 +22,8 @@ EXCLUDED_FILES = {
"app/main_old.py", "app/main_old.py",
"assetmanager.db", "assetmanager.db",
".public-release-local-patterns", ".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 = { RUNTIME_DIRS = {
"data/postgres", "data/uploads", "data/logs", "data/backups", "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 / "CONTRIBUTING.md",
ROOT / "SECURITY.md", ROOT / "SECURITY.md",
ROOT / "THIRD_PARTY_NOTICES.md", ROOT / "THIRD_PARTY_NOTICES.md",
ROOT / "docs" / "architecture" / "SOFTWARE-CLIENT-ARCHITECTURE.md",
ROOT / "docs" / "version-history" / "README.md", ROOT / "docs" / "version-history" / "README.md",
ROOT / "docs" / "version-history" / f"UPDATE-{(ROOT / 'VERSION').read_text(encoding='utf-8').strip()}.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" template_dir = APP_DIR / "templates" / "jobs"
required_templates = { required_templates = {
"powershell_wrapper.ps1": ["{{JobId}}", "{{CallbackUrl}}", "Eigene Befehle hier einfügen"], "powershell_wrapper.ps1": ["{{JobId}}", "{{CallbackUrl}}"],
"python_wrapper.py.txt": ["{{JobId}}", "{{CallbackUrl}}", "Eigene Befehle hier einfügen"], "python_wrapper.py.txt": ["{{JobId}}", "{{CallbackUrl}}"],
"bash_wrapper.sh": ["{{JobId}}", "{{CallbackUrl}}", "${status}", "${code}"], "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}}"], "powershell_test.txt": ["{{AssetName}}", "{{Hostname}}"],
"python_test.txt": ["{{AssetName}}", "{{Hostname}}"], "python_test.txt": ["{{AssetName}}", "{{Hostname}}"],
"bash_test.txt": ["{{AssetName}}", "{{Hostname}}"], "bash_test.txt": ["{{AssetName}}", "{{Hostname}}"],