Skip to content

feat: support OmarchyBar and Waybar integrations - #6

Merged
EaeDave merged 3 commits into
mainfrom
feat/omarchy-bar-support
Aug 12, 2026
Merged

feat: support OmarchyBar and Waybar integrations#6
EaeDave merged 3 commits into
mainfrom
feat/omarchy-bar-support

Conversation

@EaeDave

@EaeDave EaeDave commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Resumo

  • adiciona detecção automática de OmarchyBar ou Waybar com override QUICKDROP_BAR=auto|omarchy|waybar|both|none
  • transforma o launcher em quickdrop-launcher, independente da barra, mantendo quickdrop-waybar e seu endpoint como compatibilidade
  • adiciona o plugin Omarchy quickdrop.bar usando o contrato oficial bar-widget
  • preserva o adapter Waybar idempotente com backup do JSONC e move o patcher para uma implementação Python única
  • faz instalação local e pública passarem pelo mesmo fluxo modular
  • adiciona endpoints/Docker assets, testes e documentação das duas integrações

Validação

  • bun run typecheck
  • bun test — 64 testes passando
  • bun run desktop:build:web
  • omarchy plugin validate scripts/omarchy-quickdrop
  • bash -n nos scripts Linux
  • docker build -t quickdrop:omarchy-bar-test .
  • smoke test do instalador local em HOME temporário

Observação

  • cargo test --manifest-path src-tauri/Cargo.toml não foi executado porque cargo não está instalado neste ambiente; não houve alteração no código Rust.

Summary by cubic

Adds OmarchyBar and Waybar integrations behind a shared quickdrop-launcher, replacing the Waybar-only launcher. The launcher reads QUICKDROP_API_BASE_URL from env or ~/.config/quickdrop/config.env without executing the file and now normalizes quoted values; existing Waybar installs continue to work via the /linux/quickdrop-waybar alias.

  • Adds an OmarchyBar plugin (quickdrop.bar) using the bar-widget contract (QML); it launches quickdrop-launcher.
  • Replaces quickdrop-waybar with quickdrop-launcher (new lock file name) and trims trailing slashes from the backend URL.
  • Adds a Python Waybar patcher that idempotently inserts custom/quickdrop and writes a JSONC backup.
  • Unifies Linux install via install-linux.sh and install-bar-integration.sh with QUICKDROP_BAR=auto|omarchy|waybar|both|none; adds scripts/install-bar-local.sh and bun run bar:install.
  • Server now serves /linux/quickdrop-launcher, /linux/install-bar-integration, /linux/install-waybar-module.py, and Omarchy assets; Docker image ships them.

Review focus

  • Validate bar detection and QUICKDROP_BAR override in install-bar-integration.sh and install-linux.sh.
  • Check Waybar patcher behavior (idempotency, backup) in install-waybar-module.py.
  • Verify Omarchy plugin manifest/QML and that it launches quickdrop-launcher.
  • Confirm server routes serve all new assets and keep the /linux/quickdrop-waybar alias.
  • Ensure the launcher reads only the API key from config.env, safely normalizes quotes, and installers modify only user-owned paths.

Rollout/Migration

  • No action required for existing Waybar users.
  • For local installs, use bun run bar:install (or waybar:install / omarchy-bar:install).
  • If you call quickdrop-waybar directly, switch to quickdrop-launcher.

Written for commit 774adad. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features

    • Added Linux support for both OmarchyBar and Waybar integrations.
    • Installers can automatically detect the active bar or accept an explicit selection.
    • Added a shared launcher with persisted API configuration and legacy compatibility.
    • Added an OmarchyBar QuickDrop widget and streamlined Waybar module setup.
    • Added configurable local or remote installation assets for flexible deployment.
  • Documentation

    • Updated installation and configuration guidance for supported bars, launcher sizing, and backend-independent setup.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The Linux installation flow now uses a shared launcher and configurable QuickDrop backend. It detects and installs OmarchyBar, Waybar, both, or neither. Waybar patching moved to Python, while OmarchyBar receives a packaged widget and manifest.

Changes

Linux bar integration

Layer / File(s) Summary
Shared launcher and integration assets
package.json, Dockerfile, scripts/quickdrop-launcher, scripts/omarchy-quickdrop/*, src/server/index.ts, src/server/index.test.ts
The project packages and serves the shared launcher, OmarchyBar assets, and bar installation commands. The launcher reads persisted backend configuration and uses a new lock-file name.
Waybar configuration adapter
scripts/install-waybar-module.py, scripts/install-waybar-module.test.ts
A Python utility inserts or replaces the custom/quickdrop JSONC module, quotes launcher paths, creates backups, and supports idempotent execution.
Bar detection and adapter installation
scripts/install-bar-integration.sh, scripts/install-bar-integration.test.ts, README.md, docs/mvp.md
The integration installer detects active bars, supports QUICKDROP_BAR modes, patches Waybar, installs and enables the OmarchyBar plugin, and validates repeated installation.
Linux installation orchestration
scripts/install-linux.sh, scripts/install-linux.test.ts, scripts/install-desktop.ts, scripts/install-bar-local.sh, README.md, docs/LLM_CONTEXT.md
Linux installation now supports local or remote integration assets, integration-only mode, persisted configuration, the shared launcher, a legacy alias, and delegated bar setup. Documentation describes the updated commands and assets.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Desktop as install-desktop.ts
  participant Linux as install-linux.sh
  participant Integration as install-bar-integration.sh
  participant Waybar
  participant Omarchy as OmarchyBar
  Desktop->>Linux: start Linux installation
  Linux->>Linux: install launcher and integration assets
  Linux->>Integration: select bar integration
  Integration->>Waybar: patch JSONC module when selected
  Integration->>Omarchy: install and enable widget when selected
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the primary change: adding OmarchyBar and Waybar integration support.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/omarchy-bar-support

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

🧹 Nitpick comments (6)
scripts/install-waybar-module.test.ts (1)

19-31: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add a case for a config without modules-right.

The current cases always contain modules-right, so ensure_in_modules_right never takes its early-return branch. That branch is the one that produces no visible module. A test pins the intended behavior after the warning is added.

💚 Proposed test
+  test("keeps the config usable when modules-right is absent", async () => {
+    const { text } = await patch(`{
+  "layer": "top",
+  "tray": { "icon-size": 12 }
+}`);
+
+    expect(text).toContain(`"custom/quickdrop": {`);
+    expect(text).not.toContain(`"modules-right"`);
+  });
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/install-waybar-module.test.ts` around lines 19 - 31, Add a test case
alongside the existing QuickDrop installation test that passes configuration
without a modules-right entry, exercising ensure_in_modules_right’s early-return
path and verifying the resulting configuration contains no visible QuickDrop
module.
scripts/install-waybar-module.py (1)

150-157: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Optional: report a missing config path with a clear message.

If the path does not exist, read_text raises FileNotFoundError and prints a traceback. The caller in scripts/install-bar-integration.sh then shows that traceback to the user. A SystemExit message matches the usage error on line 152.

♻️ Proposed refactor
     config_path = Path(sys.argv[1])
     launcher_path = sys.argv[2]
+    if not config_path.is_file():
+        raise SystemExit(f"config not found: {config_path}")
     original = config_path.read_text(encoding="utf-8")
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/install-waybar-module.py` around lines 150 - 157, Update main around
config_path.read_text to catch FileNotFoundError for the configured path and
raise SystemExit with a clear missing-config message, avoiding the traceback
while preserving the existing usage validation and patch flow.
src/server/index.ts (1)

60-78: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Optional: register the Linux asset routes from a table.

The six registrations differ only by route and file name. scripts/install-linux.sh already derives exactly these paths, so keeping them in one list reduces drift when an asset is added.

♻️ Proposed refactor
-  app.get("/linux/quickdrop-launcher", async (_request, reply) =>
-    sendScriptFile(reply, "quickdrop-launcher"),
-  );
-  // Backward-compatible endpoint for existing Waybar-only installers.
-  app.get("/linux/quickdrop-waybar", async (_request, reply) =>
-    sendScriptFile(reply, "quickdrop-launcher"),
-  );
-  app.get("/linux/install-bar-integration", async (_request, reply) =>
-    sendScriptFile(reply, "install-bar-integration.sh"),
-  );
-  app.get("/linux/install-waybar-module.py", async (_request, reply) =>
-    sendScriptFile(reply, "install-waybar-module.py"),
-  );
-  app.get("/linux/omarchy/manifest.json", async (_request, reply) =>
-    sendScriptFile(reply, "omarchy-quickdrop/manifest.json"),
-  );
-  app.get("/linux/omarchy/BarWidget.qml", async (_request, reply) =>
-    sendScriptFile(reply, "omarchy-quickdrop/BarWidget.qml"),
-  );
+  const linuxAssets: Record<string, string> = {
+    "/linux/quickdrop-launcher": "quickdrop-launcher",
+    // Backward-compatible endpoint for existing Waybar-only installers.
+    "/linux/quickdrop-waybar": "quickdrop-launcher",
+    "/linux/install-bar-integration": "install-bar-integration.sh",
+    "/linux/install-waybar-module.py": "install-waybar-module.py",
+    "/linux/omarchy/manifest.json": "omarchy-quickdrop/manifest.json",
+    "/linux/omarchy/BarWidget.qml": "omarchy-quickdrop/BarWidget.qml",
+  };
+  for (const [route, fileName] of Object.entries(linuxAssets)) {
+    app.get(route, async (_request, reply) => sendScriptFile(reply, fileName));
+  }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/server/index.ts` around lines 60 - 78, Optionally consolidate the six
Linux asset registrations into a single route-to-file table and iterate over it
to call sendScriptFile. Preserve every existing route, including the
backward-compatible quickdrop-waybar endpoint and all launcher, integration,
Python, manifest, and QML asset mappings.
scripts/install-bar-integration.sh (3)

168-168: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Report a failed launcher persistence instead of hiding it.

|| true discards the failure. If omarchy bar set fails, the widget keeps its default launcher path, and a custom QUICKDROP_BIN_DIR install then starts nothing. Emit a warning so the user can run the command manually.

♻️ Proposed change
-  omarchy bar set "$PLUGIN_ID" launcher "$launcher_path" >/dev/null 2>&1 || true
+  if ! omarchy bar set "$PLUGIN_ID" launcher "$launcher_path" >/dev/null 2>&1; then
+    warn "Could not persist the launcher path. Run: omarchy bar set $PLUGIN_ID launcher $launcher_path"
+  fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/install-bar-integration.sh` at line 168, Update the launcher
persistence command in the install script to stop silently discarding failures
from omarchy bar set; retain suppressed normal output, but emit a warning
containing the failed command context and launcher path so users can run it
manually.

117-117: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Scope the Waybar reload signal to the current user.

waybar_active uses pgrep -u "$(id -u)", but this pkill call has no user filter. On a multi-user session the installer can signal another user's Waybar process.

♻️ Proposed change
-  if pkill -SIGUSR2 waybar >/dev/null 2>&1; then
+  if pkill -SIGUSR2 -u "$(id -u)" -x waybar >/dev/null 2>&1; then
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/install-bar-integration.sh` at line 117, Update the Waybar reload
command in waybar_active to restrict pkill to the current user, matching the
existing pgrep -u "$(id -u)" process check, while preserving the SIGUSR2 signal
and success handling.

141-149: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Compare only the managed plugin files instead of the whole directory.

diff -qr compares every entry of $omarchy_plugin_source with $omarchy_plugin_dir, but only manifest.json and BarWidget.qml are installed. If the source directory ever contains another file (README, tests, license), the comparison never matches and each run creates a new .bak.quickdrop.<timestamp> copy. Stale files already present in the target are also never removed.

♻️ Proposed change
-  mkdir -p "$(dirname "$omarchy_plugin_dir")"
-  if [[ -d "$omarchy_plugin_dir" ]] && ! diff -qr "$omarchy_plugin_source" "$omarchy_plugin_dir" >/dev/null 2>&1; then
-    local backup="${omarchy_plugin_dir}.bak.quickdrop.$(date -u +%Y%m%d%H%M%S)"
-    cp -a "$omarchy_plugin_dir" "$backup"
-    info "Existing OmarchyBar plugin backed up to $backup"
-  fi
+  mkdir -p "$(dirname "$omarchy_plugin_dir")"
+  local plugin_files=(manifest.json BarWidget.qml)
+  local changed=0 file
+  for file in "${plugin_files[@]}"; do
+    cmp -s "$omarchy_plugin_source/$file" "$omarchy_plugin_dir/$file" || changed=1
+  done
+  if [[ -d "$omarchy_plugin_dir" ]] && (( changed )); then
+    local backup timestamp
+    timestamp="$(date -u +%Y%m%d%H%M%S)"
+    backup="${omarchy_plugin_dir}.bak.quickdrop.${timestamp}"
+    cp -a "$omarchy_plugin_dir" "$backup"
+    info "Existing OmarchyBar plugin backed up to $backup"
+  fi

This variant also resolves the SC2155 hint at line 142.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/install-bar-integration.sh` around lines 141 - 149, Update the backup
condition around omarchy_plugin_dir to compare only the managed manifest.json
and BarWidget.qml files, rather than recursively diffing the entire directories.
Avoid declaring and assigning the backup variable in a single local command so
the SC2155 warning is resolved, while preserving the existing backup message and
installation behavior.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/LLM_CONTEXT.md`:
- Line 21: Remove the leading space before the Backend entrypoint list marker in
the documentation so it aligns with the other top-level list items and resolves
the MD005 indentation warnings.
- Line 31: Update the status-bar install description in LL​M_CONTEXT.md to
identify scripts/quickdrop-waybar as a compatibility alias or copied launcher,
not a compatibility symlink, while preserving the existing description of
scripts/quickdrop-launcher and its configuration behavior.

In `@scripts/install-linux.sh`:
- Around line 158-163: Update write_config in scripts/install-linux.sh (lines
158-163) to read and preserve the existing QUICKDROP_API_BASE_URL from
$config_path when the caller provides no value, instead of overwriting it with
DEFAULT_BASE_URL; continue writing the resulting value normally.
scripts/install-bar-local.sh (lines 7-12) requires no direct change because
preserving the stored value in write_config prevents bar:install from resetting
the local backend.

In `@scripts/install-waybar-module.py`:
- Around line 17-26: Use consistent English user-facing tooltip wording across
both bar adapters: update render_module in scripts/install-waybar-module.py, its
corresponding assertion in scripts/install-waybar-module.test.ts, and
tooltipText in scripts/omarchy-quickdrop/BarWidget.qml (lines 15-16) to the same
English wording.
- Around line 99-118: Update ensure_in_modules_right and its callers to detect
when no modules-right array is found, report that skipped insertion on stderr,
and ensure upsert_module/main do not claim the installation changed
successfully. Handle multi-bar Waybar configurations by applying the module
insertion to every matching modules-right array rather than only the first
pattern match, while preserving existing formatting and duplicate checks.
- Line 80: Update scripts/install-waybar-module.py for Python 3.9 compatibility
by adding the future annotations import and replacing datetime.UTC references
with datetime.timezone.utc, preserving the existing installer behavior.

In `@scripts/install-waybar-module.test.ts`:
- Around line 8-18: Remove the describe.skipIf(!hasPython) guard from the
install-waybar-module.py test suite so it does not silently skip when python3 is
unavailable. Keep the existing patch helper and test definitions unchanged.

In `@scripts/omarchy-quickdrop/BarWidget.qml`:
- Around line 18-22: Update the launcher setting flow in the onPressed handler
to treat launcher as an executable path rather than a command string: rename its
schema label to “Launcher executable” and ensure values such as
quickdrop-launcher --tray are not interpreted as a single executable path, or
provide separate executable and argument settings before calling root.bar.run.

In `@scripts/quickdrop-launcher`:
- Around line 8-19: Update the config loading in the launcher to avoid sourcing
config.env; parse only the QUICKDROP_API_BASE_URL assignment and use its value
without executing other file contents or propagating a nonzero file status.
Normalize the selected api_base_url by removing any trailing slash, matching
scripts/install-linux.sh behavior, while preserving the existing
environment-variable precedence and default URL.

---

Nitpick comments:
In `@scripts/install-bar-integration.sh`:
- Line 168: Update the launcher persistence command in the install script to
stop silently discarding failures from omarchy bar set; retain suppressed normal
output, but emit a warning containing the failed command context and launcher
path so users can run it manually.
- Line 117: Update the Waybar reload command in waybar_active to restrict pkill
to the current user, matching the existing pgrep -u "$(id -u)" process check,
while preserving the SIGUSR2 signal and success handling.
- Around line 141-149: Update the backup condition around omarchy_plugin_dir to
compare only the managed manifest.json and BarWidget.qml files, rather than
recursively diffing the entire directories. Avoid declaring and assigning the
backup variable in a single local command so the SC2155 warning is resolved,
while preserving the existing backup message and installation behavior.

In `@scripts/install-waybar-module.py`:
- Around line 150-157: Update main around config_path.read_text to catch
FileNotFoundError for the configured path and raise SystemExit with a clear
missing-config message, avoiding the traceback while preserving the existing
usage validation and patch flow.

In `@scripts/install-waybar-module.test.ts`:
- Around line 19-31: Add a test case alongside the existing QuickDrop
installation test that passes configuration without a modules-right entry,
exercising ensure_in_modules_right’s early-return path and verifying the
resulting configuration contains no visible QuickDrop module.

In `@src/server/index.ts`:
- Around line 60-78: Optionally consolidate the six Linux asset registrations
into a single route-to-file table and iterate over it to call sendScriptFile.
Preserve every existing route, including the backward-compatible
quickdrop-waybar endpoint and all launcher, integration, Python, manifest, and
QML asset mappings.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0129d595-ff1b-4530-8e24-da0ebcf51e81

📥 Commits

Reviewing files that changed from the base of the PR and between 6782bac and e436c07.

📒 Files selected for processing (19)
  • Dockerfile
  • README.md
  • docs/LLM_CONTEXT.md
  • docs/mvp.md
  • package.json
  • scripts/install-bar-integration.sh
  • scripts/install-bar-integration.test.ts
  • scripts/install-bar-local.sh
  • scripts/install-desktop.ts
  • scripts/install-linux.sh
  • scripts/install-linux.test.ts
  • scripts/install-waybar-module.py
  • scripts/install-waybar-module.test.ts
  • scripts/install-waybar-module.ts
  • scripts/omarchy-quickdrop/BarWidget.qml
  • scripts/omarchy-quickdrop/manifest.json
  • scripts/quickdrop-launcher
  • src/server/index.test.ts
  • src/server/index.ts
💤 Files with no reviewable changes (1)
  • scripts/install-waybar-module.ts

Comment thread docs/LLM_CONTEXT.md Outdated
Comment thread docs/LLM_CONTEXT.md Outdated
Comment thread scripts/install-linux.sh
Comment thread scripts/install-waybar-module.py Outdated
Comment thread scripts/install-waybar-module.py Outdated
Comment thread scripts/install-waybar-module.py Outdated
Comment thread scripts/install-waybar-module.test.ts
Comment thread scripts/omarchy-quickdrop/BarWidget.qml
Comment thread scripts/quickdrop-launcher

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 19 files

Tip: instead of fixing issues one by one fix them all with cubic

Re-trigger cubic

Comment thread scripts/install-waybar-module.py Outdated
Comment thread scripts/install-bar-integration.sh Outdated
Comment thread scripts/install-linux.sh Outdated
Comment thread scripts/install-waybar-module.py Outdated
Comment thread docs/mvp.md Outdated
Comment thread scripts/install-bar-integration.sh Outdated
Comment thread docs/LLM_CONTEXT.md Outdated
@EaeDave

EaeDave commented Aug 12, 2026

Copy link
Copy Markdown
Owner Author

Apliquei o feedback dos reviews no commit d741f95:

  • preserva a URL de backend existente e não reescreve config em integration-only
  • launcher não executa mais config.env; lê apenas QUICKDROP_API_BASE_URL e normaliza /
  • patcher Waybar agora suporta Python 3.9, múltiplas barras, ausência de modules-right e JSONC com comentário final
  • valida o plugin Omarchy antes de substituir uma instalação funcional
  • restringe reload da Waybar ao usuário atual, compara apenas arquivos gerenciados e evita regex ambígua do plugin id
  • informa falhas ao persistir o launcher e esclarece que a configuração é um executável
  • unifica tooltips e adiciona mensagens/erros mais claros
  • consolida as rotas dos assets Linux
  • remove completamente docs/LLM_CONTEXT.md e docs/mvp.md

Validação atualizada: bun run typecheck, 71 testes, validação do plugin Omarchy, checks de sintaxe e build Docker aprovados.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 13 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

Fix all with cubic | Re-trigger cubic

Comment thread scripts/quickdrop-launcher Outdated
Comment thread scripts/install-waybar-module.test.ts
@EaeDave

EaeDave commented Aug 12, 2026

Copy link
Copy Markdown
Owner Author

Validei e tratei os dois novos apontamentos no commit 774adad:

  • removi o escape ambíguo antes de $ nos dois parsers equivalentes (quickdrop-launcher e install-linux.sh) e alterei o teste do launcher para cobrir explicitamente uma URL entre aspas simples
  • restaurei o describe.skipIf(!Bun.which("python3")) da suíte do patcher para não quebrar ambientes sem Python

Validação: typecheck e todos os 71 testes passando.

@EaeDave
EaeDave merged commit f42ae85 into main Aug 12, 2026
2 checks passed
@EaeDave
EaeDave deleted the feat/omarchy-bar-support branch August 12, 2026 18:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant