├── .gitignore ├── .swift-format ├── App ├── App.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ └── Icons │ │ ├── AskIconTemplate.imageset │ │ ├── Contents.json │ │ ├── icons8-ask-question-30.png │ │ ├── icons8-ask-question-60.png │ │ └── icons8-ask-question-90.png │ │ ├── BestIconTemplate.imageset │ │ ├── Contents.json │ │ ├── icons8-best-seller-30.png │ │ ├── icons8-best-seller-60.png │ │ └── icons8-best-seller-90.png │ │ ├── CollapseIconTemplate.imageset │ │ ├── Collapse Arrow-1.png │ │ ├── Collapse Arrow-2.png │ │ ├── Collapse Arrow.png │ │ └── Contents.json │ │ ├── CommentsIconTemplate.imageset │ │ ├── Contents.json │ │ ├── icons8-topic-100.png │ │ ├── icons8-topic-50.png │ │ └── icons8-topic-51.png │ │ ├── Contents.json │ │ ├── ExpandIconTemplate.imageset │ │ ├── Contents.json │ │ ├── Expand Arrow-1.png │ │ ├── Expand Arrow-2.png │ │ └── Expand Arrow.png │ │ ├── JobIconTemplate.imageset │ │ ├── Contents.json │ │ ├── icons8-job-seeker-30.png │ │ ├── icons8-job-seeker-60.png │ │ └── icons8-job-seeker-90.png │ │ ├── NewIconTemplate.imageset │ │ ├── Contents.json │ │ ├── icons8-watch-30.png │ │ ├── icons8-watch-60.png │ │ └── icons8-watch-90.png │ │ ├── ShowIconTemplate.imageset │ │ ├── Contents.json │ │ ├── icons8-commercial-30.png │ │ ├── icons8-commercial-60.png │ │ └── icons8-commercial-90.png │ │ ├── TopIconTemplate.imageset │ │ ├── Contents.json │ │ ├── icons8-two-hearts-30.png │ │ ├── icons8-two-hearts-60.png │ │ └── icons8-two-hearts-90.png │ │ └── VotesIconTemplate.imageset │ │ ├── Contents.json │ │ ├── icons8-thumbs-up-100.png │ │ ├── icons8-thumbs-up-50.png │ │ └── icons8-thumbs-up-51.png ├── Info.plist ├── Resources │ ├── Credits.rtf │ ├── Main.storyboard │ ├── ProgressOverlayView.xib │ ├── StoryStatusView.xib │ ├── Test Data │ │ ├── ask_stories.json │ │ ├── best_stories.json │ │ ├── job_stories.json │ │ ├── new_stories.json │ │ ├── show_stories.json │ │ ├── stories_dump.py │ │ ├── top_stories.json │ │ └── user.json │ ├── UserDetailsPopoverView.xib │ ├── UserLoginStatusView.xib │ └── UserLoginViewController.xib └── Sources │ ├── AppDelegate.swift │ ├── Extensions │ ├── Date+TimeIntervalString.swift │ ├── Int+KFormatted.swift │ ├── NSAlert+ShowModal.swift │ ├── NSAttributedString+Additions.swift │ ├── NSOutlineView+Additions.swift │ ├── NSView+Additions.swift │ ├── OSLog+Categories.swift │ ├── String+MarkupParser.swift │ └── URL+ShortURL.swift │ ├── Misc. │ ├── HNAPIConsumer.swift │ └── MarkupLayoutManager.swift │ ├── Parsing │ └── MarkupParser.swift │ ├── View Controllers │ ├── AboutViewController.swift │ ├── CommentsViewController.swift │ ├── MainSplitViewController.swift │ ├── SidebarViewController.swift │ ├── StoriesViewController.swift │ ├── StoryDetailsViewController.swift │ ├── StoryMasterViewController.swift │ ├── UserDetailsPopoverViewController.swift │ └── UserLoginViewController.swift │ ├── Views │ ├── ClearRoundRectButtonCell.swift │ ├── ClickableTextField.swift │ ├── CommentCellView.swift │ ├── CommentRowView.swift │ ├── CommentsOutlineView.swift │ ├── DisclosureButtonView.swift │ ├── LightColoredBadgeView.swift │ ├── MarkupTextView.swift │ ├── NoEmphasisTableRowView.swift │ ├── ProgressOverlayView.swift │ ├── SelfSizingTextView.swift │ ├── StoriesTableView.swift │ ├── StoryCellView.swift │ ├── StoryRowView.swift │ ├── StoryStatusView.swift │ └── UserLoginStatusView.swift │ └── Window Controllers │ ├── AboutWindowController.swift │ └── MainWindowController.swift ├── Diurna.xcworkspace └── contents.xcworkspacedata ├── HackerNewsAPI ├── HackerNewsAPI.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── Info.plist └── Sources │ ├── Extensions │ ├── Decodable+JSONInit.swift │ └── KeyedDecodingContainer+decodeURL.swift │ ├── FirebaseHNAPIClient.swift │ ├── HNAPIClient.swift │ ├── HNWebClient.swift │ ├── HTTPHNWebClient.swift │ ├── HackerNewsAPI.h │ ├── MockHNAPIClient.swift │ └── Model │ ├── Comment.swift │ ├── Item.swift │ ├── Story.swift │ └── User.swift ├── LICENSE.txt ├── Podfile ├── Podfile.lock ├── README.md ├── diurna.png └── diurna_dark.png /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/.gitignore -------------------------------------------------------------------------------- /.swift-format: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/.swift-format -------------------------------------------------------------------------------- /App/App.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/App.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /App/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/AskIconTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/AskIconTemplate.imageset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/AskIconTemplate.imageset/icons8-ask-question-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/AskIconTemplate.imageset/icons8-ask-question-30.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/AskIconTemplate.imageset/icons8-ask-question-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/AskIconTemplate.imageset/icons8-ask-question-60.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/AskIconTemplate.imageset/icons8-ask-question-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/AskIconTemplate.imageset/icons8-ask-question-90.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/BestIconTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/BestIconTemplate.imageset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/BestIconTemplate.imageset/icons8-best-seller-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/BestIconTemplate.imageset/icons8-best-seller-30.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/BestIconTemplate.imageset/icons8-best-seller-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/BestIconTemplate.imageset/icons8-best-seller-60.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/BestIconTemplate.imageset/icons8-best-seller-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/BestIconTemplate.imageset/icons8-best-seller-90.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/CollapseIconTemplate.imageset/Collapse Arrow-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/CollapseIconTemplate.imageset/Collapse Arrow-1.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/CollapseIconTemplate.imageset/Collapse Arrow-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/CollapseIconTemplate.imageset/Collapse Arrow-2.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/CollapseIconTemplate.imageset/Collapse Arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/CollapseIconTemplate.imageset/Collapse Arrow.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/CollapseIconTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/CollapseIconTemplate.imageset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/CommentsIconTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/CommentsIconTemplate.imageset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/CommentsIconTemplate.imageset/icons8-topic-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/CommentsIconTemplate.imageset/icons8-topic-100.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/CommentsIconTemplate.imageset/icons8-topic-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/CommentsIconTemplate.imageset/icons8-topic-50.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/CommentsIconTemplate.imageset/icons8-topic-51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/CommentsIconTemplate.imageset/icons8-topic-51.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/ExpandIconTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/ExpandIconTemplate.imageset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/ExpandIconTemplate.imageset/Expand Arrow-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/ExpandIconTemplate.imageset/Expand Arrow-1.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/ExpandIconTemplate.imageset/Expand Arrow-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/ExpandIconTemplate.imageset/Expand Arrow-2.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/ExpandIconTemplate.imageset/Expand Arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/ExpandIconTemplate.imageset/Expand Arrow.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/JobIconTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/JobIconTemplate.imageset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/JobIconTemplate.imageset/icons8-job-seeker-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/JobIconTemplate.imageset/icons8-job-seeker-30.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/JobIconTemplate.imageset/icons8-job-seeker-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/JobIconTemplate.imageset/icons8-job-seeker-60.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/JobIconTemplate.imageset/icons8-job-seeker-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/JobIconTemplate.imageset/icons8-job-seeker-90.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/NewIconTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/NewIconTemplate.imageset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/NewIconTemplate.imageset/icons8-watch-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/NewIconTemplate.imageset/icons8-watch-30.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/NewIconTemplate.imageset/icons8-watch-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/NewIconTemplate.imageset/icons8-watch-60.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/NewIconTemplate.imageset/icons8-watch-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/NewIconTemplate.imageset/icons8-watch-90.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/ShowIconTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/ShowIconTemplate.imageset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/ShowIconTemplate.imageset/icons8-commercial-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/ShowIconTemplate.imageset/icons8-commercial-30.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/ShowIconTemplate.imageset/icons8-commercial-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/ShowIconTemplate.imageset/icons8-commercial-60.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/ShowIconTemplate.imageset/icons8-commercial-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/ShowIconTemplate.imageset/icons8-commercial-90.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/TopIconTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/TopIconTemplate.imageset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/TopIconTemplate.imageset/icons8-two-hearts-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/TopIconTemplate.imageset/icons8-two-hearts-30.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/TopIconTemplate.imageset/icons8-two-hearts-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/TopIconTemplate.imageset/icons8-two-hearts-60.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/TopIconTemplate.imageset/icons8-two-hearts-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/TopIconTemplate.imageset/icons8-two-hearts-90.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/VotesIconTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/VotesIconTemplate.imageset/Contents.json -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/VotesIconTemplate.imageset/icons8-thumbs-up-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/VotesIconTemplate.imageset/icons8-thumbs-up-100.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/VotesIconTemplate.imageset/icons8-thumbs-up-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/VotesIconTemplate.imageset/icons8-thumbs-up-50.png -------------------------------------------------------------------------------- /App/Assets.xcassets/Icons/VotesIconTemplate.imageset/icons8-thumbs-up-51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Assets.xcassets/Icons/VotesIconTemplate.imageset/icons8-thumbs-up-51.png -------------------------------------------------------------------------------- /App/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Info.plist -------------------------------------------------------------------------------- /App/Resources/Credits.rtf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/Credits.rtf -------------------------------------------------------------------------------- /App/Resources/Main.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/Main.storyboard -------------------------------------------------------------------------------- /App/Resources/ProgressOverlayView.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/ProgressOverlayView.xib -------------------------------------------------------------------------------- /App/Resources/StoryStatusView.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/StoryStatusView.xib -------------------------------------------------------------------------------- /App/Resources/Test Data/ask_stories.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/Test Data/ask_stories.json -------------------------------------------------------------------------------- /App/Resources/Test Data/best_stories.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/Test Data/best_stories.json -------------------------------------------------------------------------------- /App/Resources/Test Data/job_stories.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/Test Data/job_stories.json -------------------------------------------------------------------------------- /App/Resources/Test Data/new_stories.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/Test Data/new_stories.json -------------------------------------------------------------------------------- /App/Resources/Test Data/show_stories.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/Test Data/show_stories.json -------------------------------------------------------------------------------- /App/Resources/Test Data/stories_dump.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/Test Data/stories_dump.py -------------------------------------------------------------------------------- /App/Resources/Test Data/top_stories.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/Test Data/top_stories.json -------------------------------------------------------------------------------- /App/Resources/Test Data/user.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/Test Data/user.json -------------------------------------------------------------------------------- /App/Resources/UserDetailsPopoverView.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/UserDetailsPopoverView.xib -------------------------------------------------------------------------------- /App/Resources/UserLoginStatusView.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/UserLoginStatusView.xib -------------------------------------------------------------------------------- /App/Resources/UserLoginViewController.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Resources/UserLoginViewController.xib -------------------------------------------------------------------------------- /App/Sources/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/AppDelegate.swift -------------------------------------------------------------------------------- /App/Sources/Extensions/Date+TimeIntervalString.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Extensions/Date+TimeIntervalString.swift -------------------------------------------------------------------------------- /App/Sources/Extensions/Int+KFormatted.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Extensions/Int+KFormatted.swift -------------------------------------------------------------------------------- /App/Sources/Extensions/NSAlert+ShowModal.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Extensions/NSAlert+ShowModal.swift -------------------------------------------------------------------------------- /App/Sources/Extensions/NSAttributedString+Additions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Extensions/NSAttributedString+Additions.swift -------------------------------------------------------------------------------- /App/Sources/Extensions/NSOutlineView+Additions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Extensions/NSOutlineView+Additions.swift -------------------------------------------------------------------------------- /App/Sources/Extensions/NSView+Additions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Extensions/NSView+Additions.swift -------------------------------------------------------------------------------- /App/Sources/Extensions/OSLog+Categories.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Extensions/OSLog+Categories.swift -------------------------------------------------------------------------------- /App/Sources/Extensions/String+MarkupParser.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Extensions/String+MarkupParser.swift -------------------------------------------------------------------------------- /App/Sources/Extensions/URL+ShortURL.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Extensions/URL+ShortURL.swift -------------------------------------------------------------------------------- /App/Sources/Misc./HNAPIConsumer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Misc./HNAPIConsumer.swift -------------------------------------------------------------------------------- /App/Sources/Misc./MarkupLayoutManager.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Misc./MarkupLayoutManager.swift -------------------------------------------------------------------------------- /App/Sources/Parsing/MarkupParser.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Parsing/MarkupParser.swift -------------------------------------------------------------------------------- /App/Sources/View Controllers/AboutViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/View Controllers/AboutViewController.swift -------------------------------------------------------------------------------- /App/Sources/View Controllers/CommentsViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/View Controllers/CommentsViewController.swift -------------------------------------------------------------------------------- /App/Sources/View Controllers/MainSplitViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/View Controllers/MainSplitViewController.swift -------------------------------------------------------------------------------- /App/Sources/View Controllers/SidebarViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/View Controllers/SidebarViewController.swift -------------------------------------------------------------------------------- /App/Sources/View Controllers/StoriesViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/View Controllers/StoriesViewController.swift -------------------------------------------------------------------------------- /App/Sources/View Controllers/StoryDetailsViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/View Controllers/StoryDetailsViewController.swift -------------------------------------------------------------------------------- /App/Sources/View Controllers/StoryMasterViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/View Controllers/StoryMasterViewController.swift -------------------------------------------------------------------------------- /App/Sources/View Controllers/UserDetailsPopoverViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/View Controllers/UserDetailsPopoverViewController.swift -------------------------------------------------------------------------------- /App/Sources/View Controllers/UserLoginViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/View Controllers/UserLoginViewController.swift -------------------------------------------------------------------------------- /App/Sources/Views/ClearRoundRectButtonCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/ClearRoundRectButtonCell.swift -------------------------------------------------------------------------------- /App/Sources/Views/ClickableTextField.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/ClickableTextField.swift -------------------------------------------------------------------------------- /App/Sources/Views/CommentCellView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/CommentCellView.swift -------------------------------------------------------------------------------- /App/Sources/Views/CommentRowView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/CommentRowView.swift -------------------------------------------------------------------------------- /App/Sources/Views/CommentsOutlineView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/CommentsOutlineView.swift -------------------------------------------------------------------------------- /App/Sources/Views/DisclosureButtonView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/DisclosureButtonView.swift -------------------------------------------------------------------------------- /App/Sources/Views/LightColoredBadgeView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/LightColoredBadgeView.swift -------------------------------------------------------------------------------- /App/Sources/Views/MarkupTextView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/MarkupTextView.swift -------------------------------------------------------------------------------- /App/Sources/Views/NoEmphasisTableRowView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/NoEmphasisTableRowView.swift -------------------------------------------------------------------------------- /App/Sources/Views/ProgressOverlayView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/ProgressOverlayView.swift -------------------------------------------------------------------------------- /App/Sources/Views/SelfSizingTextView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/SelfSizingTextView.swift -------------------------------------------------------------------------------- /App/Sources/Views/StoriesTableView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/StoriesTableView.swift -------------------------------------------------------------------------------- /App/Sources/Views/StoryCellView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/StoryCellView.swift -------------------------------------------------------------------------------- /App/Sources/Views/StoryRowView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/StoryRowView.swift -------------------------------------------------------------------------------- /App/Sources/Views/StoryStatusView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/StoryStatusView.swift -------------------------------------------------------------------------------- /App/Sources/Views/UserLoginStatusView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Views/UserLoginStatusView.swift -------------------------------------------------------------------------------- /App/Sources/Window Controllers/AboutWindowController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Window Controllers/AboutWindowController.swift -------------------------------------------------------------------------------- /App/Sources/Window Controllers/MainWindowController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/App/Sources/Window Controllers/MainWindowController.swift -------------------------------------------------------------------------------- /Diurna.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/Diurna.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /HackerNewsAPI/HackerNewsAPI.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/HackerNewsAPI.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /HackerNewsAPI/HackerNewsAPI.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/HackerNewsAPI.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /HackerNewsAPI/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Info.plist -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/Extensions/Decodable+JSONInit.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/Extensions/Decodable+JSONInit.swift -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/Extensions/KeyedDecodingContainer+decodeURL.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/Extensions/KeyedDecodingContainer+decodeURL.swift -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/FirebaseHNAPIClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/FirebaseHNAPIClient.swift -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/HNAPIClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/HNAPIClient.swift -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/HNWebClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/HNWebClient.swift -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/HTTPHNWebClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/HTTPHNWebClient.swift -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/HackerNewsAPI.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/HackerNewsAPI.h -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/MockHNAPIClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/MockHNAPIClient.swift -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/Model/Comment.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/Model/Comment.swift -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/Model/Item.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/Model/Item.swift -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/Model/Story.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/Model/Story.swift -------------------------------------------------------------------------------- /HackerNewsAPI/Sources/Model/User.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/HackerNewsAPI/Sources/Model/User.swift -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/LICENSE.txt -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/Podfile -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/Podfile.lock -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/README.md -------------------------------------------------------------------------------- /diurna.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/diurna.png -------------------------------------------------------------------------------- /diurna_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngquerol/Diurna/HEAD/diurna_dark.png --------------------------------------------------------------------------------