diff --git a/addons_extensions/my_custom_kudo_link/__init__.py b/addons_extensions/my_custom_kudo_link/__init__.py
new file mode 100644
index 000000000..0650744f6
--- /dev/null
+++ b/addons_extensions/my_custom_kudo_link/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/addons_extensions/my_custom_kudo_link/__manifest__.py b/addons_extensions/my_custom_kudo_link/__manifest__.py
new file mode 100644
index 000000000..32802fe99
--- /dev/null
+++ b/addons_extensions/my_custom_kudo_link/__manifest__.py
@@ -0,0 +1,21 @@
+{
+ 'name': 'Project Kudos Link (Fixed)',
+ 'version': '18.0.1.0.0',
+ 'summary': 'Add Assign Kudos button and controlled employee domain by project visibility/generic',
+ 'category': 'Project',
+ 'author': 'You',
+ 'license': 'LGPL-3',
+ 'depends': [
+ 'project',
+ 'project_kudos_plus',
+ 'project_task_timesheet_extended',
+ ],
+ 'data': [
+ # 'views/project_task_kudo_button.xml',
+ 'views/task_assign_kudos_action.xml',
+ 'views/kudo_log_extend.xml',
+ ],
+ 'post_init_hook': 'post_init_hook',
+ 'installable': True,
+ 'application': False,
+}
diff --git a/addons_extensions/my_custom_kudo_link/models/__init__.py b/addons_extensions/my_custom_kudo_link/models/__init__.py
new file mode 100644
index 000000000..652b4b67d
--- /dev/null
+++ b/addons_extensions/my_custom_kudo_link/models/__init__.py
@@ -0,0 +1 @@
+from . import project_kudo_extend
diff --git a/addons_extensions/my_custom_kudo_link/models/project_kudo_extend.py b/addons_extensions/my_custom_kudo_link/models/project_kudo_extend.py
new file mode 100644
index 000000000..a62647f27
--- /dev/null
+++ b/addons_extensions/my_custom_kudo_link/models/project_kudo_extend.py
@@ -0,0 +1,70 @@
+from odoo import models, fields, api
+
+
+class ProjectTask(models.Model):
+ _inherit = "project.task"
+
+ def action_assign_kudos(self):
+ # Always load real task (form/kanban/list safe)
+ task_id = self.id or self._context.get('active_id')
+ task = self.env['project.task'].browse(task_id)
+ task.ensure_one()
+
+ allowed = task._allowed_employees().ids
+
+ ctx = dict(
+ self.env.context,
+ default_task_id=task.id,
+ default_project_id=task.project_id.id,
+ employee_domain=allowed,
+ )
+
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': 'Assign Kudos',
+ 'res_model': 'project.kudos',
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'context': ctx,
+ }
+
+ def _allowed_employees(self):
+ self.ensure_one()
+
+ Employee = self.env['hr.employee']
+ task = self
+ project = task.project_id
+ visibility = project.privacy_visibility
+
+ admin_emp = Employee.search([('user_id.id', '=', 2)])
+
+ # FIXED HERE ↓↓↓
+ if task.is_generic:
+ assignees = (
+ task.user_ids # your system uses user_ids assigned manually
+ ).mapped("employee_id")
+
+ return assignees - admin_emp
+
+ # PRIVATE
+ if visibility == "followers":
+ users = project.message_partner_ids.mapped("user_ids")
+ internal_users = users.filtered(lambda u: not u.share)
+ employees = internal_users.mapped("employee_id")
+ return employees - admin_emp
+
+ # INTERNAL ONLY
+ if visibility == "employees":
+ employees = Employee.search([
+ ('user_id.share', '=', False)
+ ])
+ return employees - admin_emp
+
+ # PUBLIC
+ employees = Employee.search([])
+ return employees - admin_emp
+
+
+class ProjectKudos(models.Model):
+ _inherit = "project.kudos"
+ # unchanged
diff --git a/addons_extensions/my_custom_kudo_link/views/kudo_log_extend.xml b/addons_extensions/my_custom_kudo_link/views/kudo_log_extend.xml
new file mode 100644
index 000000000..d2f0fa3c9
--- /dev/null
+++ b/addons_extensions/my_custom_kudo_link/views/kudo_log_extend.xml
@@ -0,0 +1,16 @@
+
+
+ project.kudos.form.extend
+ project.kudos
+
+
+
+
+
+ [('id', 'in', context.get('employee_domain', []))]
+
+
+
+
+
+
diff --git a/addons_extensions/my_custom_kudo_link/views/project_task_kudo_button.xml b/addons_extensions/my_custom_kudo_link/views/project_task_kudo_button.xml
new file mode 100644
index 000000000..256991f31
--- /dev/null
+++ b/addons_extensions/my_custom_kudo_link/views/project_task_kudo_button.xml
@@ -0,0 +1,21 @@
+
+
+ task.form.kudos.button
+ project.task
+
+
+
+
+
+
+
+
+
+
diff --git a/addons_extensions/my_custom_kudo_link/views/task_assign_kudos_action.xml b/addons_extensions/my_custom_kudo_link/views/task_assign_kudos_action.xml
new file mode 100644
index 000000000..671dfd1c4
--- /dev/null
+++ b/addons_extensions/my_custom_kudo_link/views/task_assign_kudos_action.xml
@@ -0,0 +1,15 @@
+
+
+ Assign Kudos
+
+
+ action
+ code
+
+
+action = records.action_assign_kudos()
+result = action
+
+
+
+