4
15
Fork
You've already forked app
3

macos build #3

Merged
joch merged 3 commits from NSBuitrago/app:macos-build into main 2026年06月11日 22:41:44 +02:00
Contributor
Copy link

What this changes

Fixes compilation errors on macOS by addressing NSColor and clipboard access with objc2, objc2-app-kit, and objc2-foundation crates in favor of deprecated objc and cocoa.

Closes #1

Type of change

  • Bug fix
  • New feature
  • Refactor or cleanup
  • Documentation
  • Build, CI, or tooling

Checklist

  • Branched from main, one logical change.
  • Documentation updated in this same change (a subsystem change updates its
    doc under documentation/developer/). Didn't find any relevant documentation for the proposed changes.
  • User-facing strings go through the i18n seam (no bare text).
  • All gates pass locally:
    • cargo fmt --check --manifest-path src-tauri/Cargo.toml
    • cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warnings (these were failing before any changes were made)
    • cargo test --manifest-path src-tauri/Cargo.toml
    • npx tsc --noEmit
    • npm test
    • npm run i18n:check

How I verified this

Ran rust fmt, clippy lints, and tests; frontend tests and i18n checks. Verified app builds locally with npm run tauri:dev and npm run tauri build

<!-- Thanks for contributing. Keep changes focused: one logical change per PR. See CONTRIBUTING.md for the full workflow and conventions. --> ## What this changes Fixes compilation errors on macOS by addressing NSColor and clipboard access with objc2, objc2-app-kit, and objc2-foundation crates in favor of deprecated objc and cocoa. ## Related issue Closes #1 ## Type of change - [x] Bug fix - [ ] New feature - [ ] Refactor or cleanup - [ ] Documentation - [ ] Build, CI, or tooling ## Checklist - [x] Branched from `main`, one logical change. - [ ] Documentation updated in this same change (a subsystem change updates its doc under `documentation/developer/`). Didn't find any relevant documentation for the proposed changes. - [x] User-facing strings go through the i18n seam (no bare text). - [ ] All gates pass locally: - [x] `cargo fmt --check --manifest-path src-tauri/Cargo.toml` - [ ] `cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warnings` (these were failing before any changes were made) - [x] `cargo test --manifest-path src-tauri/Cargo.toml` - [x] `npx tsc --noEmit` - [x] `npm test` - [x] `npm run i18n:check` ## How I verified this Ran rust fmt, clippy lints, and tests; frontend tests and i18n checks. Verified app builds locally with `npm run tauri:dev` and `npm run tauri build`
- Replace macOS NSColor access with objc2 and objc2_app_kit
- Add generated macOS schema at src-tauri/gen/schemas/macOS-schema.json
- Update macOS dependencies (objc2 and objc2-app-kit) in
 Cargo.toml/Cargo.lock
fix: switch macOS clipboard access to objc2/objc2_app_kit
Some checks failed
CI / rustfmt (pull_request) Has been cancelled
CI / clippy (pull_request) Has been cancelled
CI / rust-test (pull_request) Has been cancelled
CI / frontend (pull_request) Has been cancelled
4a2afeabc0
Read the general pasteboard with objc2_app_kit's NSPasteboard API to
obtain UTF-8 text, removing the previous Cocoa/objc calls.
Migrate macOS clipboard handling from Cocoa crates to objc2_foundation and objc2_app_kit. Update imports and logic to use NSPasteboard, NSURL, and NSArray for reading file URLs and extracting paths, and adjust Cargo.toml dependencies accordingly.
Remove objc and cocoa deps.
Owner
Copy link

Thank you for kicking things off with the first contribution here. I appreciate your effort digging into the macOS build and that you moved us to objc2.

After reviewing the diff the improvements seem scoped to the macOS cfg paths and wouldn't affect the Linux or Windows builds. I don't have a Mac, and our CI only builds on Linux, which makes your local tauri build effectively the verification here, so thank you for running it.

A few small things:

There's a commented-out // use cocoa::base::nil; in system_color.rs which I believe can be dropped.

On the FIXME about the colour components: I understand that it's ok as-is, no cast or precision loss. Happy to have you remove the comment (or I can).

Could you share the clippy output you saw failing? Since our CI doesn't lint the macOS paths, I'd like to understand whether it's something pre-existing in that code so we can get it clean.

If you have a moment to sort that out, go ahead and mark it Ready for review (it's currently a draft) and I'll merge. Thanks again for the contribution to unblock the macOS build.

Thank you for kicking things off with the first contribution here. I appreciate your effort digging into the macOS build and that you moved us to objc2. After reviewing the diff the improvements seem scoped to the macOS cfg paths and wouldn't affect the Linux or Windows builds. I don't have a Mac, and our CI only builds on Linux, which makes your local tauri build effectively the verification here, so thank you for running it. A few small things: There's a commented-out // use cocoa::base::nil; in system_color.rs which I believe can be dropped. On the FIXME about the colour components: I understand that it's ok as-is, no cast or precision loss. Happy to have you remove the comment (or I can). Could you share the clippy output you saw failing? Since our CI doesn't lint the macOS paths, I'd like to understand whether it's something pre-existing in that code so we can get it clean. If you have a moment to sort that out, go ahead and mark it Ready for review (it's currently a draft) and I'll merge. Thanks again for the contribution to unblock the macOS build.
refactor: remove stale comments from in macos_accent
Some checks failed
CI / rustfmt (pull_request) Has been cancelled
CI / clippy (pull_request) Has been cancelled
CI / rust-test (pull_request) Has been cancelled
CI / frontend (pull_request) Has been cancelled
36689278d4
Author
Contributor
Copy link

Thanks! I cleaned up those stale comments.

In terms of CI, do you think adding macOS builds to CI should be added here or is the local build sufficient for now?

It seems like the clippy lints are mostly benign (including some unused functions, and recommendations to use sort_by_key over sort_by). I didn't touch these since it seems out of scope here, but happy to address these later on.

cargo clippy output
error: function `parse_file_uri_line` is never used
 --> src/commands/file_ops.rs:343:4
 |
343 | fn parse_file_uri_line(line: &str) -> Option<String> {
 | ^^^^^^^^^^^^^^^^^^^
 |
 = note: `-D dead-code` implied by `-D warnings`
 = help: to override `-D warnings` add `#[expect(dead_code)]` or `#[allow(dead_code)]`
error: function `percent_decode` is never used
 --> src/commands/file_ops.rs:363:4
 |
363 | fn percent_decode(s: &str) -> String {
 | ^^^^^^^^^^^^^^
error: function `hex_val` is never used
 --> src/commands/file_ops.rs:383:4
 |
383 | fn hex_val(c: u8) -> Option<u8> {
 | ^^^^^^^
error: consider using `sort_by_key`
 --> src/backup/archive.rs:291:5
 |
291 | out.sort_by(|a, b| b.0.cmp(&a.0));
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by
 = note: `-D clippy::unnecessary-sort-by` implied by `-D warnings`
 = help: to override `-D warnings` add `#[allow(clippy::unnecessary_sort_by)]`
help: try
 |
291 - out.sort_by(|a, b| b.0.cmp(&a.0));
291 + out.sort_by_key(|b| std::cmp::Reverse(b.0));
 |
error: consider using `sort_by_key`
 --> src/commands/creation_rules.rs:393:5
 |
393 | entries.sort_by(|a, b| a.name.to_lowercase().cmp(&b.name.to_lowercase()));
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by
help: try
 |
393 - entries.sort_by(|a, b| a.name.to_lowercase().cmp(&b.name.to_lowercase()));
393 + entries.sort_by_key(|a| a.name.to_lowercase());
 |
error: unneeded `return` statement
 --> src/commands/file_ops.rs:85:9
 |
85 | return Ok(paths);
 | ^^^^^^^^^^^^^^^^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_return
 = note: `-D clippy::needless-return` implied by `-D warnings`
 = help: to override `-D warnings` add `#[allow(clippy::needless_return)]`
help: remove `return`
 |
85 - return Ok(paths);
85 + Ok(paths)
 |
error: unneeded `return` statement
 --> src/commands/markdown.rs:96:9
 |
 96 | / return Ok(tokio::task::spawn_blocking(|| {
 97 | | let pb = objc2_app_kit::NSPasteboard::generalPasteboard();
 98 | | let text = pb.stringForType(unsafe { objc2_app_kit::NSPasteboardTypeString })?;
 99 | | Some(text.to_string())
100 | | })
101 | | .await
102 | | .map_err(|e| format!("clipboard task panicked: {}", e))?);
 | |_________________________________________________________________^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_return
help: remove `return`
 |
 96 ~ Ok(tokio::task::spawn_blocking(|| {
 97 + let pb = objc2_app_kit::NSPasteboard::generalPasteboard();
 98 + let text = pb.stringForType(unsafe { objc2_app_kit::NSPasteboardTypeString })?;
 99 + Some(text.to_string())
100 + })
101 + .await
102 ~ .map_err(|e| format!("clipboard task panicked: {}", e))?)
 |
error: enclosing `Ok` and `?` operator are unneeded
 --> src/commands/markdown.rs:96:16
 |
 96 | return Ok(tokio::task::spawn_blocking(|| {
 | ________________^
 97 | | let pb = objc2_app_kit::NSPasteboard::generalPasteboard();
 98 | | let text = pb.stringForType(unsafe { objc2_app_kit::NSPasteboardTypeString })?;
 99 | | Some(text.to_string())
100 | | })
101 | | .await
102 | | .map_err(|e| format!("clipboard task panicked: {}", e))?);
 | |_________________________________________________________________^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_question_mark
 = note: `-D clippy::needless-question-mark` implied by `-D warnings`
 = help: to override `-D warnings` add `#[allow(clippy::needless_question_mark)]`
help: remove the enclosing `Ok` and `?` operator
 |
 96 ~ return tokio::task::spawn_blocking(|| {
 97 | let pb = objc2_app_kit::NSPasteboard::generalPasteboard();
...
101 | .await
102 ~ .map_err(|e| format!("clipboard task panicked: {}", e));
 |
error: consider using `sort_by_key`
 --> src/commands/notebox.rs:903:5
 |
903 | entries.sort_by(|a, b| b.last_opened.cmp(&a.last_opened));
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by
help: try
 |
903 - entries.sort_by(|a, b| b.last_opened.cmp(&a.last_opened));
903 + entries.sort_by_key(|b| std::cmp::Reverse(b.last_opened));
 |
error: consider using `sort_by_key`
 --> src/typst_pipeline/path_rebase.rs:54:5
 |
54 | edits.sort_by(|a, b| b.0.start.cmp(&a.0.start));
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by
help: try
 |
54 - edits.sort_by(|a, b| b.0.start.cmp(&a.0.start));
54 + edits.sort_by_key(|b| std::cmp::Reverse(b.0.start));
 |
error: consider using `sort_by_key`
 --> src/typst_pipeline/path_rebase.rs:298:5
 |
298 | edits.sort_by(|a, b| b.0.start.cmp(&a.0.start));
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by
help: try
 |
298 - edits.sort_by(|a, b| b.0.start.cmp(&a.0.start));
298 + edits.sort_by_key(|b| std::cmp::Reverse(b.0.start));
 |
error: consider using `sort_by_key`
 --> src/typst_pipeline/path_rebase.rs:353:5
 |
353 | edits.sort_by(|a, b| b.0.start.cmp(&a.0.start));
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by
help: try
 |
353 - edits.sort_by(|a, b| b.0.start.cmp(&a.0.start));
353 + edits.sort_by_key(|b| std::cmp::Reverse(b.0.start));
 |
error: consider using `sort_by_key`
 --> src/typst_pipeline/review_markup.rs:93:5
 |
93 | sorted.sort_by(|a, b| b.start.cmp(&a.start));
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by
help: try
 |
93 - sorted.sort_by(|a, b| b.start.cmp(&a.start));
93 + sorted.sort_by_key(|b| std::cmp::Reverse(b.start));
 |
error: consider using `sort_by_key`
 --> src/typst_pipeline/suggestion.rs:157:5
 |
157 | calls.sort_by(|a, b| b.full_span.start.cmp(&a.full_span.start));
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by
help: try
 |
157 - calls.sort_by(|a, b| b.full_span.start.cmp(&a.full_span.start));
157 + calls.sort_by_key(|b| std::cmp::Reverse(b.full_span.start));
 |
error: consider using `sort_by_key`
 --> src/typst_pipeline/tag_rewrite.rs:51:5
 |
51 | edits.sort_by(|a, b| b.0.start.cmp(&a.0.start));
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 |
 = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by
help: try
 |
51 - edits.sort_by(|a, b| b.0.start.cmp(&a.0.start));
51 + edits.sort_by_key(|b| std::cmp::Reverse(b.0.start));
 |
error: could not compile `inkycap` (lib) due to 15 previous errors
Thanks! I cleaned up those stale comments. In terms of CI, do you think adding macOS builds to CI should be added here or is the local build sufficient for now? It seems like the clippy lints are mostly benign (including some unused functions, and recommendations to use sort_by_key over sort_by). I didn't touch these since it seems out of scope here, but happy to address these later on. <details> <summary>cargo clippy output</summary> ```bash error: function `parse_file_uri_line` is never used --> src/commands/file_ops.rs:343:4 | 343 | fn parse_file_uri_line(line: &str) -> Option<String> { | ^^^^^^^^^^^^^^^^^^^ | = note: `-D dead-code` implied by `-D warnings` = help: to override `-D warnings` add `#[expect(dead_code)]` or `#[allow(dead_code)]` error: function `percent_decode` is never used --> src/commands/file_ops.rs:363:4 | 363 | fn percent_decode(s: &str) -> String { | ^^^^^^^^^^^^^^ error: function `hex_val` is never used --> src/commands/file_ops.rs:383:4 | 383 | fn hex_val(c: u8) -> Option<u8> { | ^^^^^^^ error: consider using `sort_by_key` --> src/backup/archive.rs:291:5 | 291 | out.sort_by(|a, b| b.0.cmp(&a.0)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by = note: `-D clippy::unnecessary-sort-by` implied by `-D warnings` = help: to override `-D warnings` add `#[allow(clippy::unnecessary_sort_by)]` help: try | 291 - out.sort_by(|a, b| b.0.cmp(&a.0)); 291 + out.sort_by_key(|b| std::cmp::Reverse(b.0)); | error: consider using `sort_by_key` --> src/commands/creation_rules.rs:393:5 | 393 | entries.sort_by(|a, b| a.name.to_lowercase().cmp(&b.name.to_lowercase())); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by help: try | 393 - entries.sort_by(|a, b| a.name.to_lowercase().cmp(&b.name.to_lowercase())); 393 + entries.sort_by_key(|a| a.name.to_lowercase()); | error: unneeded `return` statement --> src/commands/file_ops.rs:85:9 | 85 | return Ok(paths); | ^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_return = note: `-D clippy::needless-return` implied by `-D warnings` = help: to override `-D warnings` add `#[allow(clippy::needless_return)]` help: remove `return` | 85 - return Ok(paths); 85 + Ok(paths) | error: unneeded `return` statement --> src/commands/markdown.rs:96:9 | 96 | / return Ok(tokio::task::spawn_blocking(|| { 97 | | let pb = objc2_app_kit::NSPasteboard::generalPasteboard(); 98 | | let text = pb.stringForType(unsafe { objc2_app_kit::NSPasteboardTypeString })?; 99 | | Some(text.to_string()) 100 | | }) 101 | | .await 102 | | .map_err(|e| format!("clipboard task panicked: {}", e))?); | |_________________________________________________________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_return help: remove `return` | 96 ~ Ok(tokio::task::spawn_blocking(|| { 97 + let pb = objc2_app_kit::NSPasteboard::generalPasteboard(); 98 + let text = pb.stringForType(unsafe { objc2_app_kit::NSPasteboardTypeString })?; 99 + Some(text.to_string()) 100 + }) 101 + .await 102 ~ .map_err(|e| format!("clipboard task panicked: {}", e))?) | error: enclosing `Ok` and `?` operator are unneeded --> src/commands/markdown.rs:96:16 | 96 | return Ok(tokio::task::spawn_blocking(|| { | ________________^ 97 | | let pb = objc2_app_kit::NSPasteboard::generalPasteboard(); 98 | | let text = pb.stringForType(unsafe { objc2_app_kit::NSPasteboardTypeString })?; 99 | | Some(text.to_string()) 100 | | }) 101 | | .await 102 | | .map_err(|e| format!("clipboard task panicked: {}", e))?); | |_________________________________________________________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_question_mark = note: `-D clippy::needless-question-mark` implied by `-D warnings` = help: to override `-D warnings` add `#[allow(clippy::needless_question_mark)]` help: remove the enclosing `Ok` and `?` operator | 96 ~ return tokio::task::spawn_blocking(|| { 97 | let pb = objc2_app_kit::NSPasteboard::generalPasteboard(); ... 101 | .await 102 ~ .map_err(|e| format!("clipboard task panicked: {}", e)); | error: consider using `sort_by_key` --> src/commands/notebox.rs:903:5 | 903 | entries.sort_by(|a, b| b.last_opened.cmp(&a.last_opened)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by help: try | 903 - entries.sort_by(|a, b| b.last_opened.cmp(&a.last_opened)); 903 + entries.sort_by_key(|b| std::cmp::Reverse(b.last_opened)); | error: consider using `sort_by_key` --> src/typst_pipeline/path_rebase.rs:54:5 | 54 | edits.sort_by(|a, b| b.0.start.cmp(&a.0.start)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by help: try | 54 - edits.sort_by(|a, b| b.0.start.cmp(&a.0.start)); 54 + edits.sort_by_key(|b| std::cmp::Reverse(b.0.start)); | error: consider using `sort_by_key` --> src/typst_pipeline/path_rebase.rs:298:5 | 298 | edits.sort_by(|a, b| b.0.start.cmp(&a.0.start)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by help: try | 298 - edits.sort_by(|a, b| b.0.start.cmp(&a.0.start)); 298 + edits.sort_by_key(|b| std::cmp::Reverse(b.0.start)); | error: consider using `sort_by_key` --> src/typst_pipeline/path_rebase.rs:353:5 | 353 | edits.sort_by(|a, b| b.0.start.cmp(&a.0.start)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by help: try | 353 - edits.sort_by(|a, b| b.0.start.cmp(&a.0.start)); 353 + edits.sort_by_key(|b| std::cmp::Reverse(b.0.start)); | error: consider using `sort_by_key` --> src/typst_pipeline/review_markup.rs:93:5 | 93 | sorted.sort_by(|a, b| b.start.cmp(&a.start)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by help: try | 93 - sorted.sort_by(|a, b| b.start.cmp(&a.start)); 93 + sorted.sort_by_key(|b| std::cmp::Reverse(b.start)); | error: consider using `sort_by_key` --> src/typst_pipeline/suggestion.rs:157:5 | 157 | calls.sort_by(|a, b| b.full_span.start.cmp(&a.full_span.start)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by help: try | 157 - calls.sort_by(|a, b| b.full_span.start.cmp(&a.full_span.start)); 157 + calls.sort_by_key(|b| std::cmp::Reverse(b.full_span.start)); | error: consider using `sort_by_key` --> src/typst_pipeline/tag_rewrite.rs:51:5 | 51 | edits.sort_by(|a, b| b.0.start.cmp(&a.0.start)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unnecessary_sort_by help: try | 51 - edits.sort_by(|a, b| b.0.start.cmp(&a.0.start)); 51 + edits.sort_by_key(|b| std::cmp::Reverse(b.0.start)); | error: could not compile `inkycap` (lib) due to 15 previous errors ``` </details>
NSBuitrago changed title from (削除) WIP: macos build (削除ここまで) to macos build 2026年06月11日 21:18:47 +02:00
Owner
Copy link

Thanks for cleaning those up and for the clippy dump, which is useful.

The sort_by_key suggestions are a toolchain-version thing. Rust is pinned at 1.94.1 (via rust-toolchain.toml) honoured by the CI, it seems where those lints don't fire your clippy is at the stricter 1.96.0. According to my discussion with AI, if you installed Rust through Homebrew rather than rustup, that could explain it. The dead-code and needless_return ones are macOS-only code compiled in the Linux CI so invisible until there's a macOS build. Will clean up separately.

My understanding is that Codeberg's shared runners are Linux-only, so can't add a Mac job here without a self-hosted Mac runner. Possibly a GitHub mirror for their free macOS runners for build verification could work. At the moment you local build is the verification, and I'll merge. Thank you again.

Thanks for cleaning those up and for the clippy dump, which is useful. The sort_by_key suggestions are a toolchain-version thing. Rust is pinned at 1.94.1 (via rust-toolchain.toml) honoured by the CI, it seems where those lints don't fire your clippy is at the stricter 1.96.0. According to my discussion with AI, if you installed Rust through Homebrew rather than rustup, that could explain it. The dead-code and needless_return ones are macOS-only code compiled in the Linux CI so invisible until there's a macOS build. Will clean up separately. My understanding is that Codeberg's shared runners are Linux-only, so can't add a Mac job here without a self-hosted Mac runner. Possibly a GitHub mirror for their free macOS runners for build verification could work. At the moment you local build is the verification, and I'll merge. Thank you again.
joch referenced this pull request from a commit 2026年06月11日 22:41:47 +02:00
Sign in to join this conversation.
No reviewers
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
InkyCap/app!3
Reference in a new issue
InkyCap/app
No description provided.
Delete branch "NSBuitrago/app:macos-build"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?