Skip to content

Latest commit

ย 

History

History
60 lines (48 loc) ยท 4.76 KB

File metadata and controls

60 lines (48 loc) ยท 4.76 KB

Azimuth

Purpose

Azimuth๋Š” macOS ๋ฉ”๋‰ด๋ฐ” ์œˆ๋„์šฐ ๋งค๋‹ˆ์ €๋‹ค (Magnet/Rectangle ๋ฅ˜). Accessibility(AX) API๋กœ ๋‹ค๋ฅธ ์•ฑ์˜ ํฌ์ปค์Šค๋œ ์ผ๋ฐ˜ ์ฐฝ์„ ์‹๋ณ„ํ•˜๊ณ , ์ „์—ญ ๋‹จ์ถ•ํ‚ค ๋˜๋Š” ๋ฉ”๋‰ด ๋ช…๋ น์œผ๋กœ ๋ฐ˜๋ถ„/1ยท2ยท3๋ถ„ํ• /์ตœ๋Œ€ํ™”/์ด๋™/์ƒ๋Œ€ ๋ณ€ํ˜•/๋˜๋Œ๋ฆฌ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. Swift + AppKit, ์Šคํ† ๋ฆฌ๋ณด๋“œ ์—†๋Š” ํ”„๋กœ๊ทธ๋ž˜๋งคํ‹ฑ ์ง„์ž…(Azimuth/main.swift). Xcode ํ”„๋กœ์ ํŠธ(objectVersion 77, file-system synchronized group).

Key Files

File Description
Makefile build(ad-hoc ์ปดํŒŒ์ผ/CI ์ „์šฉ) ยท run(Apple Dev ์„œ๋ช…, ๊ถŒํ•œ ํ…Œ์ŠคํŠธ์šฉ) ยท lint ยท format ยท test ยท coverage(โ‰ฅ90% ๊ฒŒ์ดํŠธ) ยท secrets ยท release ยท install-hooks
README.md ํ”„๋กœ์ ํŠธ ๊ฐœ์š”(์„ค์น˜ยท๋‹จ์ถ•ํ‚คยท๋ช…๋ น ๋™์ž‘ยทํ›„์›)
CLAUDE.md AI ์—์ด์ „ํŠธ์šฉ ์ตœ์ƒ์œ„ ์˜ค๋ฆฌ์—”ํ…Œ์ด์…˜(๋นŒ๋“œ/๊ทœ์น™/๊ทœ์•ฝ/docsยทํ›„์›/ํ™˜๊ฒฝ ํ•จ์ •). ์ƒ์„ธ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ณ„ AGENTS.md
SECURITY.md ยท CONTRIBUTING.md ยท SUPPORT.md ยท CODE_OF_CONDUCT.md GitHub ์ปค๋ฎค๋‹ˆํ‹ฐ ํ—ฌ์Šค ํŒŒ์ผ(๋ณด์•ˆ ์‹ ๊ณ ยท๊ธฐ์—ฌ ๊ฐ€์ด๋“œยท์ง€์› ์•ˆ๋‚ดยทํ–‰๋™ ๊ฐ•๋ น)
RELEASING.md ๋ฆด๋ฆฌ์Šค ์ ˆ์ฐจ ๋ฌธ์„œ
LICENSE ยท NOTICE Apache-2.0 ๋ผ์ด์„ ์Šค + ๊ณ ์ง€
Azimuth.xcodeproj Xcode ํ”„๋กœ์ ํŠธ. ๋น„์ƒŒ๋“œ๋ฐ•์Šค, DEVELOPMENT_TEAM=7K6MK3KP9K, SWIFT_DEFAULT_ACTOR_ISOLATION=MainActor, deployment target macOS 14.0
.swiftlint.yml SwiftLint strict ์„ค์ •
.swiftformat SwiftFormat ์„ค์ • (pre-commit + CI์—์„œ --lint)
.gitleaks.toml ์‹œํฌ๋ฆฟ ์Šค์บ” ๊ทœ์น™
.gitignore .docs/, .omc/ ๋“ฑ ์ œ์™ธ

Subdirectories

Directory Purpose
Azimuth/ ์•ฑ ์†Œ์Šค ์ „์ฒด (see Azimuth/AGENTS.md)
Tests/ ๋ช…๋ น ์—”์ง„ ์ˆœ์ˆ˜ ๋กœ์ง ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (see Tests/AGENTS.md)
scripts/ build/run/lint/format/test/coverage/secret-scan/release ์‰˜ ์Šคํฌ๋ฆฝํŠธ (see scripts/AGENTS.md)
docs/ GitHub Pages ์†Œ์Šค: ๋žœ๋”ฉยท๋งค๋‰ด์–ผ(์ด์ค‘์–ธ์–ด EN/KO) (see docs/AGENTS.md)
.github/ GitHub Actions CI + ๊ฑฐ๋ฒ„๋„Œ์Šค(FUNDING/CODEOWNERS/PR ํ…œํ”Œ๋ฆฟ) (see .github/AGENTS.md)
.githooks/ pre-commit(SwiftFormat --lint + SwiftLint). make install-hooks๋กœ ์„ค์น˜

For AI Agents

Working In This Directory

  • ๊ถŒํ•œ/๋ณด์•ˆ์€ ์ ˆ๋Œ€ ์šฐํšŒํ•˜์ง€ ๋ง ๊ฒƒ(์ •๊ณต๋ฒ•). AX ๊ถŒํ•œ์€ ๊ณต์‹ API๋กœ ์š”์ฒญํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ System Settings์—์„œ ๋ถ€์—ฌํ•˜๊ฒŒ ํ•œ๋‹ค. tccutil reset(Apple ๊ณต์‹)์€ ํ—ˆ์šฉ.
  • ๊ถŒํ•œ ํ…Œ์ŠคํŠธ๋Š” make run(Apple Dev ์„œ๋ช…)์œผ๋กœ. make build๋Š” CODE_SIGNING_ALLOWED=NO(ad-hoc)๋ผ cdhash๊ฐ€ ๋ฐ”๋€Œ์–ด TCC ๊ถŒํ•œ์ด ์ดˆ๊ธฐํ™”๋œ๋‹ค โ†’ ์ปดํŒŒ์ผ/CI ๊ฒ€์ฆ ์ „์šฉ.
  • .docs/๋Š” ๋‚ด๋ถ€ ๋ฌธ์„œ์ด๋ฉฐ git์— ์ปค๋ฐ‹ยทํ‘ธ์‹œ ๊ธˆ์ง€(gitignore๋จ).
  • ์†Œ์Šค ์ถ”๊ฐ€๋Š” Azimuth/ ์•„๋ž˜์— ๋‘๋ฉด file-system synchronized group์œผ๋กœ ์ž๋™ ํฌํ•จ๋œ๋‹ค(pbxproj ์ˆ˜์ • ๋ถˆํ•„์š”). ๋‹จ, ์ƒˆ ํƒ€๊นƒ/์˜์กด์„ฑ ์ถ”๊ฐ€๋Š” pbxproj/GUI ํ•„์š”.

Testing Requirements

  • ๋ณ€๊ฒฝ ํ›„ ํ•ญ์ƒ: make build โ†’ make lint โ†’ make test. ๋จธ์ง€ ์ „ ํ†ต๊ณผ ํ•„์ˆ˜(CI๊ฐ€ ๋™์ผํ•˜๊ฒŒ ๊ฒ€์‚ฌ).
  • ์ˆœ์ˆ˜ ๋กœ์ง ๋ณ€๊ฒฝ์€ make test(swiftc ์ง์ ‘ ์ปดํŒŒ์ผ, ํ†ต๊ณผ ์‹œ PASS โ€” all N checks ์ถœ๋ ฅ)๋กœ ๋น ๋ฅด๊ฒŒ ํšŒ๊ท€ ํ™•์ธ.
  • launch/Info.plist/ํƒ€๊นƒ ์„ค์ • ๋ณ€๊ฒฝ์€ "ํ”„๋กœ์„ธ์Šค ์ƒ์กด"๋งŒ ๋ณด์ง€ ๋ง๊ณ  ์ฐฝ์ด ์‹ค์ œ๋กœ ๋œจ๋Š”์ง€ ํ™•์ธ(๊ณผ๊ฑฐ storyboard ์ œ๊ฑฐ๊ฐ€ delegate ์—ฐ๊ฒฐ์„ ๋Š์€ ํšŒ๊ท€ ์žˆ์—ˆ์Œ).

Common Patterns

  • SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor โ†’ ๋ชจ๋“  ํƒ€์ž…์ด ๊ธฐ๋ณธ @MainActor. ์ˆœ์ˆ˜/์Šค๋ ˆ๋“œ ๋ฌด๊ด€ ๋กœ์ง์€ ๋ช…์‹œ์ ์œผ๋กœ nonisolated๋กœ ํ‘œ์‹œ.
  • ์ฐฝ ์ขŒํ‘œ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ AX ์ขŒํ‘œ(์ขŒ์ƒ๋‹จ ์›์ , Y ์•„๋ž˜๋กœ) ๋กœ ๋‹ค๋ฃจ๊ณ , ํ™”๋ฉด ์ž‘์—…์˜์—ญ ๋ณ€ํ™˜ ์‹œ Shared/CoordinateSpace๋กœ Cocoaโ†”AX ๋’ค์ง‘๊ธฐ.
  • SwiftLint strict: force-unwrap/force-cast ๊ธˆ์ง€(์˜ˆ์™ธ: WindowAccess/AXAttribute์˜ ๋ฒ”์œ„ ํ•œ์ • CF ์บ์ŠคํŠธ + swiftlint:disable ์ฃผ์„). function/type body length, line 120 ์ œํ•œ.

Dependencies

Internal

  • ๋ช…๋ น ์‹คํ–‰ ๋ฐ์ดํ„ฐ ํ๋ฆ„: ๋‹จ์ถ•ํ‚ค/๋ฉ”๋‰ด โ†’ Commands/WindowCommandExecutor โ†’ WindowAccess(์•ฑ/์ฐฝ ํ•ด์„ยท์“ฐ๊ธฐ) + Commands/FrameCalculator(๊ธฐํ•˜) โ†’ Commands/CommandOutcomePolicy(์‹ค์ œ AX ๊ฒฐ๊ณผ ๊ธฐ๋ฐ˜ ์ปค๋ฐ‹ ํŒ๋‹จ) โ†’ WindowUndoStore/SnapStateStore.

External

  • AppKit / Cocoa, ApplicationServices(AX), CoreGraphics, Carbon.HIToolbox(์ „์—ญ ๋‹จ์ถ•ํ‚ค), ServiceManagement(๋กœ๊ทธ์ธ ์ž๋™ ์‹คํ–‰).
  • Sparkle 2 (SPM, 2.9.3, revision d46d456): ์ž๋™ ์—…๋ฐ์ดํŠธ ํ”„๋ ˆ์ž„์›Œํฌ. AppDelegate์˜ SPUStandardUpdaterController๋กœ ์ดˆ๊ธฐํ™”; "Check for Updatesโ€ฆ" ๋ฉ”๋‰ด ํ•ญ๋ชฉ(App ๋ฉ”๋‰ดยท์ƒํƒœ๋ฐ” ๋ฉ”๋‰ดยทSettings Updates ์นด๋“œ)์˜ ํƒ€๊นƒ์ด ๋œ๋‹ค.