Skip to content

Commit 240fc53

Browse files
committed
chore: rename app from SNOMED Lookup to Codeagogo
1 parent 1979a18 commit 240fc53

74 files changed

Lines changed: 4000 additions & 1494 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
branches: [main]
88

99
env:
10-
SCHEME: "SNOMED Lookup"
10+
SCHEME: "Codeagogo"
1111
DESTINATION: "platform=macOS"
1212

1313
jobs:
@@ -42,7 +42,7 @@ jobs:
4242
xcodebuild test \
4343
-scheme "$SCHEME" \
4444
-destination "$DESTINATION" \
45-
-only-testing:"SNOMED LookupTests" \
45+
-only-testing:"CodeagogoTests" \
4646
-configuration Debug \
4747
CODE_SIGN_IDENTITY="-" \
4848
CODE_SIGNING_REQUIRED=NO \
@@ -55,7 +55,7 @@ jobs:
5555
xcodebuild test \
5656
-scheme "$SCHEME" \
5757
-destination "$DESTINATION" \
58-
-only-testing:"SNOMED LookupUITests" \
58+
-only-testing:"CodeagogoUITests" \
5959
-configuration Debug \
6060
CODE_SIGN_IDENTITY="-" \
6161
CODE_SIGNING_REQUIRED=YES \
@@ -122,15 +122,15 @@ jobs:
122122
- name: Create Artifact
123123
run: |
124124
mkdir -p artifact
125-
cp -R "build/Build/Products/Release/SNOMED Lookup.app" artifact/
125+
cp -R "build/Build/Products/Release/Codeagogo.app" artifact/
126126
cd artifact
127-
zip -r "SNOMED-Lookup-macOS.zip" "SNOMED Lookup.app"
127+
zip -r "Codeagogo-macOS.zip" "Codeagogo.app"
128128
129129
- name: Upload Artifact
130130
uses: actions/upload-artifact@v4
131131
with:
132-
name: SNOMED-Lookup-macOS
133-
path: artifact/SNOMED-Lookup-macOS.zip
132+
name: Codeagogo-macOS
133+
path: artifact/Codeagogo-macOS.zip
134134
retention-days: 30
135135

136136
- name: Cleanup Keychain

.github/workflows/release.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
type: string
1010

1111
env:
12-
SCHEME: "SNOMED Lookup"
12+
SCHEME: "Codeagogo"
1313
DESTINATION: "platform=macOS"
1414

1515
jobs:
@@ -76,10 +76,10 @@ jobs:
7676
# Update MARKETING_VERSION in project.pbxproj for the main app target
7777
# This updates all occurrences which covers Debug and Release configurations
7878
sed -i '' "s/MARKETING_VERSION = [0-9]*\.[0-9]*\.[0-9]*;/MARKETING_VERSION = $VERSION;/g" \
79-
"SNOMED Lookup.xcodeproj/project.pbxproj"
79+
"Codeagogo.xcodeproj/project.pbxproj"
8080
8181
echo "Updated Xcode project version to $VERSION"
82-
grep "MARKETING_VERSION" "SNOMED Lookup.xcodeproj/project.pbxproj"
82+
grep "MARKETING_VERSION" "Codeagogo.xcodeproj/project.pbxproj"
8383
8484
- name: Extract release notes
8585
id: release_notes
@@ -97,7 +97,7 @@ jobs:
9797
9898
- name: Commit release changes
9999
run: |
100-
git add CHANGELOG.md "SNOMED Lookup.xcodeproj/project.pbxproj"
100+
git add CHANGELOG.md "Codeagogo.xcodeproj/project.pbxproj"
101101
git commit -m "release: v${{ inputs.version }}"
102102
103103
- name: Create and push tag
@@ -155,17 +155,17 @@ jobs:
155155
- name: Create artifact
156156
run: |
157157
mkdir -p artifact
158-
cp -R "build/Build/Products/Release/SNOMED Lookup.app" artifact/
158+
cp -R "build/Build/Products/Release/Codeagogo.app" artifact/
159159
cd artifact
160-
zip -r "SNOMED-Lookup-v${{ inputs.version }}-macOS.zip" "SNOMED Lookup.app"
160+
zip -r "Codeagogo-v${{ inputs.version }}-macOS.zip" "Codeagogo.app"
161161
162162
- name: Create GitHub Release
163163
uses: softprops/action-gh-release@v2
164164
with:
165165
tag_name: v${{ inputs.version }}
166-
name: SNOMED Lookup v${{ inputs.version }}
166+
name: Codeagogo v${{ inputs.version }}
167167
body_path: release_notes.md
168-
files: artifact/SNOMED-Lookup-v${{ inputs.version }}-macOS.zip
168+
files: artifact/Codeagogo-v${{ inputs.version }}-macOS.zip
169169
draft: false
170170
prerelease: false
171171

ARCHITECTURE.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# SNOMED Lookup Architecture
1+
# Codeagogo Architecture
22

3-
This document describes the technical architecture of SNOMED Lookup, a macOS menu bar application for looking up SNOMED CT concepts.
3+
This document describes the technical architecture of Codeagogo, a macOS menu bar application for looking up SNOMED CT concepts.
44

55
## Table of Contents
66

@@ -17,7 +17,7 @@ This document describes the technical architecture of SNOMED Lookup, a macOS men
1717

1818
## Overview
1919

20-
SNOMED Lookup is a lightweight macOS utility that enables users to look up SNOMED CT (Systematized Nomenclature of Medicine - Clinical Terms) concepts from any application using a global hotkey.
20+
Codeagogo is a lightweight macOS utility that enables users to look up SNOMED CT (Systematized Nomenclature of Medicine - Clinical Terms) concepts from any application using a global hotkey.
2121

2222
### Key Characteristics
2323

@@ -31,7 +31,7 @@ SNOMED Lookup is a lightweight macOS utility that enables users to look up SNOME
3131

3232
```mermaid
3333
flowchart TB
34-
subgraph App["SNOMED Lookup Application"]
34+
subgraph App["Codeagogo Application"]
3535
subgraph Presentation["Presentation Layer"]
3636
MenuBar["Menu Bar<br/>Status Item"]
3737
Popover["Popover View<br/>(SwiftUI)"]
@@ -71,7 +71,7 @@ flowchart TB
7171

7272
### Presentation Layer
7373

74-
#### `SNOMED_LookupApp.swift`
74+
#### `CodeagogoApp.swift`
7575
- **Role**: Application entry point (`@main`)
7676
- **Responsibilities**:
7777
- Define the SwiftUI App structure

CHANGELOG.md

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
11
# Changelog
22

3-
All notable changes to SNOMED Lookup are documented in this file.
3+
All notable changes to Codeagogo are documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66

77
## [Unreleased]
88

99
### Added
10+
- **Inserted text remains selected**: After using the replace hotkey or ECL format hotkey, the inserted text is automatically selected, making it easy to undo or further edit. Selection skipped for text > 1000 characters to avoid delays
11+
- **Inactive concept highlighting**: The popover now prominently displays inactive concepts with an orange warning icon and "INACTIVE" label
12+
- **"INACTIVE - " prefix option**: New setting (default: on) prefixes inactive concept terms with "INACTIVE - " when using the replace hotkey (e.g., `146066001 | INACTIVE - Some term |`)
13+
- **Hotkey recorder UI**: Settings now uses a keystroke recorder control for configuring hotkeys. Click "Record" and press your desired key combination instead of selecting from dropdown menus and checkboxes.
14+
- **Multi-code-system support**: Lookup, replace, and search now work with LOINC, ICD-10, RxNorm, and other code systems in addition to SNOMED CT
15+
- **Code system picker in search panel**: Switch between SNOMED CT and configured code systems when searching
16+
- **Code system configuration in Settings**: Add, remove, and enable/disable code systems from the terminology server
17+
- **SCTID validation**: Uses Verhoeff check digit algorithm to distinguish valid SNOMED CT IDs from other numeric codes
1018
- **ECL Format hotkey** (Control+Option+E): Toggles selected ECL expressions between pretty-printed and minified formats
1119
- Full ECL 2.x parser supporting constraint operators, compound expressions, refinements, and filters
1220
- Settings UI for configuring ECL format hotkey key and modifiers
1321
- **Progress HUD** for replace hotkey: Shows lookup progress when processing many concepts
1422

1523
### Fixed
24+
- **Inactive concept status**: Fixed issue where inactive concepts were incorrectly displayed as active. The FHIR response parser now correctly handles the `inactive` property when returned as a boolean value.
1625
- **Replace hotkey reliability**: Fixed issue where some concept IDs weren't being replaced when processing large selections (50+ concepts)
1726

1827
### Performance
@@ -35,10 +44,44 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
3544
3. `385804009``385804009 | Diabetic care |` (add again)
3645
- Mixed selections work: `385804009 | Wrong | and 73211009` updates both
3746

47+
### Changed
48+
- **Lookup hotkey** now automatically detects whether a code is SNOMED CT (via Verhoeff check) or from another code system
49+
- **Popover view** adapts display based on code system: shows FSN/PT/Edition for SNOMED CT, simpler Code/Display/System for others
50+
- **Replace hotkey** handles mixed selections with both SNOMED CT and non-SNOMED codes
51+
3852
### Technical
53+
- App now prompts for Accessibility permission on launch via `AXIsProcessTrustedWithOptions` for reliable text selection
54+
- Extended SystemSelectionReader with Accessibility API methods (`getSelectionRange`, `setSelectionRange`, `pasteAndSelect`) to select inserted text after paste operations
55+
- Selection fallback uses character-by-character keyboard simulation (Shift+Left Arrow) for precise selection up to 1000 chars
56+
- Added HotKeyRecorderView.swift for recording keyboard shortcuts via keystroke capture
57+
- Added KeyCodeFormatter.swift for formatting key codes with macOS modifier symbols (⌃⌥⇧⌘)
58+
- Refactored hotkey settings to use KeyCodeFormatter for human-readable hotkey display
59+
- Simplified SettingsView by removing Picker/Toggle-based hotkey configuration
60+
- Added KeyCodeFormatterTests.swift with comprehensive tests for key formatting
61+
- Added SCTIDValidator.swift with Verhoeff check digit algorithm for SNOMED CT ID validation
62+
- Added CodeSystemSettings.swift for managing configured code systems (persisted to UserDefaults)
63+
- Added AvailableCodeSystem struct for code systems discovered from the server
64+
- Extended ConceptResult with `system` field and `systemName`/`isSNOMEDCT` computed properties
65+
- Added `getAvailableCodeSystems()` method to OntoserverClient for fetching non-SNOMED code systems
66+
- Added `lookupInCodeSystem()` method for looking up codes in specific code systems
67+
- Added `lookupInConfiguredSystems()` method for parallel search across configured systems
68+
- Added `searchInCodeSystem()` method for searching within non-SNOMED code systems
69+
- Extended LookupViewModel with `ExtractedCode` struct and `extractCode()` method for SCTID validation
70+
- Updated `extractAllConceptIds()` to include `isSCTID` flag in ConceptMatch
71+
- Extended ConceptLookupClient protocol with `lookupInConfiguredSystems()` method
72+
- Updated SearchSettings with `selectedCodeSystemURI` for code system selection
73+
- Updated SearchViewModel to handle non-SNOMED code system searches
74+
- Updated SearchPanelView with code system picker (edition picker hidden for non-SNOMED)
75+
- Updated SettingsView with "Additional Code Systems" configuration section
76+
- Updated PopoverView to show adapted UI for SNOMED CT vs non-SNOMED results
77+
- Added SCTIDValidatorTests.swift with 20+ tests for Verhoeff validation
78+
- Added CodeSystemSettingsTests.swift for settings and ConceptResult code system tests
79+
- Extended OntoserverClientTests.swift with multi-code-system response parsing tests
80+
- Extended ConceptIdExtractionTests.swift with SCTID validation and ExtractedCode tests
3981
- Added ProgressHUD.swift for displaying lookup progress near cursor
4082
- Added `batchLookup(conceptIds:)` method to OntoserverClient using `ValueSet/$expand` for efficient multi-concept lookup
41-
- Added `BatchLookupResult` struct to hold PT and FSN mappings from batch lookups
83+
- `BatchLookupResult` includes active status via `property=inactive` parameter (parsed from FHIR R5 property extension)
84+
- Added `BatchLookupResult` struct to hold PT, FSN, and active status mappings from batch lookups
4285
- Added ECLToken.swift with token type definitions for ECL syntax elements
4386
- Added ECLLexer.swift for tokenizing ECL expressions (handles operators, identifiers, literals)
4487
- Added ECLAST.swift with AST node types (expressions, refinements, attributes, filters)
@@ -91,7 +134,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
91134
- Unknown edition IDs now fall back to CodeSystem title from server instead of showing raw ID
92135

93136
### Testing
94-
- Added UI test automation target (`SNOMED LookupUITests`) with XCUITest coverage
137+
- Added UI test automation target (`CodeagogoUITests`) with XCUITest coverage
95138
- Settings window UI tests (~20 tests): hotkey pickers, modifier toggles, format picker, FHIR URL, save button, logging, diagnostics
96139
- Search panel UI tests (~8 tests): panel open/close, search field, cancel, insert disabled state, edition picker
97140
- Menu bar UI tests (~3 tests): app launch, status item, menu items
@@ -175,7 +218,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
175218
- Support for multiple Xcode workspaces
176219

177220
### Changed
178-
- Switched from SNOMED Lookup Service to CSIRO Ontoserver for improved reliability
221+
- Switched from Codeagogo Service to CSIRO Ontoserver for improved reliability
179222
- Improved logging with categorical loggers (network, selection, ui, general)
180223

181224
### Fixed

CLAUDE.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ When making changes to this codebase, follow these rules:
1010

1111
1. **Update CHANGELOG.md** — Add entries under `[Unreleased]` for any user-facing changes
1212
2. **Add or update tests** — New functionality needs tests; bug fixes need regression tests
13-
3. **Run tests before committing** — Ensure all 63+ tests pass: `xcodebuild test -scheme "SNOMED Lookup" -destination "platform=macOS"`
13+
3. **Run tests before committing** — Ensure all 63+ tests pass: `xcodebuild test -scheme "Codeagogo" -destination "platform=macOS"`
1414
4. **Add docstrings** — Document all new public types, methods, and non-trivial private methods
1515
5. **Update documentation** — Keep README.md, ARCHITECTURE.md, and other docs in sync with code changes
1616
6. **Follow existing patterns** — Match the code style and architecture of surrounding code
@@ -72,7 +72,7 @@ Before submitting changes:
7272

7373
## Project Overview
7474

75-
SNOMED Lookup is a macOS menu bar application that looks up SNOMED CT concepts from any application using a global hotkey. Users select a concept ID, press the hotkey, and see concept details in a popover near the cursor.
75+
Codeagogo is a macOS menu bar application that looks up SNOMED CT concepts from any application using a global hotkey. Users select a concept ID, press the hotkey, and see concept details in a popover near the cursor.
7676

7777
## Tech Stack
7878

@@ -101,14 +101,14 @@ SNOMED Lookup is a macOS menu bar application that looks up SNOMED CT concepts f
101101

102102
```bash
103103
# Build
104-
xcodebuild build -scheme "SNOMED Lookup" -destination "platform=macOS"
104+
xcodebuild build -scheme "Codeagogo" -destination "platform=macOS"
105105

106106
# Run tests
107-
xcodebuild test -scheme "SNOMED Lookup" -destination "platform=macOS"
107+
xcodebuild test -scheme "Codeagogo" -destination "platform=macOS"
108108

109109
# Run specific test class
110-
xcodebuild test -scheme "SNOMED Lookup" -destination "platform=macOS" \
111-
-only-testing:"SNOMED LookupTests/ConceptCacheTests"
110+
xcodebuild test -scheme "Codeagogo" -destination "platform=macOS" \
111+
-only-testing:"CodeagogoTests/ConceptCacheTests"
112112

113113
# Package for distribution
114114
./package-zip.sh
@@ -221,7 +221,7 @@ private let maxSize = 100
221221

222222
2. **Single Instance**`enforceSingleInstance()` terminates if another instance is running. This can interfere with debugging if a release build is running.
223223

224-
3. **Test Environment** — Tests may fail with "Early unexpected exit" if another instance is running. Kill existing instances first: `pkill -9 "SNOMED Lookup"`
224+
3. **Test Environment** — Tests may fail with "Early unexpected exit" if another instance is running. Kill existing instances first: `pkill -9 "Codeagogo"`
225225

226226
4. **Carbon Modifiers** — NSEvent and Carbon use different modifier flag formats. Always use `HotKeySettings.carbonModifiers(from:)`.
227227

CONTRIBUTING.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Contributing to SNOMED Lookup
1+
# Contributing to Codeagogo
22

3-
Thank you for your interest in contributing to SNOMED Lookup! This document provides guidelines and information for contributors.
3+
Thank you for your interest in contributing to Codeagogo! This document provides guidelines and information for contributors.
44

55
## Table of Contents
66

@@ -40,20 +40,20 @@ Before contributing, familiarize yourself with:
4040

4141
```bash
4242
# Fork the repository on GitHub, then clone your fork
43-
git clone https://github.com/YOUR_USERNAME/snomed-lookup.git
44-
cd "snomed-lookup/SNOMED Lookup"
43+
git clone https://github.com/YOUR_USERNAME/codeagogo.git
44+
cd "codeagogo/Codeagogo"
4545
```
4646

4747
### 2. Open in Xcode
4848

4949
```bash
50-
open "SNOMED Lookup.xcodeproj"
50+
open "Codeagogo.xcodeproj"
5151
```
5252

5353
### 3. Configure Signing
5454

5555
- Open the project settings
56-
- Select the "SNOMED Lookup" target
56+
- Select the "Codeagogo" target
5757
- Under "Signing & Capabilities", select your development team
5858

5959
### 4. Grant Permissions
@@ -66,10 +66,10 @@ When running the app:
6666

6767
```bash
6868
# Build the project
69-
xcodebuild build -scheme "SNOMED Lookup" -destination "platform=macOS"
69+
xcodebuild build -scheme "Codeagogo" -destination "platform=macOS"
7070

7171
# Run all tests
72-
xcodebuild test -scheme "SNOMED Lookup" -destination "platform=macOS"
72+
xcodebuild test -scheme "Codeagogo" -destination "platform=macOS"
7373
```
7474

7575
## Making Changes
@@ -201,14 +201,14 @@ enum MyError: LocalizedError {
201201

202202
```bash
203203
# Run all tests
204-
xcodebuild test -scheme "SNOMED Lookup" -destination "platform=macOS"
204+
xcodebuild test -scheme "Codeagogo" -destination "platform=macOS"
205205

206206
# Run specific test class
207-
xcodebuild test -scheme "SNOMED Lookup" -destination "platform=macOS" \
208-
-only-testing:"SNOMED LookupTests/ConceptCacheTests"
207+
xcodebuild test -scheme "Codeagogo" -destination "platform=macOS" \
208+
-only-testing:"CodeagogoTests/ConceptCacheTests"
209209

210210
# Run with verbose output
211-
xcodebuild test -scheme "SNOMED Lookup" -destination "platform=macOS" \
211+
xcodebuild test -scheme "Codeagogo" -destination "platform=macOS" \
212212
2>&1 | grep -E "(Test Case|passed|failed)"
213213
```
214214

@@ -254,12 +254,12 @@ Aim for meaningful coverage of:
254254

255255
1. **Ensure all tests pass**
256256
```bash
257-
xcodebuild test -scheme "SNOMED Lookup" -destination "platform=macOS"
257+
xcodebuild test -scheme "Codeagogo" -destination "platform=macOS"
258258
```
259259

260260
2. **Verify no compiler warnings**
261261
```bash
262-
xcodebuild build -scheme "SNOMED Lookup" -destination "platform=macOS" 2>&1 | grep warning
262+
xcodebuild build -scheme "Codeagogo" -destination "platform=macOS" 2>&1 | grep warning
263263
```
264264

265265
3. **Update documentation** if needed
@@ -322,4 +322,4 @@ If you have questions about contributing, feel free to:
322322
- Review existing issues and pull requests
323323
- Check the documentation
324324

325-
Thank you for contributing to SNOMED Lookup!
325+
Thank you for contributing to Codeagogo!

0 commit comments

Comments
 (0)