Ember, a native iOS Hacker News reader I built around accessibility
Article URL: https://github.com/DatanoiseTV/ember-hackernews Comments URL: https://news.ycombinator.com/item?id=48610816 Points: 6 # Comments: 1
mainBranchesTagsGo to fileCodeOpen more actions menuFolders and filesNameNameLast commit messageLast commit dateLatest commit History1 Commit1 CommitResourcesResources SourcesSources ToolsTools docs/screenshotsdocs/screenshots .gitignore.gitignore CHANGELOG.
mdCHANGELOG.md LICENSELICENSE README.mdREADME.
md project.ymlproject.yml View all filesRepository files navigation Ember A native Hacker News reader for iOS — calm, fast, and built for everyone.
Ember is a SwiftUI app that reads Hacker News the way a native iOS app should: threaded comments rendered natively, a personalized first-run setup, full dark mode, and accessibility treated as a feature rather than an afterthought. Highlights Every feed — Top, New, Best, Ask HN, Show HN, and Jobs, switchable from a pinned filter bar. Native comment threads — Hacker News comment HTML is parsed into native text with tappable links, italics, block quotes, and code blocks.
Threads are collapsible with depth indicators, and the whole tree loads in a single request. Smart onboarding — a short first-run flow that reads your device's appearance and accessibility settings, pre-configures the app to match, and shows a live preview as you choose a theme, accent, and home feed. Search — full-text search across Hacker News by relevance or recency.
Saved for later — bookmark any story; saved stories are stored on device and work offline. Read tracking — visited stories are dimmed so you can pick up where you left off. In-app reading — open links in an in-app Safari view with optional Reader mode, or hand off to your default browser.
Profiles — view any user's karma, join date, about, and recent submissions. Thoughtful design — a warm, hand-tuned color system, full light/dark support, six accent themes, haptics, and fluid animations. Accessibility Accessibility is a first-class part of Ember, with particular care for color vision.
Never color alone. Status is always carried by an icon, shape, or text in addition to color — points and comment counts pair an SF Symbol with their value, read state shows a checkmark, and selection states use rings and checkmarks. Color-blind friendly cues.
A dedicated setting (auto-enabled when the system "Differentiate Without Color" is on) adds explicit non-color indicators throughout. VoiceOver. Story rows, comments, and controls expose meaningful labels, hints, traits, and custom actions; each story reads as a single coherent element.
Dynamic Type. Typography scales with the system text size, and layouts — including comment indentation — adapt at accessibility sizes. Reduce Motion.
Animations and the loading shimmer are minimized when Reduce Motion is enabled. Underlined links. Links in comments can be underlined so they remain identifiable without relying on color.
The onboarding adapts. On first launch Ember detects VoiceOver, Reduce Motion, Differentiate Without Color, Bold Text, and large text, turns on the matching options, and tells you exactly what it changed. Screenshots Feed Story & comments Search Settings Onboarding · welcome Onboarding · accessibility Architecture Ember is pure SwiftUI with no third-party dependencies.
UI: SwiftUI, targeting iOS 18. State: the Observation framework (@Observable) for view models and stores. Concurrency: async/await networking; feed pages fetch concurrently with TaskGroup and tolerate individual missing items.
Persistence: UserDefaults for settings and read state; a JSON file for saved stories. Data sources: The official Hacker News Firebase API for feeds, items, and users. The Algolia HN Search API for full comment trees (one request per thread) and search.
Project layout Sources/ App/ App entry, root tab view, environment wiring, in-app Safari Models/ HNItem, HNUser, Feed, Algolia models Networking/ HNService protocol, live client, mock for previews Stores/ Settings, bookmarks, read state DesignSystem/ Theme, typography, haptics, reusable components Utilities/ HTML comment renderer, relative time Features/ Feed/ Feed list, filter bar, view model StoryDetail/ Story header + threaded collapsible comments Search/ Search with relevance/recency Saved/ Bookmarks Settings/ Appearance, reading, accessibility, data, about User/ Profiles Onboarding/ Smart first-run personalization Resources/ Assets, app icon, Info.plist Tools/ Icon generator, screenshot device-framer Getting started Requirements macOS with Xcode 16 or newer (built and tested against Xcode 26 / iOS 26 SDK). XcodeGen to generate the project: brew install xcodegen.
Build and run # 1. Generate the Xcode project from project.yml xcodegen generate # 2.
Open it open Ember.xcodeproj # 3. Select the Ember scheme and an iPhone simulator, then Run.
Or build from the command line: xcodegen generate xcodebuild -project Ember.xcodeproj -scheme Ember \ -sdk iphonesimulator \ -destination 'platform=iOS Simulator,name=iPhone 17 Pro' build The generated Ember.xcodeproj is intentionally git-ignored — regenerate it with xcodegen generate after pulling.
Regenerati
Đọc thêm từ Công nghệ

A speculative scenario titled "Europe 2031" projects economic and political instability in the EU if it fails to keep pace with the US and China in the AI race (Aisha Down/The Guardian)
Aisha Down / The Guardian: A speculative scenario titled “Europe 2031” projects economic and political instability in the EU if it fails to keep pace with the US and China in the AI race — A speculative thought-experiment warns the continent could pay a heavy price for lagging be

Seeing the World in Radio Waves with the QuadRF
Although the basic principle of radio direction finding is easy to understand (measure the phase difference between different antennas, then calculate the angle of arrival from this difference), the radio …read more

Trump blames reflecting pool woes on vandalism, but offers no proof
The paint is peeling from Washington’s reflecting pool after the renovation ordered by President Donald Trump, and he is now alleging that someone damaged it intentionally. “We’ve had some real problems with Vandalism at the beautiful Reflecting Pool,” he posted on his social med

Apple @ Work: The era of legacy MDM is over, and declarative management is the new standard
Apple @ Work is exclusively brought to you by Mosyle, the only Apple Unified Platform. Mosyle is the only solution that integrates in a single professional grade platform all the solutions necessary to seamlessly and automatically deploy, manage, and protect Apple devices at work