Skip to content

Changelog

Here we list the work packages that we have gradually completed.

23.03.2026

  • NEW: Integrated help system on table- and/or column-level by just editing markdown files.
  • NEW: user profile dialog for language, light/dark mode and password change
  • NEW: dark mode support

22.03.2026

  • NEW: More control over the layout in the record views. Different layouts for input and output possible. Tabs, Columns, Accordions etc. in Detail View.

21.03.2025

20.03.2026

19.03.2026

  • NEW: Split-view editors (Richtext, Markdown, Diagram, Code, JSON) can now be enlarged so there is more space to work.
    alt text

17.03.2026

  • NEW: Translation right from the start
    alt text

14.03.2026

  • UPD: moved api.php and to \System directory
  • NEW HIGHLIGHT: "Pair" two or more office apps (trusted connection via tokens) and create "RemoteReferences" eg. App1 exposes data which App2, ... can reference (like remote lookups)

13.03.2026

  • NEW HIGHLIGHT: Readonly API with table-level and column-level-configuration.

11.03.2026

  • FIX: Fixed error with processing user registrations
  • FIX: Fixed error with APP_URL in Linux systems

09.03.2026

08.03.2026

  • NEW: ->autofocus() focuses field in edit mode
    (new StringProperty("reference"))->autofocus(),
    
  • NEW: Mermaid Diagram Editor for TextProperty
  • NEW: Markdown Editor for TextProperty
  • NEW: WYSIWYG Editor for TextProperty
  • NEW HIGHLIGHT: Pin records

  • NEW: If allowed, inline lists (hasMany) have an Add-button:

    $this->hasMany("feedbacks", TicketFeedback::class, "ticket_id")->allowAdd(true),
    
    alt text

07.03.2026

  • New: 2FA-code-verification got a new Paste-Button which makes it even easier to paste the One-Time-Password (OTP) from imcoming E-Mail into the field:

  • New: Simplified field-level visibility and -readonly-state. Often you need to enter a value when adding but must never modify again. Or Vice-versa: you allow editing after record has been initially saved (inserted):
    1
    2
    3
    4
    5
    6
    7
    8
    9
    protected function beforeRender(): void
    {
        // allow editing subject/parent_id only on insert (add new)
        $this->readonlyAfterInsert('subject');
        $this->hiddenAfterInsert('parent_id');
    
        // allow editing content only AFTER insert
        $this->visibleAfterInsert('content');
    }
    
  • New: HIGHLIGHT Field-level readonly/editable using beforeRender() function with various options (bool | callable):
    1
    2
    3
    4
    protected function beforeRender(): void
    {
        $this->getProperty('content')->setReadonly(true);
    }
    
  • New: Field-level visibility using beforeRender() function. Various options with bool and callables:
    protected function beforeRender(): void
    {
        // with booleans
        $this->getProperty('field_a')?->setVisible(true);
        $this->getProperty('field_b')?->setVisible(false);
    
        // with current record's data
        $this->getProperty('field_c')?->setVisible($this->is_active);
    
        // with some function call or callable
        $this->getProperty('field_d')?->setVisible($this->isFieldCVisible());
        $this->getProperty('field_e')?->setVisible(fn() => $this->position >= 10);
    
        $is_superadmin = Auth::user()?->isSuperAdmin();
        $this->getProperty('password')?->setVisible($is_superadmin);
    }
    
  • New: Helper methods in Auth:

    1
    2
    3
    $user = Auth::user();
    $is_superadmin = $user?->isSuperAdmin();
    $is_admin      = $user?->isAdmin(); // user is in admin-group
    

  • New: Inline lists now can be expanded (#1), references have more buttons for opening reference in modal, new tab, same tab (#2):
    alt text

  • New: Inline lists of related records got more buttons for opening the related record in modal, new tab, same tab:
    alt text
  • New: Short tutorial on E-Mail notifications
  • New: Simplified retrieval of a referenced record's label: getReferenceDisplayText($propertyname)
    1
    2
    3
    4
    5
    6
    public function getLabelHtml(): string
    {
        $model_text = $this->getReferenceDisplayText('model');
        return Output::createTile($this->icon(), $model_text . ' / ' . $this->label)
            ->setSubtitle($this->name);
    }
    
    alt text
  • New: helper function renderCheckbox(true|false) for rendering boolean states (on/off).
    Example:
    1
    2
    3
    4
    public function getLabel(): string
    {
        return $this->renderCheckbox($this->is_active) . ' ' . $this->label;
    }
    
    alt text
  • New: $this->isNew() returns true if we are (still) in insert mode.
  • New: field-level visibility: (new StringProperty())->setVisible(fn() => ...)
    Example: show field before insert, hide field after insert:
    ->setVisible(fn() => $this->getId() == null)
  • Simplified: parent-children-relations
    $this->hasMany('properties', CustomProperty::class)
    alt text
  • Simplified: getLabelHtml() with Tiles
    1
    2
    3
    4
    5
    public function getLabelHtml(): string
    {
        return Output::createTile($this->icon(), $this->label)
            ->setSubtitle($this->name);
    }
    
    alt text
  • New: breadcrumbs, auto-detected, based on parent-relations
    alt text
  • New: simplified creation of parent-references:
    $this->hasParent('namespace', CustomNamespace::class)
    alt text