diff --git a/runbot/controllers/frontend.py b/runbot/controllers/frontend.py
index d846e1c4..f186a1fe 100644
--- a/runbot/controllers/frontend.py
+++ b/runbot/controllers/frontend.py
@@ -24,7 +24,7 @@ def route(routes, **kw):
@o_route(routes, **kw)
@functools.wraps(f)
def response_wrap(*args, **kwargs):
- projects = request.env['runbot.project'].search([])
+ projects = request.env['runbot.project'].search([('hidden', '=', False)])
more = request.httprequest.cookies.get('more', False) == '1'
filter_mode = request.httprequest.cookies.get('filter_mode', 'all')
keep_search = request.httprequest.cookies.get('keep_search', False) == '1'
diff --git a/runbot/models/project.py b/runbot/models/project.py
index cf9910b8..eba0bd8e 100644
--- a/runbot/models/project.py
+++ b/runbot/models/project.py
@@ -20,6 +20,8 @@ class Project(models.Model):
always_use_foreign = fields.Boolean('Use foreign bundle', help='By default, check for the same bundle name in another project to fill missing commits.', default=False)
tmp_prefix = fields.Char('tmp branches prefix', default="tmp.")
staging_prefix = fields.Char('staging branches prefix', default="staging.")
+ hidden = fields.Boolean('Hidden', help='Hide this project from the main page')
+ active = fields.Boolean("Active", default=True)
@api.model_create_multi
def create(self, vals_list):
diff --git a/runbot/views/bundle_views.xml b/runbot/views/bundle_views.xml
index 3e37e75c..cb02d487 100644
--- a/runbot/views/bundle_views.xml
+++ b/runbot/views/bundle_views.xml
@@ -14,6 +14,8 @@
+
+