Repository navigation
Conversation
- Replace all hardcoded Chinese UI strings (labels, buttons, tooltips, alerts, VoiceOver labels, error messages, default names) with Turkish - Translate the screen-capture permission prompt and copyright string (project.yml + project.pbxproj) - Widen a few fixed-width labels to fit longer Turkish text (brightness value label, virtual display form labels) - Add in-app credit row in Settings linking to github.com/hakanotal - Add Contributors section to README and an Unreleased CHANGELOG entry Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Add in-app UI language switch (Settings → Dil / Language, Türkçe/English),
persisted under fd.language; all UI strings go through L("tr", "en") and
re-render live via an Observable LanguageStore
- macOS 27: pin the menu ScrollView to its measured content height (the panel
was sized to the content's minimum and collapsed to the footer) and use
.windowResizability(.contentSize) so the panel shrinks when sections collapse
- Fix Swift 6 runtime isolation traps: DDC read/write completions and the
brightness OSD XPC error handler are now @sendable (crashed when changing
brightness or applying presets)
- Color profile subtitle shows the active ICC profile description (e.g. the
monitor's EDID profile) instead of "Unknown", refreshing on color space change
- Remove built-in "Native Mode"/"HiDPI Mode" preset buttons from the menu;
right-align Settings switches; remove in-app translator credit row
- Bump version to 2.0; README "What's Changed in This Fork" + CHANGELOG
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- NightModeService: Off / On / Scheduled modes, start/end times (overnight ranges supported), warmth setting, 1.5 s fades; re-evaluates every 30 s, on wake and on clock/time zone changes - GammaService: global night tint multiplied into every transfer write, alongside image adjustments and software brightness; restored on wake, hot-plug, pause and reset - BrightnessService delegates to GammaService while night mode is on - NightModeView + Night Mode row in the menu's Tools section (TR/EN) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Remove autopilot logs, phase roadmaps, per-folder CLAUDE.md files and the old docs/ tree; add docs/ARCHITECTURE.md and docs/LESSONS.md - Rewrite AGENTS.md / CLAUDE.md for the fork - Translate remaining Chinese code comments to English (comments only) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sh fixes - Launch at login is now a per-user launchd agent with KeepAlive SuccessfulExit=false: relaunches after a crash, not after Quit; migrates the old SMAppService login item; a launchd-started copy replaces a manual one - HiDPI: first enable/disable makes the vendor override folder user-writable (one admin prompt); later toggles write the plist directly - Menu panel: drop the flexible maxHeight frame so the window shrinks back to its content when sections collapse (no gaps on macOS 27) - Color profiles: only list RGB display-class profiles (applying CMYK, gray, Lab or abstract profiles aborted inside SkyLight); read ICC header signatures from raw profile bytes - English code comments in the touched files Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- scripts/build-app-clt.sh: universal (arm64 + x86_64) build with only the Command Line Tools; build-dmg.sh falls back to it without Xcode and writes build/FreeDisplay-<version>.dmg + SHA-256; release.sh publishes it with the matching CHANGELOG section as notes - Ad-hoc signing instead of the upstream team ID; build number 2 - Add MIT LICENSE; stop tracking the old upstream DMG; ignore release artifacts - README: fork links, macOS 15+ first-launch steps, build without Xcode; CHANGELOG/README: night mode and the color profile fix Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ResolutionService: call the private CGSConfigureDisplayMode with its real signature (CGDisplayConfigRef inside a configuration transaction); it was passed a connection ID and dereferenced a bogus pointer on fallback - ArrangementService/MirrorService: never cancel a configuration after CGCompleteDisplayConfiguration, which invalidates it even on failure - BrightnessKeyService: return pass-through events unretained (leaked one CGEvent per media key press) - DDCService: release IOAVService objects that fail the I2C probe - BrightnessHUDService: explicitly @sendable XPC handlers; DisplayManager: skip HiDPI auto-enable for FreeDisplay's own virtual displays - Version 2.1 (build 3); CHANGELOG, README and docs/LESSONS.md updated Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi, I maintain a fork of FreeDisplay with a new UI and a set of fixes: https://github.com/hakanotal/FreeDisplay
I'm opening this mainly so people browsing the PRs can find it. I don't expect it to be merged as-is: the fork makes new changes in UI language (English/Turkish is one click away in Settings) and replaces the Chinese planning docs. The crash fixes below don't depend on the translation and may be worth cherry-picking.
What's new
./scripts/build-dmg.sh); ready-made DMG on the releases pageCrash fixes worth cherry-picking
@MainActorbut called on the DDC queue, so Swift 6's runtime isolation check trapped@Sendablecompletions inDDCServiceColorSyncDeviceSetCustomProfilesabort inside SkyLightmntr+RGBprofiles inColorProfileServiceCGSConfigureDisplayModewas called with a connection ID instead of aCGDisplayConfigRefResolutionServiceCGCancelDisplayConfigurationafter a failedCGCompleteDisplayConfiguration, which already invalidates the config (use-after-free)ArrangementService@MainActorbut called on the XPC queue@Sendablehandler inBrightnessHUDServiceMore detail in
docs/LESSONS.md.