Release/4.4.1#325
Merged
Merged
Conversation
- Rename bin scripts to PATH-friendly commands (drop .sh, stufis- prefix): setup.sh -> stufis-setup, update-stufis.sh -> stufis-update, rebuild-stufis.sh -> stufis-rebuild, common.sh -> stufis-common. - Refocus stufis-rebuild on production caching: it now clears and warms the caches and rebuilds assets, without reinstalling dependencies (that overlap with stufis-setup is gone). - Add shared rebuild_caches() helper using 'php artisan optimize'. config:cache is safe again (the markdown config is serializable), so the previously skipped config caching is back in. - Update README + Hostsharing docs to the new command names. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…yout - Added unit tests for `Linkify::segments()` with various scenarios including project references, URLs, and HTML entities. - Improved layout of the transaction view by tweaking element order and border styles.
…basis handling - Updated validation rules in project state classes to use `Rule::exists()` for consistency and improved maintainability. - Renamed `recht-additional` to `recht_additional` to match the updated database schema. - Added regression tests to ensure correct handling and persistence of legal basis fields (`recht` and `recht_additional`).
Add an ISO 20022 CAMT upload path alongside the existing CSV import, sharing the same route and uploader; the format is auto-detected on upload and branches the parse step. CAMT needs no column mapping — rows are parsed into the BankTransaction shape via a fixed identity mapping and fed through the existing save() pipeline (running-balance calculation, Auslagen hookZahlung, redirect/flash). - New genkgo/camt dependency; parsing isolated in App\Support\Import\ CamtImportParser (booked-only entries, signed amounts, counterparty by direction, opening/closing balance incl. PRCD/ITBD fallback). - Extract CsvImportParser from the component for symmetry. - CAMT validation rules (App\Rules\CamtImport): account-IBAN sanity check, statement balance consistency, and saldo continuity; saldo is anchored to the statement opening balance. - Rename the component/route from csv-import to manual-import and neutralise CSV-specific wording; add a CAMT recommendation callout. - Tests + fixtures for camt.052/053 incl. sort, pending-skip, no-balance, parse-error and mismatch cases; changelog entry. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… cleanup - Adjusted demo data SQL file to align with fiscal year logic, including dynamic year shifting for accurate date alignment. - Replaced simplistic string substitution with regex-based year handling to prevent unintended replacements. - Enhanced seeding by ensuring directory cleanup (`auslagen`) removes all contents before re-seeding, avoiding duplication or nesting issues.
…ility of encrypted fields - Introduced `stufis:check-encryption` console command to check if encrypted model attributes can be decrypted using the current `APP_KEY`. - Helps surface encryption mismatches early, avoiding runtime errors caused by invalid ciphertext. - Supports filtering by model and configurable sample size for failing primary keys.
…bookings - Introduced null coalescence in `TransactionView` controller and Blade template to handle nullable `expensesReceiptPost` and `receipt` fields safely. - Enhanced error handling in `RestHandler` to address cases of missing `Haushaltstitel`, preventing silent failures during transaction processing.
…ct and tests - Added exception handling for `InvalidStateException` in `bootstrap/app.php` to redirect users to the login page instead of returning a 500 error. - Prevented logging of `InvalidStateException` as an error, treating it as a user-flow condition. - Introduced tests to validate proper redirection and suppression of error reporting for `InvalidStateException`.
…pdate seeding notes
… environments - Added `bin/artisan` script to run Laravel Artisan with a pinned PHP version (`php8.4`) for compatibility with Hostsharing's versioned binaries. - Enabled Symfony shell completion by making `artisan` executable on PATH. - Implemented static bash completion pre-generation for `artisan`, sourced during interactive shell logins. - Updated `setup_profile` to export `PHP_VERSION`, set PATH for bin, and integrate `artisan` tab completion if available.
The state rules keyed the protocol field as `protocol`, but the data key and DB column are `protokoll`, so $validator->validate() dropped it and the value was never saved. Align the rule (and the validation attribute name) to `protokoll`. Also remove the unused `project.protocol_url.prefix` setting (defaults + config migration) — the protocol link is stored as a full URL. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add two creation flows to the edit-project component via the `sourceId` + `sourceKind` URL params (entry-only; ignored/validated server-side): - copy: duplicate a project as a fresh draft in the same budget plan, carrying meta, posts and attachments (files duplicated on save). - leftovers: carry the unspent remainder of a *terminated* project into a new draft in the latest budget plan, remapping each post's Titel across plans by the stable titel_nr (unmatched -> empty Titel). Changing the budget plan now live-remaps every post's Titel too. The origin is persisted via new nullable `projekte.source_id`/`source_kind` columns (self-FK, nullOnDelete) and rendered as a clickable "P#<id>" backlink. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Relocate the status-change action into the "…" menu and make the whole state card a click target (frosted "Status ändern" hover overlay). - Make the budget-plan card a clickable link to the legacy plan view. - Show neutral (gray) summary cards and a "–" ratio when a side has no budget, instead of a misleading warning colour / "0 %". - Rename the available cards to "Ungenutzte Ausgaben" / "Ausgefallene Einnahmen" for terminated projects. - Append copy/leftover references (back- and forward-links) to the header meta line as clickable P#<id> badges. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… and therefore not rendered properly. Also introducing a command to invalidate cached Belege PDFs
Replace the read-only /config dump with an admin-gated Livewire settings editor (pages::settings) for the runtime Setting keys. Split the app-config ability into view-app-configuration (open) and update-app-configuration (save). Wire the previously-dormant project.description.min_length/max_length into project validation via DescriptionLengthRule: counts only visible characters (HTML stripped), with max -1 disabling the upper bound and min 0 the lower. Default max_length is now -1 (unlimited) in defaults() and the legacy import. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a legal_bases (Rechtsgrundlagen) editor to the settings page: add / edit / activate rows with drag-and-drop ordering via Livewire 4 wire:sort (persisted as sort_order on save). Slug is read-only once created, and a basis still referenced by a project cannot be deleted (deactivate instead) to keep project lookups intact. Remove the finance_mail setting: nothing consumed it, and the legacy import even read the wrong key, so it only ever stored an empty string. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Prefer the refs/tags/ namespace and check out detached when deploying a specific ref, so a release tag never resolves ambiguously to a stale local branch of the same name (e.g. v4.4.0 tag vs v4.4.0 branch). This also stops accumulating same-named local branches on the prod box. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Checklist for @DieMichii
Changelog:
FIXME