Commit Graph

91 Commits

Author SHA1 Message Date
Loretta 98799a79e1 Refactor PreOrder and CargoTruck models, add ICargoTruck
Standardized PreOrder naming across classes, enums, and constants. Updated DB table name constants. Added IsTrailer, Created, and Modified properties to CargoTruck and linked to CargoPartner. Introduced ICargoTruck interface. Added SignalR support for fetching CargoTrucks by CargoPartnerId, with related service, interface, and test updates. Improved ToonDescription docs and updated UI components for new properties and naming. Refactored for clarity and consistency.
2026-05-30 16:26:59 +02:00
Loretta 3e4d3260f0 Add logger support to grids, data sources, and helpers
- Added optional logger to TaskHelper.Forget for fire-and-forget error logging
- Updated MgGridBase and data sources to accept and use logger instances
- Refactored AcSignalRDataSource to log deserialization faults
- Modified constructors and usages of SignalRDataSourceList/Observable for logger injection
- Added CountryCode to CargoTruck and displayed in new GridCargoTruck
- Introduced GridCargoTruck.razor and base class with logger integration
- Updated GridCargoPartner to use new cargo truck grid as detail row
- Improved code style and ensured consistent error handling throughout
2026-05-30 06:47:06 +02:00
Loretta 41ccb10ef7 Add CargoTruck CRUD, grid tabs, and related tests
- Introduced LicencePlate to CargoTruck and Shippings navigation to CargoPartner.
- Implemented CargoTruck CRUD methods in IFruitBankDataControllerCommon and FruitBankSignalRClient.
- Expanded tests for CargoTruck and improved assertions for CargoPartner and Partner.
- Updated CargoPartner grid to show CargoTrucks and Shippings in detail tabs.
- Minor formatting and settings.local.json Bash command update.
2026-05-29 12:16:48 +02:00
Loretta 69010921d7 Add CargoPartner management UI and API integration
- Introduced CRUD operations for CargoPartner in IFruitBankDataControllerCommon and SignalRTags.
- Implemented CargoPartner methods in FruitBankSignalRClient.
- Added GridCargoPartner.razor and GridCargoPartnerBase.cs for CargoPartner grid UI.
- Integrated CargoPartner grid into ShippingsAdmin page.
- Added GetCargoPartnersTest; updated and commented out some tests.
- Added CountryCode column to GridPartner.razor.
- Commented out SandboxEndpointSimpleTests.
- Minor refactoring for new entity and UI support.
2026-05-28 19:48:18 +02:00
Loretta ea643d0855 Add preorder entities, enums, and UI/admin updates
- Added PreorderWindowStart/End constants for product preorder visibility.
- Introduced CustomerCredit, Preorder, and PreorderItem entities with ORM mapping.
- Added PreorderStatus and PreorderItemStatus enums.
- Updated FruitBankConstClient with new BaseUrl options.
- Changed order grid tabs to admin-only and improved summary logic.
- Displayed CargoCompany in shipping document grid.
- Enhanced measured quantity highlighting in shipping item grid.
- Bumped app version to 1.0.2.
2026-05-26 17:04:07 +02:00
Adam b9b2767843 Előrendelés 2026-05-12 16:18:14 +02:00
Loretta aecd54ffdd [LOADED_DOCS: 4 files, no new loads]
Refactor docs: topic folders, TOON, XCUT, protocol sync

- Migrated all topic documentation into dedicated folders with canonical `README.md`, `ISSUES.md`, and `TODO.md` per topic (e.g., `LOGGING/`, `SIGNALR/`, `BINARY/`, `TOON/`).
- Added comprehensive TOON serializer documentation: design, format, options, attributes, inference, issues, and TODOs.
- Introduced `XCUT` folder for cross-cutting issues and TODOs, with canonical entries and topic cross-references.
- Updated all references and navigation to use new folder-based doc paths; fixed links and clarified doc structure.
- Enhanced AI agent protocol: enforce session skill preloading, `[LOADED_DOCS: ...]` short-name prefix, and mandatory `docs-check` skill for doc/code sync.
- Updated `.csproj` to include all `README.md` files for IDE visibility.
- Improved and clarified SignalR, grid, and project-level documentation.
- Minor code/test tweaks and doc content corrections for consistency.
2026-04-24 21:54:04 +02:00
Loretta e393718c20 Document FruitBankGridBase and update grid conventions
Expanded and clarified grid documentation:
- Grids/README.md now details FruitBankGridBase<TEntity> usage, default settings, and legacy MgGridBase.
- Main README.md and ARCHITECTURE.md reference Grids/README.md for grid details.
- Subfolder table in Grids/README.md includes descriptive notes.
- CONVENTIONS.md: removed outdated layout key section, streamlined code reuse guidance.
- GLOSSARY.md links to canonical MgGrid docs and new grid base docs.
- copilot-instructions.md: clarified .md sync rules and documentation layering.
These changes ensure clear, layered, and non-redundant grid documentation.
2026-03-29 18:30:33 +02:00
Loretta e2c49940c6 Update docs: enforce .md sync, clarify structure & TFMs
Expanded and clarified solution/project documentation:
- Added all top-level docs and docs/ folder as solution items in .sln files
- Inserted maintenance notices in all project and subfolder READMEs: require .md sync with code
- Main READMEs now include project tables with TFM, purpose, and README links
- ARCHITECTURE.md now details dependency graph and TFM rationale
- CONVENTIONS.md and copilot-instructions.md require code reuse, no redundancy
- Glossary and conventions updated to require terminology/rule updates with code changes
- Emphasized DLL-only AyCode.Core refs and nopCommerce .NET 9.0 requirement
- Clarified domain terms and intentional typos
- No code logic changes; documentation and guidance only
2026-03-29 09:26:16 +02:00
Loretta 45195b9cdf Add LLM onboarding docs and standardize project READMEs
- Introduced `.github/copilot-instructions.md` as the single source of truth for domain rules, conventions, and pitfalls in each solution.
- Added `CLAUDE.md` to guide Claude to read domain rules, glossary, and README before code generation.
- Updated all solution and project `README.md` files to document project purpose, structure, key files, and LLM context (Copilot/Claude/Cursor).
- Added or revised `docs/ARCHITECTURE.md`, `docs/CONVENTIONS.md`, and `docs/GLOSSARY.md` to clarify dependency graphs, naming, patterns, and terminology.
- For FruitBankHybridApp, added `docs/SCHEMA.md` (Toon format) and expanded the glossary with business/measurement terms and common traps.
- Updated all subfolder READMEs to list key files, conventions, and LLM maintenance notes.
- Ensured all documentation is cross-referenced, up-to-date, and includes explicit instructions for LLMs to keep docs in sync with code and avoid suggesting removal/rollback as a solution.
- Standardized documentation and onboarding for maintainability and LLM/code quality across all solutions.
2026-03-28 22:38:23 +01:00
Loretta d1c254d5d1 Merge branch 'main' into FruitBank_v0.0.8.0 2026-03-28 16:23:29 +01:00
Loretta fcd7866d09 Refactor measuring UI, centralize status logic
- Reworked MeasuringIn to use tabbed interface with card view and improved form layout
- Unified status badge/text/color logic via new MeasurementService helpers
- Updated MeasuringOut to use centralized status display and improved order note handling
- Added shipping date column to GridShippingDocument
- Improved link styling in MgGridDataColumn
- Removed redundant code and applied minor UI/layout tweaks for consistency and maintainability
2026-03-23 17:43:06 +01:00
Loretta ff1a5b63c1 Allow info panel collapse, improve grids, update SignalR
- Enable collapsing of info panel in MgGridWithInfoPanel for better UX
- Refactor GridStockTakingItem columns to use nameof(), clarify bindings, and improve maintainability
- Enhance MeasuringOut order selector with advanced search and clear button
- Update SignalR.Core reference to 9.0.14 in project file
- Minor cleanup of commented group display logic in grid
2026-03-22 16:04:17 +01:00
Loretta 1b68599acc Enhance file, shipping, stock, and Android deployment
- Added new file metadata fields and improved shipping entities
- Refined weight validation logic in OrderItemDto
- Extended SignalR for stock taking refresh/close operations
- Improved SignalR error handling and UI feedback
- Enhanced grid UI: links, audit info, date formatting, loading panels
- Disabled AOT for WebAssembly/Android; updated Android signing config
- Updated app versioning and SQL schema comparison
- NavMenu: "Leltározás" now admin-only
2026-03-06 14:57:01 +01:00
Loretta a73b72f831 Refactor SignalR, pallet editing, and error handling
- Refactored SignalRMessageToClientWithText<T> to use explicit constructors and properties.
- Added Shipping.Comment column to GridShippingDocument.razor.
- Updated PalletItemComponent: renamed audit callback, added pre-save/audit callback, improved UI refresh logic.
- MeasuringOut now uses new callbacks and _enablePalletItems flag to control editability during save/audit.
- Wrapped SignalR message handling and logout logic in try/catch for better error logging.
- MainLayout and MeasuringOut now implement IDisposable to unsubscribe SignalR events.
- UI editability and state updates improved for thread safety and responsiveness.
2026-03-06 14:27:22 +01:00
Loretta f5915f7f72 Add RefreshStockTakingItem support and UI error handling
Updated SignalR interface and tags to support refreshing
individual StockTakingItems. Improved StockTakingTemplate.razor
to show error messages and allow item refresh when invalid.
Removed unused method and updated project reference to
SignalR.Core 9.0.13.
2026-03-04 15:22:51 +01:00
Adam 288b81f8f5 shipping updates 2026-03-02 12:14:20 +01:00
Loretta 73ee9fade1 Enhance grids: add links, format dates, show modifiers
- Made ID columns clickable links to related edit pages
- Added ModifierId and Modified columns to item/pallet grids
- Applied consistent date formatting ("yyyy.MM.dd hh:mm")
- Updated usings for required namespaces
- Cleaned up lazy loading code and added null checks for safety
2026-02-23 18:04:43 +01:00
Adam a7387f88cf baseurl 2026-02-11 01:19:08 +01:00
Loretta 5604f1e338 Improve toolbar controls and async UX in stock taking
- Added EnableNew and EnableEdit parameters to MgGridToolbarTemplate for finer control of toolbar button states.
- Disabled "New", "Edit", and "Delete" actions in history and item grids by passing explicit parameters.
- Introduced DxLoadingPanel in StockTakingTemplate for better async feedback.
- Disabled "New" and "Close" buttons during async operations to prevent duplicates.
- Enhanced combo boxes with search/filter and usability features.
- Updated new/close stock taking logic to show loading, handle errors, and prevent duplicate actions.
- Set focus to item combo box after saving a StockTakingItemPallet.
- Removed global loading panel from StockTaking.razor; loading is now handled locally.
- Performed minor code cleanups and removed obsolete code.
2026-02-07 08:55:00 +01:00
Loretta 328f906a30 Add FileSubPath to Files; improve PDF rendering logic
Added FileSubPath property to Files entity and IFiles interface for sub-path storage. Updated IFiles to include FileHash and IsCompressed. Refactored GridShippingDocumentInfoPanel.razor to select and render PDFs only when associated files exist, with improved type checks and null handling. Performed minor code cleanup.
2026-01-24 10:19:36 +01:00
Loretta d918ffaae4 Merge branch 'main' of https://git.aycode.com/Adam/FruitBankHybridApp 2026-01-20 14:50:17 +01:00
Adam 677a33c706 File hash, isCompressed, set current date as default 2026-01-16 13:54:49 +01:00
Loretta 9a3817dff0 Improve docs, naming, and reference handling for Toon/DTOs
- Use nameof(Product) for key group consistency and refactor safety
- Expand ToonDescription attributes with business context and legacy notes
- Add and update property-level documentation for measurement logic
- Add tests for AcToonSerializer reference handling (@ref markers)
- Introduce FullProcessModel and TestContainerWithSharedRefs for tests
- Add DomainDescription constant for plugin documentation
- Refine test output and assertions for metadata and navigation completeness
- Minor property description and naming improvements throughout
2026-01-16 09:28:17 +01:00
Loretta 650a6f3773 Update PalletItemComponent to use 'Editable' parameter
Replaced 'IsEditable' with 'Editable' in PalletItemComponent usage within StockTakingTemplate.razor and MeasuringOut.razor to align with updated component API. Editability logic remains unchanged.
2026-01-12 07:20:50 +01:00
Loretta 0368f0809a Add stock taking close functionality and UI improvements
- Added CloseStockTaking method to IStockSignalREndpointCommon and implemented it in FruitBankSignalRClient.
- Renamed IsEditable to Editable in PalletItemComponent.razor and updated all usages.
- Updated StockTakingTemplate.razor: "Módosít" button is now always disabled, "Lezárás" button is enabled only when appropriate, and form layouts are disabled when stock taking is closed.
- Improved async UI updates by using InvokeAsync(StateHasChanged).
- Enhanced order note display and added warning state for invalid average weight in MeasuringOut.razor.
2026-01-09 11:10:15 +01:00
Loretta bba26c42da Merge branch 'main' of https://git.aycode.com/Adam/FruitBankHybridApp 2026-01-06 15:13:47 +01:00
Loretta eaa104659d Set default ShippingDate, refactor data reload logic
Set default ShippingDate to DateTime.Now in Shipping and ShippingDocument entities. Refactored data reload logic in GridDetailOrderDto.razor to use semaphore only for master grid and moved grid reload accordingly. Updated GridProductDtoTemplate.razor to load order data on tab change instead of detail row expansion.
2026-01-06 10:41:27 +01:00
Adam a2b22e8bf2 small fixes and android build changes 2026-01-05 09:13:37 +01:00
Loretta a75c152ac9 Enable conditional Delete button in grid toolbars
Add EnableDelete parameter to MgGridToolbarTemplate and set it dynamically in GridShippingDocument and GridShippingItemTemplate based on MeasuringStatus. Import relevant enums, make Grid_CustomizeElement static, and remove checked attribute from NavMenu. Improves safety and user experience for deletions.
2025-12-24 16:58:19 +01:00
Loretta cd954a1dd3 Redesign sidebar navigation for wide screens, new icons
Refactored sidebar to support collapse/expand on wide screens (≥1600px) via a hamburger menu. Updated CSS for transitions, icon resizing, and improved layout. Replaced navigation icons with new SVGs and added corresponding CSS variables/classes. Enhanced NavMenu.razor with tooltips and admin group labeling. Sidebar toggler now defaults to expanded. Improved UI with sticky sidebar and visible toggler. In GridShippingDocument, disabled "Ai process..." button when window is open and made window resizable. Improves navigation clarity and accessibility.
2025-12-24 10:07:51 +01:00
Loretta 7efc649d0b Add AI process modal to shipping grid with toolbar button
Added an "AI process" toolbar button to the shipping document grid, styled with a new magic/sparkles icon. Clicking the button opens a large modal (DxWindow) containing an iframe-based AI processing form (AiProcessFormTemplate). The modal reloads grid data on close. Also includes related CSS for the icon, minor grid layout logic improvements, and retains commented file upload code for reference.
2025-12-23 15:22:52 +01:00
Loretta 3a14b570ef Add user layout management to grids with toolbar actions
- Introduced separate auto-save and user-save layout storage keys
- Added IMgGridBase methods for saving, loading, resetting, and checking user layouts
- Updated grid toolbar with "Layout" menu (load, save, reset) and new icons
- Improved layout persistence logic and default layout restore
- Enabled forced grid re-render on layout reset
- Adjusted grid pager and page size defaults
- Updated related components to use new storage keys
- Fixed minor bugs and set RELEASE log level to Debug
2025-12-23 11:10:19 +01:00
Loretta 22821a4b27 Add URL link support to grid columns and info panel
- Introduced UrlLink parameter to MgGridDataColumn for clickable cell links with property placeholder support.
- Updated MgGridInfoPanel to render links for columns with UrlLink.
- Added unit tests for UrlLink rendering and value replacement.
- Added DynamicColumnAddingEventArgs and OnDynamicColumnAttributeAdding for dynamic column customization.
- Refactored layout storage key logic and enabled persistent info panel splitter size in MgGridWithInfoPanel.
- Updated product/order grids to use MgGridDataColumn with UrlLink and switched ProductDtos to AcObservableCollection for reactivity.
- Added AddPartner method to IFruitBankDataControllerCommon and FruitBankSignalRClient.
- Miscellaneous fixes: logger initialization, code cleanup, and improved comments.
2025-12-22 14:37:56 +01:00
Loretta 324f171377 Add MgLazyLoadContent, grid layout refactor, tests
- Introduced MgLazyLoadContent component with JS observer for lazy rendering of heavy content.
- Refactored MgGridBase for user-specific, customizable layout persistence using JS interop.
- Improved MgGridInfoPanel caching and state batching for performance.
- Updated PDF viewer to use lazy loading for better UX.
- Added AyCode.Blazor.Components.Tests project with bUnit/MSTest grid layout tests.
- Updated solution/project files and removed obsolete code.
- Minor UI and JS module loading improvements.
2025-12-21 16:29:37 +01:00
Loretta 271868b4d5 DevExpress Fluent theme: grid/info panel refactor
Major refactor for DevExpress Fluent theme compatibility:
- InfoPanel templates now use strongly-typed context (`InfoPanelContext`)
- Unified grid layout with `MgGridWithInfoPanel` wrapper
- CSS updated to use Fluent theme variables and container queries
- App-wide CSS cleanup and formatting improvements
- `.editorconfig` added for modern CSS support
- Improved InfoPanel instance resolution for nested grids
- Codebase is cleaner, more maintainable, and ready for further customization
2025-12-21 08:24:40 +01:00
Loretta e8d38f0038 Improve info panel tables, PDF support, and splash screen
Refactor shipping document info panel tables for better appearance and responsiveness using Bootstrap classes and improved CSS. Add PDF.js and custom PDF viewer scripts to enable PDF rendering in the info panel. Update splash screen handling for better Windows compatibility. Expand allowed Bash commands for development. Ensure UI updates in MgGridBase are properly scheduled with InvokeAsync.
2025-12-20 10:20:51 +01:00
Loretta 3c5b737207 Refactor MgGridInfoPanel for theme, UX, and PDF perf
- Refactored MgGridInfoPanel for DevExpress theme compatibility and improved usability; streamlined HTML/CSS, added OnDataItemChanged event, and enhanced empty state handling.
- Updated CSS to use theme variables, improved responsive grid and table styling, and enhanced integration with DevExpress components.
- GridShippingDocumentInfoPanel now uses OnDataItemChanged to load a random PDF per row selection; table layout and totals improved.
- Optimized pdfViewer.js to cache rendered PDFs, skip redundant renders, and improve logging and error handling.
- Added empty helper classes for future extensibility.
- Minor: MainLayout now uses RefreshMainLayout for UI refresh after auto-login.
2025-12-19 13:59:00 +01:00
Loretta 7923c42a1e Add fullscreen grid support and PDF preview in info panel
- Added fullscreen mode to grid and info panel components, including toolbar toggle and fullscreen styling.
- Introduced embedded PDF viewing in the info panel using PDF.js and a custom JavaScript viewer.
- Updated interfaces, CSS, and toolbar templates to support new features.
- Added new PDF asset (2_BANK  FRA.pdf) for document preview.
- Minor: Added local settings for Bash permission, fixed text encoding, and improved info panel table layout.
- No code changes in other referenced PDF files; added for informational or asset purposes only.
2025-12-19 07:15:54 +01:00
Loretta 2bcf802da7 Enhance MgGridInfoPanel with responsive/fixed columns
Add support for both responsive and fixed column layouts in MgGridInfoPanel via new parameters (TwoColumnBreakpoint, ThreeColumnBreakpoint, FourColumnBreakpoint, FixedColumnCount). Refactor CSS to use variables for breakpoints, add fixed column classes, and update container queries. Move styles to a new global mg-grid-info-panel.css, referenced in App.razor and index.html. Improve view mode styling and accessibility. Add Partner.Country column to GridPartner.razor.
2025-12-18 11:41:07 +01:00
Loretta 7f4052faa2 Refactor: decouple InfoPanel using MgGridWithInfoPanel
Major refactor to decouple InfoPanel logic from grid base. Introduces MgGridWithInfoPanel wrapper component to manage grid and InfoPanel layout and communication. InfoPanels are now customizable via Razor templates with named slots (header, footer, etc.), and grid-to-InfoPanel communication is routed through the wrapper. Removes legacy C#-only InfoPanel base classes and parameters from grid base. This improves flexibility, composability, and maintainability of grid+InfoPanel UIs.
2025-12-18 11:02:53 +01:00
Loretta 031fd9226b Add extensible InfoPanel system with custom templates
Introduce a flexible InfoPanel architecture for grid components, allowing per-grid customization via a new InfoPanelType parameter. Add MgInfoPanelTemplateBase for code-based InfoPanel templates with overridable header, content, and footer sections. Support custom templates in MgGridInfoPanel via new RenderFragment parameters. Add MgGridDataColumn for InfoPanel-specific column settings. Demonstrate usage with a custom InfoPanel for ShippingDocument grid. Maintains backward compatibility with default InfoPanel behavior.
2025-12-18 10:03:32 +01:00
Loretta 21548376ba Refactor grid toolbar and InfoPanel for reusability
Introduce reusable MgGridToolbarBase and MgGridToolbarTemplate components, replacing old toolbar implementations. InfoPanel now displays grid captions and includes a toolbar for quick actions. Refactor InfoPanel value rendering for improved DevExpress-like appearance. Update IMgGridBase and related classes to support captions and use new abstractions. Update usings and project structure accordingly.
2025-12-17 18:31:59 +01:00
Loretta 903711ed04 Refactor InfoPanel: non-generic, nested grid support
- Replace generic InfoPanel with non-generic version using IInfoPanelBase
- Add ParentGrid, GetRootGrid, and InfoPanelInstance to IMgGridBase for nested grid hierarchy
- Only root grid displays InfoPanel; nested grids inherit context
- InfoPanel now handles any data type via reflection and object
- All grid-to-InfoPanel communication routed through root grid
- Add option to show/hide readonly fields in edit mode
- Improve InfoPanel CSS for up to 4 responsive columns
- Remove redundant code and add debug output for InfoPanel data flow
2025-12-17 13:54:08 +01:00
Loretta a0f7ac6a29 Refactor grid InfoPanel: sticky, responsive, new icons
- Redesigned MgGridInfoPanel to use a sticky, scroll-aware layout via JavaScript for better UX when scrolling.
- InfoPanel now uses a responsive CSS grid layout with container queries for 1/2/3 column display based on width.
- Added new toolbar icons using SVG masks for a modern, consistent look; updated toolbar item class names.
- Added "Prev Row" and "Next Row" navigation buttons to the grid toolbar, with corresponding methods in grid base classes.
- Unified edit state enum naming to MgGridEditState and updated all references.
- Improved InfoPanel cell rendering for better text overflow handling and tooltips.
- Updated CSS for InfoPanel and grid, including sticky pane support and icon styles.
- Registered mgGridInfoPanel.js in App.razor and index.html for JS interop.
- Minor UI/UX tweaks: InfoPanel header, background colors, and panel sizing.
2025-12-17 10:20:18 +01:00
Loretta fbe09be307 Refactor grid editing, info panel, and toolbar system
- Introduce MgEditState enum and expose EditState on IMgGridBase
- Replace event-based syncing state with property-based state
- Redesign MgGridInfoPanel to support both view and edit modes with dynamic DevExpress editors and two-way binding
- Add visual distinction for edit/view modes in info panel
- Replace FruitBankToolbarTemplate with generic MgGridToolbarTemplate; toolbar adapts to grid edit/sync state
- Update all grid usages to use new toolbar
- Improve robustness, error handling, and maintainability throughout grid, info panel, and toolbar code
2025-12-17 06:21:21 +01:00
Loretta b3ddc86639 Add dynamic Info Panel to grids and update app splash image
Introduced a dynamic Info Panel to MgGridBase, allowing users to view details of the selected row in a side panel. Added the MgGridInfoPanel component with automatic form generation and styling. Updated all grid usages to use the new OnGridFocusedRowChanged event and enabled the info panel in GridPartner. Changed app logo and splash screen references in the Windows packaging manifest and added a placeholder splash image. Also included minor using fixes.
2025-12-16 16:12:38 +01:00
Loretta 80a1ce6a44 Refactor SignalR handling; add stock history tab
Refactored SignalR message handling to use strongly-typed SignalResponseDataMessage objects instead of JSON strings, updating event signatures and deserialization logic in MainLayout, MeasuringOut, and FruitBankSignalRClient. Added a new "Stock quantity changes" tab for administrators in GridProductDtoTemplate. Also added Microsoft.Extensions.ObjectPool package to the project.
2025-12-14 01:45:12 +01:00
Loretta fdcd47fa75 Update UI access from Developer to Administrator role
Replaced all checks and UI visibility conditions using LoggedInModel.IsDeveloper with LoggedInModel.IsAdministrator across Blazor components and grid templates. This change restricts advanced features and UI elements to administrator users instead of developer users. The "Delete" toolbar item remains accessible to developers. No other logic or functionality was modified.
2025-12-13 00:16:34 +01:00
Adam 01ffd22fca Allowed Martin to access edit 2025-12-11 18:32:29 +01:00