feat: cron job editor dialog (closes #150)

Implements a full-screen cron job editor dialog following the skills editor pattern:
- Create/edit/delete cron jobs with all backend fields
- CronJobRepeat data class matching backend object shape
- Fixed Gson crash on cron tab load
This commit is contained in:
M57 authored and GitHub committed 2026-06-29 18:48:45 +03:00
1 parent 4849f4c1c6
commit 4c075be026
6 files changed
+608 -10

No files matched your search

@@ -3,6 +3,7 @@ package com.m57.hermescontrol.data.remote
import com.m57.hermescontrol.data.model.AchievementsResponse
import com.m57.hermescontrol.data.model.ActiveProfileResponse
import com.m57.hermescontrol.data.model.AgentPluginInstallBody
import com.m57.hermescontrol.data.model.CreateCronJobRequest
import com.m57.hermescontrol.data.model.CreateTaskBody
import com.m57.hermescontrol.data.model.CronJob
import com.m57.hermescontrol.data.model.DoctorResponse
@@ -38,6 +39,7 @@ import com.m57.hermescontrol.data.model.SystemStatsResponse
import com.m57.hermescontrol.data.model.ToggleSkillRequest
import com.m57.hermescontrol.data.model.Toolset
import com.m57.hermescontrol.data.model.ToolsetToggleRequest
import com.m57.hermescontrol.data.model.UpdateCronJobRequest
import com.m57.hermescontrol.data.model.UpdateProfileModelRequest
import com.m57.hermescontrol.data.model.UpdateProfileSoulRequest
import com.m57.hermescontrol.data.model.UpdateRawConfigRequest
@@ -103,6 +105,22 @@ interface HermesApiService {
@Path("id") id: String,
): Response<Unit>
@GET("api/cron/jobs/{id}")
suspend fun getCronJob(
@Path("id") id: String,
): Response<CronJob>
@POST("api/cron/jobs")
suspend fun createCronJob(
@Body body: CreateCronJobRequest,
): Response<CronJob>
@PUT("api/cron/jobs/{id}")
suspend fun updateCronJob(
@Path("id") id: String,
@Body body: UpdateCronJobRequest,
): Response<CronJob>
@POST("api/cron/jobs/{id}/trigger")
suspend fun triggerCronJob(
@Path("id") id: String,