mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-25 03:00:23 +00:00
e8862632ed
Closes #1611 — /api/sessions filters by active profile by default; ?all_profiles=1 opt-in for aggregate views; new _profiles_match() helper honours renamed-root cross-aliasing; static/sessions.js drops the s.is_cli_session bypass; toggle-on re-fetches with all_profiles=1 instead of slicing client-cached rows. Closes #1612 — new _is_root_profile() central helper consults list_profiles_api() for is_default=True matches alongside the legacy 'default' alias. Replaces five literal-default callsites in api/profiles.py. Memoized with explicit invalidation hooks at create + delete. Sticky active_profile file write now stores '' for renamed root, consistent with the legacy empty==root contract. Closes #1614 — projects carry a profile field stamped at create-time; /api/projects filters by active profile; /api/projects/{create,rename,delete} and /api/session/move reject ops on cross-profile projects with 404; new _PROJECTS_MIGRATION migration in load_projects() back-tags untagged projects from any session that uses them, fall back to 'default'; ensure_cron_project keys lookup by (name, profile) so each profile gets its own Cron Jobs project. 31 regression tests (9+11+11) pin the renamed-root resolution, server-side profile scoping shape, helper invariants, cross-alias matching, migration behavior, and active-profile guards on every project mutation endpoint. 4148 tests pass. Reporter: @stefanpieter Co-authored-by: stefanpieter <noreply@github.com>