Skip to content

Releases: getfedo/fedo-ios

0.4.0

Choose a tag to compare

@mabd-agent mabd-agent released this 17 Oct 08:25

Breaking

  • Min iOS bumped 16 → 17
  • Public globals DEFAULT_NETWORK_TIMEOUT / DEFAULT_LOG_LEVEL removed. FedoConfig defaults unchanged
  • FedoLogEntry initializer now internal. Hosts only receive entries

Added

  • FedoConfig.logHandler — receive SDK logs as FedoLogEntry instead of OSLog
  • Discard confirmation — when leaving feedback editor with unsaved title/details

Changed

  • FedoConfig.networkTimeout now total per-request limit (hidden 60 s cap removed)
  • Character limits counted in Unicode scalars like backend
  • SDK strings rendered verbatim, never looked up in host bundle (always English)
  • Blank setUserEmail("") now accepted so hosts can clear email
  • FedoFeedbackView must be on NavigationStack; NavigationView / fullScreenCover unsupported

Fixed — user-visible

  • Comment timestamps — "N days ago" up to 7 days (Android parity)
  • Failed pull-to-refresh on detail shows error banner, keeps comments
  • Feedback details screen — Pull-to-refresh no longer cancelled mid-flight
  • Loaded comments stay visible when background reload fails
  • Feedbacks screen — Pull-to-refresh failure with rows visible shows banner, not silent log
  • Comments no longer flash spinner on every detail reload
  • Stale refresh/comments errors cleared on successful load/post
  • Comment count on list rows updates after post/delete
  • Failed comment delete shows "Couldn't delete comment"
  • Vote failure banner shows on detail screen, not hidden list
  • Empty board shows board empty state + "Suggest a feature", not filter-empty
  • Feedback posted before first successful load no longer dropped
  • Delete only offered for own feedback in in_review/planned. Else "Can't Delete Feedback"
  • Swipe-to-dismiss sheet with unsaved text asks to discard. Edit mode dismisses freely when unchanged
  • Watermark bar matches white loading/error/thanks states on iOS
  • Friendly "feedback isn't available" placeholder in Release when SDK not initialized
  • .tint() now drives vote glyph, send button, comment highlight, avatar fallback
  • Malformed feedback/comment item skipped + logged instead of failing whole list
  • Unknown feedback status decodes as "Unknown", listed under Closed

Fixed — session / identity

  • Session — app kill mid-write can't mix users' token+id
  • Fresh anonymous session when API key changes
  • Logout clears core token + cached feedback; drops previous user's in-flight responses
  • Late token refresh after logout/user change no longer restores old user
  • setUserID no longer replaced by queued anonymous-user creation
  • User data no longer printed in logs

0.4.0-beta.3

0.4.0-beta.3 Pre-release
Pre-release

Choose a tag to compare

@mabd-agent mabd-agent released this 11 Oct 03:53
  • fix/vote-main-thread-publish: Deliver feedback and comment updates on the main thread, fixing the "Publishing changes from background threads" warning when voting from the feedback detail screen
  • fix/buildWarnings: fix build warning - due to macos + xcode updates
  • watermark-bar-all-screens: Pin the "Powered by Fedo" watermark as a bottom bar on every screen, with the iOS 26 scroll-edge fade

0.4.0-beta.2

0.4.0-beta.2 Pre-release
Pre-release

Choose a tag to compare

@mabd-agent mabd-agent released this 06 Oct 10:54
  • feedback-filter-toolbar-menu: Move the feedback status filter into a toolbar menu by @mabd-dev
  • Disallow Fedo re-initialization by @mabd-dev
  • Rename FeedbacksView to FedoFeedbackView by @mabd-dev

0.4.0-beta.1

0.4.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@mabd-agent mabd-agent released this 17 Sep 05:09

First public beta.

Added

Setup

  • Fedo.initialize(apiKey:config:) — one call at launch starts the SDK. A blank API key
    is logged and ignored rather than crashing the host app.
  • FedoConfig with networkTimeout (seconds, default 30) and logLevel (default
    silent). Defaults live in DEFAULT_NETWORK_TIMEOUT and DEFAULT_LOG_LEVEL.
  • FedoLogLevel — severity threshold for SDK logging, routed to the unified logging
    system under the fedo.sdk subsystem.

Feedback UI

  • FeedbacksView — the feedback board: list, detail, comments, and composer. Pushes
    onto the enclosing NavigationStack.
  • presentFedoCreateFeedback(isPresented:) — a View modifier that presents a standalone
    feedback composer as a sheet, for lightweight "Suggest a feature" entry points.
  • Feedback list with status filters, sorting by status then votes then recency, and
    swipe-to-refresh.
  • Create, edit, and delete your own feedback; vote on anyone's.
  • Comments on a feedback item: create, edit, and delete, with inline animations.
  • Character limits with live counters — 200 for titles, 5,000 for details, 2,000 for
    comments.
  • Empty, loading, and error states throughout, each with retry where a retry makes sense.
  • A placeholder screen when the SDK is presented before initialize was called (DEBUG
    builds only).

User identity

  • setUserID(_:) — identifies the current user. Optional: until it's called, an
    anonymous user is created automatically, and identifying later merges that anonymous
    user's feedback, votes, and comments into the identified one.
  • setUserDisplayName(_:), setUserEmail(_:), and setUserProperty(_:value:) for
    profile metadata.
  • logout() — clears the session and starts a fresh anonymous user.
  • Device metadata (platform, model, OS version, locale, time zone, app version, SDK
    version) is attached to the user profile to give feedback context on the dashboard.

Session handling

  • Session tokens are stored in the Keychain, scoped to the device, and cleared on a
    fresh install so a reinstall doesn't inherit the previous install's session.
  • Expired tokens are refreshed automatically on a 401 and the original request is
    retried once. Concurrent refreshes are collapsed into a single in-flight call.

Distribution

  • PrivacyInfo.xcprivacy declaring collected data types and the UserDefaults
    required-reason API. The SDK does no tracking and touches no advertising identifiers.
  • DocC documentation on the full public API.
  • Swift 6 language mode, iOS 16+.

Data collected: see https://getfedo.com/privacy