StudyDesk
com.StudyDesk.app
Zapstore _@zapstore.dev Republished from GitHub / F-Droid by the Zapstore main account.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Sep 24, 2026 1.15.1Patch release. The Suite milestone stays at v1.16. Fixes: grades of 100 or more now sync to your other devices. They used to stay on the device you entered them on; any that got stuck upload by themselves the next time you open the app. The web and desktop apps, and the phone app when you switch back to it, now fetch changes from your other devices when you return to them, instead of only after a restart. The course you add while setting up the app now syncs too, along with everything you added to it. Fixed in this release: - Grades of 100 or more never synced (#71). `grades.grade` was `numeric(4,2)`; widened to `numeric(7,2)` in production on 2026-09-24. Stuck grades re-upload on the next launch. - Open web tabs, desktop windows and resumed Android apps never pulled again after launch (#72). Returning to the window now drains the outbox and pulls, throttled to once every 30s. - Pulled rows were pushed straight back, once per pull and continuously once realtime is enabled (#72, Limekana/limecore#24). - The course created during onboarding was never uploaded, so its assignments, grades and notes failed their foreign key and were quarantined (#75). Quarantined children now revive when their parent lands.
More…
- The realtime channel logs rejections instead of failing silently (Limekana/limecore#24). Desktop: `StudyDesk-Desktop-Setup-1.15.1.exe` with its `.blockmap` and `latest.yml` for electron-updater. The installer is not Authenticode-signed (standing decision), so Windows shows an unrecognized-publisher prompt. - Sep 20, 2026 1.15.0One calendar, easier to get around. The Plan tab no longer has its own mini calendar. The Calendar has Month, Week and Day views, and you can tap from one into the next. On phones, your courses sit in a bar at the top of Plan. Home-screen widgets follow the app's light or dark look, or pick one in Settings → Appearance. You can log a past study session from the Log list, and Feedback is easier to find in Settings.
- Sep 18, 2026 1.14.1**StudyDesk 1.14.1**: patch release. **Fix:** on some Android 15+ phones the account button sat under the status bar and couldn't be tapped, so Settings was unreachable (reported on a Nothing Phone 2). The app now reads the real status-bar and gesture-bar sizes that Capacitor provides, so the top bar clears the status bar on every device, and the tab bar and pop-up messages clear the gesture bar. Cause, for the curious: StudyDesk targets Android 16, which draws apps edge-to-edge. The spacing used `env(safe-area-inset-*)`, which Android System WebView 139 and older report as 0. PR #63 · versionCode 28 · signed with the suite key `27e17d1f…55e4`.
- Sep 17, 2026 1.14.0## Plan & Timetable - Assignments can carry a due **time**, not just a date (#51). - A lesson can span several weekdays as one entry, and can move between School Year, Semester, and Jakso scopes. - Planned study blocks can repeat every N weeks, not just weekly. - Plan list: collapsible section headers, and a due-window badge instead of counting every dated assignment. ## Grades - Log a grade for a past term without an active course.
More…
- Weight can be entered as a factor, a percent of the course, or points, with ready-made scale presets for France, US GPA, IB, and Percentage. - Grade weight now draws as a proportional rail; attendance as a punch card. ## Onboarding - Three dismissible first-step prompts after creating a course, which stop appearing once you've done any one of them. ## Fixed - `weekParity` was silently cleared on every lesson edit since v1.13 — editing an alternating-week lesson destroyed its alternation. Fixed. - The term picker (added earlier this cycle) was inert for the same reason. - A due-time edge case (`24:00:00`) and a midnight/end-of-day ambiguity in the due-day reminder. Builds on v1.13.1, same signing key. - Sep 12, 2026 1.13.1## Notebook fixes - Notes are reachable on phone again — a navigation bug hid the note list/editor after creation, making new notes permanently unreachable on a phone-width screen. - Autosave is now total. Previously only blur/Enter/Tab/format-button committed a draft; backgrounding the app mid-keystroke (or the OS killing it) could lose text. Every exit path now commits, including tab/app backgrounding. - Checklist lines render as real checkboxes again — a CSS class collision made them show as small squares instead. ## New - Free placement in the Notebook: arrange text boxes anywhere on the page instead of a single fixed column. Existing notes are unaffected until you rearrange them.
More…
--- Builds on v1.13.0. Signed with the same Limecore Studio release key (cert `27e17d1f…c155e4`) used by NCC and LimeLog. - Sep 3, 2026 1.12.1Fixes logging a past study session. Saving one could do nothing at all — no session, no explanation — when the date or the length was left incomplete. The dialog now says which field it needs, and saves as soon as you fill it in. On the desktop app, signing in no longer strands you on a web page: it opens in your browser and hands you back. --- ### Verify your download
More…
Signed with the Limecore release key `27e17d1fba157da6eacde58485aab56066200cc45ad00bd518d828367ec155e4`. SHA-256: - `StudyDesk-1.12.1.apk` `523cf8bdf59cf5f44e450e50f8f1bac79ff388afd1edbd505c25c6cb95d38fb0` - `StudyDesk-Desktop-1.12.1.zip` `c79426c417a28cf6b18b1322ff7d28b1180eaee64a2114c2f20853aa77c022fe` - `StudyDesk-Desktop-Setup-1.12.1.exe` `7066b6a25fc47a09a2a4799e7ca82dbf6571505079ee45b2db0bd64a5ae19a6c` - Aug 30, 2026 1.12.0Fixes syncing, and makes the timer match how people actually study. Some courses never reached the server, blocking everything queued behind them. The app now spots what is missing and sends it, so a stuck sync clears itself. The timer takes any length up to four hours, saves your time if you stop early instead of discarding it, and has a stopwatch. A running block shows at the top of every screen. You can also set a display name and pick a symbol, colour or photo. ---
More…
### Verify your download All assets are signed with the Limecore release key `27e17d1fba157da6eacde58485aab56066200cc45ad00bd518d828367ec155e4`. SHA-256: - `StudyDesk-1.12.0.apk` `8c30139020a13ccd25862c65eec39f9addaf822faf5e9484ce4a767ae10a0b16` - `StudyDesk-Desktop-1.12.0.zip` `f8dcbf5e8fc84feee85f51b47233ce0551758af37604589052942005bd5597a6` - `StudyDesk-Desktop-Setup-1.12.0.exe` `26a6bf1bebd6eb38cbe0d4177445ecc8cafca19133d1d4b29d213d8a56ac5510` - Aug 29, 2026 1.11.1Text entry was broken for Chinese, Japanese and Korean keyboards — and, on some keyboards, for English too. Reported in #35. There turned out to be **two** independent defects. ## 1. The app was running a "simpler keyboard" mode that cannot compose characters `capacitor.config.json` carried `"android": { "captureInput": true }`. That makes Capacitor return `BaseInputConnection(webView, false)` instead of the WebView's real `InputConnection` — and a non-full-editor `InputConnection` does not support composing text. `setComposingText()`, the mechanism by which every IME builds a character, had nowhere to go. Chinese produced nothing at all. English failed too, because Gboard composes in English as well — the autocorrect underline *is* composition — and where Android falls back to `ACTION_MULTIPLE`, Capacitor writes straight into `document.activeElement.value`, which a React controlled input reverts on the next render. StudyDesk was the only app in the suite that set it. It arrived as scaffolding in a cloud-sync commit, never as a deliberate input decision. Removing it reverts to the Capacitor default that LimeLog and Nexus Command Center already ship.
More…
## 2. Enter submitted the form instead of confirming your characters A CJK IME uses Enter to commit the candidate selection. That keydown reached the app while composition was still open, so Enter chose characters and submitted the form at the same time. This was hidden behind the first defect and would have surfaced the moment the keyboard started working. All **eleven** Enter-to-submit text fields now route through a single guard that checks three signals — `isComposing`, `keyCode 229`, and its own composition tracking — because no one of them is reliable across Android WebView versions. ## Also in this release Nothing else. This is a patch release for StudyDesk only; the Suite stays on v1.11. Adds F-Droid changelogs in all ten locales. --- **Downloads** - `StudyDesk-1.11.1.apk` — Android, signed with the same key as 1.11.0, updates in place - `StudyDesk-Desktop-Setup-1.11.1.exe` — Windows installer - `StudyDesk-Desktop-1.11.1.zip` — the installer, zipped The desktop build carries the Enter-composition guard too, which matters if you type CJK on Windows. The `captureInput` defect was Android-only. 🤖 Generated with [Claude Code](https://claude.com/claude-code) - Aug 28, 2026 1.11.0## StudyDesk v1.11.0 - **Discord community link** added. - **Referral attribution** — self-reported "how did you hear about us" prompt. - **Desktop glance widget** — new always-on-top widget with a stable app origin, built on Electron. - **The daily sign-out is fixed (SESS-1).** The suite's single sign-on handoff was guessing the wrong one-time-token type on verification; it now tries the plausible types in sequence instead of failing over to a fallback path that was quietly revoking your session token family after a few hours. You should no longer be signed out of StudyDesk (or LimeLog) once a day. - Housekeeping: dependency and lint debt review. versionCode 21 (Android)
- Aug 24, 2026 1.10.1Fixes an update that would not open. Version 1.10.0 failed to start: the app opened to a blank screen and nothing could be used, in every build (Android, desktop, and web). This release contains that fix and nothing else. Nothing was lost. The app never got far enough to touch your data, so everything from 1.9.0 is still there. Sorry for the trouble. versionCode 20.
- Aug 20, 2026 1.10.0A calendar on the phone, and an end to the constant sign-outs. The week view has come to mobile: lessons, planned study blocks and other commitments laid out together, and you can add a block straight from the grid. Timetables are easier to read, and planned sessions can remind you. Being signed out every day or two is fixed — each app now holds its own session instead of sharing one they kept invalidating. Also: send feedback from Settings, and setup no longer repeats on a known account.
- Aug 7, 2026 1.9.0Suite v1.9 sync release (skips 1.8.x). Fixed home-screen widgets not opening the right page when tapped, and improved their layout. The delete-course confirmation dialog is no longer cramped. Avatar initials now reflect your account's display name. See fastlane changelogs for full locale text.
- Aug 2, 2026 1.7.0### Home-screen widgets Two of them. **Next Up** shows the single thing to do now. **Upcoming** lists the next five deadlines. Both redraw whenever you change something in the app, and open StudyDesk when tapped. The ranking lives in the web layer, which pushes a finished snapshot into native storage; the widgets only draw what they are given. "What's next" stays one product rule in one place rather than a second copy in Java that can quietly drift from the app. A widget is as fresh as the last time the app was open. For deadlines days away that is the right trade — the alternative is a background service polling Supabase, which costs battery and a permanent notification on modern Android to show data that barely moves. Built with `RemoteViews` in Java rather than Jetpack Glance as originally scoped. Glance needs the Kotlin Gradle plugin and the Compose compiler, and adding that toolchain to a reproducible F-Droid build that took three rounds to get green — while two fdroiddata MRs sit in review — was the largest risk in the feature. `android/*.gradle` are byte-identical to 1.6.2.
More…
### Tab icons and a support link The bottom tabs and sidebar use proper line icons instead of symbol glyphs. Settings gains a Ko-fi link if you want to support development. Named imports, so the bundle grew 6 kB. --- **Verification.** The widget code had never been compiled before this build — it was written where no Android SDK was available. `npm run build` ✅ · `npm run lint` at `--max-warnings 0` ✅ · `assembleDebug` and `assembleRelease` ✅ · F-Droid checklist section A re-verified · `versionCode` 16 → 17 · APK signing cert `27e1…55e4`, matching the adopted F-Droid key. Not yet verified on a physical device: widget placement, redraw-on-edit, and tap-through. F-Droid picks this up automatically on its next tag scan — no fdroiddata MR. 🤖 Generated with [Claude Code](https://claude.com/claude-code) - Jul 31, 2026 1.6.2Three fixes on the sign-up / sign-in path. ### The code field could not hold a valid code v1.6.1 shipped the in-app confirmation screen assuming a 6-digit code. This project's Supabase is configured to emit 8, so the field truncated every real code and the screen could never succeed. Fixed length-agnostically (accepts 6–10) rather than by hardcoding 8, and every digit count was removed from the copy in all 10 languages so it cannot go stale again if the Mailer OTP Length setting changes. ### The Confirm button darkened and did nothing There was no `:disabled` rule on the button style at all, so a blocked button rendered as a barely-darker button that silently swallowed taps. Disabled now looks disabled app-wide, and a short code gets an explicit message instead of silence.
More…
### The password box was smaller than the email box `input[type=password]` was missing from the shared input rule, so it fell back to browser defaults — no width, padding, border or font-size. Both fields now measure identically. --- **Verification:** `npm run build` ✅ · `npm run lint` ✅ · confirmed in-browser at 380×732 and 380×592 · F-Droid release checklist section A re-verified · APK signing cert SHA-256 `27e1…55e4`, matching the adopted F-Droid key. F-Droid picks this up automatically on its next tag scan (`AutoUpdateMode: Version` + `UpdateCheckMode: Tags`) — no fdroiddata MR needed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) - Jul 30, 2026 1.6.1## Assignments, exams and tasks now sync between devices Reported in #6: courses and grades synced between a phone and a tablet, but homework did not. That was not a sync bug — assignments, exams and manually added tasks had no cloud table and no code path at all, so signing out, signing back in and restarting could never have helped. They sync now, the same way courses and grades already did: last-write-wins on edit time, offline writes queued and retried, and live updates within a second or two of a change on your other device.
More…
**Your existing homework comes along.** The first time you open this version while signed in, everything already on the device is uploaded once, automatically. Nothing to trigger by hand. ## Confirm your account with a code New accounts can now be confirmed by typing the 6-digit code from the email, instead of having to tap the link. The link still works — the email carries both — but mobile mail apps sometimes pre-open links to build a preview, which spends the one-time token before you ever tap it. Typing the code is immune to that. --- ### Notes - versionCode 15. F-Droid picks this up automatically. - Deleting something on one device removes it everywhere, rather than being reconciled by edit time. For homework that is the expected outcome, and it is what deleting already did locally. - Exam topics travel with their exam. - Tasks tagged to a course survive that course being deleted; assignments and exams belonging to it do not, matching what already happened on-device. Signed with `27e17d1fba157da6eacde58485aab56066200cc45ad00bd518d828367ec155e4`.