diff --git a/fusion_plating/fusion_plating_shopfloor/__manifest__.py b/fusion_plating/fusion_plating_shopfloor/__manifest__.py
index 38dba377..ae2a3253 100644
--- a/fusion_plating/fusion_plating_shopfloor/__manifest__.py
+++ b/fusion_plating/fusion_plating_shopfloor/__manifest__.py
@@ -45,6 +45,7 @@ Copyright (c) 2026 Nexa Systems Inc. All rights reserved.
'security/ir.model.access.csv',
'data/fp_sequence_data.xml',
'data/fp_cron_data.xml',
+ 'data/fp_tablet_config_data.xml',
'views/fp_shopfloor_station_views.xml',
'views/fp_bake_oven_views.xml',
'views/fp_bake_window_views.xml',
diff --git a/fusion_plating/fusion_plating_shopfloor/data/fp_tablet_config_data.xml b/fusion_plating/fusion_plating_shopfloor/data/fp_tablet_config_data.xml
new file mode 100644
index 00000000..a7df1ff1
--- /dev/null
+++ b/fusion_plating/fusion_plating_shopfloor/data/fp_tablet_config_data.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+ fp.shopfloor.tablet_idle_lock_minutes
+ 5
+
+
+
+ fp.shopfloor.tablet_pin_fail_threshold
+ 5
+
+
+
+ fp.shopfloor.tablet_pin_fail_lockout_minutes
+ 5
+
+
+
+ fp.shopfloor.tablet_warn_seconds_before_lock
+ 30
+
+
+
diff --git a/fusion_plating/fusion_plating_shopfloor/models/fp_shopfloor_station.py b/fusion_plating/fusion_plating_shopfloor/models/fp_shopfloor_station.py
index bafa4080..34409b15 100644
--- a/fusion_plating/fusion_plating_shopfloor/models/fp_shopfloor_station.py
+++ b/fusion_plating/fusion_plating_shopfloor/models/fp_shopfloor_station.py
@@ -73,6 +73,26 @@ class FpShopfloorStation(models.Model):
string='Notes',
)
+ # Phase 6 tablet PIN gate — per-station roster + idle override.
+ x_fc_authorised_user_ids = fields.Many2many(
+ 'res.users',
+ relation='fp_shopfloor_station_authorised_user_rel',
+ column1='station_id',
+ column2='user_id',
+ string='Authorised Operators',
+ help='If set, the tablet lock screen only shows tiles for these '
+ 'users. Empty = all operator-group users are shown. Use to '
+ 'restrict a tablet at a specialised station (e.g. EN Plating) '
+ 'to techs trained on that station.',
+ )
+ x_fc_idle_lock_minutes = fields.Integer(
+ string='Idle Lock (minutes)',
+ help='Per-station override for the auto-lock idle threshold. '
+ 'Leave blank to use the global default '
+ '(ir.config_parameter fp.shopfloor.tablet_idle_lock_minutes, '
+ 'default 5).',
+ )
+
_sql_constraints = [
(
'fp_shopfloor_station_code_uniq',
diff --git a/fusion_plating/fusion_plating_shopfloor/views/fp_shopfloor_station_views.xml b/fusion_plating/fusion_plating_shopfloor/views/fp_shopfloor_station_views.xml
index 4b787433..fba61866 100644
--- a/fusion_plating/fusion_plating_shopfloor/views/fp_shopfloor_station_views.xml
+++ b/fusion_plating/fusion_plating_shopfloor/views/fp_shopfloor_station_views.xml
@@ -49,6 +49,13 @@
+
+
+
+