Manage Actions and workflows across CLI, TUI, and iOS #63

Closed
opened 2026-08-09 13:58:46 +00:00 by hugo · 2 comments
Owner

Goal

Make Gitea Actions and workflows first-class across every Gotcha interface. Users must be able to list workflows, dispatch a workflow, follow run and job progress, and read logs from the CLI, TUI, and iPhone app.

Implementation plan

  • Shared Gitea library: make crates/gitea the single source for repository-scoped workflow, run, job, dispatch, and log behavior. Provide validated, paged shared contracts for workflow listing, dispatch references and workflow_dispatch inputs, run listing/details, job/step status, and per-job logs. Frontends must not import generated API modules, reproduce status logic, or use the low-level API escape hatch.
  • CLI: retain and complete the existing typed gotcha action workflow list|dispatch and gotcha action run list|show|logs commands on the shared contracts. Add dispatch inputs and pagination/filtering needed for parity, with stable terminal output and actionable errors.
  • TUI: add an Actions destination with repository selection, Workflows and Runs views, a native dispatch editor for ref and inputs, queued/running progress that refreshes without losing selection, run/job details, and scrollable per-job logs.
  • iPhone app: expose view-ready Actions records and preference state from crates/app; Swift remains presentation-only. Add native repository selection, Workflows/Runs navigation, dispatch form, live run/job progress, refresh/pagination, and readable job logs with accessibility and Dynamic Type support.
  • iPhone navigation preferences: Home is always present and the user may order and enable up to four primary destinations from Issues, Repositories, Pull Requests, Milestones, Actions, and Server Activity. Persist and migrate the choice in Rust, initially preserving the current four tabs. Every unselected destination appears as an accessible mini-icon on Home; Settings and Notifications remain utilities and do not consume a slot. Remove the issue and pull-request activity-filter mini-icons and keep the Home feed unfiltered.

Acceptance criteria

  • CLI, TUI, and iPhone can perform the same core workflow/run operations through gotcha_gitea, including dispatch inputs, progress, jobs, and logs.
  • Pagination, refresh, cancellation, empty/error states, and queued/in-progress/completed/failed conclusions are covered without duplicate requests or frontend business logic.
  • iPhone tab choices persist across relaunch/server changes, enforce Home plus at most four destinations, and keep every other destination reachable from Home.
  • Add shared/app/TUI/CLI tests, update TESTING.md, run all repository gates, and validate the iPhone flows in Simulator only.
## Goal Make Gitea Actions and workflows first-class across every Gotcha interface. Users must be able to list workflows, dispatch a workflow, follow run and job progress, and read logs from the CLI, TUI, and iPhone app. ## Implementation plan - **Shared Gitea library:** make `crates/gitea` the single source for repository-scoped workflow, run, job, dispatch, and log behavior. Provide validated, paged shared contracts for workflow listing, dispatch references and `workflow_dispatch` inputs, run listing/details, job/step status, and per-job logs. Frontends must not import generated API modules, reproduce status logic, or use the low-level API escape hatch. - **CLI:** retain and complete the existing typed `gotcha action workflow list|dispatch` and `gotcha action run list|show|logs` commands on the shared contracts. Add dispatch inputs and pagination/filtering needed for parity, with stable terminal output and actionable errors. - **TUI:** add an Actions destination with repository selection, Workflows and Runs views, a native dispatch editor for ref and inputs, queued/running progress that refreshes without losing selection, run/job details, and scrollable per-job logs. - **iPhone app:** expose view-ready Actions records and preference state from `crates/app`; Swift remains presentation-only. Add native repository selection, Workflows/Runs navigation, dispatch form, live run/job progress, refresh/pagination, and readable job logs with accessibility and Dynamic Type support. - **iPhone navigation preferences:** Home is always present and the user may order and enable up to four primary destinations from Issues, Repositories, Pull Requests, Milestones, Actions, and Server Activity. Persist and migrate the choice in Rust, initially preserving the current four tabs. Every unselected destination appears as an accessible mini-icon on Home; Settings and Notifications remain utilities and do not consume a slot. Remove the issue and pull-request activity-filter mini-icons and keep the Home feed unfiltered. ## Acceptance criteria - CLI, TUI, and iPhone can perform the same core workflow/run operations through `gotcha_gitea`, including dispatch inputs, progress, jobs, and logs. - Pagination, refresh, cancellation, empty/error states, and queued/in-progress/completed/failed conclusions are covered without duplicate requests or frontend business logic. - iPhone tab choices persist across relaunch/server changes, enforce Home plus at most four destinations, and keep every other destination reachable from Home. - Add shared/app/TUI/CLI tests, update `TESTING.md`, run all repository gates, and validate the iPhone flows in Simulator only.
hugo added the idea label 2026-08-09 13:58:46 +00:00
hugo added enhancement and removed idea labels 2026-08-09 14:10:38 +00:00
hugo added this to the first public update release milestone 2026-08-09 14:10:41 +00:00
hugo changed title from manage actions and workflows to Manage Actions and workflows across CLI, TUI, and iOS 2026-08-15 16:03:44 +00:00
Author
Owner

Implemented in commit 59bcddf.

  • Added validated shared Gitea operations for workflow discovery and dispatch inputs, filtered/paged runs, run/job details, every job-log page, exact-revision workflow loading, and grouped setup/workflow/completion logs with states and durations.
  • Completed typed CLI workflow/run commands and added the TUI Actions destination with repository selection, dispatch editing, paged/refreshing runs, job drill-down, grouped task logs, and real log output.
  • Added view-ready Rust Actions records and native iPhone repository → workflow/run → job → task → log navigation. Statuses cover queued, waiting, running, succeeded, failed, cancelled, skipped, and unknown with accessible colored SF Symbols; completed jobs/tasks show elapsed duration.
  • Added the issue-specified primary-navigation preferences and migration. Home now provides the requested user/all-users/notifications timelines with explicit active icons, keeps omitted non-timeline destinations directly to their right, and uses clear destination titles with the selected server as the subtitle.
  • Updated generated UniFFI bindings and TESTING.md.

Verification:

  • cargo fmt --all -- --check
  • RUSTFLAGS="-D warnings" cargo check --workspace --all-targets
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace (24 app, 6 CLI, 15 TUI, and 23 Gitea tests passed)
  • Release CLI/TUI build succeeded; live CLI and TUI checks exercised Gotcha and the longer RuDS release run 30.
  • Signed ARM64 Debug build succeeded and the complete changed iPhone flows were exercised only in the iPhone 17 Pro simulator, including success/failure task grouping, durations, selected log text, timeline selection, panel titles, and navigation. No physical iPhone deployment was performed.
Implemented in commit `59bcddf`. - Added validated shared Gitea operations for workflow discovery and dispatch inputs, filtered/paged runs, run/job details, every job-log page, exact-revision workflow loading, and grouped setup/workflow/completion logs with states and durations. - Completed typed CLI workflow/run commands and added the TUI Actions destination with repository selection, dispatch editing, paged/refreshing runs, job drill-down, grouped task logs, and real log output. - Added view-ready Rust Actions records and native iPhone repository → workflow/run → job → task → log navigation. Statuses cover queued, waiting, running, succeeded, failed, cancelled, skipped, and unknown with accessible colored SF Symbols; completed jobs/tasks show elapsed duration. - Added the issue-specified primary-navigation preferences and migration. Home now provides the requested user/all-users/notifications timelines with explicit active icons, keeps omitted non-timeline destinations directly to their right, and uses clear destination titles with the selected server as the subtitle. - Updated generated UniFFI bindings and `TESTING.md`. Verification: - `cargo fmt --all -- --check` - `RUSTFLAGS="-D warnings" cargo check --workspace --all-targets` - `cargo clippy --workspace --all-targets -- -D warnings` - `cargo test --workspace` (24 app, 6 CLI, 15 TUI, and 23 Gitea tests passed) - Release CLI/TUI build succeeded; live CLI and TUI checks exercised Gotcha and the longer RuDS release run 30. - Signed ARM64 Debug build succeeded and the complete changed iPhone flows were exercised only in the iPhone 17 Pro simulator, including success/failure task grouping, durations, selected log text, timeline selection, panel titles, and navigation. No physical iPhone deployment was performed.
hugo closed this issue 2026-08-15 18:08:02 +00:00
Author
Owner

Follow-up correction in ac6de7d:

  • Server Activity is now strictly a Home timeline and is removed from both the Primary Navigation choices and any previously saved primary-navigation configuration.
  • Primary Navigation is read-only outside Edit mode.
  • Edit mode now provides UIKit's native insert, delete, and reorder controls; insert becomes available after fewer than four destinations are selected.

Verification:

  • cargo fmt --all -- --check
  • RUSTFLAGS="-D warnings" cargo check --workspace --all-targets
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace
  • Signed arm64 Debug build for iPhone 17 Pro simulator
  • Simulator interaction: confirmed Server Activity absent, normal mode cannot mutate navigation, Edit mode can remove/add/reorder, four-item limit is enforced, and the original selection was restored after the test
Follow-up correction in `ac6de7d`: - Server Activity is now strictly a Home timeline and is removed from both the Primary Navigation choices and any previously saved primary-navigation configuration. - Primary Navigation is read-only outside Edit mode. - Edit mode now provides UIKit's native insert, delete, and reorder controls; insert becomes available after fewer than four destinations are selected. Verification: - `cargo fmt --all -- --check` - `RUSTFLAGS="-D warnings" cargo check --workspace --all-targets` - `cargo clippy --workspace --all-targets -- -D warnings` - `cargo test --workspace` - Signed arm64 Debug build for iPhone 17 Pro simulator - Simulator interaction: confirmed Server Activity absent, normal mode cannot mutate navigation, Edit mode can remove/add/reorder, four-item limit is enforced, and the original selection was restored after the test
Sign in to join this conversation.