├── .ruby-version
├── .xcode-version
├── fastlane
├── metadata
│ ├── ar-SA
│ │ ├── .gitkeep
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── de-DE
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── es-ES
│ │ ├── .gitkeep
│ │ ├── subtitle.txt
│ │ ├── promotional_text.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── fr-FR
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── he
│ │ ├── .gitkeep
│ │ ├── subtitle.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── id
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── it
│ │ ├── .gitkeep
│ │ ├── subtitle.txt
│ │ ├── promotional_text.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── ja
│ │ ├── .gitkeep
│ │ ├── subtitle.txt
│ │ ├── promotional_text.txt
│ │ ├── keywords.txt
│ │ ├── release_notes.txt
│ │ └── description.txt
│ ├── ko
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── subtitle.txt
│ │ ├── keywords.txt
│ │ ├── release_notes.txt
│ │ └── description.txt
│ ├── nl-NL
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── pt-BR
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── ru
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── sv
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── tr
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── subtitle.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ ├── zh-Hans
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── subtitle.txt
│ │ ├── keywords.txt
│ │ ├── release_notes.txt
│ │ └── description.txt
│ ├── zh-Hant
│ │ ├── .gitkeep
│ │ ├── promotional_text.txt
│ │ ├── subtitle.txt
│ │ ├── keywords.txt
│ │ ├── release_notes.txt
│ │ └── description.txt
│ ├── default
│ │ ├── marketing_url.txt
│ │ ├── privacy_url.txt
│ │ ├── promotional_text.txt
│ │ ├── support_url.txt
│ │ ├── keywords.txt
│ │ └── release_notes.txt
│ └── en-US
│ │ └── promotional_text.txt
├── appstoreres
│ └── metadata
│ │ └── source
│ │ ├── subtitle.txt
│ │ └── keywords.txt
├── Appfile
└── env
│ └── user.env-example
├── External
├── Sparkle
│ ├── Frameworks
│ │ └── Sparkle.framework
│ │ │ ├── Versions
│ │ │ ├── Current
│ │ │ └── A
│ │ │ │ ├── Resources
│ │ │ │ ├── Updater.app
│ │ │ │ │ └── Contents
│ │ │ │ │ │ ├── PkgInfo
│ │ │ │ │ │ ├── Resources
│ │ │ │ │ │ ├── fr_CA.lproj
│ │ │ │ │ │ ├── pt.lproj
│ │ │ │ │ │ ├── SUStatus.nib
│ │ │ │ │ │ ├── ca.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── cs.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── da.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── de.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── el.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── es.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── fi.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── fr.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── he.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── hr.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── is.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── it.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── ja.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── ko.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── nb.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── nl.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── pl.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── ro.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── ru.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── sk.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── sl.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── sv.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── th.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── tr.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── uk.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── Base.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── pt_BR.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── pt_PT.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── zh_CN.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ └── zh_TW.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ └── MacOS
│ │ │ │ │ │ └── Updater
│ │ │ │ ├── Autoupdate
│ │ │ │ ├── SUStatus.nib
│ │ │ │ ├── ca.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ └── SUUpdateAlert.strings
│ │ │ │ ├── cs.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── da.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── de.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── el.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── es.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── fi.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── fr.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── he.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ └── SUUpdateAlert.strings
│ │ │ │ ├── hr.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ └── SUUpdateAlert.strings
│ │ │ │ ├── is.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── it.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── ja.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── ko.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── nb.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── nl.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── pl.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── ro.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── ru.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── sk.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── sl.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── sv.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── th.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── tr.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── uk.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── Base.lproj
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── pt_BR.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── pt_PT.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── zh_CN.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── zh_TW.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── ar.lproj
│ │ │ │ │ ├── SUUpdateAlert.strings
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── hu.lproj
│ │ │ │ │ └── SUUpdatePermissionPrompt.strings
│ │ │ │ ├── ReleaseNotesColorStyle.css
│ │ │ │ └── en.lproj
│ │ │ │ │ └── SUUpdateAlert.strings
│ │ │ │ ├── Sparkle
│ │ │ │ ├── Modules
│ │ │ │ └── module.modulemap
│ │ │ │ └── Headers
│ │ │ │ ├── SUExport.h
│ │ │ │ └── SUVersionDisplayProtocol.h
│ │ │ ├── Headers
│ │ │ ├── Modules
│ │ │ ├── Sparkle
│ │ │ └── Resources
│ ├── XPCServices
│ │ ├── org.sparkle-project.InstallerLauncher.xpc
│ │ │ └── Contents
│ │ │ │ └── MacOS
│ │ │ │ ├── Updater.app
│ │ │ │ └── Contents
│ │ │ │ │ ├── PkgInfo
│ │ │ │ │ ├── MacOS
│ │ │ │ │ └── Updater
│ │ │ │ │ └── Resources
│ │ │ │ │ ├── SUStatus.nib
│ │ │ │ │ ├── ca.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── cs.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── da.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── de.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── el.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── es.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── fi.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── fr.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── he.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── hr.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── is.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── it.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── ja.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── ko.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── nb.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── nl.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── pl.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── pt.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── ro.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── ru.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── sk.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── sl.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── sv.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── th.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── tr.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── uk.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── Base.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── fr_CA.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── pt_BR.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── pt_PT.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── zh_CN.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ └── zh_TW.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ ├── Autoupdate
│ │ │ │ └── org.sparkle-project.InstallerLauncher
│ │ ├── org.sparkle-project.InstallerStatus.xpc
│ │ │ └── Contents
│ │ │ │ └── MacOS
│ │ │ │ └── org.sparkle-project.InstallerStatus
│ │ └── org.sparkle-project.InstallerConnection.xpc
│ │ │ └── Contents
│ │ │ └── MacOS
│ │ │ └── org.sparkle-project.InstallerConnection
│ └── bin
│ │ ├── BinaryDelta
│ │ ├── sign_update
│ │ ├── generate_keys
│ │ └── generate_appcast
├── Hoextdown
│ ├── version.c
│ ├── escape.h
│ └── version.h
└── Notepad
│ ├── Storage.h
│ ├── Style.swift
│ └── Extensions.swift
├── config
├── Simplenote.debug.xcconfig
├── Simplenote.release.xcconfig
├── Project.Debug.xcconfig
├── Project.xcconfig
├── Project.Release.xcconfig
└── Version.public.xcconfig
├── .gitattributes
├── Simplenote
├── en.lproj
│ ├── InfoPlist.strings
│ └── Credits.rtf
├── Images.xcassets
│ ├── Contents.json
│ ├── Icons
│ │ ├── Contents.json
│ │ ├── icon_pin.imageset
│ │ │ ├── pinned.pdf
│ │ │ └── Contents.json
│ │ ├── icon_wp.imageset
│ │ │ ├── icon_wp.pdf
│ │ │ └── Contents.json
│ │ ├── icon_mail.imageset
│ │ │ ├── icon_mail.pdf
│ │ │ └── Contents.json
│ │ ├── icon_shared.imageset
│ │ │ ├── publish.pdf
│ │ │ └── Contents.json
│ │ ├── icon_simplenote.imageset
│ │ │ ├── logo.png
│ │ │ ├── logo@2x.png
│ │ │ ├── logo@3x.png
│ │ │ └── Contents.json
│ │ ├── icon_task_checked.imageset
│ │ │ ├── task-checked.pdf
│ │ │ └── Contents.json
│ │ ├── icon_chevron_down.imageset
│ │ │ ├── disclosure-down.pdf
│ │ │ └── Contents.json
│ │ ├── icon_task_unchecked.imageset
│ │ │ ├── task-unchecked.pdf
│ │ │ └── Contents.json
│ │ ├── icon_arrow_top_right.imageset
│ │ │ ├── arrow-top-right.pdf
│ │ │ └── Contents.json
│ │ ├── icon_simplenote_login.imageset
│ │ │ ├── icon_simplenote.pdf
│ │ │ └── Contents.json
│ │ ├── icon_disclosure_right.imageset
│ │ │ ├── icon_disclosure_right.pdf
│ │ │ └── Contents.json
│ │ └── icon_simplenote_inner.imageset
│ │ │ ├── icon_simplenote_inner.pdf
│ │ │ └── Contents.json
│ └── Buttons
│ │ ├── Contents.json
│ │ ├── button_info.imageset
│ │ ├── info.pdf
│ │ └── Contents.json
│ │ ├── button_cross.imageset
│ │ ├── cross.pdf
│ │ └── Contents.json
│ │ ├── button_share.imageset
│ │ ├── share.pdf
│ │ └── Contents.json
│ │ ├── button_trash.imageset
│ │ ├── trash.pdf
│ │ └── Contents.json
│ │ ├── button_all_notes.imageset
│ │ ├── notes.pdf
│ │ └── Contents.json
│ │ ├── button_history.imageset
│ │ ├── history.pdf
│ │ └── Contents.json
│ │ ├── button_restore.imageset
│ │ ├── restore.pdf
│ │ └── Contents.json
│ │ ├── button_search.imageset
│ │ ├── search.pdf
│ │ └── Contents.json
│ │ ├── button_ellipsis.imageset
│ │ ├── ellipsis.pdf
│ │ └── Contents.json
│ │ ├── button_untagged.imageset
│ │ ├── untagged.pdf
│ │ └── Contents.json
│ │ ├── button_tags_open.imageset
│ │ ├── tags-open.pdf
│ │ └── Contents.json
│ │ ├── button_tags_close.imageset
│ │ ├── tags-close.pdf
│ │ └── Contents.json
│ │ ├── button_new_note.imageset
│ │ ├── button_new_note.pdf
│ │ └── Contents.json
│ │ ├── button_checklist.imageset
│ │ ├── button_checklist.pdf
│ │ └── Contents.json
│ │ ├── button_preview_off.imageset
│ │ ├── visibility-hidden.pdf
│ │ └── Contents.json
│ │ ├── button_preview_on.imageset
│ │ ├── visibility-visible.pdf
│ │ └── Contents.json
│ │ ├── button_ellipsis_outline.imageset
│ │ ├── ellipsis-outline.pdf
│ │ └── Contents.json
│ │ └── button_settings.imageset
│ │ └── Contents.json
├── Icons.xcassets
│ ├── Contents.json
│ ├── AppIcon.appiconset
│ │ ├── icon_16x16.png
│ │ ├── icon_32x32.png
│ │ ├── icon_128x128.png
│ │ ├── icon_16x16@2x.png
│ │ ├── icon_256x256.png
│ │ ├── icon_32x32@2x.png
│ │ ├── icon_512x512.png
│ │ ├── icon_128x128@2x.png
│ │ ├── icon_256x256@2x.png
│ │ └── icon_512x512@2x.png
│ └── AppIcon-Beta.appiconset
│ │ ├── icon_16x16.png
│ │ ├── icon_32x32.png
│ │ ├── icon_128x128.png
│ │ ├── icon_16x16@2x.png
│ │ ├── icon_256x256.png
│ │ ├── icon_32x32@2x.png
│ │ ├── icon_512x512.png
│ │ ├── icon_128x128@2x.png
│ │ ├── icon_256x256@2x.png
│ │ └── icon_512x512@2x.png
├── Simplenote.xcdatamodeld
│ ├── Simplenote.xcdatamodel
│ │ ├── layout
│ │ └── elements
│ └── .xccurrentversion
├── Preferences.h
├── Resources
│ └── release_notes.txt
├── NSString+Metadata.h
├── NoteEditorMetadata.swift
├── NSEdgeInsets+Simplenote.swift
├── NSViewController+Simplenote.swift
├── Simperium+Simplenote.h
├── NSFont+Simplenote.swift
├── SpacerTableViewCell.swift
├── NSFont+Theme.swift
├── Simplenote-Prefix.pch
├── NSRange+Simplenote.swift
├── Date+Simplenote.swift
├── NSWindowFrameAutosaveName+Simplenote.swift
├── DateTransformer.h
├── main.m
├── NSObject+Helpers.swift
├── NSSearchField+Simplenote.swift
├── NSScreen+Simplenote.swift
├── WPAuthHandler.h
├── NSBox+Simplenote.swift
├── NSButton+Extensions.swift
├── NSTextStorage+Simplenote.swift
├── ActivityType.swift
├── NSNotification+Simplenote.swift
├── SPAboutTextField.swift
├── NumberFormatter+Simplenote.swift
├── NSProcessInfo+Simplenote.swift
├── NSTableViewCell+Simplenote.swift
├── Preferences.m
├── SimperiumAuthenticatorProtocol.swift
├── StatusChecker.h
├── FileManagerProtocol.swift
├── NSPasteboard+Simplenote.swift
├── SeparatorTableViewCell.swift
├── SPAuthenticationTextField+Simplenote.swift
├── UnicodeScalar+Simplenote.swift
├── JSONKit+Simplenote.h
├── SPMarkdownParser.h
├── SearchQuery+Simplenote.swift
├── Simperium+Simplenote.m
├── NSAppearance+Simplenote.swift
├── FontSettings.swift
├── DateTransformer.m
├── CSS
│ ├── markdown-dark.css
│ └── markdown-light.css
├── Tag.h
├── HeaderTableCellView.swift
├── FileStorage.swift
├── NSAlert+Simplenote.swift
├── NSAnimationContext+Simplenote.swift
├── NSAlert+AuthErrors.swift
├── NSVisualEffectView+Simplenote.swift
├── AppKitConstants.swift
├── NSScrollView+Simplenote.swift
├── CharacterCountLimiter.swift
├── NSManagedObjectContext+Simplenote.swift
├── Simplenote-Bridging-Header.h
├── DateFormatter+Simplenote.swift
├── NSNotification+Simplenote.h
├── URL+Interlink.swift
├── Note+Interlinks.swift
├── NSImage+Simplenote.swift
├── SimplenoteDebug.entitlements
├── NSColor+Simplenote.swift
├── ContentSlice.swift
├── SearchMapView.swift
├── Array+Simplenote.swift
├── SplitView.swift
├── ClipView.swift
├── NSView+Simplenote.swift
├── TagListFilter.swift
└── NoteListPrefixFormatter.swift
├── .bundle
└── config
├── .configure-files
└── SPCredentials.swift.enc
├── BuildTools
├── Empty.swift
└── Package.resolved
├── SimplenoteTests
├── Constants.swift
├── MockStorageSettings.swift
├── URLRequest+Simplenote.swift
├── MockURLSessionDataTask.swift
├── NSUserDefaults+Tests.swift
├── MockStorageValidator.swift
├── MockSimperiumAuthenticator.swift
├── AccountVerificationController+TestHelpers.swift
├── Simplenote.xctestplan
├── Info.plist
├── MockLoginRemote.swift
├── MockTextView.swift
└── MockAccountVerificationRemote.swift
├── .buildkite
├── commands
│ ├── build-and-test.sh
│ ├── build-and-test-app-store.sh
│ └── build-and-upload-release.sh
├── release-builds.yml
├── shared-pipeline-vars
└── pipeline.yml
├── Simplenote.xcodeproj
└── project.xcworkspace
│ └── contents.xcworkspacedata
├── .editorconfig
├── .rubocop.yml
├── .configure
├── Scripts
└── Build-Phases
│ └── copy-secret.xcfilelist
├── Gemfile
├── IntentsExtension
├── IntentHandlers
│ └── OpenNewNoteIntentHandler.swift
├── Extensions
│ ├── NSString+Intents.swift
│ ├── IntentTag+Helpers.swift
│ ├── FileManager+Intents.swift
│ └── NSURLSessionConfiguration+Extensions.swift
├── Tools
│ ├── IntentsConstants.swift
│ └── ExtensionCoreDataWrapper.swift
├── Support Files
│ ├── IntentsExtension.entitlements
│ └── IntentsExtensionDebug.entitlements
└── Models
│ ├── Tag+Intents.swift
│ └── SPManagedObject+Intents.swift
├── .github
├── workflows
│ ├── run-danger.yml
│ └── validate-issues.yml
└── ISSUE_TEMPLATE
│ └── ---feature-request.md
├── Simplenote.entitlements
└── .gitignore
/.ruby-version:
--------------------------------------------------------------------------------
1 | 3.2.2
2 |
--------------------------------------------------------------------------------
/.xcode-version:
--------------------------------------------------------------------------------
1 | 15.4
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/ar-SA/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/de-DE/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/es-ES/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/fr-FR/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/he/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/id/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/it/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/ja/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/ko/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/nl-NL/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/pt-BR/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/ru/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/sv/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/tr/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hans/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hant/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fastlane/metadata/ja/subtitle.txt:
--------------------------------------------------------------------------------
1 | メモを残す最も簡単な方法です。
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/ja/promotional_text.txt:
--------------------------------------------------------------------------------
1 | メモを残す最も簡単な方法です。
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hans/promotional_text.txt:
--------------------------------------------------------------------------------
1 | 记录笔记最简单的方法。
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hans/subtitle.txt:
--------------------------------------------------------------------------------
1 | 记录笔记最简单的方法。
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hant/promotional_text.txt:
--------------------------------------------------------------------------------
1 | 輕鬆作筆記的最佳方式。
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hant/subtitle.txt:
--------------------------------------------------------------------------------
1 | 輕鬆作筆記的最佳方式。
2 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/Current:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/fastlane/metadata/ko/promotional_text.txt:
--------------------------------------------------------------------------------
1 | 메모를 보관하는 가장 간단한 방법입니다.
--------------------------------------------------------------------------------
/fastlane/metadata/ko/subtitle.txt:
--------------------------------------------------------------------------------
1 | 메모를 보관하는 가장 간단한 방법입니다.
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/he/subtitle.txt:
--------------------------------------------------------------------------------
1 | הדרך הפשוטה ביותר לרשום פתקים.
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/it/subtitle.txt:
--------------------------------------------------------------------------------
1 | Predere nota ora è semplice.
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/tr/promotional_text.txt:
--------------------------------------------------------------------------------
1 | Not tutmanın en basit yolu.
--------------------------------------------------------------------------------
/fastlane/metadata/tr/subtitle.txt:
--------------------------------------------------------------------------------
1 | Not tutmanın en basit yolu.
2 |
--------------------------------------------------------------------------------
/config/Simplenote.debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Project.Debug.xcconfig"
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/default/marketing_url.txt:
--------------------------------------------------------------------------------
1 | https://simplenote.com
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/es-ES/subtitle.txt:
--------------------------------------------------------------------------------
1 | Lo más fácil para tener notas.
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/it/promotional_text.txt:
--------------------------------------------------------------------------------
1 | Predere nota ora è semplice.
--------------------------------------------------------------------------------
/fastlane/metadata/ru/promotional_text.txt:
--------------------------------------------------------------------------------
1 | Простой способ хранить заметки.
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Headers:
--------------------------------------------------------------------------------
1 | Versions/Current/Headers
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Modules:
--------------------------------------------------------------------------------
1 | Versions/Current/Modules
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Sparkle:
--------------------------------------------------------------------------------
1 | Versions/Current/Sparkle
--------------------------------------------------------------------------------
/config/Simplenote.release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Project.Release.xcconfig"
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/default/privacy_url.txt:
--------------------------------------------------------------------------------
1 | https://automattic.com/privacy/
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/default/promotional_text.txt:
--------------------------------------------------------------------------------
1 | The simplest way to keep notes.
--------------------------------------------------------------------------------
/fastlane/metadata/default/support_url.txt:
--------------------------------------------------------------------------------
1 | https://simplenote.com/contact
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/en-US/promotional_text.txt:
--------------------------------------------------------------------------------
1 | The simplest way to keep notes.
--------------------------------------------------------------------------------
/fastlane/metadata/es-ES/promotional_text.txt:
--------------------------------------------------------------------------------
1 | Lo más fácil para tener notas.
--------------------------------------------------------------------------------
/fastlane/metadata/id/promotional_text.txt:
--------------------------------------------------------------------------------
1 | Cara paling mudah menyimpan catatan.
--------------------------------------------------------------------------------
/fastlane/metadata/pt-BR/promotional_text.txt:
--------------------------------------------------------------------------------
1 | A melhor forma de manter notas.
--------------------------------------------------------------------------------
/fastlane/metadata/sv/promotional_text.txt:
--------------------------------------------------------------------------------
1 | Det enklaste sättet att anteckna på.
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Resources:
--------------------------------------------------------------------------------
1 | Versions/Current/Resources
--------------------------------------------------------------------------------
/fastlane/appstoreres/metadata/source/subtitle.txt:
--------------------------------------------------------------------------------
1 | The simplest way to keep notes.
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | RELEASE-NOTES.txt merge=union
2 |
3 | .configure-files/*.enc binary
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/de-DE/promotional_text.txt:
--------------------------------------------------------------------------------
1 | Die einfachste Art, sich Notizen zu machen.
--------------------------------------------------------------------------------
/fastlane/metadata/ja/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,メモ,メモ,同期,同期,リスト,todo,シンプル,markdown,アイデア
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/ko/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,메모,메모,동기화,동기화 중,목록,할 일,심플,마크다운,아이디어
2 |
--------------------------------------------------------------------------------
/Simplenote/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/fr-FR/promotional_text.txt:
--------------------------------------------------------------------------------
1 | La manière la plus simple de conserver des notes.
--------------------------------------------------------------------------------
/fastlane/metadata/nl-NL/promotional_text.txt:
--------------------------------------------------------------------------------
1 | De eenvoudigste manier om notities bij te houden.
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hans/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,笔记,笔记,同步,正在同步,列表,待办事项,简单,markdown,想法
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hant/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,筆記,筆記本,同步,同步功能,清單,待辦事項,簡單,markdown,想法
2 |
--------------------------------------------------------------------------------
/.bundle/config:
--------------------------------------------------------------------------------
1 | ---
2 | BUNDLE_PATH: "vendor/bundle"
3 | BUNDLE_RETRY: "3"
4 | BUNDLE_JOBS: "3"
5 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/PkgInfo:
--------------------------------------------------------------------------------
1 | APPL????
--------------------------------------------------------------------------------
/fastlane/metadata/default/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,note,notes,sync,syncing,list,todo,simple,markdown,ideas
--------------------------------------------------------------------------------
/config/Project.Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Project.xcconfig"
2 |
3 | CODE_SIGN_IDENTITY = Apple Development
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/tr/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,not,notlar,eşitleme,liste,yaqpılacak,basit,markdown,fikirler
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hant/release_notes.txt:
--------------------------------------------------------------------------------
1 | - 更新了加州使用者的隱私權聲明連結
2 | - 停止處理超長備註的選填備註
3 | - 修正在淺色模式中列印多頁時的錯誤
4 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/fr_CA.lproj:
--------------------------------------------------------------------------------
1 | fr.lproj
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/pt.lproj:
--------------------------------------------------------------------------------
1 | pt_BR.lproj
--------------------------------------------------------------------------------
/fastlane/appstoreres/metadata/source/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,note,notes,sync,syncing,list,todo,simple,markdown,ideas
--------------------------------------------------------------------------------
/fastlane/metadata/ar-SA/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote، ملحوظة، ملحوظات، مزامنة، قائمة، قائمة المهام، بسيط، الضبط، أفكار
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/he/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote, פתק, פתקים, סנכרון, מסנכרן, רשימה, משימות, פשוט, markdown, רעיונות
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/ru/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,заметка,заметки,синхронизация,спиоск,списокдел,просто,markdown,идеи
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hans/release_notes.txt:
--------------------------------------------------------------------------------
1 | - 更新了面向加州用户的隐私声明的链接
2 | - 已禁用超长备注的可选处理功能
3 | - 修复了在浅色模式下打印多页时出现的错误
4 |
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/PkgInfo:
--------------------------------------------------------------------------------
1 | APPL????
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/fastlane/metadata/es-ES/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,nota,notas,sincronizar,sincronizando,lista,parahacer,simple,notas,ideas
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/fr-FR/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,note,notes,sync,synchronisation,liste,à faire,simple,markdown,idées
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/id/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,catatan,sinkronisasi,menyinkronisasi,daftar,tugas,sederhana,markdown,ide
2 |
--------------------------------------------------------------------------------
/External/Sparkle/bin/BinaryDelta:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/bin/BinaryDelta
--------------------------------------------------------------------------------
/External/Sparkle/bin/sign_update:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/bin/sign_update
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/it/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,nota,note,sincronizzare,sincronizzazione,elenco,dafare,semplice,markdown,idee
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/sv/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,anteckning,anteckningar,synk,synkronisering,lista,attgöra,enkel,markdown,ideer
2 |
--------------------------------------------------------------------------------
/External/Sparkle/bin/generate_keys:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/bin/generate_keys
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/de-DE/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,Notiz,Notizen,synchronisieren,Synchronisierung,Liste,To-do,einfach,Markdown,Ideen
2 |
--------------------------------------------------------------------------------
/External/Sparkle/bin/generate_appcast:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/bin/generate_appcast
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/nl-NL/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,notitie,notities,synchronisatie,synchroniseren,lijst,todo,eenvoudig,markdown,ideeën
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/pt-BR/keywords.txt:
--------------------------------------------------------------------------------
1 | simplenote,anotação,anotações,sincronizar,sincronização,lista,tarefas,simples,markdown,ideias
2 |
--------------------------------------------------------------------------------
/.configure-files/SPCredentials.swift.enc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/.configure-files/SPCredentials.swift.enc
--------------------------------------------------------------------------------
/fastlane/metadata/ko/release_notes.txt:
--------------------------------------------------------------------------------
1 | - 캘리포니아 사용자를 위한 개인정보 공지 링크 업데이트함
2 | - 매우 긴 참고 사항에 대한 선택적 참고 사항 처리 중지
3 | - 밝게 모드에서 여러 페이지 인쇄 시 버그 수정함
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/ja/release_notes.txt:
--------------------------------------------------------------------------------
1 | - カリフォルニア州のユーザーへのプライバシー通知のリンクを更新しました
2 | - ノートが非常に長い場合にオプションのノート処理を停止します
3 | -ライトモードで複数ページを印刷する際のバグを修正しました
4 |
--------------------------------------------------------------------------------
/BuildTools/Empty.swift:
--------------------------------------------------------------------------------
1 | // Here only to satisfy SwiftPM requirement.
2 | // See https://github.com/nicklockwood/SwiftFormat#1-create-a-buildtools-folder-and-packageswift
3 |
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_16x16.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_32x32.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_128x128.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_16x16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_16x16@2x.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_256x256.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_32x32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_32x32@2x.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_512x512.png
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_pin.imageset/pinned.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_pin.imageset/pinned.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_wp.imageset/icon_wp.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_wp.imageset/icon_wp.pdf
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Sparkle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Sparkle
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_16x16.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_32x32.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_128x128@2x.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_256x256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_256x256@2x.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_512x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon.appiconset/icon_512x512@2x.png
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_info.imageset/info.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_info.imageset/info.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_mail.imageset/icon_mail.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_mail.imageset/icon_mail.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_shared.imageset/publish.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_shared.imageset/publish.pdf
--------------------------------------------------------------------------------
/Simplenote/Simplenote.xcdatamodeld/Simplenote.xcdatamodel/layout:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Simplenote.xcdatamodeld/Simplenote.xcdatamodel/layout
--------------------------------------------------------------------------------
/SimplenoteTests/Constants.swift:
--------------------------------------------------------------------------------
1 | /// Unit Tests Constants
2 | struct Constants {
3 |
4 | /// Default Expectation Timeout
5 | static let expectationTimeout = TimeInterval(10)
6 | }
7 |
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_128x128.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_16x16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_16x16@2x.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_256x256.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_32x32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_32x32@2x.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_512x512.png
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_cross.imageset/cross.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_cross.imageset/cross.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_share.imageset/share.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_share.imageset/share.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_trash.imageset/trash.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_trash.imageset/trash.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_simplenote.imageset/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_simplenote.imageset/logo.png
--------------------------------------------------------------------------------
/Simplenote/Simplenote.xcdatamodeld/Simplenote.xcdatamodel/elements:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Simplenote.xcdatamodeld/Simplenote.xcdatamodel/elements
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module Sparkle {
2 | umbrella header "Sparkle.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_128x128@2x.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_256x256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_256x256@2x.png
--------------------------------------------------------------------------------
/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_512x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Icons.xcassets/AppIcon-Beta.appiconset/icon_512x512@2x.png
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_all_notes.imageset/notes.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_all_notes.imageset/notes.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_history.imageset/history.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_history.imageset/history.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_restore.imageset/restore.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_restore.imageset/restore.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_search.imageset/search.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_search.imageset/search.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_simplenote.imageset/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_simplenote.imageset/logo@2x.png
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_simplenote.imageset/logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_simplenote.imageset/logo@3x.png
--------------------------------------------------------------------------------
/.buildkite/commands/build-and-test.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash -eu
2 |
3 | echo "--- :rubygems: Setting up Gems"
4 | install_gems
5 |
6 | echo "--- :hammer_and_wrench: Build and Test"
7 | bundle exec fastlane test
8 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_ellipsis.imageset/ellipsis.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_ellipsis.imageset/ellipsis.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_untagged.imageset/untagged.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_untagged.imageset/untagged.pdf
--------------------------------------------------------------------------------
/Simplenote/Preferences.h:
--------------------------------------------------------------------------------
1 | @import Simperium.SPManagedObject;
2 |
3 |
4 | @interface Preferences: SPManagedObject
5 |
6 | @property (nullable, nonatomic, copy) NSNumber *analytics_enabled;
7 |
8 | @end
9 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_tags_open.imageset/tags-open.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_tags_open.imageset/tags-open.pdf
--------------------------------------------------------------------------------
/config/Project.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Version.public.xcconfig"
2 |
3 | DEVELOPMENT_TEAM = PZYM8XX95Q
4 | CODE_SIGN_STYLE = Manual
5 |
6 | // Required to export for Notarization
7 | ENABLE_HARDENED_RUNTIME = YES
8 |
--------------------------------------------------------------------------------
/fastlane/Appfile:
--------------------------------------------------------------------------------
1 | app_identifier("com.automattic.SimplenoteMac") # The bundle identifier of your app
2 |
3 | itc_team_id("299112") # App Store Connect Team ID
4 | team_id("PZYM8XX95Q") # Developer Portal Team ID
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_tags_close.imageset/tags-close.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_tags_close.imageset/tags-close.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_task_checked.imageset/task-checked.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_task_checked.imageset/task-checked.pdf
--------------------------------------------------------------------------------
/Simplenote/Resources/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Updated link to privacy notice for California users
2 | - Stop optional note processing for very long notes
3 | - Fixed a bug when printing multiple pages when in light mode
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/he/release_notes.txt:
--------------------------------------------------------------------------------
1 | - עדכנו את הקישור להצהרת הפרטיות עבור משתמשים בקליפורניה
2 | - ניתן להפסיק את העיבוד האופציונלי של הפתקים בפתקים ארוכים מאוד
3 | - תיקנו באג בהדפסה של מספר עמודים במצב בהיר
4 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_new_note.imageset/button_new_note.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_new_note.imageset/button_new_note.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_chevron_down.imageset/disclosure-down.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_chevron_down.imageset/disclosure-down.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_task_unchecked.imageset/task-unchecked.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_task_unchecked.imageset/task-unchecked.pdf
--------------------------------------------------------------------------------
/Simplenote/NSString+Metadata.h:
--------------------------------------------------------------------------------
1 |
2 | @interface NSString (Metadata)
3 |
4 | - (BOOL)containsEmailAddress;
5 | - (NSInteger)convertCursorLocation:(NSInteger)oldLocation toLocationInText:(NSString *)newText;
6 |
7 | @end
8 |
--------------------------------------------------------------------------------
/Simplenote/NoteEditorMetadata.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NoteEditorMetadata
4 | //
5 | struct NoteEditorMetadata: Codable {
6 | let scrollPosition: CGFloat?
7 | let cursorLocation: Int?
8 | }
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/default/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Updated link to privacy notice for California users
2 | - Stop optional note processing for very long notes
3 | - Fixed a bug when printing multiple pages when in light mode
4 |
--------------------------------------------------------------------------------
/Simplenote.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_checklist.imageset/button_checklist.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_checklist.imageset/button_checklist.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_arrow_top_right.imageset/arrow-top-right.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_arrow_top_right.imageset/arrow-top-right.pdf
--------------------------------------------------------------------------------
/Simplenote/NSEdgeInsets+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSEdgeInsets + Simplenote
4 | //
5 | extension NSEdgeInsets {
6 |
7 | static let zero = NSEdgeInsetsMake(.zero, .zero, .zero, .zero)
8 | }
9 |
--------------------------------------------------------------------------------
/.buildkite/commands/build-and-test-app-store.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash -eu
2 |
3 | echo "--- :rubygems: Setting up Gems"
4 | install_gems
5 |
6 | echo "--- :hammer_and_wrench: Build and Test"
7 | bundle exec fastlane test_app_store_build
8 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_preview_off.imageset/visibility-hidden.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_preview_off.imageset/visibility-hidden.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_preview_on.imageset/visibility-visible.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_preview_on.imageset/visibility-visible.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_simplenote_login.imageset/icon_simplenote.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_simplenote_login.imageset/icon_simplenote.pdf
--------------------------------------------------------------------------------
/Simplenote/NSViewController+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | extension NSViewController {
4 | var containingNavigationController: SPNavigationController? {
5 | parent as? SPNavigationController
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_ellipsis_outline.imageset/ellipsis-outline.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Buttons/button_ellipsis_outline.imageset/ellipsis-outline.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_disclosure_right.imageset/icon_disclosure_right.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_disclosure_right.imageset/icon_disclosure_right.pdf
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_simplenote_inner.imageset/icon_simplenote_inner.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/Simplenote/Images.xcassets/Icons/icon_simplenote_inner.imageset/icon_simplenote_inner.pdf
--------------------------------------------------------------------------------
/Simplenote/Simperium+Simplenote.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import "Preferences.h"
3 | @import Simperium;
4 |
5 |
6 | @interface Simperium (Simplenote)
7 |
8 | - (Preferences *)preferencesObject;
9 |
10 | @end
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/ar-SA/release_notes.txt:
--------------------------------------------------------------------------------
1 | - تم تحديث رابط إشعار الخصوصية الخاص بالمستخدمين في كاليفورنيا
2 | - إيقاف معالجة الملحوظات الاختيارية للملحوظات الطويلة للغاية
3 | - تم إصلاح خطأ عند طباعة صفحات متعددة عندما تكون في الوضع الفاتح
4 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/hr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/hr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Apply to all files
2 | [*]
3 | end_of_line = lf
4 | insert_final_newline = true
5 | trim_trailing_whitespace = true
6 |
7 | # Ruby specific rules
8 | [{*.rb,Fastfile,Gemfile}]
9 | indent_style = space
10 | indent_size = 2
11 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Base.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Base.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Base.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Base.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Simplenote/NSFont+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import AppKit
3 |
4 | // MARK: - NSFont + Simplenote
5 | //
6 | extension NSFont {
7 |
8 | var lineHeight: CGFloat {
9 | ceil(ascender - descender)
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Simplenote/SpacerTableViewCell.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import AppKit
3 |
4 | // MARK: - SpacerTableViewCell: Literally an empty TableViewCell, which allows us to inject spacing
5 | //
6 | class SpacerTableViewCell: NSTableCellView {
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Autoupdate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Autoupdate
--------------------------------------------------------------------------------
/fastlane/metadata/de-DE/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Aktualisierter Link zu den Datenschutzhinweisen für Benutzer in Kalifornien
2 | - Optionale Notizenverarbeitung für sehr lange Notizen anhalten
3 | - Fehler beim Drucken mehrerer Seiten im Hell-Modus behoben
4 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.strings
--------------------------------------------------------------------------------
/Simplenote/NSFont+Theme.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSFont + Theme API
4 | //
5 | extension NSFont {
6 |
7 | @objc
8 | static var simplenoteSecondaryTextFont: NSFont {
9 | .systemFont(ofSize: 13)
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/fastlane/metadata/ru/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Обновлена ссылка на заявление о конфиденциальности для пользователей из Калифорнии.
2 | - Прекращена опциональная обработка слишком длинных заметок.
3 | - Исправлена ошибка печати нескольких страниц в светлом режиме.
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/tr/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Kaliforniya'daki kullanıcılar için gizlilik bildirimine giden bağlantı güncellendi
2 | - Çok uzun notlar için isteğe bağlı not işlemeyi durdurun
3 | - Açık modda birden çok sayfa yazdırırken oluşan bir hata düzeltildi
4 |
--------------------------------------------------------------------------------
/.buildkite/commands/build-and-upload-release.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash -eu
2 |
3 | echo "--- :rubygems: Setting up Gems"
4 | install_gems
5 |
6 | echo "--- :hammer_and_wrench: Build and Test"
7 | bundle exec fastlane build_and_upload_app_store create_github_release:true
8 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/MacOS/Updater:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/MacOS/Updater
--------------------------------------------------------------------------------
/Simplenote/Simplenote-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'Simplenote' target in the 'Simplenote' project
3 | //
4 |
5 | #ifdef __OBJC__
6 | #import
7 | #import
8 | #endif
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/id/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Pembaruan tautan pada pemberitahuan privasi bagi pengguna di California
2 | - Pemrosesan catatan opsional untuk catatan yang terlalu panjang dihentikan
3 | - Perbaikan bug saat mencetak beberapa halaman dalam mode terang
4 |
--------------------------------------------------------------------------------
/Simplenote/NSRange+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSRange Simplenote Methods
4 | //
5 | extension NSRange {
6 |
7 | /// Range at (zero, zero)!
8 | ///
9 | static let zero = NSRange(location: .zero, length: .zero)
10 | }
11 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Base.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Base.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/fastlane/metadata/it/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Aggiornato il link alla nota sulla privacy per utenti in California
2 | - Introdotta l'interruzione facoltativa dell'elaborazione in caso di note molto lunghe
3 | - Corretto un bug durante la stampa di più pagine in modalità chiara
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/nl-NL/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Link naar privacyverklaring voor gebruikers in Californië bijgewerkt
2 | - De verwerking van optionele notities voor zeer lange notities stopgezet
3 | - Een bug verholpen bij het afdrukken van meerdere pagina's in de lichte modus
4 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/SUStatus.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/SUStatus.nib
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings
--------------------------------------------------------------------------------
/.buildkite/release-builds.yml:
--------------------------------------------------------------------------------
1 | steps:
2 | - label: "🛠 App Store Upload"
3 | command: .buildkite/commands/build-and-upload-release.sh
4 | priority: 1
5 | plugins: [$CI_TOOLKIT_PLUGIN]
6 | agents:
7 | queue: mac
8 | env:
9 | IMAGE_ID: $IMAGE_ID
10 |
--------------------------------------------------------------------------------
/fastlane/metadata/fr-FR/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Mise à jour du lien vers l’avis de confidentialité pour les utilisateurs californiens
2 | - Arrêt du traitement des notes facultatives pour les notes très longues
3 | - Correction d’un bug lors de l’impression de plusieurs pages en mode clair
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/es-ES/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Se ha actualizado el enlace que lleva al aviso de privacidad para usuarios de California
2 | - Se ha detenido el procesamiento opcional para notas muy largas
3 | - Se ha corregido un error que se producía al imprimir varias páginas en el modo claro
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/pt-BR/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Link do aviso de privacidade para usuários residentes da Califórnia atualizado
2 | - Capacidade de interromper o processamento opcional de anotações muito longas adicionada
3 | - Corrigido um bug que ocorria ao imprimir várias páginas no modo claro
4 |
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/MacOS/Updater:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/MacOS/Updater
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerStatus.xpc/Contents/MacOS/org.sparkle-project.InstallerStatus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerStatus.xpc/Contents/MacOS/org.sparkle-project.InstallerStatus
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/ca.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/ca.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/cs.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/cs.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/da.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/da.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/de.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/de.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/el.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/el.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/es.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/es.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/fi.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/fi.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/fr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/fr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/he.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/he.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/hr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/hr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/is.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/is.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/it.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/it.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/ja.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/ja.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/ko.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/ko.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/nb.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/nb.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/nl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/nl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/pl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/pl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/ro.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/ro.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/ru.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/ru.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/sk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/sk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/sl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/sl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/sv.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/sv.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/th.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/th.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/tr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/tr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/uk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/uk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/fastlane/metadata/sv/release_notes.txt:
--------------------------------------------------------------------------------
1 | - Vi har uppdaterat länken till integritetsnotisen för användare i Kalifornien
2 | - Vi har lagt till möjligheten att stoppa valfri anteckningsbehandling för mycket långa anteckningar
3 | - Vi har åtgärdat en bugg som uppstod när flera sidor skrevs ut i ljust läge
4 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/Base.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/Base.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/pt_BR.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/pt_BR.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/pt_PT.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/pt_PT.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/zh_CN.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/zh_CN.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/zh_TW.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/Updater.app/Contents/Resources/zh_TW.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/org.sparkle-project.InstallerLauncher:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/org.sparkle-project.InstallerLauncher
--------------------------------------------------------------------------------
/Simplenote/Date+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | extension Date {
4 | func increased(byDays days: Int) -> Date? {
5 | var components = DateComponents()
6 | components.day = days
7 | return Calendar.current.date(byAdding: components, to: self)
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/External/Hoextdown/version.c:
--------------------------------------------------------------------------------
1 | #include "version.h"
2 |
3 | void
4 | hoedown_version(int *major, int *minor, int *revision, int *extras)
5 | {
6 | *major = HOEDOWN_VERSION_MAJOR;
7 | *minor = HOEDOWN_VERSION_MINOR;
8 | *revision = HOEDOWN_VERSION_REVISION;
9 | *extras = HOEDOWN_VERSION_EXTRAS;
10 | }
11 |
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerConnection.xpc/Contents/MacOS/org.sparkle-project.InstallerConnection:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerConnection.xpc/Contents/MacOS/org.sparkle-project.InstallerConnection
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/SUStatus.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/SUStatus.nib
--------------------------------------------------------------------------------
/config/Project.Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Project.xcconfig"
2 |
3 | // Each target using this will interpolate its own computed value for the bundle id
4 | PROVISIONING_PROFILE_SPECIFIER = match AppStore $(PRODUCT_BUNDLE_IDENTIFIER) macos
5 |
6 | CODE_SIGN_IDENTITY = Apple Distribution: Automattic, Inc. (PZYM8XX95Q)
7 |
--------------------------------------------------------------------------------
/Simplenote/NSWindowFrameAutosaveName+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSWindow.FrameAutosaveName
4 | //
5 | extension NSWindow.FrameAutosaveName {
6 |
7 | /// Main Window Autosave Name
8 | ///
9 | static var mainWindow: NSWindow.FrameAutosaveName = "SimplenoteMainWindow"
10 | }
11 |
--------------------------------------------------------------------------------
/Simplenote/DateTransformer.h:
--------------------------------------------------------------------------------
1 | //
2 | // DateTransformer.h
3 | // Simplenote
4 | //
5 | // Created by Rainieri Ventura on 1/28/12.
6 | // Copyright (c) 2012 Simperium. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DateTransformer : NSValueTransformer
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/ca.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/ca.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/cs.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/cs.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/da.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/da.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/de.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/de.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/el.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/el.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/es.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/es.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/fi.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/fi.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/fr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/fr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/he.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/he.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/hr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/hr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/is.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/is.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/it.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/it.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/ja.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/ja.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/ko.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/ko.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/nb.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/nb.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/nl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/nl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/pl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/pl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/pt.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/pt.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/ro.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/ro.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/ru.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/ru.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/sk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/sk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/sl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/sl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/sv.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/sv.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/th.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/th.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/tr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/tr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/uk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/uk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Simplenote/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // Simplenote
4 | //
5 | // Created by Michael Johnston on 11-08-22.
6 | // Copyright (c) 2011 Simperium. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | int main(int argc, char *argv[])
12 | {
13 | return NSApplicationMain(argc, (const char **)argv);
14 | }
15 |
--------------------------------------------------------------------------------
/config/Version.public.xcconfig:
--------------------------------------------------------------------------------
1 | VERSION_SHORT=2.22
2 |
3 | // Public long version. Example: 2.0.0.0. The last 0 means the first build for
4 | // version 2.0.0
5 | VERSION_LONG=2.22.0.1
6 |
7 | // This is the value for the CFBundleVersion it should be incremented on every
8 | // build that gets distributed
9 | BUILD_NUMBER=11263
10 |
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/Base.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/Base.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/fr_CA.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/fr_CA.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/pt_BR.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/pt_BR.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/pt_PT.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/pt_PT.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/zh_CN.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/zh_CN.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/zh_TW.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Automattic/simplenote-macos/HEAD/External/Sparkle/XPCServices/org.sparkle-project.InstallerLauncher.xpc/Contents/MacOS/Updater.app/Contents/Resources/zh_TW.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Simplenote/Simplenote.xcdatamodeld/.xccurrentversion:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | _XCCurrentVersionName
6 | Simplenote 3.xcdatamodel
7 |
8 |
9 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ReleaseNotesColorStyle.css:
--------------------------------------------------------------------------------
1 | @media (prefers-color-scheme: dark) {
2 | html {
3 | color: white;
4 | background: transparent;
5 | }
6 | :link {
7 | color: #419CFF;
8 | }
9 | :link:active {
10 | color: #FF1919;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Simplenote/NSObject+Helpers.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// NSObject: Helper Methods
4 | ///
5 | extension NSObject {
6 |
7 | /// Returns the receiver's classname as a string, not including the namespace.
8 | ///
9 | class var classNameWithoutNamespaces: String {
10 | return String(describing: self)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Simplenote/NSSearchField+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSSearchField Methods
4 | //
5 | extension NSSearchField {
6 |
7 | func cancelSearch() {
8 | stringValue = ""
9 |
10 | let searchCell = cell as? NSSearchFieldCell
11 | searchCell?.cancelButtonCell?.performClick(self)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/.rubocop.yml:
--------------------------------------------------------------------------------
1 | AllCops:
2 | NewCops: enable
3 | SuggestExtensions:
4 | rubocop-rake: false
5 |
6 | Metrics/MethodLength:
7 | Max: 30
8 |
9 | Layout/LineLength:
10 | Max: 180
11 |
12 | Metrics/BlockLength:
13 | Exclude:
14 | - fastlane/Fastfile
15 | - Rakefile
16 |
17 | Style/HashSyntax:
18 | EnforcedShorthandSyntax: never
19 |
--------------------------------------------------------------------------------
/Simplenote/NSScreen+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSScreen Simplenote Methods
4 | //
5 | extension NSScreen {
6 |
7 | /// Returns the ratio between 1 point and 1 pixel in the current device.
8 | ///
9 | @objc
10 | var pointToPixelRatio: CGFloat {
11 | return 1.0 / backingScaleFactor
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Simplenote/WPAuthHandler.h:
--------------------------------------------------------------------------------
1 | //
2 | // WPAuthHandler.h
3 | // Simplenote
4 | // Handles oauth authentication with WordPress.com
5 | //
6 |
7 | @import Simperium;
8 |
9 | @interface WPAuthHandler : NSObject
10 | + (BOOL)isWPAuthenticationUrl:(NSURL*)url;
11 | + (SPUser *)authorizeSimplenoteUserFromUrl:(NSURL*)url forAppId:(NSString *)appId;
12 | @end
13 |
--------------------------------------------------------------------------------
/Simplenote/NSBox+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSBox.BoxType
4 | //
5 | extension NSBox.BoxType {
6 |
7 | /// Sidebar Box Type: We'll disable Desktop Tinting whenever we're in Light Mode
8 | ///
9 | static var simplenoteSidebarBoxType: NSBox.BoxType {
10 | SPUserInterface.isDark ? .primary : .custom
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Simplenote/NSButton+Extensions.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | extension NSButton {
4 | func setTitleColor(_ color: NSColor) {
5 | let currentTitle = NSMutableAttributedString(string: title)
6 | currentTitle.addAttribute(.foregroundColor, value: color, range: currentTitle.fullRange)
7 | attributedTitle = currentTitle
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Simplenote/NSTextStorage+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSTextStorage
4 | //
5 | extension NSTextStorage {
6 |
7 | /// Returns the font at the specified character, if any
8 | ///
9 | func font(at charIndex: Int) -> NSFont? {
10 | return attribute(.font, at: charIndex, effectiveRange: nil) as? NSFont
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_task_checked.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "task-checked.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Simplenote/ActivityType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ActivityType.swift
3 | // Simplenote
4 | //
5 | // Created by Charlie Scheer on 5/23/24.
6 | // Copyright © 2024 Simperium. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum ActivityType: String {
12 | case newNoteShortcut = "OpenNewNoteIntent"
13 | case openNoteShortcut = "OpenNoteIntent"
14 | }
15 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_simplenote_login.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon_simplenote.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_task_unchecked.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "task-unchecked.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Simplenote/NSNotification+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import AppKit
3 |
4 | // MARK: - NSNotification Simplenote Methods
5 | //
6 | extension NSNotification {
7 |
8 | /// Returns the associated FieldEditor (if any)
9 | ///
10 | @objc
11 | var fieldEditor: NSTextView? {
12 | userInfo?["NSFieldEditor"] as? NSTextView
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/SimplenoteTests/MockStorageSettings.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | @testable import Simplenote
3 |
4 | class MockStorageSettings: StorageSettings {
5 | override var legacyStorageURL: URL {
6 | URL(string: "file:///legacyStorage.com")!
7 | }
8 |
9 | override var sharedStorageURL: URL {
10 | URL(string: "//sharedStorage.url")!
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/SimplenoteTests/URLRequest+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | extension URLRequest {
4 | func decodeHtmlBody() throws -> T? {
5 | guard let _ = httpBody else {
6 | return nil
7 | }
8 |
9 | return try httpBody.map {
10 | try JSONDecoder().decode(T.self, from: $0)
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Simplenote/SPAboutTextField.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SPAboutTextField.swift
3 | // Simplenote
4 | //
5 | // An NSTextField that shows a hand pointer on hover 👆
6 | //
7 |
8 | import Cocoa
9 |
10 | @objc class SPAboutTextField: NSTextField {
11 |
12 | override func resetCursorRects() {
13 | self.addCursorRect(self.bounds, cursor: NSCursor.pointingHand)
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/en.lproj/Credits.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf370
2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
3 | {\colortbl;\red255\green255\blue255;}
4 | \vieww9600\viewh8400\viewkind0
5 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
6 | {\field{\*\fldinst{HYPERLINK "http://simplenote.com"}}{\fldrslt
7 | \f0\b\fs24 \cf0 simplenote.com}}}
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_pin.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "pinned.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_wp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon_wp.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/NumberFormatter+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NumberFormatter
4 | //
5 | extension NumberFormatter {
6 |
7 | class func localizedString(from integer: Int, style: NumberFormatter.Style) -> String {
8 | let wrappedInt = NSNumber(integerLiteral: integer)
9 | return NumberFormatter.localizedString(from: wrappedInt, number: style)
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/SimplenoteTests/MockURLSessionDataTask.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - MockURLSessionDataTask
4 | //
5 | class MockURLSessionDataTask: URLSessionDataTask {
6 | private let completion: () -> Void
7 |
8 | init(completion: @escaping () -> Void) {
9 | self.completion = completion
10 | }
11 |
12 | override func resume() {
13 | completion()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/SimplenoteTests/NSUserDefaults+Tests.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - UserDefaults Extension Methods
4 | //
5 | extension UserDefaults {
6 |
7 | /// Resets all of the receiver's values
8 | ///
9 | func reset() {
10 | for (key, _) in dictionaryRepresentation() {
11 | removeObject(forKey: key)
12 | }
13 |
14 | synchronize()
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_cross.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "cross.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_info.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "info.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_search.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "search.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_share.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "share.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_trash.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "trash.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_mail.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon_mail.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_shared.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "publish.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_all_notes.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "notes.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_ellipsis.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ellipsis.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_history.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "history.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_restore.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "restore.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_untagged.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "untagged.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/NSProcessInfo+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - ProcessInfo
4 | //
5 | extension ProcessInfo {
6 |
7 | /// Indicates if we're running Unit Tests, or we're happily in a regular environment =)
8 | ///
9 | @objc
10 | static func isRunningTests() -> Bool {
11 | return ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"] != nil
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/.configure:
--------------------------------------------------------------------------------
1 | {
2 | "project_name": "simplenote-macos",
3 | "branch": "trunk",
4 | "pinned_hash": "bfac58335805e9a8295412734b3492fa6ce7a008",
5 | "files_to_copy": [
6 | {
7 | "file": "macOS/simplenote/SPCredentials.swift",
8 | "destination": "~/.configure/simplenote-macos/secrets/SPCredentials.swift",
9 | "encrypt": true
10 | }
11 | ],
12 | "file_dependencies": [
13 |
14 | ]
15 | }
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_tags_close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "tags-close.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_tags_open.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "tags-open.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_checklist.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "button_checklist.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_new_note.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "button_new_note.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_arrow_top_right.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "arrow-top-right.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_chevron_down.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "disclosure-down.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/NSTableViewCell+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import AppKit
3 |
4 | /// NSTableCellView Helpers
5 | ///
6 | extension NSTableCellView {
7 |
8 | /// Returns a reuseIdentifier that matches the receiver's classname (non namespaced).
9 | ///
10 | class var reuseIdentifier: NSUserInterfaceItemIdentifier {
11 | NSUserInterfaceItemIdentifier(classNameWithoutNamespaces)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/SimplenoteTests/MockStorageValidator.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | @testable import Simplenote
3 |
4 | class MockStorageValidator: CoreDataValidator {
5 | var validationShouldSucceed = true
6 |
7 | override func validateStorage(withModelURL modelURL: URL, storageURL: URL) throws {
8 | if !validationShouldSucceed {
9 | throw NSError(domain: "TestError", code: 1)
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_ellipsis_outline.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ellipsis-outline.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_preview_off.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "visibility-hidden.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_preview_on.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "visibility-visible.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_disclosure_right.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon_disclosure_right.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_simplenote_inner.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon_simplenote_inner.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "preserves-vector-representation" : true,
14 | "template-rendering-intent" : "template"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/fastlane/env/user.env-example:
--------------------------------------------------------------------------------
1 | GHHELPER_ACCESS=
2 | SENTRY_AUTH_TOKEN=
3 |
4 | # Fastlane Match
5 | MATCH_S3_ACCESS_KEY=
6 | MATCH_S3_SECRET_ACCESS_KEY=
7 | MATCH_PASSWORD=
8 |
9 | # App Store Connect API
10 | APP_STORE_CONNECT_API_KEY_KEY_ID=
11 | APP_STORE_CONNECT_API_KEY_ISSUER_ID=
13 |
--------------------------------------------------------------------------------
/Simplenote/Preferences.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 | #import "Preferences.h"
4 | #import "Simplenote-Swift.h"
5 |
6 | @implementation Preferences
7 |
8 | @dynamic ghostData;
9 | @dynamic simperiumKey;
10 |
11 | @dynamic analytics_enabled;
12 |
13 | - (void)awakeFromLocalInsert
14 | {
15 | [super awakeFromLocalInsert];
16 | self.analytics_enabled = @(false);
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Simplenote/SimperiumAuthenticatorProtocol.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import SimplenoteEndpoints
3 | import Simperium
4 |
5 |
6 | // MARK: - SimperiumAuthenticatorProtocol
7 | //
8 | protocol SimperiumAuthenticatorProtocol {
9 | func authenticate(withUsername username: String, token: String)
10 | }
11 |
12 |
13 | extension SPAuthenticator: SimperiumAuthenticatorProtocol { }
14 |
15 |
16 | extension SPUser: UserProtocol { }
17 |
--------------------------------------------------------------------------------
/Simplenote/StatusChecker.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 |
4 |
5 | @class Simperium;
6 |
7 | #pragma mark ================================================================================
8 | #pragma mark StatusChecker
9 | #pragma mark ================================================================================
10 |
11 | @interface StatusChecker : NSObject
12 |
13 | + (BOOL)hasUnsentChanges:(Simperium *)simperium;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Headers/SUExport.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUExport.h
3 | // Sparkle
4 | //
5 | // Created by Jake Petroules on 2014-08-23.
6 | // Copyright (c) 2014 Sparkle Project. All rights reserved.
7 | //
8 |
9 | #ifndef SUEXPORT_H
10 | #define SUEXPORT_H
11 |
12 | #ifdef BUILDING_SPARKLE
13 | #define SU_EXPORT __attribute__((visibility("default")))
14 | #else
15 | #define SU_EXPORT
16 | #endif
17 |
18 | #endif
19 |
--------------------------------------------------------------------------------
/Scripts/Build-Phases/copy-secret.xcfilelist:
--------------------------------------------------------------------------------
1 | # Inputs for the build phase run script marshalling the secrets for the app,
2 | # currently running from the SimplenoteSecrets aggregate targets
3 | ${HOME}/.configure/simplenote-macos/secrets/SPCredentials.swift
4 | ${SRCROOT}/Simplenote/SPCredentials-demo.swift
5 | # Add the script itself as an input, so the build system will know to run it
6 | # if it changes
7 | ${SRCROOT}/Scripts/Build-Phases/copy-secret.sh
8 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | # frozen_string_literal: true
2 |
3 | source 'https://rubygems.org'
4 |
5 | gem 'danger-dangermattic', '~> 1.0'
6 | gem 'fastlane', '~> 2.222'
7 | gem 'fastlane-plugin-sentry', '~> 1.14'
8 | gem 'fastlane-plugin-wpmreleasetoolkit', '~> 9.2'
9 | gem 'rake', '~> 12.3'
10 | gem 'xcpretty-travis-formatter', '~> 1.0'
11 |
12 | plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
13 | eval_gemfile(plugins_path) if File.exist?(plugins_path)
14 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Buttons/button_settings.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "settings.svg",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Simplenote/FileManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | protocol FileManagerProtocol {
4 | func fileExists(atPath path: String) -> Bool
5 | func directoryExistsAtURL(_ url: URL) -> Bool
6 | func copyItem(at srcURL: URL, to dstURL: URL) throws
7 | func moveItem(at srcURL: URL, to dstURL: URL) throws
8 | func removeItem(at URL: URL) throws
9 | func createDirectory(at url: URL, withIntermediateDirectories createIntermediates: Bool) throws
10 | }
11 |
--------------------------------------------------------------------------------
/SimplenoteTests/MockSimperiumAuthenticator.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | @testable import Simplenote
3 |
4 |
5 | // MARK: - MockSimperiumAuthenticator
6 | //
7 | class MockSimperiumAuthenticator: SimperiumAuthenticatorProtocol {
8 |
9 | var onAuthenticationRequest: ((_ username: String, _ token: String) -> Void)?
10 |
11 | func authenticate(withUsername username: String, token: String) {
12 | onAuthenticationRequest?(username, token)
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/BuildTools/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "originHash" : "cd02791f9079102404056ed65d89c5c6bb997332bbfd1b03550dfdd51e57551e",
3 | "pins" : [
4 | {
5 | "identity" : "swiftlintplugins",
6 | "kind" : "remoteSourceControl",
7 | "location" : "https://github.com/SimplyDanny/SwiftLintPlugins",
8 | "state" : {
9 | "revision" : "7a3d77f3dd9f91d5cea138e52c20cfceabf352de",
10 | "version" : "0.58.2"
11 | }
12 | }
13 | ],
14 | "version" : 3
15 | }
16 |
--------------------------------------------------------------------------------
/Simplenote/NSPasteboard+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSPasteboard + Interlink
4 | //
5 | extension NSPasteboard {
6 |
7 | /// Copies the Internal Link (Markdown Reference) into the OS Pasteboard
8 | ///
9 | func copyInterlink(to note: Note) {
10 | guard let link = note.markdownInterlink else {
11 | return
12 | }
13 |
14 | declareTypes([.string], owner: nil)
15 | setString(link, forType: .string)
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/SimplenoteTests/AccountVerificationController+TestHelpers.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import SimplenoteEndpoints
3 | @testable import Simplenote
4 |
5 |
6 | extension AccountVerificationController {
7 | func randomResult() -> Result {
8 | if Bool.random() {
9 | return .success(nil)
10 | }
11 |
12 | let error = RemoteError(statusCode: .zero, response: nil, networkError: nil)
13 | return .failure(error)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/External/Notepad/Storage.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @class Theme;
4 |
5 | NS_ASSUME_NONNULL_BEGIN
6 |
7 | @interface Storage : NSTextStorage
8 |
9 | @property(nonatomic, strong, readonly) NSMutableAttributedString *backingStore;
10 | @property(nonatomic, strong, readonly) Theme *theme;
11 |
12 | - (void)refreshStyleWithMarkdownEnabled:(BOOL)markdownEnabled NS_SWIFT_NAME(refreshStyle(markdownEnabled:));
13 |
14 | - (void)endEditingWithoutRestyling;
15 |
16 | @end
17 |
18 | NS_ASSUME_NONNULL_END
19 |
--------------------------------------------------------------------------------
/Simplenote/SeparatorTableViewCell.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import AppKit
3 |
4 | // MARK: - SeparatorTableViewCell
5 | //
6 | class SeparatorTableViewCell: NSTableCellView {
7 |
8 | /// Draws the main separator
9 | ///
10 | @IBOutlet private weak var separatorView: BackgroundView!
11 |
12 | // MARK: - Overridden API(s)
13 |
14 | override func viewWillDraw() {
15 | super.viewWillDraw()
16 | separatorView.fillColor = .simplenotePlaceholderTintColor
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Simplenote/SPAuthenticationTextField+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Simperium
2 |
3 | extension SPAuthenticationTextField {
4 | @discardableResult
5 | override open func becomeFirstResponder() -> Bool {
6 | let responderStatus = textField.becomeFirstResponder()
7 |
8 | let selectedRange = textField.currentEditor()?.selectedRange
9 | textField.currentEditor()?.selectedRange = NSMakeRange(selectedRange?.length ?? .zero, .zero)
10 |
11 | return responderStatus
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Simplenote/UnicodeScalar+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - UnicodeScalar Simplenote Methods
4 | //
5 | extension UnicodeScalar {
6 |
7 | /// UnicodeScalar for NSTextAttachment Marker Characters
8 | ///
9 | static var textAttachment = UnicodeScalar(NSTextAttachment.character)!
10 |
11 | /// Indicates if the receiver is a Whitespace character (Spaces / Tabs alike)
12 | ///
13 | var isWhitespace: Bool {
14 | CharacterSet.whitespaces.contains(self)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/External/Notepad/Style.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Style.swift
3 | // Notepad
4 | //
5 | // Created by Rudd Fawcett on 10/14/16.
6 | // Copyright © 2016 Rudd Fawcett. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct Style {
12 | let regex: NSRegularExpression
13 | let attributes: [NSAttributedString.Key: AnyObject]
14 |
15 | init(element: Element, attributes: [NSAttributedString.Key: AnyObject]) {
16 | self.regex = element.toRegex()
17 | self.attributes = attributes
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Simplenote/Images.xcassets/Icons/icon_simplenote.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "logo.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "logo@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "logo@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Simplenote/JSONKit+Simplenote.h:
--------------------------------------------------------------------------------
1 | //
2 | // JSONKit+Simplenote.h
3 | // Simplenote
4 | //
5 | // Created by Jorge Leandro Perez on 1/4/14.
6 | // Copyright (c) 2014 Simperium. All rights reserved.
7 | //
8 |
9 |
10 |
11 | @interface NSArray (JSONKit)
12 | - (NSString *)JSONString;
13 | @end
14 |
15 | @interface NSDictionary (JSONKit)
16 | - (NSString *)JSONString;
17 | @end
18 |
19 | @interface NSString (JSONKit)
20 | - (id)objectFromJSONString;
21 | @end
22 |
23 | @interface NSData (JSONKit)
24 | - (id)objectFromJSONString;
25 | @end
26 |
--------------------------------------------------------------------------------
/IntentsExtension/IntentHandlers/OpenNewNoteIntentHandler.swift:
--------------------------------------------------------------------------------
1 | //
2 | // OpenNewNoteIntentHandler.swift
3 | // Simplenote
4 | //
5 | // Created by Charlie Scheer on 5/23/24.
6 | // Copyright © 2024 Simperium. All rights reserved.
7 | //
8 |
9 | import Intents
10 |
11 | class OpenNewNoteIntentHandler: NSObject, OpenNewNoteIntentHandling {
12 | func handle(intent: OpenNewNoteIntent, completion: @escaping (OpenNewNoteIntentResponse) -> Void) {
13 | completion(OpenNewNoteIntentResponse(code: .continueInApp, userActivity: nil))
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/.buildkite/shared-pipeline-vars:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # This file is `source`'d before calling `buildkite-agent pipeline upload`, and can be used
4 | # to set up some variables that will be interpolated in the `.yml` pipeline before uploading it.
5 |
6 | # The ~> modifier is not currently used, but we check for it just in case
7 | XCODE_VERSION=$(sed -E -n 's/^(~> )?(.*)/xcode-\2/p' .xcode-version)
8 | CI_TOOLKIT_PLUGIN_VERSION="3.4.2"
9 |
10 | export IMAGE_ID="$XCODE_VERSION"
11 | export CI_TOOLKIT_PLUGIN="automattic/a8c-ci-toolkit#$CI_TOOLKIT_PLUGIN_VERSION"
12 |
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hans/description.txt:
--------------------------------------------------------------------------------
1 | Simplenote 可帮助您轻松记录笔记、列表、想法等。 您可免费将笔记同步到所有设备。
2 |
3 | Simplenote 可使您享受极速高效体验。 只需打开并写下一些想法即可。 随着笔记的积累,您可以通过标签和固定按钮对其进行快速搜索和整理。 您可以向笔记添加检查清单,以跟踪任务。 您也可以针对其他人分享和发布笔记。
4 |
5 | 喜欢 Markdown? 您可以使用 Markdown 格式编辑、预览和发布笔记。
6 |
7 | 了解 Simplenote 的最佳方式莫过于试用。 系统会要求您创建帐户。 您可以借此将笔记在线备份并自动同步。
8 |
9 | 注册完成后,即可尝试创建笔记! 然后转到 simplenote.com,将 Simplenote 下载至您的其他设备上。
10 |
11 | 祝您记录愉快!
12 |
13 | ---
14 |
15 | 隐私政策:https://automattic.com/privacy/
16 | 服务条款:https://simplenote.com/terms/
17 | 加州用户隐私声明:https://automattic.com/privacy/#us-privacy-laws
18 |
--------------------------------------------------------------------------------
/Simplenote/SPMarkdownParser.h:
--------------------------------------------------------------------------------
1 | //
2 | // SPMarkdownParser.h
3 | // Simplenote
4 | //
5 | // Created by James Frost on 01/10/2015.
6 | // Copyright © 2015 Automattic. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | /**
12 | * @class SPMarkdownParser
13 | * @brief This is a simple wrapper around the 'hoedown' Markdown parser,
14 | * which produces HTML from a Markdown input string.
15 | */
16 | @interface SPMarkdownParser : NSObject
17 |
18 | + (NSString *)renderHTMLFromMarkdownString:(NSString *)markdown;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/Simplenote/SearchQuery+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import SimplenoteSearch
3 |
4 | extension SearchQuery {
5 | convenience init(searchText: String) {
6 | self.init(searchText: searchText, settings: .default)
7 | }
8 | }
9 |
10 | extension SearchQuerySettings {
11 | static var `default`: SearchQuerySettings {
12 | let localizedKeyword = NSLocalizedString("tag:", comment: "Search Operator for tags. Please preserve the semicolons")
13 | return SearchQuerySettings(tagsKeyword: "tag:", localizedTagKeyword: localizedKeyword)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Simplenote/Simperium+Simplenote.m:
--------------------------------------------------------------------------------
1 | #import "Simperium+Simplenote.h"
2 | #import "Simplenote-Swift.h"
3 | #import "SPConstants.h"
4 |
5 |
6 | @implementation Simperium (Simplenote)
7 |
8 | - (Preferences *)preferencesObject
9 | {
10 | SPBucket *bucket = [self bucketForName:NSStringFromClass([Preferences class])];
11 | Preferences *preferences = [bucket objectForKey:SPSimperiumPreferencesObjectKey];
12 | if (preferences != nil) {
13 | return preferences;
14 | }
15 |
16 | return [bucket insertNewObjectForKey:SPSimperiumPreferencesObjectKey];
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/IntentsExtension/Extensions/NSString+Intents.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+Intents.swift
3 | // IntentsExtension
4 | //
5 | // Created by Charlie Scheer on 5/31/24.
6 | // Copyright © 2024 Simperium. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension NSString {
12 | /// Encodes the receiver as a `Tag Hash`
13 | ///
14 | @objc
15 | var byEncodingAsTagHash: String {
16 | precomposedStringWithCanonicalMapping
17 | .lowercased()
18 | .addingPercentEncoding(withAllowedCharacters: .alphanumerics) ?? self as String
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Simplenote/NSAppearance+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - Simplenote Methods
4 | //
5 | extension NSAppearance {
6 |
7 | /// Indicates if the receiver is on the Dark Side
8 | ///
9 | var isDark: Bool {
10 | name == .darkAqua || name == .vibrantDark
11 | }
12 |
13 | /// Returns the NSAppearance that matches Simplenote's Settings
14 | ///
15 | @objc
16 | static var simplenoteAppearance: NSAppearance? {
17 | let name: NSAppearance.Name = SPUserInterface.isDark ? .vibrantDark : .aqua
18 | return NSAppearance(named: name)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/fastlane/metadata/zh-Hant/description.txt:
--------------------------------------------------------------------------------
1 | Simplenote 可讓你輕鬆記錄筆記、清單和想法等事項。 你的筆記內容會免費同步至所有裝置。
2 |
3 | Simplenote 提供快速有效率的筆記體驗。 開啟程式、寫下想法,大功告成。 當你的筆記越來越多時,可以利用搜尋功能立即找出筆記,更可使用標籤和釘選功能妥善整理。 你可以將檢查清單新增至筆記中,藉此追蹤工作進度; 也可以分享和發表筆記,讓更多人參閱筆記內容。
4 |
5 | 喜歡使用 Markdown 嗎? 你可以使用 Markdown 格式編輯、預覽及發表筆記。
6 |
7 | 要瞭解 Simplenote 的最好方式就是親身體驗。 系統會要求你建立帳號。 如此一來你便能線上備份和自動同步筆記內容。
8 |
9 | 註冊完後,不妨開始建立一些筆記吧! 如需下載 Simplenote 至其他裝置,接著請前往 simplenote.com。
10 |
11 | 祝記事愉快!
12 |
13 | ---
14 |
15 | 隱私權政策:https://automattic.com/privacy/
16 | 服務條款:https://simplenote.com/terms/
17 | 加州使用者的隱私權聲明:https://automattic.com/privacy/#us-privacy-laws
18 |
--------------------------------------------------------------------------------
/.github/workflows/run-danger.yml:
--------------------------------------------------------------------------------
1 | name: ☢️ Danger
2 |
3 | on:
4 | pull_request:
5 | types: [opened, reopened, ready_for_review, synchronize, edited, labeled, unlabeled, milestoned, demilestoned]
6 |
7 | jobs:
8 | dangermattic:
9 | # runs on draft PRs only for opened / synchronize events
10 | if: ${{ (github.event.pull_request.draft == false) || (github.event.pull_request.draft == true && contains(fromJSON('["opened", "synchronize"]'), github.event.action)) }}
11 | uses: Automattic/dangermattic/.github/workflows/reusable-run-danger.yml@v1.0.0
12 | secrets:
13 | github-token: ${{ secrets.DANGERMATTIC_GITHUB_TOKEN }}
14 |
--------------------------------------------------------------------------------
/Simplenote/FontSettings.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | @objcMembers
4 | class FontSettings: NSObject {
5 | static let minimum = CGFloat(10)
6 | static let normal = CGFloat(15)
7 | static let maximum = CGFloat(30)
8 | static let step = CGFloat(1)
9 |
10 | static func valueIsValidFontSize(_ value: CGFloat) -> Bool {
11 | value.truncatingRemainder(dividingBy: step) == .zero
12 | }
13 |
14 | static func nearestValidFontSize(from size: CGFloat) -> CGFloat {
15 | if valueIsValidFontSize(size) {
16 | return size
17 | }
18 | return step * (size / step).rounded()
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/IntentsExtension/Extensions/IntentTag+Helpers.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IntentTag+Helpers.swift
3 | // IntentsExtension
4 | //
5 | // Created by Charlie Scheer on 5/31/24.
6 | // Copyright © 2024 Simperium. All rights reserved.
7 | //
8 |
9 | import Intents
10 |
11 | extension IntentTag {
12 | static func allTags(in coreDataWrapper: ExtensionCoreDataWrapper) throws -> [IntentTag] {
13 | guard let tags = coreDataWrapper.resultsController?.tags() else {
14 | throw IntentsError.couldNotFetchTags
15 | }
16 |
17 | return tags.map({ IntentTag(identifier: $0.simperiumKey, display: $0.name ?? String()) })
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Simplenote/DateTransformer.m:
--------------------------------------------------------------------------------
1 | //
2 | // DateTransformer.m
3 | // Simplenote
4 | //
5 | // Created by Rainieri Ventura on 1/28/12.
6 | // Copyright (c) 2012 Simperium. All rights reserved.
7 | //
8 |
9 | #import "DateTransformer.h"
10 | @import Simperium;
11 |
12 | @implementation DateTransformer
13 |
14 | + (Class)transformedValueClass
15 | {
16 | return [NSDate class];
17 | }
18 |
19 | + (BOOL)allowsReverseTransformation
20 | {
21 | return NO;
22 | }
23 |
24 | - (id)transformedValue:(id)value {
25 | if (value != nil) {
26 | return [value sp_stringBeforeNow];
27 | }
28 |
29 | return @"No Date";
30 | }
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/Simplenote/CSS/markdown-dark.css:
--------------------------------------------------------------------------------
1 |
2 | ::-webkit-scrollbar-thumb {
3 | background: #84878a;
4 | }
5 |
6 | .note-detail-markdown a {
7 | color: #4895d9;
8 | }
9 |
10 | .note-detail-markdown hr {
11 | color: #4895d9;
12 | }
13 |
14 | .note-detail-markdown code {
15 | color: #84878a;
16 | }
17 |
18 | .note-detail-markdown pre {
19 | background: #f6f7f8;
20 | }
21 |
22 | .note-detail-markdown pre code {
23 | color: #616870;
24 | }
25 |
26 | .note-detail-markdown table tr:nth-child(2n) {
27 | background-color: #383d41;
28 | }
29 |
30 | .note-detail-markdown table th, .note-detail-markdown table td {
31 | border-color: #575e65;
32 | }
33 |
--------------------------------------------------------------------------------
/.github/workflows/validate-issues.yml:
--------------------------------------------------------------------------------
1 | name: 📝 Validate Issues
2 |
3 | on:
4 | issues:
5 | types: [opened, labeled, unlabeled]
6 |
7 | jobs:
8 | check-labels-on-issues:
9 | uses: Automattic/dangermattic/.github/workflows/reusable-check-labels-on-issues.yml@v1.0.0
10 | with:
11 | label-format-list: '[
12 | "^\[.+\]",
13 | "^[[:alnum:]]"
14 | ]'
15 | label-error-message: '🚫 Please add a type label (e.g. **[Type] Enhancement**) and a feature label (e.g. **Stats**) to this issue.'
16 | label-success-message: 'Thanks for reporting! 👍'
17 | secrets:
18 | github-token: ${{ secrets.DANGERMATTIC_GITHUB_TOKEN }}
19 |
--------------------------------------------------------------------------------
/Simplenote/CSS/markdown-light.css:
--------------------------------------------------------------------------------
1 |
2 | ::-webkit-scrollbar-thumb {
3 | background: #84878a;
4 | }
5 |
6 | .note-detail-markdown a {
7 | color: #4895d9;
8 | }
9 |
10 | .note-detail-markdown hr {
11 | color: #4895d9;
12 | }
13 |
14 | .note-detail-markdown code {
15 | color: #899199;
16 | }
17 |
18 | .note-detail-markdown pre {
19 | background: #f6f7f8;
20 | }
21 |
22 | .note-detail-markdown pre code {
23 | color: #616870;
24 | }
25 |
26 | .note-detail-markdown table tr:nth-child(2n) {
27 | background-color: #f6f7f8;
28 | }
29 |
30 | .note-detail-markdown table th, .note-detail-markdown table td {
31 | border-color: #c0c4c8;
32 | }
33 |
--------------------------------------------------------------------------------
/IntentsExtension/Extensions/FileManager+Intents.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FileManager+Intents.swift
3 | // IntentsExtension
4 | //
5 | // Created by Charlie Scheer on 5/31/24.
6 | // Copyright © 2024 Simperium. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | // This exists in a8cTracks but we aren't currently importing that into intents but we need this for FileManager to meet FileManagerProtocol
12 | extension FileManager {
13 | func directoryExistsAtURL(_ url: URL) -> Bool {
14 | var isDir: ObjCBool = false
15 | let exists = self.fileExists(atPath: url.path, isDirectory: &isDir)
16 | return exists && isDir.boolValue
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/External/Hoextdown/escape.h:
--------------------------------------------------------------------------------
1 | /* escape.h - escape utilities */
2 |
3 | #ifndef HOEDOWN_ESCAPE_H
4 | #define HOEDOWN_ESCAPE_H
5 |
6 | #include "buffer.h"
7 |
8 | #ifdef __cplusplus
9 | extern "C" {
10 | #endif
11 |
12 |
13 | /*************
14 | * FUNCTIONS *
15 | *************/
16 |
17 | /* hoedown_escape_href: escape (part of) a URL inside HTML */
18 | void hoedown_escape_href(hoedown_buffer *ob, const uint8_t *data, size_t size);
19 |
20 | /* hoedown_escape_html: escape HTML */
21 | void hoedown_escape_html(hoedown_buffer *ob, const uint8_t *data, size_t size, int secure);
22 |
23 |
24 | #ifdef __cplusplus
25 | }
26 | #endif
27 |
28 | #endif /** HOEDOWN_ESCAPE_H **/
29 |
--------------------------------------------------------------------------------
/Simplenote/Tag.h:
--------------------------------------------------------------------------------
1 | //
2 | // Tag.h
3 | // Simplenote
4 | //
5 | // Created by Michael Johnston on 10-04-19.
6 | // Copyright 2010 Simperium. All rights reserved.
7 | //
8 |
9 | @import Simperium;
10 |
11 | @interface Tag : SPManagedObject {
12 | NSString *name;
13 | NSMutableArray *recipients;
14 | int count;
15 | NSNumber *index;
16 | NSString *share;
17 | }
18 |
19 | @property (nonatomic, retain) NSString *name;
20 | @property (nonatomic, retain) NSMutableArray *recipients;
21 | @property (nonatomic) int count;
22 | @property (nonatomic, retain) NSNumber *index;
23 | @property (nonatomic, retain) NSString *share;
24 |
25 | - (void)addRecipient:(NSString *)emailAddress;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/IntentsExtension/Tools/IntentsConstants.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IntentsConstants.swift
3 | // IntentsExtension
4 | //
5 | // Created by Charlie Scheer on 5/29/24.
6 | // Copyright © 2024 Simperium. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct IntentsConstants {
12 | static let noteIdentifierKey = "OpenNoteIntentHandlerIdentifierKey"
13 | static let extensionGroupName = Bundle.main.sharedGroupDomain
14 | static let simperiumBaseURL = "https://api.simperium.com/1"
15 |
16 | static let recoveryMessage = NSLocalizedString("Will attempt to recover shortcut content on next launch", comment: "Alerting users that we will attempt to restore lost content on next launch")
17 | }
18 |
--------------------------------------------------------------------------------
/Simplenote/HeaderTableCellView.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import AppKit
3 |
4 | // MARK: - HeaderTableCellView
5 | //
6 | class HeaderTableCellView: NSTableCellView {
7 |
8 | /// Wraps access to the TextField's String Value
9 | ///
10 | var title: String? {
11 | get {
12 | textField?.stringValue
13 | }
14 | set {
15 | textField?.stringValue = newValue ?? ""
16 | }
17 | }
18 |
19 | /// Wraps access to the TextField's Text Color
20 | ///
21 | var titleColor: NSColor? {
22 | get {
23 | textField?.textColor
24 | }
25 | set {
26 | textField?.textColor = newValue
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Simplenote/FileStorage.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - FileStorage
4 | //
5 | class FileStorage {
6 | private let fileURL: URL
7 |
8 | private lazy var decoder = JSONDecoder()
9 | private lazy var encoder = JSONEncoder()
10 |
11 | init(fileURL: URL) {
12 | self.fileURL = fileURL
13 | }
14 |
15 | /// Load an object
16 | ///
17 | func load() throws -> T? {
18 | let data = try Data(contentsOf: fileURL)
19 | return try decoder.decode(T.self, from: data)
20 | }
21 |
22 | /// Save an object
23 | ///
24 | func save(object: T) throws {
25 | let data = try encoder.encode(object)
26 | try data.write(to: fileURL)
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/fastlane/metadata/ja/description.txt:
--------------------------------------------------------------------------------
1 | Simplenote を使えば、メモ、リスト、アイデアなどを簡単に書き留められます。 書き留めたメモは、自分のすべての端末に無料で同期されます。
2 |
3 | Simplenote は、すばやく効率的に操作できます。 起動して、思い付いたことを書き込むだけです。 メモのコレクションが増えたら、検索を実行したり、タグとピンで整理したりできます。 チェックリストをメモに追加して、タスクの進捗状況をチェックできます。 メモを共有したり他の人に公開したりできます。
4 |
5 | Markdown がお好みの方 Markdown フォーマットを使用して、メモを編集、プレビュー、公開できます。
6 |
7 | Simplenote を知るには使ってみるのが一番です。 アカウントを作成するように求められます。 アカウントを作成すると、メモのオンラインバックアップと自動同期が可能になります。
8 |
9 | サインアップしたら、さっそくメモを作ってみてください。 その後、simplenote.com から他の端末用の Simplenote をダウンロードしてください。
10 |
11 | メモをお楽しみください !
12 |
13 | ---
14 |
15 | プライバシーポリシー: https://automattic.com/privacy/
16 | 利用規約: https://simplenote.com/terms/
17 | カリフォルニア州のユーザーへのプライバシー通知: https://automattic.com/privacy/#us-privacy-laws
18 |
--------------------------------------------------------------------------------
/Simplenote/NSAlert+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | extension NSAlert {
4 | convenience init(messageText: String, informativeText: String) {
5 | self.init()
6 | self.messageText = messageText
7 | self.informativeText = informativeText
8 | }
9 |
10 | static func presentAlert(withMessageText messageText: String,
11 | informativeText: String,
12 | for window: NSWindow,
13 | onCompletion: ((NSApplication.ModalResponse) -> Void)? = nil) {
14 | let alert = NSAlert(messageText: messageText, informativeText: informativeText)
15 | alert.beginSheetModal(for: window, completionHandler: onCompletion)
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/.buildkite/pipeline.yml:
--------------------------------------------------------------------------------
1 | # This is the default pipeline – it will build and test the app
2 |
3 | env:
4 | IMAGE_ID: $IMAGE_ID
5 |
6 | steps:
7 | - label: "🔬 Build and Test"
8 | command: .buildkite/commands/build-and-test.sh
9 | plugins: [$CI_TOOLKIT_PLUGIN]
10 | agents:
11 | queue: mac
12 |
13 | - label: ":swift: SwiftLint"
14 | command: swiftlint
15 | env:
16 | SWIFTLINT_OPTION_STRICT: true
17 | notify:
18 | - github_commit_status:
19 | context: SwiftLint
20 | agents:
21 | queue: linter
22 |
23 | - label: "🛠 Verify App Store Target Builds"
24 | command: .buildkite/commands/build-and-test-app-store.sh
25 | plugins: [$CI_TOOLKIT_PLUGIN]
26 | agents:
27 | queue: mac
28 |
--------------------------------------------------------------------------------
/fastlane/metadata/ko/description.txt:
--------------------------------------------------------------------------------
1 | Simplenote로 메모, 목록, 아이디어 등을 손쉽게 보관할 수 있습니다. 메모가 모든 장치에서 무료로 동기화됩니다.
2 |
3 | Simplenote는 최고의 속도와 효율성을 자랑합니다. 메모를 열고 아이디어를 작성하면 끝입니다. 메모 개수가 많아지면 태그와 핀을 사용하여 정리해 두고 바로바로 검색할 수 있습니다. 메모에 체크리스트를 추가하여 작업을 계속 추적할 수 있습니다. 메모를 공유하고 다른 사람을 위해 메모를 공개할 수도 있습니다.
4 |
5 | 마크다운을 즐겨 사용하시나요? 마크다운 서식을 사용하여 메모를 편집하고, 미리 보고, 공개할 수 있습니다.
6 |
7 | Simplenote를 익히는 최고의 방법은 직접 사용해보는 것입니다. 계정을 생성하라는 메시지가 나타납니다. 계정을 생성하면 온라인으로 메모를 백업하고 자동으로 동기화할 수 있습니다.
8 |
9 | 가입한 다음 메모를 작성해 보세요. 그런 다음 simplenote.com으로 이동하여 다른 기기에 Simplenote를 다운로드하세요.
10 |
11 | 즐겁게 메모하세요!
12 |
13 | ---
14 |
15 | 개인정보 취급방침: https://automattic.com/privacy/
16 | 서비스 약관: https://simplenote.com/terms/
17 | 캘리포니아 사용자를 위한 개인정보보호 고지: https://automattic.com/privacy/#us-privacy-laws
18 |
--------------------------------------------------------------------------------
/Simplenote/NSAnimationContext+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import AppKit
3 |
4 | // MARK: - NSAnimationContext + Simplenote
5 | //
6 | extension NSAnimationContext {
7 |
8 | static func runAnimationGroup(after delay: TimeInterval,
9 | _ changes: @escaping (_ context: NSAnimationContext) -> Void,
10 | completionHandler: (() -> Void)? = nil) {
11 | if delay == .zero {
12 | runAnimationGroup(changes, completionHandler: completionHandler)
13 | return
14 | }
15 |
16 | DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
17 | runAnimationGroup(changes, completionHandler: completionHandler)
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/IntentsExtension/Support Files/IntentsExtension.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.application-groups
8 |
9 | $(TeamIdentifierPrefix)com.automattic.SimplenoteMac
10 |
11 | com.apple.security.files.user-selected.read-write
12 |
13 | com.apple.security.network.client
14 |
15 | keychain-access-groups
16 |
17 | $(AppIdentifierPrefix)com.automattic.SimplenoteMac
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/External/Hoextdown/version.h:
--------------------------------------------------------------------------------
1 | /* version.h - holds Hoedown's version */
2 |
3 | #ifndef HOEDOWN_VERSION_H
4 | #define HOEDOWN_VERSION_H
5 |
6 | #ifdef __cplusplus
7 | extern "C" {
8 | #endif
9 |
10 |
11 | /*************
12 | * CONSTANTS *
13 | *************/
14 |
15 | #define HOEDOWN_VERSION "3.0.7.15"
16 | #define HOEDOWN_VERSION_MAJOR 3
17 | #define HOEDOWN_VERSION_MINOR 0
18 | #define HOEDOWN_VERSION_REVISION 7
19 | #define HOEDOWN_VERSION_EXTRAS 15
20 |
21 |
22 | /*************
23 | * FUNCTIONS *
24 | *************/
25 |
26 | /* hoedown_version: retrieve Hoedown's version numbers */
27 | void hoedown_version(int *major, int *minor, int *revision, int *extras);
28 |
29 |
30 | #ifdef __cplusplus
31 | }
32 | #endif
33 |
34 | #endif /** HOEDOWN_VERSION_H **/
35 |
--------------------------------------------------------------------------------
/Simplenote/NSAlert+AuthErrors.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 |
4 | // MARK: - Alert + AuthError
5 | //
6 | extension NSAlert {
7 |
8 | static func buildLoginCodeExpiredAlert() -> NSAlert {
9 | let titleText = NSLocalizedString("Sorry!", comment: "LoginCode Expired Title")
10 | let messageText = NSLocalizedString("The authentication code you've requested has expired. Please request a new one", comment: "LoginCode Expired Message")
11 | let acceptText = NSLocalizedString("Accept", comment: "Accept Message")
12 |
13 | let alert = NSAlert()
14 | alert.messageText = titleText
15 | alert.informativeText = messageText
16 | alert.addButton(withTitle: acceptText)
17 |
18 | return alert
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/SimplenoteTests/Simplenote.xctestplan:
--------------------------------------------------------------------------------
1 | {
2 | "configurations" : [
3 | {
4 | "id" : "4B8E5E02-932F-4AEF-8E24-E62BF97BAC99",
5 | "name" : "Configuration 1",
6 | "options" : {
7 |
8 | }
9 | }
10 | ],
11 | "defaultOptions" : {
12 | "codeCoverage" : false,
13 | "targetForVariableExpansion" : {
14 | "containerPath" : "container:Simplenote.xcodeproj",
15 | "identifier" : "466FFEA617CC10A800399652",
16 | "name" : "Simplenote"
17 | }
18 | },
19 | "testTargets" : [
20 | {
21 | "target" : {
22 | "containerPath" : "container:Simplenote.xcodeproj",
23 | "identifier" : "B5CBB068241976230003C271",
24 | "name" : "SimplenoteTests"
25 | }
26 | }
27 | ],
28 | "version" : 1
29 | }
30 |
--------------------------------------------------------------------------------
/Simplenote/NSVisualEffectView+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import AppKit
3 |
4 | // MARK: - NSVisualEffectView.Material
5 | //
6 | extension NSVisualEffectView.Material {
7 |
8 | /// Returns the Material to be applied over the Tags List
9 | ///
10 | static var simplenoteTaglistMaterial: NSVisualEffectView.Material {
11 | return .underWindowBackground
12 | }
13 | }
14 |
15 | // MARK: - NSVisualEffectView
16 | //
17 | extension NSVisualEffectView {
18 |
19 | /// ObjC Convenience API: Wraps access to `NSVisualEffect.Material.simplenoteTaglistMaterial`, which otherwise would not be accessible
20 | ///
21 | @objc
22 | static var simplenoteTaglistMaterial: NSVisualEffectView.Material {
23 | .simplenoteTaglistMaterial
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/IntentsExtension/Support Files/IntentsExtensionDebug.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.application-groups
8 |
9 | $(TeamIdentifierPrefix)com.automattic.SimplenoteMac.Development
10 |
11 | com.apple.security.files.user-selected.read-write
12 |
13 | com.apple.security.network.client
14 |
15 | keychain-access-groups
16 |
17 | $(AppIdentifierPrefix)com.automattic.SimplenoteMac.Development
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Simplenote/AppKitConstants.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - AppKit Constants, so that we don't repeat ourselves forever!
4 | //
5 | enum AppKitConstants {
6 | static let alpha0_0: CGFloat = 0
7 | static let alpha0_05: CGFloat = 0.05
8 | static let alpha0_1: CGFloat = 0.1
9 | static let alpha0_3: CGFloat = 0.3
10 | static let alpha0_4: CGFloat = 0.4
11 | static let alpha0_5: CGFloat = 0.5
12 | static let alpha0_6: CGFloat = 0.6
13 | static let alpha0_8: CGFloat = 0.8
14 | static let alpha1_0: CGFloat = 1
15 | static let delay0_0: TimeInterval = 0
16 | static let delay0_15: TimeInterval = 0.15
17 | static let delay0_5: TimeInterval = 0.5
18 | static let duration0_2: TimeInterval = 0.2
19 | static let duration0_4: TimeInterval = 0.4
20 | }
21 |
--------------------------------------------------------------------------------
/Simplenote/NSScrollView+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import AppKit
3 |
4 | // MARK: - NSScrollView + Simplenote
5 | //
6 | extension NSScrollView {
7 |
8 | /// Indicates if we're at the upper edge of the contents
9 | ///
10 | var isScrolledToTop: Bool {
11 | contentView.bounds.origin.y == contentView.contentInsets.top * -1
12 | }
13 |
14 | /// Scrolls the receiver to the upper edge
15 | ///
16 | @objc(scrollToTopWithAnimation:)
17 | func scrollToTop(animated: Bool = false) {
18 | let target = NSPoint(x: .zero, y: contentView.contentInsets.top * -1)
19 |
20 | if animated {
21 | contentView.animator().setBoundsOrigin(target)
22 | return
23 | }
24 |
25 | documentView?.scroll(target)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Simplenote/CharacterCountLimiter.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | class CharacterCountLimiter: Formatter {
4 | var characterLimit: Int = 6
5 |
6 | override func isPartialStringValid(_ partialString: String, newEditingString newString: AutoreleasingUnsafeMutablePointer?, errorDescription error: AutoreleasingUnsafeMutablePointer?) -> Bool {
7 | partialString.count <= characterLimit
8 | }
9 |
10 | override func string(for obj: Any?) -> String? {
11 | obj as? String
12 | }
13 |
14 | override func getObjectValue(_ obj: AutoreleasingUnsafeMutablePointer?, for string: String, errorDescription error: AutoreleasingUnsafeMutablePointer?) -> Bool {
15 | obj?.pointee = string as AnyObject
16 | return true
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Simplenote/NSManagedObjectContext+Simplenote.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSManagedObjectContext+Simplenote.swift
3 | // Simplenote
4 | //
5 | // Created by Charlie Scheer on 4/11/24.
6 | // Copyright © 2024 Simperium. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import CoreData
11 |
12 | extension NSManagedObjectContext {
13 | @objc(fetchObjectsForEntityName: withPredicate: error:)
14 | func fetchObjects(for entityName: String, withPredicate predicate: NSPredicate) throws -> Array {
15 | let fetchRequest = NSFetchRequest()
16 | let entityDescription = NSEntityDescription.entity(forEntityName: entityName, in: self)
17 |
18 | fetchRequest.entity = entityDescription
19 |
20 | return try fetch(fetchRequest)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Simplenote/Simplenote-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 |
6 | #pragma mark - Model
7 |
8 | #import "Note.h"
9 | #import "Tag.h"
10 |
11 |
12 | #pragma mark - Simplenote-Y
13 |
14 | #import "AuthViewController.h"
15 | #import "NoteEditorViewController.h"
16 | #import "SimplenoteAppDelegate.h"
17 | #import "SPConstants.h"
18 | #import "SPMarkdownParser.h"
19 | #import "SPTableView.h"
20 | #import "SPTracker.h"
21 | #import "TagListViewController.h"
22 | #import "Storage.h"
23 | #import "StatusChecker.h"
24 |
25 | #pragma mark - Extensions
26 |
27 | #import "Simperium+Simplenote.h"
28 | #import "NSString+Metadata.h"
29 | #import "NSNotification+Simplenote.h"
30 | #import "NSMutableAttributedString+Styling.h"
31 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/---feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "\U0001F680 Feature Request"
3 | about: "Suggest a new feature or enhancement to an existing one in the Simplenote macOS app."
4 | title: ""
5 | labels: feature request
6 | assignees: ""
7 | ---
8 |
9 | Please, be as descriptive as possible. Issues lacking detail, or for any other reason than to request a feature, may be closed without action.
10 |
11 | ### What
12 | ***(Required)*** What is the feature you are requesting? Add a concise description of the feature being requested.
13 |
14 | ### Why
15 | ***(Required)*** Why are you requesting this feature? Add a concise description of the problem this feature solves.
16 |
17 | ### How
18 | ***(Optional)*** If applicable, add screenshots, animations, or videos to help illustrate how the feature could be done.
19 |
--------------------------------------------------------------------------------
/Simplenote/DateFormatter+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - DateFormatter
4 | //
5 | extension DateFormatter {
6 |
7 | /// Date Formatter for Note Metrics
8 | ///
9 | static let metricsFormatter: DateFormatter = {
10 | let formatter = DateFormatter()
11 | formatter.dateStyle = .medium
12 | formatter.timeStyle = .short
13 | return formatter
14 | }()
15 |
16 | /// Date Formatter for the Notes List
17 | ///
18 | static let notesFormatter: DateFormatter = {
19 | let formatter = DateFormatter()
20 | formatter.dateStyle = .short
21 | formatter.timeStyle = .none
22 | return formatter
23 | }()
24 |
25 | /// Date Formatter for History
26 | ///
27 | static let historyFormatter: DateFormatter = metricsFormatter
28 | }
29 |
--------------------------------------------------------------------------------
/Simplenote/NSNotification+Simplenote.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 |
4 | // MARK: - AAPL's Theme Notifications
5 | //
6 | extern NSString * const AppleInterfaceThemeChangedNotification;
7 |
8 |
9 | // MARK: - Simplenote Notifications: Someone forgot to bridge NSNotification.Name over to ObjC. =(
10 | //
11 | extern NSString * const EditorDisplayModeDidChangeNotification;
12 | extern NSString * const NoteListDisplayModeDidChangeNotification;
13 | extern NSString * const NoteListSortModeDidChangeNotification;
14 | extern NSString * const StatusBarDisplayModeDidChangeNotification;
15 | extern NSString * const TagSortModeDidChangeNotification;
16 | extern NSString * const ThemeDidChangeNotification;
17 | extern NSString * const FontSizeDidChangeNotification;
18 | extern NSString * const SplitViewStateDidChangeNotification;
19 |
--------------------------------------------------------------------------------
/SimplenoteTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/External/Notepad/Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Extensions.swift
3 | // Notepad
4 | //
5 | // Created by Rudd Fawcett on 10/14/16.
6 | // Copyright © 2016 Rudd Fawcett. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | #if os(iOS)
12 | import struct UIKit.CGFloat
13 | #elseif os(macOS)
14 | import struct AppKit.CGFloat
15 | #endif
16 |
17 |
18 | extension String {
19 | /// Converts a String to a NSRegularExpression.
20 | ///
21 | /// - returns: The NSRegularExpression.
22 | func toRegex() -> NSRegularExpression {
23 | var pattern: NSRegularExpression = NSRegularExpression()
24 |
25 | do {
26 | try pattern = NSRegularExpression(pattern: self, options: .anchorsMatchLines)
27 | } catch {
28 | print(error)
29 | }
30 |
31 | return pattern
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/IntentsExtension/Models/Tag+Intents.swift:
--------------------------------------------------------------------------------
1 | // This file contains the required class structure to be able to fetch and use core data files in widgets and intents
2 | // We have collapsed the auto generated core data files into a single file as it is unlikely that the files will need to
3 | // be regenerated. Contained in this file is the generated class files Tag+CoreDataClass.swift and Tag+CoreDataProperties.swift
4 |
5 | import Foundation
6 | import CoreData
7 |
8 | @objc(Tag)
9 | public class Tag: SPManagedObject {
10 |
11 | }
12 |
13 | extension Tag {
14 |
15 | @nonobjc public class func fetchRequest() -> NSFetchRequest {
16 | return NSFetchRequest(entityName: "Tag")
17 | }
18 |
19 | @NSManaged public var index: NSNumber?
20 | @NSManaged public var name: String?
21 | @NSManaged public var share: String?
22 | }
23 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/he.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */
3 | "5.title" = "עדכון תכנה";
4 |
5 | /* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */
6 | "170.title" = "פרטי גרסה:";
7 |
8 | /* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */
9 | "171.title" = "הזכר לי מאוחר יותר";
10 |
11 | /* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */
12 | "172.title" = "דלג על גרסה זו";
13 |
14 | /* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */
15 | "173.title" = "התקן עדכון";
16 |
17 | /* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */
18 | "175.title" = "הורד והתקן עדכונים אוטומטית גם בעתיד";
19 |
--------------------------------------------------------------------------------
/SimplenoteTests/MockLoginRemote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import SimplenoteEndpoints
3 | @testable import Simplenote
4 |
5 |
6 | // MARK: - MockLoginRemote
7 | //
8 | class MockLoginRemote: LoginRemoteProtocol {
9 | var lastLoginRequestEmail: String?
10 |
11 | var onLoginConfirmationRequest: ((_ email: String, _ authCode: String) -> LoginConfirmationResponse)?
12 |
13 | func requestLoginEmail(email: String) async throws {
14 | lastLoginRequestEmail = email
15 | }
16 |
17 | func requestLoginConfirmation(email: String, authCode: String) async throws -> LoginConfirmationResponse {
18 | guard let response = onLoginConfirmationRequest?(email, authCode) else {
19 | throw RemoteError(statusCode: .zero, response: nil, networkError: nil)
20 | }
21 |
22 | return response
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/IntentsExtension/Tools/ExtensionCoreDataWrapper.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import CoreData
3 |
4 | class ExtensionCoreDataWrapper {
5 | private lazy var coreDataManager: CoreDataManager? = {
6 | do {
7 | return try CoreDataManager(storageSettings: StorageSettings(), for: .intents)
8 | } catch {
9 | return nil
10 | }
11 | }()
12 |
13 | lazy var resultsController: ExtensionResultsController? = {
14 | guard let coreDataManager else {
15 | return nil
16 | }
17 | return ExtensionResultsController(context: coreDataManager.managedObjectContext)
18 | }()
19 |
20 | func context() -> NSManagedObjectContext? {
21 | guard let coreDataManager else {
22 | return nil
23 | }
24 | return coreDataManager.managedObjectContext
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Simplenote/URL+Interlink.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - URL + Interlink
4 | //
5 | extension URL {
6 |
7 | /// Indicates if the receiver' has the Simplenote Scheme
8 | ///
9 | var isSimplenoteURL: Bool {
10 | scheme?.lowercased() == SimplenoteConstants.simplenoteScheme
11 | }
12 |
13 | /// Indicates if the receiver is a reference to a Note
14 | ///
15 | var isInterlinkURL: Bool {
16 | isSimplenoteURL && host?.lowercased() == SimplenoteConstants.simplenoteInterlinkHost
17 | }
18 |
19 | /// Extracts the Internal Note's SimperiumKey, whenever the receiver is an Interlink URL
20 | ///
21 | var interlinkSimperiumKey: String? {
22 | guard isInterlinkURL else {
23 | return nil
24 | }
25 |
26 | return path.replacingOccurrences(of: "/", with: "")
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/IntentsExtension/Extensions/NSURLSessionConfiguration+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSURLSessionConfiguration+Extensions.swift
3 | // IntentsExtension
4 | //
5 | // Created by Charlie Scheer on 6/3/24.
6 | // Copyright © 2024 Simperium. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension URLSessionConfiguration {
12 | /// Returns a new Background Session Configuration, with a random identifier.
13 | ///
14 | class func backgroundSessionConfigurationWithRandomizedIdentifier() -> URLSessionConfiguration {
15 | let identifier = IntentsConstants.extensionGroupName + "." + UUID().uuidString
16 | let configuration = URLSessionConfiguration.background(withIdentifier: identifier)
17 | configuration.sharedContainerIdentifier = IntentsConstants.extensionGroupName
18 |
19 | return configuration
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/SimplenoteTests/MockTextView.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - MockupTextView: Useful for Unit Testing purposes.
4 | // NSTextView(s) not properly attached to a window lack UndoManager
5 | //
6 | class MockTextView: NSTextView {
7 |
8 | let internalUndoManager = UndoManager()
9 |
10 | override var undoManager: UndoManager? {
11 | return internalUndoManager
12 | }
13 | }
14 |
15 | // MARK: - MockupTextViewDelegate: Useful for Unit Testing Purposes
16 | //
17 | class MockupTextViewDelegate: NSObject, NSTextViewDelegate {
18 |
19 | var receivedTextDidChangeNotifications = [Notification]()
20 |
21 | func reset() {
22 | receivedTextDidChangeNotifications.removeAll()
23 | }
24 |
25 | func textDidChange(_ notification: Notification) {
26 | receivedTextDidChangeNotifications.append(notification)
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */
3 | "5.title" = "Software Update";
4 |
5 | /* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */
6 | "170.title" = "Release Notes:";
7 |
8 | /* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */
9 | "171.title" = "Remind Me Later";
10 |
11 | /* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */
12 | "172.title" = "Skip This Version";
13 |
14 | /* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */
15 | "173.title" = "Install Update";
16 |
17 | /* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */
18 | "175.title" = "Automatically download and install updates in the future";
19 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */
3 | "5.title" = "Software Update";
4 |
5 | /* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */
6 | "170.title" = "Release Notes:";
7 |
8 | /* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */
9 | "171.title" = "Remind Me Later";
10 |
11 | /* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */
12 | "172.title" = "Skip This Version";
13 |
14 | /* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */
15 | "173.title" = "Install Update";
16 |
17 | /* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */
18 | "175.title" = "Automatically download and install updates in the future";
19 |
--------------------------------------------------------------------------------
/Simplenote.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.associated-domains
6 |
7 | applinks:app.simplenote.com
8 |
9 | com.apple.security.app-sandbox
10 |
11 | com.apple.security.application-groups
12 |
13 | $(TeamIdentifierPrefix)com.automattic.SimplenoteMac
14 |
15 | com.apple.security.files.user-selected.read-write
16 |
17 | com.apple.security.network.client
18 |
19 | com.apple.security.print
20 |
21 | keychain-access-groups
22 |
23 | $(AppIdentifierPrefix)$(CFBundleIdentifier)
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/IntentsExtension/Models/SPManagedObject+Intents.swift:
--------------------------------------------------------------------------------
1 | // This file contains the required class structure to be able to fetch and use core data files in widgets and intents
2 | // We have collapsed the auto generated core data files into a single file as it is unlikely that the files will need to
3 | // be regenerated. Contained in this file is the generated class files SPManagedObject+CoreDataClass.swift and SPManagedObject+CoreDataProperties.swift
4 |
5 | import Foundation
6 | import CoreData
7 |
8 | @objc(SPManagedObject)
9 | public class SPManagedObject: NSManagedObject {
10 |
11 | }
12 |
13 | extension SPManagedObject {
14 |
15 | @nonobjc public class func fetchRequest() -> NSFetchRequest {
16 | return NSFetchRequest(entityName: "SPManagedObject")
17 | }
18 |
19 | @NSManaged public var ghostData: String?
20 | @NSManaged public var simperiumKey: String
21 | }
22 |
--------------------------------------------------------------------------------
/Simplenote/Note+Interlinks.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - Note + Interlink
4 | //
5 | extension Note {
6 |
7 | /// Returns the receiver's Markdown Internal Reference, when possible
8 | ///
9 | var plainInterlink: String? {
10 | guard let key = simperiumKey else {
11 | return nil
12 | }
13 |
14 | return SimplenoteConstants.simplenoteScheme + "://" + SimplenoteConstants.simplenoteInterlinkHost + "/" + key
15 | }
16 |
17 | /// Returns the receiver's Markdown Internal Reference, when possible
18 | ///
19 | var markdownInterlink: String? {
20 | guard let title = titlePreview, let interlink = plainInterlink else {
21 | return nil
22 | }
23 |
24 | let shortened = title.truncateWords(upTo: SimplenoteConstants.simplenoteInterlinkMaxTitleLength)
25 | return "[" + shortened + "](" + interlink + ")"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Simplenote/NSImage+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import os.log
3 |
4 | // MARK: - NSImage + Simplenote
5 | //
6 | extension NSImage {
7 |
8 | /// Returns a copy of the receiver, tinted with the specified color
9 | ///
10 | @objc(tintedWithColor:)
11 | func tinted(with color: NSColor) -> NSImage {
12 | guard let cgImage = self.cgImage(forProposedRect: nil, context: nil, hints: nil) else {
13 | return self
14 | }
15 |
16 | return NSImage(size: size, flipped: false) { bounds in
17 | guard let context = NSGraphicsContext.current?.cgContext else {
18 | os_log("☠️ Error: Cannot acquire current CGContext")
19 | return false
20 | }
21 |
22 | color.set()
23 | context.clip(to: bounds, mask: cgImage)
24 | context.fill(bounds)
25 |
26 | return true
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Resources/ca.lproj/SUUpdateAlert.strings:
--------------------------------------------------------------------------------
1 | /* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */
2 | "5.title" = "Actualització del programari";
3 |
4 | /* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */
5 | "170.title" = "Notes d'aquesta versió:";
6 |
7 | /* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */
8 | "171.title" = "Recorda-m'ho més tard";
9 |
10 | /* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */
11 | "172.title" = "Omet aquesta versió";
12 |
13 | /* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */
14 | "173.title" = "Instal·la l'actualització";
15 |
16 | /* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */
17 | "175.title" = "Descarrega i instal·la les actualitzacions automàticament en el futur";
18 |
--------------------------------------------------------------------------------
/Simplenote/SimplenoteDebug.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.associated-domains
6 |
7 | applinks:app.simplenote.com
8 |
9 | com.apple.security.app-sandbox
10 |
11 | com.apple.security.application-groups
12 |
13 | $(TeamIdentifierPrefix)com.automattic.SimplenoteMac.Development
14 |
15 | com.apple.security.files.user-selected.read-write
16 |
17 | com.apple.security.network.client
18 |
19 | com.apple.security.print
20 |
21 | keychain-access-groups
22 |
23 | $(AppIdentifierPrefix)$(CFBundleIdentifier)
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Simplenote/NSColor+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - HTML Colors
4 | //
5 | extension NSColor {
6 |
7 | /// Initializes a new UIColor instance with the specified HexString Code.
8 | ///
9 | convenience init(hexString: String, alpha: CGFloat = AppKitConstants.alpha1_0) {
10 | let hexString = hexString.trimmingCharacters(in: .whitespacesAndNewlines)
11 | let scanner = Scanner(string: hexString)
12 | if hexString.hasPrefix("#") {
13 | scanner.currentIndex = hexString.index(after: hexString.startIndex)
14 | }
15 |
16 | var color: UInt64 = .zero
17 | scanner.scanHexInt64(&color)
18 |
19 | let mask = 0x000000FF
20 | let r = Int(color >> 16) & mask
21 | let g = Int(color >> 8) & mask
22 | let b = Int(color) & mask
23 |
24 | self.init(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: alpha)
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Simplenote/ContentSlice.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - ContentSlice
4 | //
5 | struct ContentSlice: Equatable {
6 | /// Original content
7 | ///
8 | let content: String
9 |
10 | /// Sliced range
11 | ///
12 | let range: Range
13 |
14 | /// Ranges of matched words
15 | ///
16 | let matches: [Range]
17 |
18 | /// NSRange version of `matches`
19 | ///
20 | var nsMatches: [NSRange] {
21 | return matches.map {
22 | NSRange($0, in: content)
23 | }
24 | }
25 |
26 | /// Content sliced to the range
27 | ///
28 | var slicedContent: String {
29 | return String(content[range])
30 | }
31 |
32 | /// Constructor
33 | ///
34 | init(content: String, range: Range, matches: [Range]) {
35 | self.content = content
36 | self.range = range
37 | self.matches = matches
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/Simplenote/SearchMapView.swift:
--------------------------------------------------------------------------------
1 | import AppKit
2 |
3 | // MARK: - SearchMapView
4 | //
5 | @objc
6 | final class SearchMapView: NSView {
7 | private var positions: [CGFloat] = []
8 |
9 | /// Update with positions of bars. Position is from 0.0 to 1.0
10 | ///
11 | func update(with positions: [CGFloat]) {
12 | self.positions = positions
13 | needsDisplay = true
14 | }
15 |
16 | override func draw(_ dirtyRect: NSRect) {
17 | NSColor.simplenoteExcerptHighlightColor.set()
18 | for position in positions {
19 | let rect = NSRect(x: 0,
20 | y: (bounds.height - bounds.height * position) - Metrics.barHeight / 2,
21 | width: bounds.width,
22 | height: Metrics.barHeight)
23 | NSBezierPath.fill(rect)
24 | }
25 | }
26 | }
27 |
28 | private enum Metrics {
29 | static let barHeight: CGFloat = 2.0
30 | }
31 |
--------------------------------------------------------------------------------
/Simplenote/Array+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - Simplenote Methods
4 | //
5 | extension Array where Element == String {
6 |
7 | /// Returns a copy of the receiver containing Unique Strings (case insensitive comparison!)
8 | ///
9 | var caseInsensitiveUnique: [String] {
10 | var seen = Set()
11 | var output = [String]()
12 |
13 | for string in self {
14 | let lowercased = string.lowercased()
15 | if seen.contains(lowercased) {
16 | continue
17 | }
18 |
19 | output.append(string)
20 | seen.insert(lowercased)
21 | }
22 |
23 | return output
24 | }
25 | }
26 |
27 | // MARK: - Array + NSView Convenience API
28 | //
29 | extension Array where Element == NSView {
30 |
31 | func updateAlphaValue(_ newAlpha: CGFloat) {
32 | forEach { view in
33 | view.alphaValue = newAlpha
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Simplenote/SplitView.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - SplitView
4 | //
5 | class SplitView: NSSplitView {
6 |
7 | /// Default Divider Thickness: 1pt
8 | ///
9 | private let defaultDividerThickness = CGFloat(1)
10 |
11 | // MARK: - Overridden Methods
12 |
13 | override var dividerThickness: CGFloat {
14 | defaultDividerThickness
15 | }
16 |
17 | override var dividerColor: NSColor {
18 | .simplenoteDividerColor
19 | }
20 | }
21 |
22 | // MARK: - Forced Redraw Hacks. Please Nuke!
23 | //
24 | private extension SplitView {
25 |
26 | /// Hack:
27 | /// Forces the entire window to re-render, by switching the appearance back and forth.
28 | ///
29 | func performMojaveRedrawHack() {
30 | guard let window = window else {
31 | return
32 | }
33 |
34 | let oldAppearance = window.appearance
35 | window.appearance = nil
36 | window.appearance = oldAppearance
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Simplenote/ClipView.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSClipView
4 | //
5 | class ClipView: NSClipView {
6 |
7 | /// ClipView's default `hitTest` implementation returns `nil` whenever a view, **although visible**, falls within the area
8 | /// defined by the `contentInsets.top`.
9 | ///
10 | /// In this subclass we're simply forwarding the click event to the subclasses, when appropriate.
11 | ///
12 | override func hitTest(_ point: NSPoint) -> NSView? {
13 | if let subview = super.hitTest(point) {
14 | return subview
15 | }
16 |
17 | if point.y >= contentInsets.top {
18 | return nil
19 | }
20 |
21 | for subview in subviews {
22 | let translated = convert(point, to: subview)
23 | guard let result = subview.hitTest(translated) else {
24 | continue
25 | }
26 |
27 | return result
28 | }
29 |
30 | return nil
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Simplenote/NSView+Simplenote.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NSView + Simplenote
4 | //
5 | extension NSView {
6 |
7 | /// Indicates if either the Receiver is the First responder (OR) the receiver is the Field Editor's delegate
8 | ///
9 | var isFirstResponder: Bool {
10 | guard let responder = window?.firstResponder else {
11 | return false
12 | }
13 |
14 | if responder == self {
15 | return true
16 | }
17 |
18 | let fieldEditor = responder as? NSText
19 | let effectiveResponder = fieldEditor?.delegate as? NSControl
20 | return effectiveResponder == self
21 | }
22 |
23 | /// Returns first layout constraint found for attribute type
24 | ///
25 | func firstContraint(firstView: NSView, firstAttribute: NSLayoutConstraint.Attribute) -> NSLayoutConstraint? {
26 | constraints.first(where: { $0.firstItem as? NSView == firstView && $0.firstAttribute == firstAttribute })
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/SimplenoteTests/MockAccountVerificationRemote.swift:
--------------------------------------------------------------------------------
1 | import XCTest
2 | @testable import SimplenoteEndpoints
3 | @testable import Simplenote
4 |
5 |
6 | // MARK: - MockAccountVerificationRemote
7 | //
8 | class MockAccountRemote: AccountRemote {
9 | private var pendingVerifications: [(email: String, completion: (Result) -> Void)] = []
10 |
11 | override func verify(email: String, completion: @escaping (Result) -> Void) {
12 | pendingVerifications.append((email, completion))
13 | }
14 |
15 | func processVerification(for email: String, with result: Result) {
16 | guard let index = pendingVerifications.firstIndex(where: { $0.email == email }) else {
17 | XCTFail("Cannot find pending verification for email \(email)")
18 | return
19 | }
20 |
21 | let pendingVerification = pendingVerifications.remove(at: index)
22 | pendingVerification.completion(result)
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/External/Sparkle/Frameworks/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUVersionDisplayProtocol.h
3 | // EyeTV
4 | //
5 | // Created by Uli Kusterer on 08.12.09.
6 | // Copyright 2009 Elgato Systems GmbH. All rights reserved.
7 | //
8 |
9 | #if __has_feature(modules)
10 | #if __has_warning("-Watimport-in-framework-header")
11 | #pragma clang diagnostic ignored "-Watimport-in-framework-header"
12 | #endif
13 | @import Foundation;
14 | #else
15 | #import
16 | #endif
17 | #import "SUExport.h"
18 |
19 | /*!
20 | Applies special display formatting to version numbers.
21 | */
22 | @protocol SUVersionDisplay
23 |
24 | /*!
25 | Formats two version strings.
26 |
27 | Both versions are provided so that important distinguishing information
28 | can be displayed while also leaving out unnecessary/confusing parts.
29 | */
30 | - (void)formatVersion:(NSString *_Nonnull*_Nonnull)inOutVersionA andVersion:(NSString *_Nonnull*_Nonnull)inOutVersionB;
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS X
2 | .DS_Store
3 | .AppleDouble
4 | .LSOverride
5 | Icon
6 | ._*
7 | .Spotlight-V100
8 | .Trashes
9 |
10 | # Xcode
11 | */build/*
12 | *.pbxuser
13 | !default.pbxuser
14 | *.mode1v3
15 | !default.mode1v3
16 | *.mode2v3
17 | !default.mode2v3
18 | *.perspectivev3
19 | !default.perspectivev3
20 | !default.xcworkspace
21 | xcuserdata
22 | profile
23 | *.moved-aside
24 | DerivedData
25 | .idea/
26 | *.hmap
27 | *.xcscmblueprint
28 | Simplenote/DerivedSources/
29 |
30 | # Settings
31 | Simplenote/config.plist
32 | Simplenote/Credentials/
33 |
34 | # Bundler
35 | /vendor/
36 | /vendor/bundle/
37 |
38 | # Dependencies
39 | Pods/
40 | Carthage/Build
41 |
42 | # Fastlane
43 | fastlane/Preview.html
44 | fastlane/report.xml
45 | fastlane/README.md
46 | fastlane/test_output/
47 | build/
48 |
49 | # Secrets
50 | # All secrets should be stored encrypted in .configure-files, anything that's
51 | # not encrypted should be ignored
52 | .configure-files/*
53 | !.configure-files/*.enc
54 |
55 | # Swift Package Manager
56 | .build
57 |
--------------------------------------------------------------------------------
/Simplenote/TagListFilter.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - TagListFilter
4 | //
5 | enum TagListFilter: Equatable {
6 | case everything
7 | case deleted
8 | case untagged
9 | case tag(name: String)
10 | }
11 |
12 | // MARK: - Public API(s)
13 | //
14 | extension TagListFilter {
15 |
16 | /// Returns the Title matching the current state
17 | ///
18 | var title: String {
19 | switch self {
20 | case .everything:
21 | return NSLocalizedString("All Notes", comment: "Title of the all notes filter")
22 | case .deleted:
23 | return NSLocalizedString("Trash", comment: "Title for the Trash filter")
24 | case .tag(let name) where name.isEmpty:
25 | return NSLocalizedString("Unnamed Tag", comment: "Title for Tag with no Name")
26 | case .tag(let name):
27 | return name
28 | case .untagged:
29 | return NSLocalizedString("Untagged", comment: "Untagged Notes Title")
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Simplenote/NoteListPrefixFormatter.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // MARK: - NoteListPrefixFormatter
4 | //
5 | struct NoteListPrefixFormatter {
6 |
7 | /// Returns a Prefix for the specified Note, matching a given SortMode
8 | ///
9 | func prefix(from note: Note, for sortMode: SortMode) -> String? {
10 | guard let date = date(from: note, for: sortMode) else {
11 | return nil
12 | }
13 |
14 | return DateFormatter.notesFormatter.string(from: date)
15 | }
16 |
17 | /// Returns the relevant Note Date field for the specified Sort Mode
18 | ///
19 | private func date(from note: Note, for sortMode: SortMode) -> Date? {
20 | switch sortMode {
21 | case .alphabeticallyAscending, .alphabeticallyDescending:
22 | return nil
23 |
24 | case .createdNewest, .createdOldest:
25 | return note.creationDate
26 |
27 | case .modifiedNewest, .modifiedOldest:
28 | return note.modificationDate
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------