Skip to content

Releases: huneyoliv/desky

Desky v1.0.7

Choose a tag to compare

@github-actions github-actions released this 08 Sep 02:19

Fixed

  • MSIX OAuth Credential Erasure: Configured build_windows: false in pubspec.yaml (msix_config) and passed --build-windows false to dart run msix:create --store in .github/workflows/release.yml. By default, msix:create re-invoked flutter build windows without compilation flags, overwriting the release binary and stripping out --dart-define credentials (GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, DISCORD_CLIENT_ID). Skipping the redundant build step preserves the credentials compiled into the release binaries for Microsoft Store certification.
  • Strict Environment Credential Enforcement: Cleared hardcoded fallback client identifiers in EnvConfig (defaultGoogleClientId = '' and defaultDiscordClientId = ''), guaranteeing that credentials are strictly loaded from local .env files in development or via compile-time --dart-define arguments injected by GitHub Actions secrets in release builds.
  • Discord RPC Connection Guard: Added defensive check to bypass Discord named pipe / socket connection attempts when _clientId is empty.
  • YPT API Device Model Contract: Restored defaultDeviceModel constant to align with YPT backend device model requirements.

Full Changelog: v1.0.6...v1.0.7

Desky v1.0.6

Choose a tag to compare

@github-actions github-actions released this 07 Sep 17:21

Fixed

  • macOS Ad-hoc Codesign SIGKILL Crash: Removed restricted keychain-access-groups entitlement from Release.entitlements and DebugProfile.entitlements. This entitlement required an Apple Developer Program provisioning profile; under CI/CD ad-hoc code signing (codesign -s -), macOS kernel AMFI killed the application on launch with EXC_CRASH (SIGKILL (Code Signature Invalid)) / Termination Reason: CODESIGNING 1. flutter_secure_storage safely operates in its isolated App Sandbox keychain without this entitlement.
  • macOS Graphics Glitches & Black Screen: Disabled Flutter Impeller rendering backend on macOS via FLTEnableImpeller = false in macos/Runner/Info.plist, preventing GPU Metal framebuffer corruption, blank screens, and diagonal artifacts on macOS Monterey and older Intel/Apple Silicon GPUs.
  • Desktop Window Background Solidification: Changed desktop windowOptions.backgroundColor from transparent to solid dark AppColors.background, eliminating window server compositor flicker and blank screens on startup.
  • Historical Subject Sync (YPT Delta Sync & sbu nullification): Fixed subject synchronization in SubjectRepository.fetchSubjectsData() to query /user/v2/reload/info with sbu: null in the cd (cache dates) payload, ensuring the full historical subjects catalogue is returned rather than only today's modified subjects.
  • Immediate Post-Login Subject Caching: Updated AuthRepository to immediately extract and persist data['ss'] returned by the social login endpoint (/user/social/sign-up-jwt) and email login into SharedPreferences, ensuring subjects appear instantly post-login.
  • Resilient Offline Subject Fallback: Added persistent caching of subjects in SharedPreferences, ensuring subjects are never cleared if the network request fails or returns an empty list.
  • macOS Keychain Entitlement: Added keychain-access-groups to Release.entitlements and DebugProfile.entitlements to guarantee secure token storage via flutter_secure_storage under macOS App Sandbox.
  • Static Analysis Exclusions: Added openypt/** to analysis_options.yaml exclude list to prevent analyzer hangs on decompiled mobile sources.
  • macOS App Sandbox Entitlements: Added com.apple.security.network.client, com.apple.security.network.server, com.apple.security.files.user-selected.read-write, and com.apple.security.files.downloads.read-write to Release.entitlements and DebugProfile.entitlements, fixing the SocketException: Operation not permitted (errno = 1) during Google OAuth login and ensuring PDF/file access.
  • Window Controls Duplication (macOS & Linux):
    • Hidden custom titlebar buttons (minimize, maximize, close) on macOS, honoring native window traffic light buttons at the top left.
    • Disabled GtkHeaderBar in linux/runner/my_application.cc (use_header_bar = FALSE), eliminating double title bars and button duplication on Linux GNOME desktop.
  • Study Session Exit & Cleanup:
    • Guaranteed that active, paused, or unsynced study sessions are gracefully ended and synced via TimerNotifier.stopStudy() before app shutdown.
    • Added POSIX signal handlers (SIGTERM and SIGINT) on macOS and Linux to ensure clean termination with exit(0).
  • Dynamic Platform & Device Detection: Resolved dynamic OS detection for Windows, macOS, and Linux in profile settings and API payloads, eliminating hardcoded Windows desktop identifiers across different operating systems.
  • Internationalization (i18n): Added comprehensive multi-language translations (11 languages: pt, en, es, ko, ja, zh-cn, zh-tw, fr, de, it, ru) for all OAuth errors, socket errors, and window control tooltips.

Full Changelog: v1.0.3...v1.0.6

Desky v1.0.3

Choose a tag to compare

@github-actions github-actions released this 05 Sep 02:21

Fixed

  • Discord Rich Presence Connection & IPC Handshake: Resolved Windows named pipe handshake timeouts by sanitizing the client ID string, ensuring robust packet framing, and adding defensive fallback handling.
  • Discord Rich Presence Activity & State:
    • Disabled presence publishing when the user is logged out or idle (removed the "No Desky" placeholder).
    • Fixed study timer synchronization on Discord by providing timestamps in Unix epoch milliseconds instead of seconds, eliminating the 0:00 counter freeze.
    • Added localized "Paused" status ("Em pausa", "Paused", "En pausa", "일시정지", "一時停止中", "暂停中") with frozen study timer during breaks, preserving the current subject name.
    • Continuously resumes the study timer from the exact accumulated elapsed time upon unpausing.
  • Study Timer Pausing & Accumulated Time: Fixed TimerNotifier.pauseStudy() resetting sessionElapsedMs to zero; introduced differential session tracking (lastSyncedSessionElapsedMs) so the study timer freezes on screen during breaks and smoothly resumes without resetting or duplicating server sync.
  • Purchased & Custom Avatar Persistence:
    • Fixed an issue where equipping purchased YPT studicons would revert to the default avatar (-1) upon initial login or after logging out and back in.
    • Implemented UserModel.extractStudiconId to strictly validate positive IDs (> 0) and prioritize custom studicon fields (csd) over negative fallback indicators (ssd: -1).
    • Added user-indexed local preference caching in AuthRepository (keyUserEquippedStudiconId_<id>), ensuring paid studicons remain equipped across app sessions.
  • Process Exit & Window Close Handling:
    • Configured windowManager.setPreventClose(true) and WidgetsBindingObserver.didRequestAppExit to intercept the custom title bar 'X' button, OS close commands, and system shutdown signals.
    • Automatically stops active study sessions with a 3-second defensive network timeout, enqueuing sessions to the offline sync queue (OfflineSyncRepository) if the network is unavailable or slow.
    • Flushes accumulated break duration on exit and cleanly releases Discord RPC IPC connections (clearPresence() and dispose()) before terminating the application process via windowManager.destroy().

Full Changelog: v1.0.2...v1.0.3

Desky v1.0.2

Choose a tag to compare

@github-actions github-actions released this 05 Sep 01:01

Added

  • Google Sign-Up Confirmation Modal: Added pre-check for account existence (POST /user/exist-username) and a confirmation dialog when no account is linked to the Google profile, preventing automatic creation of unconfigured accounts and guiding the user to complete their profile (nickname, study category, and country).
  • OAuth Callback Localhost Page Theme & i18n: Redesigned OAuth loopback completion page (http://127.0.0.1) with Desky AMOLED Dark theme, vibrant lilac accents, glassmorphic card, and automatic browser language detection (Accept-Language + navigator.languages supporting PT, EN, ES, KO, JA, ZH).

Fixed

  • Immediate Nickname Display on Sign-Up: Fixed an issue where the nickname chosen during social or email registration did not appear immediately after account creation, requiring a logout and login cycle to show up.
  • Account Deletion Confirmation Word: Simplified confirmation keyword in the account deletion dialog to typing "delete" instead of the full localized phrase ("Excluir Minha Conta").

Full Changelog: v1.0.1...v1.0.2

Desky v1.0.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 12:08

Added

  • Design System & Visual Redesign:
    • True AMOLED black background (#000000) with Material Design 3 geometry and surface elevations.
    • Vibrant Lilac brand primary (#A78BFA) and hourglass accent (#4A7FB5) extracted from new logo.
    • Apple SF Pro typography (SF-Pro-Text & SF-Pro-Display) with AppleEmoji fallback support.
    • Lavender study heatmap progression (heatmapL1 - heatmapL4).
    • Streamlined title bar without brand clutter.
    • Removed 43 legacy unused icon assets to reduce package footprint.
  • Focus & Study Timer Engine:
    • Real-time study stopwatch with standard mode and Pomodoro Technique support.
    • Automatic day boundary rollover adhering to user-configured reset hours.
    • Multi-session local buffering and offline study queue with auto-retry synchronization.
    • Floating Mini-Player and Strict Focus mode for distraction-free desktop sessions.
  • Subject & Task Management:
    • Full CRUD operations for study subjects with custom RGB color pickers, reordering, and archiving.
    • Planner with Daily To-Do lists and D-Day exam countdown calculation.
    • Weekly Timetable scheduler with drag-and-drop block placement.
  • Community & Social Groups:
    • Live Study group tracking with real-time status indicators (studying, resting, idle).
    • Categorized group discovery, search, join requests, member management, and group notices.
    • Group chat with reaction support and member interaction (wake/nudge alerts).
    • Global, category, and regional ranking leaderboards with podium visualizer.
  • Dynamic Avatar System:
    • High-definition Studicon avatar rendering with dynamic poses mapped to focus duration and study status.
    • Avatar store with category browsing, preview, and equipment management ("My Avatares").
  • SmartBook PDF Reader & Flashcards:
    • Integrated PDF reader with bookmarking, page memory, and fullscreen reading mode.
    • Spaced repetition flashcard system with 3D card flip animation, review ratings, and deck builder.
  • Insights, Analytics & Media:
    • Monthly study calendar, hourly heatmaps, and study distribution charts.
    • Timelapse recording engine with variable playback speed gallery.
  • In-App Notification Center:
    • Notification inbox with temporal grouping ("Today", "This week", "Earlier") and unread badges.
    • Persistent local deletion filter and batch "mark all as read" synchronization.
  • Multiplatform Packaging & Distribution:
    • Native x64 installers and packages for Windows (Inno Setup .exe and Microsoft Store .msix), macOS (.dmg), and Linux (.deb, .tar.gz).
    • Automated CI/CD release pipeline on GitHub Actions with multiplatform artifact verification.
    • Multi-language localization support across English, Portuguese, Spanish, Korean, Japanese, and Chinese.

Fixed

  • Rest Time Isolation: Prevented break/pause intervals from being credited to subject study durations by synchronizing completed focus slices immediately on pause.
  • Notification Deletion Persistence: Stored dismissed and cleared notification IDs in local persistent storage (SharedPreferences) to prevent deleted notices from reappearing upon feed reload.
  • Language & Typography: Resolved duplicate translation fallback keys and normalized language selection queries across regional endpoints.

Full Changelog: https://github.com/huneyoliv/desky/commits/v1.0.0