Commit Graph
100 Commits
Author SHA1 Message Date
Ryan Hughes 52475c4bbc Run host operations locally when this machine is the build host
Release commands now work from anywhere: on_repo_host (the published database
living in this checkout) routes build triggers, advances, and promotion to
local execution; other machines go over ssh to the configured destination.
The host setting is any ssh destination — root@<ip>, root@<hostname>, or an
~/.ssh/config alias — resolved from --host, OMARCHY_REPO_HOST, then the
one-line .repo-host file. doctor reports which mode applies, and the README
documents the format and precedence. All host connections are plain ssh.
2026-08-27 01:10:33 -04:00
Ryan Hughes a5cafb291c Push over SSH from the tmp clones; keep reads on anonymous HTTPS
The work/mirror clones were HTTPS end to end, so pushes went through git's
credential-helper config — which breaks the moment a stale absolute gh path
is baked into it (as gh auth setup-git once did with /usr/bin/gh). Reads stay
anonymous HTTPS; pushes now use an SSH push URL (derived from the clone URL,
overridable with OMARCHY_UPSTREAM_PUSH_URL), set idempotently on every run so
existing cached clones self-repair.
2026-08-27 01:10:33 -04:00
Ryan Hughes 97519fb0f1 pick: detect backported PRs by message reference, not just ancestry
Changes reach a release branch as backports — cherry-picks with new SHAs — so
the original quattro merge commit is never an ancestor of a patch branch and
the ancestry filter let already-applied PRs through. Candidates are now also
matched against the branch's own commit messages since it left quattro:
'backport of #N' / squash '(#N)' references and 'cherry picked from commit
<sha>' trailers (which pick -x itself writes). Explicitly named PRs/commits
that are already on the branch are skipped with a note instead of re-picked.

Verified against the live v4-0-2 branch: the five backported PRs it carries
filter out; un-backported ones are still offered.
2026-08-27 01:10:33 -04:00
Ryan Hughes 5fae475743 Address Momus branch-review findings: harden ship, advance, and locking
- ship: no interactive override of the untested-commit guard; the tag targets
  the pinned commit the artifacts were built from (never the branch head); a
  tagged-but-incomplete train is found and resumed instead of vanishing from
  open-train detection; a fully shipped train reports as such
- start: a failed edge→rc advance fails the command loudly (both start and
  the advance are idempotent) instead of opening a train against stale rc
- rc trigger: bootstraps the server's rc worktree on first use, so a host set
  up before the rc branch existed can run its first RC build
- advance-channel: fast-ring packages are excluded from edge→rc (the stable
  build replicated by parity is authoritative for rc — same filename, other
  bytes); differing destination bytes abort instead of warn; a package whose
  signature copy was interrupted gets its .sig restored on resume
- the release lock now also covers direct promote/update/clean/remove/sync
  invocations, not just release/advance/upload-prebuilt
2026-08-27 01:10:33 -04:00
Ryan Hughes da92095f75 advance-channel: refuse bare --package; correct the sig-backfill guidance 2026-08-27 01:10:33 -04:00
Ryan Hughes 2cea400cd1 Add bin/omarchy-release: the interactive release front door
A release train has three human moments, each one command: start (release
branch on basecamp/omarchy + notes staging PR + edge→rc advance for
minor/major), rc (pin both PKGBUILDs to the branch head as X.Y.ZrcN on the
pkgs rc branch, trigger the rc channel build, wait for publish, optional RC
ISO), and ship (final pins → promote rc→stable → tag → pins to master → GitHub
release from the staging PR body → final ISO → website bump, each step
skip-if-done so a crashed run resumes).

Bare omarchy-release is the shepherd: it derives the train state from observed
reality (remote branches, rc-branch pins, published channel dbs, tags — no
state files) and offers the correct next step. Versions are inferred from
branch names (v4-0-2 ⇒ 4.0.2rcN ⇒ v4.0.2). ship refuses to promote a commit
no RC was cut from. pick is a multi-select over merged quattro PRs,
cherry-picking merge commits. doctor pre-flights every credential and
connection. self-test wired into CI.

bin/omarchy-pkgs stays as the pin engine, driven with its db URL pointed at
the rc channel and pins committed to the standing rc branch (rebuilt as
master + pins per cut and force-pushed; the server rc worktree follows with
reset --hard).
2026-08-27 01:10:33 -04:00
Ryan Hughes dac5ba2b45 Document the three-channel pipeline in README 2026-08-27 01:10:33 -04:00
Ryan Hughes 726c9d1f29 Add rc auto-release timer/service and rc branch worktree to host setup
The rc service builds from the rc branch worktree (/root/omarchy-pkgs-rc,
created by bin/setup) but publishes into the primary checkout's channel tree
via OMARCHY_REPO_ROOT. The timer is a retry backstop: rc builds are normally
triggered immediately over SSH by the release orchestrator.
2026-08-27 01:10:33 -04:00
Ryan Hughes 63f6156f25 Replace migrate with manifest-driven advance-channel and add the release lock
bin/repo advance --from/--to moves packages forward through the pipeline
(edge → rc → stable), driven by the source channel's database rather than the
raw directory, copying packages AND their detached signatures (fixing the old
migrate bug that left promoted packages unverifiable), refusing to rewrite any
published filename, and requiring a .sig for everything it moves. stable → rc
is allowed only as --fast-ring parity replication or the one-time
--bootstrap seed (bin/repo bootstrap-rc). 'migrate' stays as a deprecated
alias for the transition.

helpers/lock-helpers.sh adds a host-wide flock shared by bin/release,
advance-channel, and upload-prebuilt (reentrant via OMARCHY_RELEASE_LOCK_HELD)
so timers and operators serialize instead of interleaving partial publishes.

bin/release gains a stable-only step 7: replicate fast-ring artifacts to rc so
rc and stable stay in parity between release trains (skipped until rc is
bootstrapped).
2026-08-27 01:10:33 -04:00
Ryan Hughes 26bde8fae3 Add channels metadata: membership and build-channel rules for edge/rc/stable
A package's .omarchy/package.json may now pin where it lives with
"channels": [...]. With the key present the package builds in each listed
channel except stable (stable is only fed by promotion); without it, today's
defaults hold (build for edge; fast-ring also builds stable directly).

package_moves_to_channel() is the advance/promote eligibility rule: a member
of the destination channel that is not built there natively.

The release pair (omarchy, omarchy-settings) is edge+rc+stable — edge stays
during the client-migration overlap window and drops later. The dev pair is
pinned to edge only.
2026-08-27 01:10:33 -04:00
Ryan Hughes e73b843bd2 Add rc as a first-class channel: validation, shared repo root, rc build mirror
- helpers/paths.sh: validate_mirror/require_valid_mirror for the edge|rc|stable
  set, and REPO_ROOT (OMARCHY_REPO_ROOT override) so a secondary checkout like
  the rc branch worktree publishes into the same channel tree as the primary
- validate --mirror everywhere it previously accepted any string (sync-repo,
  promote-build, update-repo, clean-repo, remove-package) and widen the
  edge|stable checks in build, deploy, push-build, auto-release
- build/Dockerfile: rc builds compile against rc-mirror.omarchy.org
2026-08-27 01:10:33 -04:00
Ryan HughesandGitHub f448847d1f Merge pull request #205 from omacom-io/auto/sync-upstream
chore: sync upstream releases
2026-08-25 18:55:02 -04:00
Ryan HughesandGitHub 13259c4d99 Merge pull request #204 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-08-25 18:54:57 -04:00
Ryan HughesandGitHub 74917b641a Merge pull request #174 from omacom-io/auto/sync-upstream
chore: sync upstream releases
2026-08-24 22:59:38 -04:00
Ryan HughesandGitHub 4b1226ec17 Merge pull request #202 from omacom-io/mise-release-age-fallback
Quarantine fresh upstream releases via min_release_age in the package manifest
2026-08-24 22:44:17 -04:00
Ryan Hughes 92735d5539 Require strict ISO 8601 in the age backstop; document the no-stable-release stance
GNU date accepts relative expressions like '2 days ago', which would let a
buggy hook fabricate a release age; the backstop now insists on an ISO 8601
timestamp before date parses it. The provider header now states, rather than
contradicts, the code's behavior for a feed with no stable releases: that is
a loud failure by design, while quarantined releases report no update.
2026-08-24 20:32:20 -04:00
Ryan Hughes fd03757f22 Reject empty min_release_age, self-age the e2e fixtures, run self-tests in CI
An empty min_release_age string now maps to unparseable rather than absent,
so "min_release_age": "" fails validation instead of silently running
with a zero-second quarantine. The end-to-end fixtures extend the
checked-in pkgver (.90/.91) so the test keeps working at any future mise
version. A Tests workflow runs bin/sync-upstream self-test and
bin/omarchy-pkgs self-test on every PR in the Arch container, making the
proof machine-checked instead of author-supplied. The README package
metadata field list documents upstream and min_release_age.
2026-08-24 20:22:33 -04:00
Ryan Hughes 83bdfb5fa1 Prove the migrated mise path end to end and harden discovery per Momus
The self-test now runs sync_package over the checked-in mise-bin package --
its real metadata and PKGBUILD, the full selection/validation/backstop/
rewrite/read-back path -- with only the two network fetches replaced by
mise-shaped fixtures, asserting the final PKGBUILD holds the quarantine-
cleared version, pkgrel 1, and both architecture checksums.

Review fixes: the release-row builder uses "" fallbacks instead of empty
so a malformed row cannot shift columns past the per-field checks, and
provider discovery now keys on the presence of an upstream declaration
rather than a well-formed one, with sync_package failing loudly on a
declaration it cannot use -- a malformed manifest can no longer silently
drop a package out of scheduled synchronization.
2026-08-24 20:14:45 -04:00
Ryan Hughes 5777573a84 Harden the provider per Momus review and prove it with offline fixtures
bin/sync-upstream self-test swaps the two network fetches in
helpers/upstream-github.sh for fixture readers and runs the production code
paths: fallback past a quarantined release, draft/prerelease filtering, the
deliberate bypass, unchanged-version and all-quarantined no-update paths,
unusable tags/timestamps and missing checksums failing the sync, {tag} and
{pkgver} asset templates with ./ and * manifest prefixes across both
architectures, the min_release_age backstop verdicts (now a testable
release_age_status function), the duration parser, and manifest validation.

Also fixes from the review: the duration parser forces base-10 arithmetic
(leading zeros no longer parse as octal) and bounds values to nine digits so
no suffix can overflow; jq // treating false as absent can no longer let
"min_release_age": false or "upstream": false slip through as unset; the
release feed page grew to the API maximum of 100 with the bounded search
documented; and the README package-metadata section documents the upstream
block, min_release_age, the bypass, and provider-versus-hook exclusivity.
2026-08-24 20:07:10 -04:00
Ryan Hughes 699261471a Replace mise's upstream hook with a declarative GitHub-releases provider
After the quarantine moved into the manifest, all mise-bin's hook still knew
was data: the repository, the checksum manifest name, and the asset filename
patterns. That now lives in .omarchy/package.json as an upstream block --

  "upstream": {
    "github": "jdx/mise",
    "checksums": "SHASUMS256.txt",
    "assets": { "x86_64": "mise-{tag}-linux-x64.tar.xz", ... }
  }

-- handled by helpers/upstream-github.sh inside bin/sync-upstream. The
provider walks the release feed (drafts/prereleases excluded), honors
min_release_age and BYPASS_MIN_RELEASE_AGE during selection, reports
published_at so the framework backstop still applies, fails closed on any
unreadable tag or timestamp, and skips the checksum fetch when the newest
qualifying release is already checked in.

upstream.sh remains the escape hatch for feeds that fit no convention
(openai-codex-desktop's Debian index, tmog's version.txt, t3code's
electron-builder manifest); declaring both is an error.
2026-08-24 19:30:33 -04:00
Ryan Hughes 48ad6b9d7b Generalize the release-age quarantine into a manifest policy
Move the hold from a mise-only hardcode to min_release_age in
.omarchy/package.json ("24h", "2d", or bare seconds), alongside source and
release_ring where package policy already lives. bin/sync-upstream exports
the window to every hook as MIN_RELEASE_AGE_SECONDS so a hook that can walk
its release feed selects the newest release that has cleared it, and
enforces it as a backstop: with a policy set, the hook must report
published_at, and a release younger than the window is treated as no
update. A hook that cannot prove the age fails the sync rather than
shipping unverified. BYPASS_MIN_RELEASE_AGE=1 replaces the package-specific
bypass for deliberate emergency updates; scheduled automation never sets it.

The mise hook keeps its release-list walk but reads the window from the
environment and reports published_at; the other upstream hooks are
untouched and unaffected until they opt in.
2026-08-24 19:17:22 -04:00
Ryan Hughes eca3ce7815 mise-bin: ship the newest release that has cleared the 24h quarantine
Gating on /releases/latest alone starves updates when mise's near-daily
cadence keeps the newest release perpetually inside the quarantine window:
today that left Omarchy on 2026.8.8 while 2026.8.11 had already aged past
24 hours. Walk the release list (drafts and prereleases excluded) and pick
the newest release, by vercmp, whose published_at is at least 24 hours old.

The quarantine guarantee is unchanged: nothing younger than the window ever
ships without the explicit MISE_BIN_BYPASS_RELEASE_AGE=1 bypass, and invalid
tags or timestamps still fail closed - now for every release in the feed,
plus a hard failure if the feed reports no stable releases at all.
2026-08-24 14:21:41 -04:00
Ryan HughesandGitHub 40ddd6be19 Merge pull request #192 from jdx/fix/mise-release-age
fix(mise-bin): delay upstream releases for 24 hours
2026-08-24 10:56:46 -04:00
Ryan HughesandGitHub 2f067f4e22 Merge pull request #173 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-08-24 09:04:46 -04:00
Ryan Hughes e5fb86e53d Release omarchy 4.0.1rc1 2026-08-23 20:14:52 -04:00
Ryan HughesandGitHub c409cb6d6a Merge pull request #120 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-08-16 10:49:44 -04:00
Ryan Hughes d3298050bb Remove tag requirement 2026-08-14 11:08:39 -04:00
Ryan Hughes 2d8f35f43f Update 2026-08-12 00:14:02 -04:00
Ryan Hughes f8d8671514 Release omarchy 4.0.0beta3 2026-08-12 00:13:36 -04:00
Ryan Hughes 155ff25666 Add a rebuild option 2026-08-11 23:58:45 -04:00
Ryan Hughes f6c8d3d33b Handle prerelease 2026-08-11 23:42:39 -04:00
Ryan Hughes f609e6a31e Add omarchy-pkgs 2026-08-11 23:36:37 -04:00
Ryan Hughes 9323f13db1 Release omarchy 4.0.0rc1 2026-08-11 23:36:37 -04:00
Ryan Hughes abec5dd439 Add bin/omarchy-pkgs release command
One-command releases for the omarchy + omarchy-settings pair:
  bin/omarchy-pkgs release v4.0.0 | latest | rc [--commit sha] [--base X.Y.Z]

Rewrites both PKGBUILDs in lockstep (same _tag/_commit/pkgver/sha256sums,
pkgrel reset to 1), normalizes upstream tag forms to the vercmp-safe
attached rcN convention, refuses downgrades against the published edge DB,
regenerates and verifies checksums from a cached mirror clone, commits and
pushes to master, and triggers the build host when OMARCHY_BUILD_HOST is
configured. RCs stay on edge; finals are promoted with bin/repo migrate.
Includes a self-test covering tag normalization and pacman ordering, and a
README runbook.
2026-08-11 22:21:23 -04:00
Ryan Hughes 855942303f Pin omarchy-settings dependency to exact pkgver
omarchy-settings-dev provides omarchy-settings (unversioned), so an
unversioned dependency let the dev package satisfy stable omarchy's
settings requirement, allowing a mixed dev/stable install. A versioned
dependency (omarchy-settings=${pkgver}) can only be satisfied by the
real settings package from the same pinned commit and forces the pair
to upgrade together. Verified: requesting only omarchy on a system with
the -dev pair installed replaces both with the stable pair.
2026-08-11 22:19:58 -04:00
Ryan Hughes 0daad9992a Add commit-pinned release packages omarchy and omarchy-settings
Stable-track counterparts of the -dev packages. Source is pinned to a
single shared upstream commit with a real sha256 (pacman 7 validates
checksums on commit-pinned git sources), versioned per the attached-rcN
convention so vercmp orders rc1 < rc2 < final. Seeded at 4.0.0rc1 from
the quattro tip because no upstream 4.x tag exists yet and the packaging
requires the quattro tree (v3.8.x has no shell/ or etc/).

Both packages stay off the fast ring: RCs publish to edge only; stable
receives finals via bin/repo migrate.
2026-08-11 21:21:10 -04:00
Ryan HughesandGitHub 14b71bde37 Merge pull request #113 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-07-26 19:40:02 -04:00
Ryan Hughes 515b566cb9 Add skip_build 2026-07-13 19:55:23 -04:00
Ryan Hughes 162e9c0ec9 Update to restore .1 if patched 2026-06-26 00:25:52 -04:00
Ryan Hughes ba0292e4cb Clarify Snapper packaging ownership 2026-06-21 02:25:11 -04:00
Ryan Hughes 78e5cc8195 Add remote clipboard fix 2026-06-20 15:42:10 -04:00
Ryan HughesandGitHub 85491dd01d Merge pull request #112 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-06-17 21:27:23 -04:00
Ryan HughesandGitHub 3db678393e Merge pull request #111 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-06-16 11:30:20 -04:00
Ryan HughesandGitHub 4cf14e2261 Merge pull request #109 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-06-14 20:13:09 -04:00
Ryan HughesandGitHub a0b46f8bac Merge pull request #108 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-06-13 20:06:17 -04:00
Ryan HughesandGitHub c751f5b238 Merge pull request #107 from spencerbull/linux-ptl-7.0.11arch1-1
update linux-ptl to 7.0.11arch1-1
2026-06-13 20:05:50 -04:00
Ryan Hughes 412fbe35a1 Add tensaku 2026-06-12 13:27:04 -04:00
Ryan Hughes 1b8f0b47ce Elim system migrations 2026-06-12 13:25:36 -04:00
Ryan Hughes d3c4d828f1 Patch libfprint 2026-06-12 01:28:24 -04:00
Ryan HughesandGitHub 63b1d9540a Merge pull request #106 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-06-12 01:08:20 -04:00
Ryan Hughes 6808f87c6a Update nvim location 2026-06-12 00:44:30 -04:00
Ryan Hughes 80a2782063 Match nvim themes 2026-06-12 00:44:15 -04:00
Ryan Hughes 097ffbf9bb Install Hyprland reload guard hooks 2026-06-09 14:20:41 -04:00
Ryan HughesandGitHub b17c6601e5 Merge pull request #105 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-06-08 12:08:18 -04:00
Ryan Hughes acda4cae37 Also build from quattro 2026-06-08 12:06:51 -04:00
Ryan Hughes 7f82cdf857 Remove omarchy-dev optional dependencies 2026-06-07 16:36:03 -04:00
Ryan Hughes 9b7e17dfb3 Add update checker deps to omarchy-dev 2026-06-07 15:39:15 -04:00
Ryan Hughes 7ab6f84f99 Update font config 2026-06-07 14:22:48 -04:00
Ryan HughesandGitHub 96fcaa6544 Merge pull request #103 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-06-06 13:32:29 -04:00
Ryan Hughes dd98747e2c Avoid R2 HEAD checks during repo sync 2026-06-05 19:11:16 -04:00
Ryan Hughes 7410dd87af Include log tail in release failure notifications 2026-06-04 19:36:05 -04:00
Ryan Hughes b4617fc6a9 Sync visual-studio-code-bin AUR resources 2026-06-04 18:43:56 -04:00
Ryan HughesandGitHub 09adceba82 Merge pull request #102 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-06-04 12:26:49 -04:00
Ryan Hughes 7a3d90d4fb Fix omarchy-zsh shared shell config packaging 2026-06-03 12:45:35 -04:00
Ryan Hughes abb283eb5e Bump omarchy-zsh to 1.5.0 2026-06-02 23:39:19 -04:00
Ryan Hughes c1aed0d8f1 Squash merge omarchy-4 into master 2026-06-02 22:25:07 -04:00
Ryan HughesandGitHub aa78f2f991 Merge pull request #101 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-06-02 12:20:22 -04:00
Ryan HughesandGitHub 3ee1cd9495 Merge pull request #100 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-05-29 22:52:00 -04:00
Ryan HughesandGitHub af457238bf Merge pull request #96 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-05-23 10:16:12 -04:00
Ryan Hughes 60cb8f2dac add manifest 2026-05-20 21:56:36 -04:00
Ryan Hughes 2bca7a3f91 Make existing checks more efficient 2026-05-08 17:14:14 -04:00
Ryan Hughes ca0e517469 Double max time 2026-05-08 16:44:19 -04:00
Ryan Hughes 830e5aab6c Fix git comparison logic 2026-05-08 16:42:43 -04:00
Ryan HughesandGitHub dcd276b3cf Merge pull request #95 from omacom-io/auto/sync-aur
chore: sync AUR packages
2026-05-08 12:39:29 -04:00
Ryan HughesandGitHub 69cfb2cfba Merge pull request #93 from alvarofraguas/macbook8-spi-nodma-dkms
Add macbook8-spi-pxa2xx-nodma-dkms package
2026-05-08 01:22:04 -04:00
Ryan HughesandGitHub 32bc88c833 Merge pull request #94 from omacom-io/package-metadata-refactor
Package metadata refactor
2026-05-08 01:13:48 -04:00
Ryan Hughes cf82fa55ce Remove srcinfo and gitignores 2026-05-08 01:07:21 -04:00
Ryan Hughes 2ffe4f811c Refactor 2026-05-08 01:04:52 -04:00
Ryan Hughes c1be0f4ecc packages files not needed anymore 2026-05-08 01:04:52 -04:00
Ryan Hughes 177eb62caf sync 2026-05-08 01:04:52 -04:00
Ryan Hughes 41dcdc4c65 umu-launcher stripped down 2026-05-08 01:04:52 -04:00
Ryan Hughes c49988d3c4 sync 2026-05-08 01:04:52 -04:00
Ryan Hughes 8ba1b8e9c7 v4l2-relayd 2026-05-08 01:04:52 -04:00
Ryan Hughes 8319f510f5 tte 2026-05-08 01:04:52 -04:00
Ryan Hughes 1c23ae0fdb copilot 2026-05-08 01:04:52 -04:00
Ryan Hughes 582a1e359f yt6801 2026-05-08 01:04:52 -04:00
Ryan Hughes 248cf81ec1 yay 2026-05-08 01:04:52 -04:00
Ryan Hughes 23984731d3 yaru 2026-05-08 01:04:52 -04:00
Ryan Hughes 278e1677ff xpadneo-dkms 2026-05-08 01:04:52 -04:00
Ryan Hughes 75b76b0c6a xdg-terminal-exec 2026-05-08 01:04:52 -04:00
Ryan Hughes 22e82c3c1c wayfreeze 2026-05-08 01:04:52 -04:00
Ryan Hughes a1f44f3df5 voxtype 2026-05-08 01:04:52 -04:00
Ryan Hughes 7c925d0bb0 visual-studio 2026-05-08 01:04:52 -04:00
Ryan Hughes d108413099 v4l2-relayd 2026-05-08 01:04:52 -04:00
Ryan Hughes e2989fc47a umu-launcher 2026-05-08 01:04:52 -04:00
Ryan Hughes af994001dd ufw-docker 2026-05-08 01:04:52 -04:00
Ryan Hughes a57bbf86c7 tzupdate 2026-05-08 01:04:52 -04:00
Ryan Hughes b88a61bb1c typora 2026-05-08 01:04:52 -04:00
Ryan Hughes dfd8ccf843 tuxedo-drivers 2026-05-08 01:04:52 -04:00
Ryan Hughes 274c5ab7e1 ttf-ia-writer 2026-05-08 01:04:51 -04:00