From 8dbccd3775517ad28f66f130e2f41157a9bba761 Mon Sep 17 00:00:00 2001 From: Andrii Verbytskyi Date: Wed, 28 Jan 2026 17:34:48 +0000 Subject: [PATCH 1/6] =?UTF-8?q?release(version-bump):=205.10.0=20=E2=86=92?= =?UTF-8?q?=205.11.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyproject.toml | 2 +- rhodecode/VERSION | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 254f96ed..4fda5b17 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -117,7 +117,7 @@ line-ending = "auto" [tool.bumpversion] -current_version = "5.10.0" +current_version = "5.11.0" parse = "(?P\\d+)\\.(?P\\d+)\\.(?P\\d+)" serialize = ["{major}.{minor}.{patch}"] search = "{current_version}" diff --git a/rhodecode/VERSION b/rhodecode/VERSION index c355d6e2..57f82f72 100644 --- a/rhodecode/VERSION +++ b/rhodecode/VERSION @@ -1 +1 @@ -5.10.0 \ No newline at end of file +5.11.0 \ No newline at end of file From 60c47c315a72fc4165114c4c9b64fb3ff4894378 Mon Sep 17 00:00:00 2001 From: ievgenii vdovenko Date: Thu, 29 Jan 2026 09:31:24 +0100 Subject: [PATCH 2/6] feature: moves server to the different project --- update_server.py | 142 ----------------------------------------------- 1 file changed, 142 deletions(-) delete mode 100644 update_server.py diff --git a/update_server.py b/update_server.py deleted file mode 100644 index 7bba27cf..00000000 --- a/update_server.py +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env python -import json -import os -import subprocess -import time -import threading - -try: - # Py3 - from http.server import BaseHTTPRequestHandler, HTTPServer -except ImportError: - # Py2 - from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer - -try: - from shlex import quote as shell_quote # Py3 -except ImportError: - from pipes import quote as shell_quote # Py2 (Unix) - -RCSTACK_PATH_NAME = "RCSTACK_PATH" -RCSTACK_PATH = os.environ.get(RCSTACK_PATH_NAME) -RCSTACK_LOG_NAME = os.environ.get("RCSTACK_LOG_NAME", "./rcstack_status.log") -STATUS = {"state": "ready"} # "ready" or "processing" - - -def _log_line(text, log_path): - # compatible with python 2 - out = open(log_path, "ab") - try: - if not isinstance(text, bytes): - text = text.encode("utf-8") - out.write(text + b"\n") - out.flush() - finally: - out.close() - - -def _watch_process(popen_obj, log_path): - try: - rc = popen_obj.wait() - stamp = time.strftime("%Y-%m-%d %H:%M:%S") - _log_line("[" + stamp + "] finished rc=" + str(rc), log_path=log_path) - except Exception as e: - stamp = time.strftime("%Y-%m-%d %H:%M:%S") - _log_line("[" + stamp + "] watcher error: " + str(e), log_path=log_path) - finally: - STATUS["state"] = "ready" - - -class RcstackUpdater(BaseHTTPRequestHandler): - def __init__(self, request, client_address, server): - BaseHTTPRequestHandler.__init__(self, request, client_address, server) - - def _send_json(self, obj, code=200): - body = json.dumps(obj).encode("utf-8") - self.send_response(code) - self.send_header("Content-Type", "application/json") - self.send_header("Content-Length", str(len(body))) - self.end_headers() - self.wfile.write(body) - - def do_GET(self): - if self.path == "/state": - return self._send_json({"state": STATUS["state"]}) - - elif self.path == "/rcstack/update": - # If already processing, return ok and do not spawn a new process. - if STATUS["state"] != "ready": - return self._send_json({"status": "ok", "state": STATUS["state"]}) - - ok, err_msg = self.spawn_rcstack_status() - # If spawn failed for real reasons (bad env/path/etc.), return 500 - if not ok: - return self._send_http_error(err_msg.encode("utf-8"), status_code=500) - - return self._send_json({"status": "ok", "state": STATUS["state"]}) - - return self._send_http_error(b"not found", status_code=404) - - def spawn_rcstack_status(self): - if not RCSTACK_PATH: - return False, "%s env variable not set" % (RCSTACK_PATH_NAME,) - - if not os.path.exists(RCSTACK_PATH) or not os.path.isfile(RCSTACK_PATH): - return False, "%s does not exist" % (RCSTACK_PATH,) - - rcstack = os.path.expanduser(RCSTACK_PATH) - rcstack_dir = os.path.dirname(rcstack) - log_path = os.path.join(rcstack_dir, RCSTACK_LOG_NAME) - - STATUS["state"] = "processing" - - stamp = time.strftime("%Y-%m-%d %H:%M:%S") - _log_line("[%s] spawn: %s status" % (stamp, rcstack), log_path=log_path) - - out = open(log_path, "ab") - try: - cmd = "%s self-update && %s stack-upgrade all" % (shell_quote(rcstack), shell_quote(rcstack)) - - p = subprocess.Popen( - ["/bin/sh", "-c", cmd], - cwd=rcstack_dir, - stdout=out, - stderr=out, - close_fds=True, - preexec_fn=os.setsid, # Unix only - ) - except Exception as e: - STATUS["state"] = "ready" - _log_line("[%s] spawn error: %s" % (stamp, str(e)), log_path=log_path) - return False, "spawn failed: %s" % (str(e),) - finally: - try: - out.close() - except Exception: - pass - - t = threading.Thread(target=_watch_process, args=(p, log_path)) - try: - t.daemon = True - except Exception: - t.setDaemon(True) # Py2 - t.start() - - return True, None - - def _send_http_error(self, msg, status_code): - self.send_response(status_code) - self.send_header("Content-Type", "text/plain") - self.end_headers() - self.wfile.write(msg) - - -def main(host="127.0.0.1", port=10025): - httpd = HTTPServer((host, port), RcstackUpdater) - stamp = time.strftime("%Y-%m-%d %H:%M:%S") - print("[%s] listening on http://%s:%d" % (stamp, host, port)) - httpd.serve_forever() - - -if __name__ == "__main__": - main() From 9ce07ca1c04448e3608fa0aae0907cb646391874 Mon Sep 17 00:00:00 2001 From: ievgenii vdovenko Date: Thu, 29 Jan 2026 13:09:03 +0100 Subject: [PATCH 3/6] release notes: adds release notes --- docs/release-notes/release-notes-5.11.1.rst | 30 +++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 docs/release-notes/release-notes-5.11.1.rst diff --git a/docs/release-notes/release-notes-5.11.1.rst b/docs/release-notes/release-notes-5.11.1.rst new file mode 100644 index 00000000..e6f88701 --- /dev/null +++ b/docs/release-notes/release-notes-5.11.1.rst @@ -0,0 +1,30 @@ +|RCE| 5.11.1 |RNS| +------------------ + +Release Date +^^^^^^^^^^^^ + +- 2025-01-29 + + +New Features +^^^^^^^^^^^^ + + +General +^^^^^^^ + + +Security +^^^^^^^^ + + + +Fixes +^^^^^ + +- update_server: Moves update server to the rcstack, and fixes issue with wrong file check + + +Upgrade notes +^^^^^^^^^^^^^ From 5d23e9a297f002ec3191c2cc45324953980a6b63 Mon Sep 17 00:00:00 2001 From: ievgenii vdovenko Date: Thu, 29 Jan 2026 13:17:21 +0100 Subject: [PATCH 4/6] release notes: adds to general notes --- docs/release-notes/release-notes.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/release-notes.rst b/docs/release-notes/release-notes.rst index dbbd1b44..7f1c7e31 100644 --- a/docs/release-notes/release-notes.rst +++ b/docs/release-notes/release-notes.rst @@ -9,6 +9,7 @@ Release Notes .. toctree:: :maxdepth: 1 + release-notes-5.11.1.rst release-notes-5.11.0.rst release-notes-5.10.0.rst release-notes-5.9.1.rst From 628037e66a666ff0d21e21a741c906127a1e1e85 Mon Sep 17 00:00:00 2001 From: Andrii Verbytskyi Date: Thu, 29 Jan 2026 14:32:25 +0000 Subject: [PATCH 5/6] =?UTF-8?q?release(version-bump):=205.11.0=20=E2=86=92?= =?UTF-8?q?=205.11.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyproject.toml | 2 +- rhodecode/VERSION | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4fda5b17..3d93f2a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -117,7 +117,7 @@ line-ending = "auto" [tool.bumpversion] -current_version = "5.11.0" +current_version = "5.11.1" parse = "(?P\\d+)\\.(?P\\d+)\\.(?P\\d+)" serialize = ["{major}.{minor}.{patch}"] search = "{current_version}" diff --git a/rhodecode/VERSION b/rhodecode/VERSION index 57f82f72..da756657 100644 --- a/rhodecode/VERSION +++ b/rhodecode/VERSION @@ -1 +1 @@ -5.11.0 \ No newline at end of file +5.11.1 \ No newline at end of file From 0342a3f9f0b067f3afefeac876cd9c99f500f106 Mon Sep 17 00:00:00 2001 From: Andrii V Date: Tue, 3 Feb 2026 19:20:33 +0100 Subject: [PATCH 6/6] fixed issue with vcs settings and ai code review --- rhodecode/templates/base/vcs_settings.mako | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rhodecode/templates/base/vcs_settings.mako b/rhodecode/templates/base/vcs_settings.mako index d821b465..f76a6805 100644 --- a/rhodecode/templates/base/vcs_settings.mako +++ b/rhodecode/templates/base/vcs_settings.mako @@ -297,7 +297,7 @@ %else: - ${h.checkbox('rhodecode_ai_default_code_review' + suffix, 'True', checked=c.ai_default_code_review, disabled=True, **kwargs)} + ${h.checkbox('rhodecode_ai_default_code_review' + suffix, 'True', checked=c.ai_default_code_review, disabled=True)} %endif