From c4d533038fc83abab6bb149c9374d510580c6741 Mon Sep 17 00:00:00 2001 From: Alexey Nikitin Date: Fri, 19 Jun 2026 08:03:44 +0400 Subject: [PATCH 1/5] fix: pass apps.json to image build via secret mount The build checks out frappe_docker (main), whose layered Containerfile now reads apps.json from a BuildKit secret (id=apps_json) instead of the old APPS_JSON_BASE64 build-arg. The workflow still passed the apps list through that build-arg, so it was silently dropped: bench init ran without erpnext, payments or hrms, and the published version-15 and stable images shipped frappe only. Pass apps.json via secret-files so it reaches the Containerfile's secret mount. --- .github/workflows/build_image.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_image.yml b/.github/workflows/build_image.yml index 76aa8c4986..476275a355 100644 --- a/.github/workflows/build_image.yml +++ b/.github/workflows/build_image.yml @@ -40,8 +40,6 @@ jobs: - name: Set Branch run: | - export APPS_JSON_PATH='${{ github.workspace }}/.github/helper/apps.json' - echo "APPS_JSON_BASE64=$(cat $APPS_JSON_PATH | base64 -w 0)" >> $GITHUB_ENV echo "FRAPPE_BRANCH=version-15" >> $GITHUB_ENV - name: Set Image Tag @@ -63,4 +61,5 @@ jobs: ghcr.io/${{ github.repository }}:${{ env.IMAGE_TAG }} build-args: | "FRAPPE_BRANCH=${{ env.FRAPPE_BRANCH }}" - "APPS_JSON_BASE64=${{ env.APPS_JSON_BASE64 }}" \ No newline at end of file + secret-files: | + apps_json=${{ github.workspace }}/.github/helper/apps.json \ No newline at end of file From 2c6c4b1e310176ce0dea37715cde9f0171539fb9 Mon Sep 17 00:00:00 2001 From: Pratheep Selvam Date: Sat, 20 Jun 2026 22:51:25 +0530 Subject: [PATCH 2/5] fix: add permission check for allocate_leaves_manually --- hrms/hr/doctype/leave_allocation/leave_allocation.py | 1 + 1 file changed, 1 insertion(+) diff --git a/hrms/hr/doctype/leave_allocation/leave_allocation.py b/hrms/hr/doctype/leave_allocation/leave_allocation.py index 180a99d4f6..89bb02d7b1 100755 --- a/hrms/hr/doctype/leave_allocation/leave_allocation.py +++ b/hrms/hr/doctype/leave_allocation/leave_allocation.py @@ -353,6 +353,7 @@ def create_leave_ledger_entry(self, submit=True): @frappe.whitelist() def allocate_leaves_manually(self, new_leaves: str | float, from_date: str | datetime.date | None = None): + self.check_permission("write") if from_date and not (getdate(self.from_date) <= getdate(from_date) <= getdate(self.to_date)): frappe.throw( _("Cannot allocate leaves outside the allocation period {0} - {1}").format( From d66082a4c530bade3e7e6c48f61fd2e3af9b4c58 Mon Sep 17 00:00:00 2001 From: Raghav Ruia Date: Tue, 16 Jun 2026 16:21:55 +0530 Subject: [PATCH 3/5] fix(pwa): preserve leave balance before application when viewing existing leaves Vue reactive watchers on leave_type and from_date/to_date were firing during initial document population in FormView.onMounted, causing setLeaveBalance() to overwrite the stored DB value with the current (post-deduction) balance. Added isFormInitialized flag that blocks setLeaveBalance() until after the first data load completes, matching the desk behaviour where get_leave_balance is only called on explicit user interactions. Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/views/leave/Form.vue | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/leave/Form.vue b/frontend/src/views/leave/Form.vue index ec3bf00791..2e6b710a37 100644 --- a/frontend/src/views/leave/Form.vue +++ b/frontend/src/views/leave/Form.vue @@ -18,7 +18,7 @@