{"id":43383491,"url":"https://github.com/beeper-community/update-beeper","last_synced_at":"2026-03-03T21:00:46.841Z","repository":{"id":332894925,"uuid":"1135415065","full_name":"beeper-community/update-beeper","owner":"beeper-community","description":"Self-healing Beeper Desktop updater for Linux with automatic rollback","archived":false,"fork":false,"pushed_at":"2026-02-25T06:53:51.000Z","size":158,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-25T12:29:12.117Z","etag":null,"topics":["appimage","arch-linux","bash-script","beeper","beeper-desktop","electron","linux","messaging","self-healing","updater"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/beeper-community.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-16T04:08:50.000Z","updated_at":"2026-02-25T06:53:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/beeper-community/update-beeper","commit_stats":null,"previous_names":["robertogogoni/update-beeper","beeper-community/update-beeper"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/beeper-community/update-beeper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeper-community%2Fupdate-beeper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeper-community%2Fupdate-beeper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeper-community%2Fupdate-beeper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeper-community%2Fupdate-beeper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beeper-community","download_url":"https://codeload.github.com/beeper-community/update-beeper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeper-community%2Fupdate-beeper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30060589,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appimage","arch-linux","bash-script","beeper","beeper-desktop","electron","linux","messaging","self-healing","updater"],"created_at":"2026-02-02T09:48:08.603Z","updated_at":"2026-03-03T21:00:46.835Z","avatar_url":"https://github.com/beeper-community.png","language":"Shell","funding_links":[],"categories":["🛠️ Tools","Tools"],"sub_categories":["Community Bridges","Utilities"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.beeper.com/changelog/desktop\"\u003e\n    \u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/beeper-community/update-beeper/master/.github/badges/beeper-version.json\u0026style=for-the-badge\" alt=\"Beeper Latest\"\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://aur.archlinux.org/packages/beeper-v4-bin\"\u003e\n    \u003cimg src=\"https://img.shields.io/aur/version/beeper-v4-bin?label=AUR\u0026style=for-the-badge\u0026color=1793d1\" alt=\"AUR Version\"\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://github.com/beeper-community/update-beeper/actions/workflows/lint.yml\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/beeper-community/update-beeper/lint.yml?label=lint\u0026style=for-the-badge\" alt=\"Lint\"\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge\" alt=\"License: MIT\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# update-beeper\n\nA self-healing Beeper Desktop updater for Arch Linux. Downloads directly from Beeper's API with SHA256 verification, retries with targeted fixes on failure, and rolls back automatically if recovery fails. Supports native Wayland, structured logging, and systemd automation.\n\n---\n\n## Quick Start\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/beeper-community/update-beeper/master/install.sh | bash\n\nupdate-beeper            # Update to latest\nupdate-beeper --versions # Show version status\n```\n\n---\n\n## The Problem\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n### Before\n\n```\nBeeper Desktop\n\n  \"Update Available!\"\n  [ Restart to Update ]\n\n  * clicks *\n  * still on old version *\n```\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n### After\n\n```\n🐝 Beeper Updater v1.7.0\n\n[1/8] Checking versions\n  ✓ Update available\n\n[4/8] Downloading 4.2.547\n  ✓ 213MB verified\n\n╭─────────────────────────────────╮\n│  ✓ Update complete              │\n│  Version  4.2.482 → 4.2.547     │\n│  Duration 52s                   │\n╰─────────────────────────────────╯\n```\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\nBeeper's updater tries to replace files in `/opt` owned by pacman, causing a silent failure. This script downloads directly from Beeper's API instead.\n\n---\n\n## Installation\n\n**Quick Install** (recommended):\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/beeper-community/update-beeper/master/install.sh | bash\n```\n\n**Manual Install:**\n\n```bash\ncurl -o ~/.local/bin/update-beeper \\\n  https://raw.githubusercontent.com/beeper-community/update-beeper/master/update-beeper\ncurl -o ~/.local/bin/beeper-version \\\n  https://raw.githubusercontent.com/beeper-community/update-beeper/master/beeper-version\n\nchmod +x ~/.local/bin/update-beeper ~/.local/bin/beeper-version\n```\n\n**Clone \u0026 Install:**\n\n```bash\ngit clone https://github.com/beeper-community/update-beeper.git\ncd update-beeper \u0026\u0026 ./install.sh\n```\n\n\u003e Make sure `~/.local/bin` is in your `PATH`.\n\n---\n\n## Usage\n\n```bash\nupdate-beeper              # Update to latest\nupdate-beeper --versions   # Show all versions\nupdate-beeper --dry-run    # Preview without changes\nupdate-beeper --force      # Force reinstall\nupdate-beeper --rollback   # Rollback to previous version\nupdate-beeper --history    # Show past updates\n```\n\n### All Flags\n\n| Flag              | Short | Description                          |\n|-------------------|-------|--------------------------------------|\n| `--check`         | `-c`  | Check without installing             |\n| `--force`         | `-f`  | Force reinstall                      |\n| `--quiet`         | `-q`  | Errors only (for cron/systemd)       |\n| `--notify`        | `-n`  | Desktop notification                 |\n| `--rollback`      | `-r`  | Rollback to previous backup          |\n| `--changelog`     | `-l`  | Open changelog in browser            |\n| `--versions`      |       | Show installed, latest, AUR versions |\n| `--dry-run`       |       | Preview what would happen            |\n| `--history`       |       | Show update history                  |\n| `--skip-checksum` |       | Skip SHA256 verification             |\n| `--version`       | `-v`  | Show script version                  |\n| `--help`          | `-h`  | Show help                            |\n\n---\n\n## Automatic Updates\n\n```bash\nmkdir -p ~/.config/systemd/user\ncurl -fsSL https://raw.githubusercontent.com/beeper-community/update-beeper/master/systemd/update-beeper-user.service \\\n  -o ~/.config/systemd/user/update-beeper.service\ncurl -fsSL https://raw.githubusercontent.com/beeper-community/update-beeper/master/systemd/update-beeper-user.timer \\\n  -o ~/.config/systemd/user/update-beeper.timer\n\nsystemctl --user daemon-reload\nsystemctl --user enable --now update-beeper.timer\n```\n\nRuns daily between 10:00–14:00 (randomized).\n\n---\n\n## Self-Healing\n\nEach stage is verified and retried with targeted fixes before falling back to automatic rollback.\n\n\u003cdetails\u003e\n\u003csummary\u003eVerification and recovery details\u003c/summary\u003e\n\n| Failure             | Fix Applied                       |\n|---------------------|-----------------------------------|\n| Download too small  | Clear temp, retry                 |\n| SHA256 mismatch     | Re-download from scratch          |\n| Non-ELF binary      | Re-download (corrupted)           |\n| Missing files       | Clear squashfs-root, re-extract   |\n| Permission errors   | Recursive chown/chmod             |\n| Low disk space      | Warn if \u003c 1200MB on `/opt`        |\n| Version mismatch    | Fresh download                    |\n| Startup crash       | Clear Electron cache, retry       |\n| Untrusted domain    | Abort download                    |\n| Pacman version desync | Deregister stale AUR DB entry   |\n| Orphaned runtime deps | Mark as explicitly installed     |\n| All retries fail    | **Automatic rollback** to backup  |\n\n\u003c/details\u003e\n\n---\n\n## File Locations\n\n| Path | Purpose |\n|------|---------|\n| `/opt/Beeper/` | Installation directory |\n| `/opt/beeper-backups/` | Rolling backups (last 3) |\n| `~/.config/BeeperTexts/` | User config + caches |\n| `~/.local/share/update-beeper/update-beeper.log` | Event log |\n| `~/.local/share/update-beeper/history.txt` | Update history |\n| `~/.cache/update-beeper/checksums.txt` | SHA256 cache |\n\n---\n\n## Requirements\n\n| Requirement | Notes |\n|-------------|-------|\n| **x86_64** | Beeper doesn't provide ARM builds |\n| **Arch Linux** | Or Arch-based (Manjaro, EndeavourOS) |\n| **curl** | Required |\n| **sudo** | Required (installs to `/opt`) |\n| **notify-send** | Optional (desktop notifications) |\n\n---\n\n## FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003eShould I keep the AUR package?\u003c/summary\u003e\n\nIt's optional. After a direct install, the script automatically deregisters the stale AUR entry from pacman's database (v1.6.0+) and preserves runtime dependencies from orphan cleanup (v1.7.0+). If AUR catches up later, you can reinstall with `yay -S beeper-v4-bin`.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWhat if an update breaks something?\u003c/summary\u003e\n\nThe script automatically rolls back. You can also run `update-beeper --rollback` manually.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eBlank window on Wayland (Hyprland/Sway)?\u003c/summary\u003e\n\nRun `update-beeper --force` to reinstall with native Wayland flags. Also fixes blank screen after sleep.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eDoes this work on non-Arch distros?\u003c/summary\u003e\n\nThe core updater works on any x86_64 Linux. AUR version checking requires pacman.\n\n\u003c/details\u003e\n\n---\n\n[CONTRIBUTING.md](CONTRIBUTING.md) · [CHANGELOG.md](CHANGELOG.md) · MIT License\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eMade with 🐝 for the Beeper community\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeeper-community%2Fupdate-beeper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeeper-community%2Fupdate-beeper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeeper-community%2Fupdate-beeper/lists"}