Fix CI/CD checkout failure + enlarge panel action buttons
Some checks failed
Build and Deploy UMBRA / build-and-deploy (push) Failing after 11m16s
Some checks failed
Build and Deploy UMBRA / build-and-deploy (push) Failing after 11m16s
CI/CD fixes (from debugger + docker specialist review): - Add explicit GITEA_TOKEN for checkout auth - Add act_runner_config.yaml with container.network: host so job containers can reach git.sentinelforest.xyz (root cause of 0s silent checkout failure) - Mount config into act_runner container UI: Enlarge save/close/edit/delete icons in all detail panels (EventDetailPanel, TodoDetailPanel, ReminderDetailPanel, TaskDetailPanel, EntityDetailPanel) from h-7/h-3.5 to h-8/h-4 for better visibility and click targets. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
507c841a92
commit
1f34da9199
@ -12,6 +12,8 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: https://github.com/actions/checkout@v4
|
uses: https://github.com/actions/checkout@v4
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
|
||||||
- name: Login to Gitea Container Registry
|
- name: Login to Gitea Container Registry
|
||||||
uses: https://github.com/docker/login-action@v3
|
uses: https://github.com/docker/login-action@v3
|
||||||
|
|||||||
4
act_runner_config.yaml
Normal file
4
act_runner_config.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
container:
|
||||||
|
network: host
|
||||||
|
privileged: false
|
||||||
|
options: "--security-opt label:disable"
|
||||||
@ -72,6 +72,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- act_runner_data:/data
|
- act_runner_data:/data
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ./act_runner_config.yaml:/data/config.yaml:ro
|
||||||
environment:
|
environment:
|
||||||
- GITEA_INSTANCE_URL=https://git.sentinelforest.xyz
|
- GITEA_INSTANCE_URL=https://git.sentinelforest.xyz
|
||||||
- GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_REGISTRATION_TOKEN}
|
- GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_REGISTRATION_TOKEN}
|
||||||
|
|||||||
@ -591,32 +591,32 @@ export default function EventDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={() => setScopeStep(null)}
|
onClick={() => setScopeStep(null)}
|
||||||
title="Cancel"
|
title="Cancel"
|
||||||
>
|
>
|
||||||
<X className="h-3.5 w-3.5" />
|
<X className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
) : (isEditing || isCreating) ? (
|
) : (isEditing || isCreating) ? (
|
||||||
<>
|
<>
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7 text-green-400 hover:text-green-300"
|
className="h-8 w-8 text-green-400 hover:text-green-300"
|
||||||
onClick={handleEditSave}
|
onClick={handleEditSave}
|
||||||
disabled={saveMutation.isPending}
|
disabled={saveMutation.isPending}
|
||||||
title="Save"
|
title="Save"
|
||||||
>
|
>
|
||||||
<Save className="h-3.5 w-3.5" />
|
<Save className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={handleEditCancel}
|
onClick={handleEditCancel}
|
||||||
title="Cancel"
|
title="Cancel"
|
||||||
>
|
>
|
||||||
<X className="h-3.5 w-3.5" />
|
<X className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
@ -628,12 +628,12 @@ export default function EventDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={handleEditStart}
|
onClick={handleEditStart}
|
||||||
disabled={isAcquiringLock || !!activeLockInfo}
|
disabled={isAcquiringLock || !!activeLockInfo}
|
||||||
title={activeLockInfo ? `Locked by ${activeLockInfo.locked_by_name || 'another user'}` : 'Edit event'}
|
title={activeLockInfo ? `Locked by ${activeLockInfo.locked_by_name || 'another user'}` : 'Edit event'}
|
||||||
>
|
>
|
||||||
{isAcquiringLock ? <Loader2 className="h-3.5 w-3.5 animate-spin" /> : <Pencil className="h-3.5 w-3.5" />}
|
{isAcquiringLock ? <Loader2 className="h-4 w-4 animate-spin" /> : <Pencil className="h-4 w-4" />}
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
{/* Leave button for invited events */}
|
{/* Leave button for invited events */}
|
||||||
@ -641,11 +641,11 @@ export default function EventDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7 text-muted-foreground hover:text-destructive"
|
className="h-8 w-8 text-muted-foreground hover:text-destructive"
|
||||||
onClick={() => setShowLeaveDialog(true)}
|
onClick={() => setShowLeaveDialog(true)}
|
||||||
title="Leave event"
|
title="Leave event"
|
||||||
>
|
>
|
||||||
<LogOut className="h-3.5 w-3.5" />
|
<LogOut className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
{/* Delete button for own events */}
|
{/* Delete button for own events */}
|
||||||
@ -664,12 +664,12 @@ export default function EventDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7 text-muted-foreground hover:text-destructive"
|
className="h-8 w-8 text-muted-foreground hover:text-destructive"
|
||||||
onClick={handleDeleteStart}
|
onClick={handleDeleteStart}
|
||||||
disabled={deleteMutation.isPending}
|
disabled={deleteMutation.isPending}
|
||||||
title="Delete event"
|
title="Delete event"
|
||||||
>
|
>
|
||||||
<Trash2 className="h-3.5 w-3.5" />
|
<Trash2 className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
@ -678,11 +678,11 @@ export default function EventDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
title="Close panel"
|
title="Close panel"
|
||||||
>
|
>
|
||||||
<X className="h-3.5 w-3.5" />
|
<X className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -285,21 +285,21 @@ export default function TaskDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7 text-green-400 hover:text-green-300"
|
className="h-8 w-8 text-green-400 hover:text-green-300"
|
||||||
onClick={handleEditSave}
|
onClick={handleEditSave}
|
||||||
disabled={updateTaskMutation.isPending}
|
disabled={updateTaskMutation.isPending}
|
||||||
title="Save changes"
|
title="Save changes"
|
||||||
>
|
>
|
||||||
<Save className="h-3.5 w-3.5" />
|
<Save className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={handleEditCancel}
|
onClick={handleEditCancel}
|
||||||
title="Cancel editing"
|
title="Cancel editing"
|
||||||
>
|
>
|
||||||
<X className="h-3.5 w-3.5" />
|
<X className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
@ -307,30 +307,30 @@ export default function TaskDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={handleEditStart}
|
onClick={handleEditStart}
|
||||||
title="Edit task"
|
title="Edit task"
|
||||||
>
|
>
|
||||||
<Pencil className="h-3.5 w-3.5" />
|
<Pencil className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7 text-muted-foreground hover:text-destructive"
|
className="h-8 w-8 text-muted-foreground hover:text-destructive"
|
||||||
onClick={() => onDelete(task.id)}
|
onClick={() => onDelete(task.id)}
|
||||||
title="Delete task"
|
title="Delete task"
|
||||||
>
|
>
|
||||||
<Trash2 className="h-3.5 w-3.5" />
|
<Trash2 className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
{onClose && (
|
{onClose && (
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
title="Close panel"
|
title="Close panel"
|
||||||
>
|
>
|
||||||
<X className="h-3.5 w-3.5" />
|
<X className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
@ -562,7 +562,7 @@ export default function TaskDetailPanel({
|
|||||||
{/* Comments */}
|
{/* Comments */}
|
||||||
<div className="space-y-3">
|
<div className="space-y-3">
|
||||||
<div className="flex items-center gap-1.5">
|
<div className="flex items-center gap-1.5">
|
||||||
<MessageSquare className="h-3.5 w-3.5 text-muted-foreground" />
|
<MessageSquare className="h-4 w-4 text-muted-foreground" />
|
||||||
<h4 className="text-[11px] text-muted-foreground uppercase tracking-wider">
|
<h4 className="text-[11px] text-muted-foreground uppercase tracking-wider">
|
||||||
Comments
|
Comments
|
||||||
{comments.length > 0 && (
|
{comments.length > 0 && (
|
||||||
|
|||||||
@ -236,21 +236,21 @@ export default function ReminderDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7 text-green-400 hover:text-green-300"
|
className="h-8 w-8 text-green-400 hover:text-green-300"
|
||||||
onClick={handleEditSave}
|
onClick={handleEditSave}
|
||||||
disabled={saveMutation.isPending}
|
disabled={saveMutation.isPending}
|
||||||
title="Save"
|
title="Save"
|
||||||
>
|
>
|
||||||
<Save className="h-3.5 w-3.5" />
|
<Save className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={handleEditCancel}
|
onClick={handleEditCancel}
|
||||||
title="Cancel"
|
title="Cancel"
|
||||||
>
|
>
|
||||||
<X className="h-3.5 w-3.5" />
|
<X className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
@ -259,22 +259,22 @@ export default function ReminderDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7 hover:bg-orange-500/10 hover:text-orange-400"
|
className="h-8 w-8 hover:bg-orange-500/10 hover:text-orange-400"
|
||||||
onClick={() => dismissMutation.mutate()}
|
onClick={() => dismissMutation.mutate()}
|
||||||
disabled={dismissMutation.isPending}
|
disabled={dismissMutation.isPending}
|
||||||
title="Dismiss reminder"
|
title="Dismiss reminder"
|
||||||
>
|
>
|
||||||
<BellOff className="h-3.5 w-3.5" />
|
<BellOff className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={handleEditStart}
|
onClick={handleEditStart}
|
||||||
title="Edit reminder"
|
title="Edit reminder"
|
||||||
>
|
>
|
||||||
<Pencil className="h-3.5 w-3.5" />
|
<Pencil className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
{confirmingDelete ? (
|
{confirmingDelete ? (
|
||||||
<Button
|
<Button
|
||||||
@ -290,22 +290,22 @@ export default function ReminderDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7 text-muted-foreground hover:text-destructive"
|
className="h-8 w-8 text-muted-foreground hover:text-destructive"
|
||||||
onClick={handleDeleteClick}
|
onClick={handleDeleteClick}
|
||||||
disabled={deleteMutation.isPending}
|
disabled={deleteMutation.isPending}
|
||||||
title="Delete reminder"
|
title="Delete reminder"
|
||||||
>
|
>
|
||||||
<Trash2 className="h-3.5 w-3.5" />
|
<Trash2 className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
title="Close panel"
|
title="Close panel"
|
||||||
>
|
>
|
||||||
<X className="h-3.5 w-3.5" />
|
<X className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -61,7 +61,7 @@ export function EntityDetailPanel<T>({
|
|||||||
size="icon"
|
size="icon"
|
||||||
onClick={onToggleFavourite}
|
onClick={onToggleFavourite}
|
||||||
aria-label={isFavourite ? `Remove from ${favouriteLabel}s` : `Add to ${favouriteLabel}s`}
|
aria-label={isFavourite ? `Remove from ${favouriteLabel}s` : `Add to ${favouriteLabel}s`}
|
||||||
className={`h-7 w-7 ${isFavourite ? 'text-yellow-400' : 'text-muted-foreground'}`}
|
className={`h-8 w-8 ${isFavourite ? 'text-yellow-400' : 'text-muted-foreground'}`}
|
||||||
>
|
>
|
||||||
{isFavourite ? (
|
{isFavourite ? (
|
||||||
<Star className="h-4 w-4 fill-yellow-400" />
|
<Star className="h-4 w-4 fill-yellow-400" />
|
||||||
@ -75,7 +75,7 @@ export function EntityDetailPanel<T>({
|
|||||||
size="icon"
|
size="icon"
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
aria-label="Close panel"
|
aria-label="Close panel"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
>
|
>
|
||||||
<X className="h-4 w-4" />
|
<X className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@ -272,21 +272,21 @@ export default function TodoDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7 text-green-400 hover:text-green-300"
|
className="h-8 w-8 text-green-400 hover:text-green-300"
|
||||||
onClick={handleEditSave}
|
onClick={handleEditSave}
|
||||||
disabled={saveMutation.isPending}
|
disabled={saveMutation.isPending}
|
||||||
title="Save"
|
title="Save"
|
||||||
>
|
>
|
||||||
<Save className="h-3.5 w-3.5" />
|
<Save className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={handleEditCancel}
|
onClick={handleEditCancel}
|
||||||
title="Cancel"
|
title="Cancel"
|
||||||
>
|
>
|
||||||
<X className="h-3.5 w-3.5" />
|
<X className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
@ -294,11 +294,11 @@ export default function TodoDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={handleEditStart}
|
onClick={handleEditStart}
|
||||||
title="Edit todo"
|
title="Edit todo"
|
||||||
>
|
>
|
||||||
<Pencil className="h-3.5 w-3.5" />
|
<Pencil className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
{confirmingDelete ? (
|
{confirmingDelete ? (
|
||||||
<Button
|
<Button
|
||||||
@ -314,22 +314,22 @@ export default function TodoDetailPanel({
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7 text-muted-foreground hover:text-destructive"
|
className="h-8 w-8 text-muted-foreground hover:text-destructive"
|
||||||
onClick={handleDeleteClick}
|
onClick={handleDeleteClick}
|
||||||
disabled={deleteMutation.isPending}
|
disabled={deleteMutation.isPending}
|
||||||
title="Delete todo"
|
title="Delete todo"
|
||||||
>
|
>
|
||||||
<Trash2 className="h-3.5 w-3.5" />
|
<Trash2 className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-7 w-7"
|
className="h-8 w-8"
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
title="Close panel"
|
title="Close panel"
|
||||||
>
|
>
|
||||||
<X className="h-3.5 w-3.5" />
|
<X className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user