Skip to content

fix(accessibility): build arboard without image support - #79

Open
senamakel wants to merge 1 commit into
mainfrom
arboard-no-image
Open

senamakel wants to merge 1 commit into
mainfrom
arboard-no-image

Conversation

@senamakel

@senamakel senamakel commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Summary

tinycomputer-accessibility's paste feature depended on arboard with its default features, which include image-data. That pulls the image crate and its codecs into every build that enables paste. src/paste.rs only reads and writes text, so this sets default-features = false on arboard. On Linux, wayland-data-control is not a default feature either, so behaviour there is unchanged; it is not added.

Measured in the OpenHuman product build: 6 extra crates on Linux (image, moxcms, pxfm, byteorder, byteorder-lite, ...), 11 on macOS (incl. tiff, zune-jpeg, half, fax), 8 on Windows (incl. png, clipboard-win, error-code).

Related issue

None

API or behavior changes

None. No use of set_image, get_image or ImageData anywhere in the repo. Cargo.lock drops crunchy, fax, half, tiff and weezl; the rest of the image stack stays in the lock for other dependents but is no longer reachable from this crate.

Validation

  • cargo fmt --all -- --check passes
  • cargo clippy -p tinycomputer-accessibility --all-targets --features paste -- -D warnings passes
  • cargo check -p tinycomputer-accessibility --features paste passes (linux)
  • cargo test -p tinycomputer-accessibility --features paste: 82 passed

cargo tree -p tinycomputer-accessibility --features paste -e normal -i image:

target before after
x86_64-unknown-linux-gnu image v0.25.10 via arboard package image not in tree
aarch64-apple-darwin image v0.25.10 via arboard package image not in tree
x86_64-pc-windows-msvc image v0.25.10 via arboard package image not in tree

cargo check for the apple and windows targets was skipped: those toolchain targets are not installed.

Tests

No new tests; the existing paste tests cover the text-only path.

Documentation

Not needed. The repo has no CHANGELOG file.

Checklist

  • The change is focused on one logical change
  • No new #[allow(...)], #[ignore], or relaxed lints
  • No secrets, tokens, or .env contents in the diff or the description

Summary by CodeRabbit

  • Chores
    • Updated an internal configuration setting. This change does not alter any features or functionality visible to users. No changes to the app’s interface or user workflows are included in this update.

The paste path only reads and writes text. arboard's default image-data
feature pulled the image crate and its codecs into every build with the
paste feature on.

Co-authored-by: Medulla <medulla@tinyhumans.ai>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-09T02:46:04.098313Z 1d5e255 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 976feab3-826a-419f-8863-5dfd7e6db2a0
📥 Commits

Reviewing files that changed from the base of the PR and between da56e9d and 1d5e255.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • crates/tinycomputer-accessibility/Cargo.toml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The optional arboard version 3 dependency now disables its default features.

Changes

Accessibility dependency configuration

Layer / File(s) Summary
Arboard feature selection
crates/tinycomputer-accessibility/Cargo.toml
The optional arboard version 3 dependency now disables its default features.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~3 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 1d5e2

The change removes arboard image support without removing the clipboard text operations used by the adapter. No actionable merge-blocking risk is established.

Architecture Summary

Architecture risk: 🔵 Low · up to 1d5e2

The change affects 1 system.

Changed systems: crates

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — crates (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in crates/tinycomputer-accessibility/Cargo.toml: arboard remains an optional version 3 dependency, but its default features are now disabled.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: disabling image support when building arboard for accessibility paste functionality.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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.
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

A rabbit checks the feature list,
Then nibbles defaults off the twig.
The optional crate stays in its place,
At version three, with smaller grace.
And hops away through fields of green.

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

@tinysweeper

tinysweeper Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Tiny Sweeper review

Tiny Sweeper reviewed this change across 6 lane(s) and found 1 active actionable finding(s). Detailed lane evidence and any incomplete work are listed below.

State: Ready for maintainer review
Priority: medium
Reviewed head: 1d5e25578727
Updated: 1791514708 (Unix time)

Review snapshot

Change surface Files Review signal Count
Production 0 Active findings 1
Tests 0 Noted findings 0
Documentation 0 Resolved findings 0
Configuration 1 Pending checks/questions 0

Completeness: Complete
Test assessment: No supported feature-to-test mapping was available; this does not mean tests are absent or passed.

What changed

The review could not produce a supported behavioral summary; inspect the cited changed surface and lane details below.

Features

None identified with supported citations.

Tests

No supported feature-to-test mapping was produced. Test execution is not inferred.

Findings

  • medium · security · Enable arboard's Wayland clipboard backend — Disabling arboard's default features also disables `wayland-data-control`. The `paste` feature still exposes `insert_text` on Linux, but Wayland hosts will no longer have a functio (crates/tinycomputer\-accessibility/Cargo\.toml:39)

Before merge

None.

Agent review details

critique

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: The change disables arboard's default features while retaining the text clipboard API used by this crate, reducing unnecessary dependency support without changing the configured paste feature. It looks safe to merge. _Code retrieval was unavailable (model: ladder embeddings returned 400 Bad Request: {"error":{"message":"unknown ladder vectors; known ladders are flash (also chat-v1, flash-v1), instant (also no-think, instant-v1), reasoning (also deepseek), max-reasoning (also max-reasoning-v1), deepseek-flash (also reasoning-v1, agentic-v1), deep (also luna), scribe, uncensored, vectors-oai3 (also embeddings-oai3-v1), vision (also vision-v1, multimodal-v1), image (also images-v1, image-v1), vi), so this review saw the diff alone._ _Memory was unavailable (model: cortex: v1/recall: error sending request for url (http://cortexdb:3141/v1/recall\)\), so this review ran without it._

security

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: The feature change removes arboard's Wayland backend while retaining the paste feature, so the change is not safe to merge for Linux Wayland hosts. _Code retrieval was unavailable (model: ladder embeddings returned 400 Bad Request: {"error":{"message":"unknown ladder vectors; known ladders are flash (also chat-v1, flash-v1), instant (also no-think, instant-v1), reasoning (also deepseek), max-reasoning (also max-reasoning-v1), deepseek-flash (also reasoning-v1, agentic-v1), deep (also luna), scribe, uncensored, vectors-oai3 (also embeddings-oai3-v1), vision (also vision-v1, multimodal-v1), image (also images-v1, image-v1), vi), so this review saw the diff alone._ _Memory was unavailable (model: cortex: v1/recall: error sending request for url (http://cortexdb:3141/v1/recall\)\), so this review ran without it._
  • Evidence: crates/tinycomputer\-accessibility/Cargo\.toml — Enable arboard's Wayland clipboard backend

tests

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No behavioural change: nothing outside documentation, configuration and tests.

commits

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: Nothing sensitive found in what this pull request commits.

description

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: The diff does exactly what the description says: it disables arboard's default features (which include `image-data`) for the paste feature, matching the claim that `src/paste.rs` only touches text. The description is accurate — the measured crate-count claims and validation steps are consistent with this single-line Cargo.toml change, and I found no code in the diff that contradicts it. Safe to merge. _Code retrieval was unavailable (model: ladder embeddings returned 400 Bad Request: {"error":{"message":"unknown ladder vectors; known ladders are flash (also chat-v1, flash-v1), instant (also no-think, instant-v1), reasoning (also deepseek), max-reasoning (also max-reasoning-v1), deepseek-flash (also reasoning-v1, agentic-v1), deep (also luna), scribe, uncensored, vectors-oai3 (also embeddings-oai3-v1), vision (also vision-v1, multimodal-v1), image (also images-v1, image-v1), vi), so this review saw the diff alone._ _Memory was unavailable (model: cortex: v1/recall: error sending request for url (http://cortexdb:3141/v1/recall\)\), so this review ran without it._

e2e

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No behavioural change: nothing outside documentation, configuration and tests.
Evidence and run details
  • Models: gpt-5.6-luna, glm-5.3-flash
  • Spend: $0.002484
  • Tokens: 42725 input · 4063 output · 3816 cached · 0 embedding
Head State Pass summary
1d5e25578727 ready for maintainer review 1 active finding(s), 0 resolved finding(s) (at 1791514708)

tinysweeper 0.1.0

@tinysweeper tinysweeper 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.

tinysweeper found nothing blocking. Approving.

             $0.0025 · 42,725 in / 4,063 out · 3,816 cached (9%)  · gpt-5.6-luna, glm-5.3-flash
critique:    $0.0011 · 16,701 in / 1,496 out · 2,030 cached (12%) · gpt-5.6-luna
security:    $0.0013 · 20,458 in / 1,834 out · 1,786 cached (9%)  · gpt-5.6-luna
description: $0.0000 · 3,750 in  / 91 out    · 0 cached (0%)      · glm-5.3-flash

cpal = { workspace = true, optional = true }
# Clipboard and synthetic keystrokes behind `paste`.
arboard = { version = "3", optional = true }
arboard = { version = "3", default-features = false, optional = true }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

priority medium security confident

Enable arboard's Wayland clipboard backend

Disabling arboard's default features also disables wayland-data-control. The paste feature still exposes insert_text on Linux, but Wayland hosts will no longer have a functioning clipboard backend and paste will fail at runtime. Keep default features disabled if desired, but explicitly enable wayland-data-control so the existing Linux Wayland path continues to work.

Suggested change
arboard = { version = "3", default-features = false, optional = true }
arboard = { version = "3", default-features = false, features = ["wayland-data-control"], optional = true }

[RULE] missing-platform-feature ·

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant