All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Clean up nav bar: move music to settings, conditional play/pause (#34)
- Replace isIPad device checks with size classes and trait collections (#24)
- Replace deprecated UITableViewCellAccessoryDetailDisclosureButton in SSWorldCell (#19)
- Replace hardcoded 320pt popover widths with adaptive sizing (#18)
- UI modernization for iPad and Mac Catalyst (#17)
- Scale SSRadialControl size adaptively for iPad and Mac (#21)
- Keep sent command in input field with select-all for easy resend (#28)
- Add GMCP support to telnet stack (#104)
- Implement Client.Media.Play/Stop audio playback via GMCP (#107)
- Store char.vitals, char.status, room.info GMCP data for future UI (#108)
- Add GMCP delegate methods through networking stack (#106)
- Register GMCP telopt 201 and parse subnegotiation in SPLTelnetLib (#105)
- Remove Core Data, MagicalRecord, and old ObjC models (#84)
- Migrate SSAppDelegate and notifications to WorldStore (#83)
- Migrate editor controllers to WorldStore (#82)
- Migrate SPLWorldTickerManager to WorldStore (#81)
- Migrate SSClientViewController + SSClientContainer to WorldStore (#80)
- Migrate SSWorldListViewController to WorldStore (#79)
- Port model business logic to Swift with tests (#78)
- Add WorldStore singleton for JSON persistence (#77)
- Add Swift model classes for World, Alias, Trigger, Gag, Ticker (#76)
- Fix MSSP Server Status button not receiving taps in title view (#35)
- Fix world select button on iPhone (toggleSidebar collapsed) (#33)
- Fix crash in itemWithAttributedString: on empty string (#57)
- Fix libtelnet missing HAVE_ZLIB define causing MCCP2 gibberish (#56)
- Audit UISwitch tint color across all themes (#26)
- Verify swiftlint passes (#27)
- Add visionOS app icon to asset catalog for App Store submission (#29)
- Restore historical update notes in updates.txt (#3)
- Add mudrammer and rammer back to keywords (#2)
- Update App Store text for MUDWammer rebrand (#1)
- Update background transition to preserve connection when audio is playing (#120)
- Add ambient music picker UI (#118)
- Implement ambient music playback in GMCPMediaManager (#117)
- Add ambient music property to MUDWorld (#116)
- Build persistent music library from GMCP media cache (#115)
- Switch AVAudioSession to .playback and add background audio entitlement (#114)
- Add arrow key command history navigation in input field (iPad/iPhone keyboard, Mac Catalyst). (#111)
- Fix CocoaAsyncSocket SecureTransport deprecations (#99)
- Fix deprecated kTLSProtocol12 warning in SSMUDSocket. (#110)
- Replace UIMenuController with context menus (#89)
- Add keyboard shortcuts for Mac (#88)
- Add Mac menu bar with UIMenuBuilder (#87)
- Hide touch-only controls on Catalyst (#86)
- Enable Mac Catalyst build target (#85)
- Replace Core Data/MagicalRecord with JSON flat file (#54)
- Fix misc crashes (SSAdvSettings, SSMagicManagedObject) (#74)
- Fix QuickDialog cell rendering crashes (#73)
- Fix SSGrowingTextView crashes (#72)
- Fix SSPortCell nil string handling (#71)
- Fix SSMudView Masonry constraint crash (#70)
- Fix TTTAttributedLabel nil string crashes (#69)
- Fix SSAttributedLineGroupItem characterAtIndex: out of bounds (#68)
- Fix memory exhaustion in SPLTerminalDataSource flushLineQueue (#67)
- Fix _textStorageDidProcessEditing: zombie crash (#66)
- Fix miscellaneous warnings in app source (#64)
- Fix ObjC designated initializer warnings (#63)
- Fix deprecated API warnings in app source (#62)
- Fix implicit self-retain warnings in blocks (#61)
- Suppress warnings in vendored libraries (#60)
- Configure test target for modern simulator (#49)
- Fix test code for API changes (#48)
- Verify Core Data / MagicalRecord compatibility (#46)
- Fix SPM module imports and umbrella headers for successful build (#55)
- Replace all BlocksKit usage with native code (#51)
- Update deprecated color APIs (#47)
- Fix dispatch queue priorities (#45)
- Fix appearanceWhenContainedIn: calls (#44)
- Fix status bar APIs (#43)
- Migrate to UNUserNotificationCenter (#42)
- Replace UIPopoverController (#41)
- Replace UIAlertView/UIActionSheet with UIAlertController (#40)
- Remove cocoapods-keys references (#39)
- Remove IFTTTLaunchImage (#38)
- Remove UserVoice integration (#37)
- Remove HockeyApp/ARAnalytics integration (#36)
- Create LaunchScreen.storyboard (#53)
- Generate or recreate SPLImagesCatalog (#52)
- Set up Tuist project (#35)
- Delete src/Pods/ directory (#2)
- Vendor MagicalRecord (#50)
- Vendor OCMock (#34)
- Vendor Expecta (#33)
- Vendor SPLUserActivity (#31)
- Vendor SSApplication (#30)
- Vendor SSOperations (#29)
- Vendor SSDataSources (#28)
- Vendor SSAccessibility (#27)
- Vendor SPLCore (#26)
- Vendor FXForms (#25)
- Vendor QuickDialog (#24)
- Vendor VTAcknowledgementsViewController (#23)
- Vendor TOWebViewController (#22)
- Vendor JTSImageViewController (#21)
- Vendor DAKeyboardControl (#20)
- Vendor JSQSystemSoundPlayer (#19)
- Vendor Masonry (#18)
- Vendor JASidePanels (#17)
- Vendor TTTAttributedLabel (#16)
- Vendor MyLilTimer (#15)
- Vendor OSCache (#14)
- Vendor KVOController (#13)
- Vendor SAMRateLimit (#12)
- Vendor libtelnet (#11)
- Vendor CocoaAsyncSocket (#10)
- Vendor test dependencies (#9)
- Vendor Splinesoft dependencies (#8)
- Vendor form dependencies (#7)
- Vendor UI dependencies (#6)
- Vendor engine dependencies (#5)
- Vendor networking dependencies (#4)
- Delete FauxPas config (#3)
- Delete dead build files (#1)
- Vendor SSMagicManagedObject (#32)