Skip to content

Releases: Nemoyuzx/where_to_study

Where To Study v0.2.7

Choose a tag to compare

@Nemoyuzx Nemoyuzx released this 26 Aug 05:17

Where To Study v0.2.7

中文

HTTPS 域名迁移

  • Windows、Linux 与 Tauri 兼容构建、iOS、macOS、Android 和 HarmonyOS 的竞赛备用源统一迁移到 https://where-to-study.cn/api/contest-events
  • 校内竞赛通知统一迁移到 https://where-to-study.cn/api/contest-notices。数据仍由服务器脚本从学校公开通知页提取整理,条目链接回 HTTPS 原文。
  • 所有固定源仍校验 HTTPS scheme 与主机、拒绝重定向、限制响应大小,且不发送账号、密码、Cookie、token、课表、教室或作业数据。
  • Android 删除竞赛 API 的明文网络安全例外,iOS/macOS 删除对应 ATS 例外;发布脚本会检查安装包中不含旧主机,并确认包含新 HTTPS 域名。
  • README、隐私政策、安全说明和第三方声明已同步。

版本与分发

  • Web/Tauri、共享 Rust Core、CLI 和 TUI:0.2.7;Tauri Android versionCode=2010,legacy Tauri iOS build 46。
  • Android:0.2.7 (43),固定维护者证书签名的 Universal APK/AAB。
  • iOS 与原生 macOS:0.2.7 (73),由本机 Xcode 分平台重新归档并上传;两端均收到 Upload succeededEXPORT SUCCEEDED,按发布约定未继续检查 App Store Connect processing。
  • HarmonyOS:0.2.7 (1002012),DevEco Upload Product 已上传用于测试和发布的 APP,云测试结果为“通过”。打开 HarmonyOS 测试邀请(已含邀请码)
  • GitHub Release 保持 14 项公开制品:Windows x64 NSIS;Linux arm64/x86_64 Debian 包、AppImage、CLI 与 TUI;Android APK/AAB;HarmonyOS APP/HAP;以及原生 macOS Universal DMG。不上传 iOS 或 .sha256 文件。macOS DMG 是未公证的开源预览包。

验证

  • 新 HTTPS 接口均直接返回 200 application/json、不重定向;实际数据契约与全平台解析器兼容。
  • Node 契约/主题/发布门禁:116/116;Vite 生产构建与许可证新鲜度检查通过。
  • Tauri Rust:146 通过,1 项真实账号测试按设计忽略;共享 Core 55/55,CLI 14/14,TUI 14/14。
  • Apple:macOS 212/212;iOS 219/219 单元测试;23 项 iOS UI 中 19 通过、4 项仅 iPad 条件跳过、0 失败。严格 Swift 6、警告即错误、正式归档与本地 App Store export 检查通过;iOS 导出包主应用与 Widget 均为 Apple Distribution 签名且不含 get-task-allow
  • Android:186/186 Release JVM 测试、Lint、证书指纹、ZIP 对齐、APK/AAB 签名、版本、许可证与 HTTPS-only 网络策略校验通过。
  • HarmonyOS:113/113 ArkTS 单元测试、assembleHap/assembleApp、独立 HAP 签名验证、APP ZIP 结构和 DevEco 云测试通过。

English

HTTPS domain migration

  • Windows, Linux, Tauri-compatible builds, iOS, macOS, Android, and HarmonyOS now use https://where-to-study.cn/api/contest-events as the fixed contest backup endpoint.
  • School competition notices now use https://where-to-study.cn/api/contest-notices. The server-side script still extracts deadlines from public university notices, and item links point back to their HTTPS originals.
  • Every fixed source still pins the HTTPS scheme and host, rejects redirects, limits the response body, and sends no account, password, cookie, token, schedule, classroom, or assignment data.
  • Android no longer carries a cleartext network-security exception, and iOS/macOS no longer carry the corresponding ATS exception. Packaging gates reject the retired host and require the new HTTPS domain in final artifacts.
  • README, privacy, security, and third-party notices were updated together.

Versions and distribution

  • Web/Tauri, shared Rust Core, CLI, and TUI: 0.2.7; Tauri Android versionCode=2010; legacy Tauri iOS build 46.
  • Android: 0.2.7 (43), Universal APK/AAB signed with the pinned maintainer certificate.
  • Native iOS and macOS: 0.2.7 (73), freshly archived and uploaded separately with local Xcode. Both returned Upload succeeded and EXPORT SUCCEEDED; App Store Connect processing was intentionally not inspected afterward.
  • HarmonyOS: 0.2.7 (1002012). DevEco Upload Product uploaded the APP for testing and release, and the cloud-test result passed. Open the HarmonyOS test invitation (code included).
  • The GitHub Release keeps 14 public artifacts: Windows x64 NSIS; Linux arm64/x86_64 Debian, AppImage, CLI, and TUI builds; Android APK/AAB; HarmonyOS APP/HAP; and the native macOS Universal DMG. iOS and .sha256 files are not attached. The macOS DMG is an unnotarized open-source preview.

Validation

  • Both HTTPS APIs returned direct 200 application/json responses without redirects, and their live envelopes matched the existing cross-platform parsers.
  • Node contracts/theme/release gates: 116/116; Vite production build and license freshness passed.
  • Tauri Rust: 146 passed, 1 live-account test intentionally ignored; shared Core 55/55; CLI 14/14; TUI 14/14.
  • Apple: macOS 212/212; iOS 219/219 unit tests; 19 of 23 iOS UI tests passed with 4 iPad-only conditional skips and no failures. Strict Swift 6, warnings-as-errors, signed archives, and a local App Store export passed; the exported iOS app and widget are Apple Distribution signed without get-task-allow.
  • Android: 186/186 Release JVM tests, Lint, signer fingerprint, ZIP alignment, APK/AAB signing, version, license, and HTTPS-only packaged policy checks passed.
  • HarmonyOS: 113/113 ArkTS tests, assembleHap/assembleApp, standalone HAP signature verification, APP ZIP structure, and DevEco cloud testing passed.

Where To Study v0.2.6

Choose a tag to compare

@Nemoyuzx Nemoyuzx released this 24 Aug 19:37

Where To Study v0.2.6

中文

教学日历与日程

  • 所有图形客户端、CLI/TUI 统一使用 ISO 8601 公历周,并与真实教学周同时显示;跨年边界使用同一算法。
  • 全平台移除基于第 17、18 个周次的考试周推断,以及 UI、通知、系统日历、菜单栏和小组件中的考试标记。v1 兼容字段继续保留,但运行时与新缓存始终为空。
  • macOS/Tauri/HarmonyOS 桌面月格直接显示课程、作业、校内通知和其它活动 DDL;下方课程摘要只显示课程,作业、黄历和活动卡各保留一次。
  • macOS 年视图日期弹卡改为独立可滚动区域,并直接锚定被点击的日期格;窗口边缘自动换向,连续点击另一个日期时弹卡会直接移动。HarmonyOS 宽屏/二合一同步使用点击坐标定位;Tauri 年弹卡也验证了真实滚轮滚动。
  • 收藏管理改为真正的顶层或设置子页面,不再通过移除/隐藏主导航伪装跳转。

自适应布局与性能

  • Android 平板与折叠屏复用手机教学日历顶部和统一分页状态机,修复反向切换跳帧、日期锚点丢失和年视图横滑。
  • Android 折叠侧栏使用 foreground 层严格横纵居中;UI 坐标验证中心误差不超过 1 dp。
  • iPad、macOS、Android 宽屏、HarmonyOS 宽屏和 Tauri 宽屏的空教室结果均支持两栏。
  • Apple 月/年视图按日期一次索引课程、节假日和 DDL,缓存月/年快照并复用单个年份网格,减少拖拽和翻页时的重复 CPU 计算;未声称未经 Instruments 验证的 GPU 加速。
  • Apple build 72 将 iPhone 月、年快照拆分为独立缓存并按可见月份构建,移除详情整树交叉淡入、重复视图内数据加载、冗余折叠尾任务和逐帧滚动容器查找;黄历、作业和 DDL 状态只刷新各自卡片。macOS 年视图弹卡恢复日期格锚点并保留滚动。
  • Tauri 完成宽/窄屏、深/浅色、中/英文的日/周/月/年、设置、收藏和空教室视觉矩阵,并修复窄屏操作栏与收藏空页布局。
  • HarmonyOS build 1002011 将桌面快捷键焦点限制在宽屏侧栏,恢复手机账号/密码输入框的触摸焦点与系统输入法;键盘弹出后设置页使用 RESIZE 避让并保持可滚动。

版本与分发

  • Android:0.2.6 (42),固定维护者证书签名的 Universal APK/AAB。
  • iOS 与原生 macOS:0.2.6 (72),由本机 Xcode 分平台归档并上传 TestFlight;iOS 使用 Xcode 自动管理签名,macOS 使用手动 App Store profile 与 Installer Distribution 证书。两端均收到 Upload succeededEXPORT SUCCEEDED,按约定未继续检查 App Store Connect processing。
  • HarmonyOS:0.2.6 (1002011),Release 签名 HAP/App 构建、签名摘要验证与 113 项单元测试通过;DevEco 已更新上传 AppGallery Connect 的 0.2.6 测试版本且云测试通过。GitHub 同时保留已验证签名资产;打开 HarmonyOS 测试邀请(链接已含邀请码),邀请码为 A0IsJpKIcn3
  • GitHub Release 的原生 macOS Universal DMG 保持 0.2.6 (72),HarmonyOS APP/HAP 刷新为 0.2.6 (1002011);Windows、Linux、CLI/TUI 和 Android 资产因产品源码未变化而保持不变。DMG 包含 arm64 + x86_64、标准 Applications 快捷方式并通过签名和镜像校验;该预览包未使用 Developer ID 公证。v0.2.6 标签不强制移动,刷新资产来自标签后的 main 修复。

验证

  • Node 契约与主题测试:114/114。
  • Tauri Rust:146 通过,1 个需要真实账号和在线服务的测试按设计忽略。
  • Apple:macOS 211 项、iOS 218 项单元测试和 4 项关键 iPhone UI 回归通过;本机严格 Release 归档、双平台签名/隐私/App Group/许可证校验通过。
  • Android:186/186 Release JVM 测试、Lint、签名 APK/AAB、Phone/Fold UI smoke 与平板/折叠屏视觉检查通过。
  • HarmonyOS:113/113 ArkTS 单元测试、Pura 90 手机 16/16 UI 冒烟、两项输入框设备测试、MateBook Pro 宽屏 5/5 导航回归、Release APP/HAP 构建与签名摘要验证通过。
  • CLI/TUI:各 14 项测试通过。

English

Teaching calendar and schedules

  • Every graphical client plus the CLI/TUI now uses the same ISO 8601 calendar-week rule and shows it alongside the authoritative teaching week.
  • Positional exam-week inference and all exam badges were removed from UI, notifications, calendar export, menu-bar, and widget presentation. The v1 compatibility field remains but is always empty at runtime and in new caches.
  • Desktop month cells on native macOS, Tauri, and HarmonyOS now include courses, assignments, school notices, and other activity deadlines. The selected-day course summary contains courses only, while assignment, almanac, and deadline cards each appear once.
  • Native macOS year-day popovers now have an independently scrollable body anchored to the clicked day cell, flip at window edges, and move directly when another day is selected. HarmonyOS wide/two-in-one layouts now use the same click-anchor behavior. Tauri year popovers were also verified with real wheel input.
  • Favorite management is now a real top-level or Settings subpage instead of hiding the primary navigation as a routing workaround.

Adaptive layout and performance

  • Android tablets and foldables share the phone calendar header and pager state machine, fixing reverse-transition jumps, preferred-day loss, and year-view swiping.
  • Collapsed Android rail icons use a centered foreground layer; UI-bound checks keep both-axis center error within 1 dp.
  • Empty-classroom results use two columns when width permits on iPad/macOS, Android, HarmonyOS, and Tauri.
  • Apple month/year views index date data once, cache snapshots, and reuse a single year grid to reduce repeated CPU work during drag and paging. This release does not claim unmeasured GPU acceleration.
  • Apple build 72 separates iPhone month/year caches and builds year data by visible month, removes full-detail crossfades, duplicate view-owned loading, redundant detent tail tasks, and per-frame scroll-container searches. Almanac, assignment, and deadline updates now invalidate only their own cards. The macOS year popover keeps scrolling while regaining a real day-cell anchor.
  • Tauri received a wide/narrow, light/dark, Chinese/English visual matrix across planner, day/week/month/year, Settings, and Favorites.
  • HarmonyOS build 1002011 scopes desktop shortcut focus to the wide sidebar, restores touch focus and the system IME for the account/password fields on phones, and uses RESIZE avoidance so Settings remains scrollable above the keyboard.

Versions and distribution

  • Android: 0.2.6 (42), pinned-maintainer-certificate Universal APK/AAB.
  • Native iOS and macOS: 0.2.6 (72), archived and uploaded separately with local Xcode. iOS used Xcode-managed automatic signing; macOS used manual App Store profiles plus the Installer Distribution identity. Both uploads returned Upload succeeded and EXPORT SUCCEEDED; App Store Connect processing was intentionally not inspected afterward.
  • HarmonyOS: 0.2.6 (1002011), with Release-signed HAP/App builds, signature verification, 113 unit tests, phone IME regressions, and wide-layout navigation checks passed. DevEco refreshed the 0.2.6 AppGallery Connect test build and its cloud test passed. Open the HarmonyOS test invitation (code included); the invitation code is A0IsJpKIcn3.
  • The GitHub Release native macOS universal DMG remains at 0.2.6 (72) while HarmonyOS APP/HAP was refreshed to 0.2.6 (1002011). Windows, Linux, CLI/TUI, and Android assets remain unchanged because their product sources did not change. The v0.2.6 tag was not force-moved; refreshed assets come from post-tag main fixes.

Validation

  • Node contracts/theme: 114/114.
  • Tauri Rust: 146 passed, 1 live-account test intentionally ignored.
  • Apple: 211 macOS tests, 218 iOS unit tests, and 4 key iPhone UI regressions passed; strict Release archives and signing/privacy/App Group/license validation passed on both platforms.
  • Android: 186/186 Release JVM tests, Lint, signed APK/AAB validation, Phone/Fold UI smoke, and tablet/foldable visual QA passed.
  • HarmonyOS: 113/113 ArkTS tests, 16/16 Pura 90 phone UI checks, two focused input-field device tests, 5/5 MateBook Pro wide-navigation checks, Release APP/HAP builds, and signature verification passed.
  • CLI/TUI: 14 tests each passed.

Where To Study v0.2.5

Choose a tag to compare

@Nemoyuzx Nemoyuzx released this 24 Aug 09:33

Where To Study v0.2.5

中文

教学日历与动画

  • Android 日/周课程摘要改用真实展开图标,收起与展开拥有一致的空状态高度、更紧凑的字号与行距,并加入平滑高度和箭头旋转动画;月视图同时减少了底部导航预留空间。
  • iOS 月视图减少重复聚合和大范围隐式动画,修正跨月日期、反向连续翻页、切换日期及折叠状态的动画时序和性能。
  • iOS/macOS 模式切换改为先稳定方向、下一渲染事务再替换页面,修复月/日与年视图反向切换时旧页面沿错误方向退出;Picker、年视图跳转和键盘共用同一入口。
  • 全平台点击月视图中的非本月日期时,会按正确方向过渡到目标月份并选中对应日期。
  • 桌面端统一日/周/月/年的按钮、键盘和手势过渡方向;周视图全天日程按日期列对齐并显示截止时间,日期标题、全天区和对应时间列均可选中,带链接的事件可整卡访问。
  • 月视图和周视图只显示由个人课表学期起始日与真实课程周次计算出的教学周,不再混入公历周数;超出实际课表范围不再伪造周次。
  • 桌面月视图把课程与全天日程分层显示且不再弹出月日程窗口;年视图日期详情改为独立可滚动正文。
  • macOS、Windows/Linux Tauri 与 HarmonyOS PC 增加合理键盘操作:栏目切换、日/周/月/年切换、前后翻页、回到今天和关闭弹层。

收藏与自定义日程

  • 所有可开关活动日程的详情右侧新增独立星标按钮,原文链接与收藏操作互不干扰。
  • 收藏会在本机保存最多 500 条完整事件快照;即使关闭来源、请求失败或上游移除条目,收藏仍会保留在原日期并进入日、周、月、年视图。
  • 设置中的“日期详情与生活信息”新增独立收藏管理页,可返回设置并逐条取消收藏;清除本地数据会同时删除收藏。
  • 新增用户自定义 HTTPS JSON 日程源,接口格式见 custom-schedule-api.md。客户端执行无凭据、无 Cookie GET,拒绝重定向、本机和私有/保留 IP 字面量,限制 2 MiB、5000 条、每天 100 条和 370 天范围,并缓存成功响应 5 分钟。
  • 内置 DDL、云课堂作业和自定义日程在设置加载后按自然年独立预热;普通日期选择、同年翻页和视图切换只读内存缓存,不再把网络请求放进动画路径。
  • 支持系统日历的平台可在课程导入按钮下方单独导入本地已收藏日程,保留截止时间、来源详情与官方链接。

一致性、设置与隐私

  • 修复自动学期检测的核心解析:移动教务开学前真实返回的 week=0topInfo.semesterId、日期项 zcxqid=0 均会正确解析,由响应中的周次与日期反推第一周周一。
  • 保存完整教务凭据且开启自动检测时,客户端启动会去重刷新一次个人课表。教务真实元数据优先,同学期有效课表缓存次之,上海时区当前日期推断仅作临时兜底。
  • 自动模式下的旧学期缓存不再进入日历、小组件/服务卡片、桌面托盘、系统日历导入或课程通知;自动刷新失败时也不会把上一学期课程当成当前课程。
  • 全平台的默认学期号和默认第一周周一改为空;手动模式缺少或格式错误时会在保存与联网前明确拒绝,不再静默补入某个固定学期。
  • 全平台统一选中日期、作业 DDL、校内竞赛和其它 DDL 的浅色/深色颜色;月/年日期框继续用最多两层边框显示优先级最高的两类日程。
  • Android 移除设置页 Spinner,非二元选择改为动画分段控件;所有二元设置继续使用原生 Switch。其它平台的二元项同样使用开关控件。
  • HarmonyOS 手机、折叠屏、平板与 PC 同步收藏、自定义源、动画、颜色、教学周和英文布局语义。
  • 更新中英双语隐私说明:自定义源不接收教务凭据或个人数据;收藏只存本机,不上传、不跨设备同步,并随清除本地数据删除。
  • Windows/Linux 浏览器壳与原生 Apple、Android、HarmonyOS 均补充英文长文案回归;第三方 API 内容仍保持原文。

版本与分发

  • Android:0.2.5 (41)
  • iOS 与原生 macOS:0.2.5 (69),通过本地 Xcode 归档并上传 TestFlight;Apple 制品不进入 GitHub Release。
  • HarmonyOS:0.2.5 (1002008),构建与本地单元测试通过;AGC 发布仍需要维护者账号签名配置。
  • GitHub Release:Windows x64 NSIS、Linux arm64/x86_64 Debian/AppImage/CLI/TUI,以及维护者签名的 Android APK/AAB;.sha256 仅供发布校验,不作为附件。

English

Teaching calendar and motion

  • Android now uses a real disclosure icon for the day/week course summary, keeps empty expanded and collapsed heights consistent, tightens typography and spacing, animates both height and chevron rotation, and reduces excess month-view bottom-navigation reserve.
  • iOS month rendering performs less repeated aggregation and avoids broad implicit animations, improving cross-month selection, reverse paging, date changes, and sheet-state transitions.
  • iOS/macOS mode changes now prepare direction before replacing page identity in the next render transaction, fixing stale exit edges when reversing between year and day/month views; pickers, year jumps, and keyboard commands share the same path.
  • Selecting an out-of-month date now animates in the correct direction and lands on that date on every graphical platform.
  • Desktop button, keyboard, and gesture navigation now share the same directional transition. Week all-day events align with their date columns, show deadline times, and open linked cards directly; the date header, all-day cell, and matching timeline lane are selectable.
  • Month and week views display only teaching weeks derived from the personal timetable's authoritative term start and actual course weeks; Gregorian week numbers are no longer mixed into this label.
  • Desktop month cells separate courses from all-day events without a month-agenda modal, while year-day details use a dedicated scrollable body.
  • macOS, Windows/Linux Tauri, and HarmonyOS PC now provide keyboard actions for sections, calendar modes, paging, Today, and dismissing overlays.

Favorites and custom feeds

  • Toggleable event details now have an independent star button, separate from the source link.
  • Up to 500 complete favorite snapshots are stored locally. Favorites remain on their original dates and in every calendar view when a source is disabled, unavailable, or removes an item.
  • Settings now includes an independent Favorite Management page. Local-data reset removes favorites as well.
  • Users can add a custom HTTPS JSON schedule feed documented in custom-schedule-api.md. Clients send credential-free, cookie-free GET requests; reject redirects and local/private/reserved literal addresses; enforce 2 MiB, 5000-item, 100-per-day, and 370-day limits; and cache successful responses for five minutes.
  • Built-in deadlines, UCloud assignments, and custom events are prewarmed independently for the calendar year after settings load. Normal selection, same-year paging, and view changes read memory state instead of starting network work from an animation path.
  • Platforms with system-calendar support can separately import locally saved favorite events, including their deadline time, source details, and official link.

Consistency, settings, and privacy

  • Automatic term detection now accepts the academic service's real pre-term week=0 shape, reads topInfo.semesterId, prefers each date row's zc, normalizes xqid=0 as Sunday, and derives the first Monday from the returned week and date.
  • With complete saved credentials and automatic detection enabled, clients perform one deduplicated schedule refresh at launch. Live academic metadata wins, a valid same-term schedule cache is second, and the current Shanghai-date suggestion is only a temporary fallback.
  • In automatic mode, a previous-term cache is excluded from calendars, widgets/service cards, desktop tray content, calendar import, and course notifications. A failed automatic refresh therefore cannot surface last term's courses as current data.
  • Default term ID and first-Monday values are empty on every platform. Manual mode rejects missing or malformed fields before saving or networking instead of silently inserting a fixed semester.
  • Selected-date, assignment, school-notice, and other-deadline colors now match in light and dark appearances on every platform; month/year cells retain up to two concentric priority borders.
  • Android removes Settings Spinner controls: multi-choice values use animated segmented controls, while every binary value uses a native Switch. Other platforms likewise use switch controls for binary settings.
  • HarmonyOS phone, foldable, tablet, and PC layouts receive the matching favorites, custom-feed, animation, color, teaching-week, and English semantics.
  • The bilingual privacy policy now explains that custom feeds receive no academic credentials or personal data and that favorites stay on-device, do not sync, and are removed by local-data reset.

Versions and distribution

  • Android: 0.2.5 (41).
  • Native iOS and macOS: 0.2.5 (69), archived and uploaded to TestFlight with local Xcode. Apple artifacts are excluded from GitHub Release.
  • HarmonyOS: 0.2.5 (1002008), locally built and unit-tested; AGC distribution still requires maintainer signing configuration.
  • GitHub Release scope: Windows x64 NSIS; Linux arm64/x86_64 Debian, AppImage, CLI, and TUI; and maintainer-signed Android APK/AAB. .sha256 files remain verification-only and are not attached.

Where To Study 0.2.4

Choose a tag to compare

@Nemoyuzx Nemoyuzx released this 24 Aug 06:08

Where To Study v0.2.4

中文

教学日历

  • 全平台月视图和年视图支持双层同心 DDL 边框:外层、内层按“作业 DDL > 校内竞赛 > 其它 DDL”显示当天优先级最高的两类日程;三类内容仍会完整保留在日期详情和全天日程中。
  • 今天与选中日期改用独立、高对比的状态标识,不再占用或覆盖 DDL 分类边框。
  • Android 月/年日期格的外框与内框分别收细至 1.2dp0.8dp,在手机、折叠屏和平板上保持一致。
  • 桌面与平板日/周时间轴统一以实线表示整点、虚线表示课程节次,和 iOS 的时间层级一致。

桌面月视图

  • Tauri 月视图的星期栏、日期、周数、课程/DDL 事件行、字号、文字位置、间距和选中态按原生 macOS 月视图重新对齐。
  • 选中日期、今天、课程条和双层 DDL 边框可同时显示,避免一种状态覆盖另一种状态。

工程与发布

  • 自动生成的效果截图目录改为本地生成物并加入 Git 忽略规则;现有截图从版本控制移除,发布包与商店素材仍按各自流程单独生成和校验。
  • Android 发布门禁会解析 APK 的编译后 Manifest 与网络安全资源,确认默认禁用明文流量,并只为竞赛备用接口 101.201.29.29 保留单域例外。
  • Apple CI 为偶发的 XCUITest 输入/Accessibility 波动增加一次原生失败重试、45 分钟上限和失败 .xcresult 留存;持续失败仍会阻止发布。
  • Android 版本为 0.2.4 (37);iOS 与 macOS 版本为 0.2.4 (65)
  • GitHub Release 附件范围:Windows x64 NSIS、Linux arm64/x86_64 Debian/AppImage/CLI/TUI,以及固定维护者密钥签名的 Android APK/AAB。.sha256 仅用于内部校验,不作为附件。
  • TestFlight 分发范围:原生 iOS 与 macOS 0.2.4 (65),均已由本地 Xcode 完成签名归档并收到上传成功结果。Apple 制品不进入 GitHub Release;按发布约定未再打开 App Store Connect 检查后续状态。

English

Teaching calendar

  • Month and year views now support two concentric DDL borders on every platform. The outer and inner borders show the two highest-priority categories for the day: assignment DDL, school competition notice, then other DDL. All three categories remain available in date details and all-day schedules.
  • Today and the selected date now use independent, high-contrast indicators, so neither state consumes or replaces a DDL border.
  • Android uses thinner 1.2dp outer and 0.8dp inner borders consistently across phones, foldables, and tablets.
  • Desktop and tablet day/week timelines use solid lines for whole hours and dashed lines for class periods, matching the iOS time hierarchy.

Desktop month view

  • The Tauri month view now matches the native macOS geometry more closely, including weekday headers, date and week-number placement, course/DDL rows, font sizes, spacing, and selected states.
  • Selection, today, course rows, and two DDL border categories can remain visible at the same time.

Engineering and distribution

  • Generated screenshot directories are now local build artifacts covered by Git ignore rules. Existing screenshots are removed from source control, while release and store artwork continues to be generated and verified separately.
  • The Android release gate now parses the compiled APK manifest and network-security resource, enforcing HTTPS by default with a single-domain exception for the contest backup endpoint at 101.201.29.29.
  • Apple CI now retries a transient XCUITest failure once, allows 45 minutes for the full suite, and preserves failed .xcresult bundles. Persistent failures still block the release.
  • Android is version 0.2.4 (37); native iOS and macOS are version 0.2.4 (65).
  • GitHub Release scope: Windows x64 NSIS, Linux arm64/x86_64 Debian/AppImage/CLI/TUI, and maintainer-signed Android APK/AAB. .sha256 files remain internal verification artifacts and are not attached.
  • TestFlight scope: native iOS and macOS 0.2.4 (65). Both platforms completed signed local Xcode archives and returned successful upload results. Apple artifacts are not attached to GitHub Release, and App Store Connect was not opened for a follow-up status check.

Where To Study 0.2.3

Choose a tag to compare

@Nemoyuzx Nemoyuzx released this 23 Aug 14:10

Where To Study v0.2.3

中文

教学日历

  • 作业 DDL、校内竞赛通知以及学科竞赛、夏令营、黑客松 DDL 不再只出现在月视图详情卡片:日/周视图加入紧凑全天日程区,月格直接显示独立配色标记,年视图点击日期后也会显示对应详情。
  • 月视图和周视图分别使用独立的居中日程弹窗,+N 计数与弹窗内容保持一致;月格、年格按“作业 > 校内竞赛 > 其它 DDL”的优先级显示分类外框,同时用独立内环或日期圆点保留“今天”状态。
  • 日、周、月、年使用按可见范围预取的本地快照。日期选择和翻页动画先完成,网络结果只局部更新当前数据,不再因未缓存请求造成横向抖动、动画截断或整页重建。
  • 公开竞赛数据使用短时缓存,移动原生端会把并发范围请求合并为 single-flight;云课堂作业按账户复用一次全量同步,再在本地按日期过滤。
  • 公开竞赛与校内通知在应用启动、回前台或相关开关开启时后台预热;完整 feed 每次只解析一次并建立日期索引,日/周/月/年翻页仅查本地缓存。全年作业与公开 DDL 作为独立任务并发物化,各自完成即刷新,公开信息不再等待 UCloud 登录。
  • iOS、Android 与 HarmonyOS 手机端的日/周课程摘要区统一为“只折叠课程、全天日程始终可见”;日视图使用横向 3 项胶囊与 +N,周视图使用 7 列首项与 +N,并显示选中日期的完整课程列表。
  • 全平台选中日期改用独立的高对比蓝色,浅色为 #2563EB、深色为 #1D4ED8;今天标记和“作业 > 校内竞赛 > 其它 DDL”分类边框仍独立保留。设置页同步显示课程作业、校内竞赛和其它 DDL 的分类色点。
  • 桌面与平板的日/周时间轴补齐整点实线和课程节次起止虚线,选中列不会遮住网格线;月格按 iOS 语义保持无时间轴。Android 应用内全部字号整体缩小一级,桌面小组件字号同步调整。

多语言与跨平台一致性

  • 图形客户端设置新增“跟随系统 / 简体中文 / English”,并持久化界面语言。导航、教学日历、空教室、设置、状态、错误与来源说明均提供英文静态文案;课程、天气、黄历、作业与竞赛 API 返回内容保持原文。
  • 各端语言卡片统一移动到设置页底部,并位于隐私与本地数据之前;iOS 修复 English 切回中文后底部导航尺寸和位置未恢复的问题。
  • 各平台“应用设置”和受支持系统的“桌面小组件”布尔项统一使用 iOS 风格滑块开关;数值与枚举选择器保持原有语义,Windows/Linux 不新增课程小组件入口。
  • iOS 月视图翻页改为先准备本次方向、再提交目标月份,连续左滑后右滑或右滑后左滑都使用正确的进入/退出动画。
  • HarmonyOS 手机端同步近期移动月视图的滚动所有权、折叠状态、遮罩层级、无横向抖动与异步局部更新逻辑,同时保留折叠屏、平板和 PC 自适应布局。
  • Windows 与 Linux 延续原生桌面布局,不提供课程小组件;课程小组件只保留在系统能力完整且已实现对应组件的平台。
  • Windows 与 Linux 的天气卡片现与空教室主工作区保持一致的左右边距,节次选择中的节次名和时间统一居中。
  • Linux AppImage 在重打阶段移除会与新宿主 Mesa/EGL 冲突的旧 Wayland ABI 库,并隔离包内 GIO 模块,避免较新桌面系统出现白屏。

数据来源

  • 云课堂作业:北京邮电大学云邮教学空间。
  • 学科竞赛、夏令营与黑客松:Contest DDL,固定备用源为 contest-events API
  • 校内竞赛通知:服务器脚本从学校内部网站公开通知页提取整理,固定来源为 contest-notices API
  • 所有显示数据仅供参考,请以实际官方信息为准。

English

  • Assignment deadlines, school competition notices, academic competitions, summer camps, and hackathons now appear in day/week all-day rows, month cells with distinct colors, and year-date details.
  • Month and week views use separate centered schedule dialogs whose content matches each +N count. Month and year cells use assignment > school notice > other deadline outer-border priority while preserving today with an independent inner ring or date dot.
  • Calendar paging is decoupled from networking. Visible-range snapshots, account-scoped assignment reuse, short-lived contest caches, and single-flight range loading on native mobile clients prevent incomplete animations and unnecessary repeated requests.
  • Public contest and school-notice feeds now prewarm at startup, foreground entry, or when a related switch is enabled. Each full feed is parsed once into a date index, so calendar paging performs local lookups only. Year assignment and public-feed materialization run independently and repaint as soon as each source completes.
  • iOS, Android, and HarmonyOS now share the same mobile day/week presentation: only the selected date's complete course list collapses, all-day events stay visible, day view uses three horizontal capsules plus +N, and week view uses seven first-item-plus-+N columns.
  • Every platform now uses a dedicated high-contrast selected-date blue (#2563EB in light mode and #1D4ED8 in dark mode) while preserving today and deadline-priority indicators. Settings also show matching color dots for assignments, school notices, and other public deadlines.
  • Desktop and tablet day/week timelines now keep solid hour lines and dashed course-slot boundaries visible above the selected-date lane. Month grids remain timeline-free, matching iOS. Android app typography and widget text are reduced by one size step.
  • Graphical clients add a persistent System / Simplified Chinese / English interface setting. Static UI is localized while third-party API content remains unchanged.
  • Language cards now sit immediately before privacy and local-data settings. iOS also restores tab-bar geometry after an English-to-Chinese round trip and correctly animates month swipes when direction reverses.
  • Boolean app and supported-widget settings now consistently use iOS-style switch controls; numeric and enum pickers retain their semantics, and Windows/Linux still do not expose course widgets.
  • HarmonyOS receives the recent mobile calendar gesture, clipping, rendering, and async-update refinements. Windows and Linux retain their desktop layouts and do not expose course widgets.
  • Windows and Linux now align the weather card with the empty-room workspace gutters and center both lines inside every period selector.
  • Linux AppImages are repacked without the stale bundled Wayland ABI libraries that conflict with newer host Mesa/EGL stacks, and their GIO module lookup is isolated to the bundle.

Distribution

  • GitHub Release: Windows x64 NSIS, Linux Debian/AppImage and CLI/TUI builds, plus the maintainer-signed Android 0.2.3 (36) APK/AAB.
  • TestFlight: native iOS and macOS 0.2.3 (64) builds. Apple artifacts are not attached to GitHub Release.
  • Checksum sidecars are used for verification but are not attached to the public GitHub Release.

Where To Study 0.2.2

Choose a tag to compare

@Nemoyuzx Nemoyuzx released this 22 Aug 20:33

Where To Study v0.2.2

主要更新

  • iOS 与 Android 手机月视图保留“展开 / 收起 / 日程已展开”三档位置;到达最高档后继续上滑会滚动日期详情,课程作业、黄历和统一 DDL 卡片均可完整查看。iOS 的低速明确拖动也会稳定跨越一档,不再因预测惯性不足回弹。
  • 修复 iOS 日期详情已经到顶后,首次继续下拉偶尔仍被内部滚动区吞掉、需要第二次手势的问题;修复 Android 日期详情滚动容器缺少圆角边缘遮罩、卡片层级越出视口的问题。
  • 修复 iOS 展开月视图快速改选日期偶发无响应的问题,课程与节日条保持展示用途但不再形成点击死区;Android 日期选择改为单页月格行高、详情区域和选中状态连续过渡,不再生硬切换或出现双层日期重影。
  • 分离月视图动画与数据加载:Android 日期选择不再产生任何横向位移,未缓存月份的数据返回只局部更新当前节点,不会整页重建或截断分页;iOS 仅月格参与横向换月,常驻详情容器通过高度、裁剪和淡化连续更新。两端云课堂作业按账户共享一次全量请求,再在内存中按日期过滤。
  • 设置页将“学科竞赛”与“校内竞赛通知”拆成独立开关,并明确校内通知由脚本从学校内部网站公开通知页提取整理。
  • 设置页顶部新增“显示数据仅供参考,请以实际情况为准”中英双语提示。
  • GitHub、Windows、Linux、macOS、iOS、Android 与 HarmonyOS 的隐私说明统一为中英双语核心内容,补充天气、黄历、公开活动、云课堂作业、系统日历、通知与小组件的数据边界。
  • 修复 Android 折叠屏在侧栏收起时,导航图标相对 48dp 选中框水平或纵向偏移的问题。
  • 新增 13 英寸 iPad 横屏效果图与对应的 Xcode UI 截图回归。

Highlights in English

  • Month details on iOS and Android can now continue scrolling after the sheet reaches its highest detent, while retaining all three existing sheet states.
  • The first downward pull now changes the iOS month detent as soon as the detail list is truly at the top, and Android detail cards are clipped to the rounded scroll viewport.
  • Rapid date changes in the expanded iOS month view are no longer dropped, while Android date selection now animates one month grid continuously without duplicate date layers.
  • Month animation and data loading are isolated: first-load callbacks no longer rebuild or interrupt Android paging, iOS keeps one stable details viewport, and account-wide assignment fetches are shared across dates.
  • Competition DDL and BUPT school competition notices now have independent settings. School notices are explicitly identified as script-extracted from public pages on the university's internal website.
  • Settings now start with a bilingual reference-only notice, and privacy disclosures are aligned across GitHub and every graphical client.
  • Collapsed navigation icons are centered on both axes inside their selection boxes on Android foldables.
  • New 13-inch iPad landscape screenshots are generated and verified with Xcode UI tests.

分发

  • Windows:x64 NSIS 安装程序。
  • Linux:x86_64 与 aarch64 Debian、AppImage、CLI 和 TUI。
  • Android:维护者固定 release key 签名的 Universal APK 与 AAB,版本 0.2.2 (33)
  • iOS:正式签名的 0.2.2 (57) 仅通过 TestFlight 分发,不作为 GitHub Release 附件。
  • macOS:正式签名的 0.2.2 (52) 仅通过 TestFlight 分发,不作为 GitHub Release 附件。

GitHub Release 不附带 .sha256 文件;发布流程仍会在上传前后使用内部校验文件验证制品。

Where To Study 0.2.1

Choose a tag to compare

@Nemoyuzx Nemoyuzx released this 22 Aug 16:49

主要更新

  • 在月视图日期详情中原生同步北邮云课堂作业 DDL,复用应用已保存的账号凭据和统一认证流程,不依赖浏览器会话。
  • 联动查询上方加入默认折叠的今日、明日校区天气;日期详情加入带“宜/忌”的黄历卡片。
  • 统一活动 DDL 卡片同时读取 Contest DDL 与北邮校内竞赛通知,汇总学科竞赛、夏令营和黑客松截止日期,并在卡片底部标明第三方来源。
  • 设置页增加天气、黄历、竞赛、夏令营和黑客松开关;任一公开 DDL 来源暂时不可用时仍会保留其他可用来源。
  • 统一 Windows 与 macOS 的教学日历、空教室和设置布局,修复 macOS 教学日历内容宽度被固定在中间的问题。
  • 修复 iOS 将普通节日误标为休息日的问题;Windows 与 Linux 继续不包含课程小组件。

下载说明

  • Windows:x64 NSIS 安装程序。
  • Linux:x86_64 与 aarch64 的 Debian 包、AppImage、CLI 和 TUI。
  • Android:维护者固定 release key 签名的 Universal APK 与 AAB。
  • iOS 与 macOS:正式签名的 0.2.1 (50) 已上传 TestFlight,不作为 GitHub Release 附件。

本 Release 不附带 .sha256 文件。发布前已完成 Web、Rust、Android、Apple 与 HarmonyOS 全量测试,并以实时校内竞赛通知 API 验证解析契约。

Where To Study 0.1.9

Choose a tag to compare

@Nemoyuzx Nemoyuzx released this 21 Aug 15:18
a089937

主要更新

  • 丰富 Android、iOS 与 macOS 今日课程小组件,可配置课程数量并控制教师信息展示,设置页提供对应预览。
  • 完善 HarmonyOS 今日课程小组件,并对齐平板、PC 日历与设置布局。
  • 修复 TUI 已保存凭据在密码留空时的复用体验,并改进状态提示。
  • 修复 iOS 周视图全天日程按日期分栏显示。
  • 各端继续统一学期、课程地点、空教室与课表缓存契约。

下载说明

  • Windows:x64 NSIS 安装程序。
  • Linux:x86_64 与 aarch64 的 Debian 包、AppImage、CLI 和 TUI。
  • Android:维护者固定 release key 签名的 Universal APK 与 AAB。
  • iOS 与 macOS:正式签名的 0.1.9 (48) 已上传 TestFlight,不作为 GitHub Release 附件。

本 Release 不附带 .sha256 文件。构建与发布前已完成 Web、Rust、Android、Apple 与 HarmonyOS 测试。

Where To Study 0.1.8

Choose a tag to compare

@Nemoyuzx Nemoyuzx released this 20 Aug 15:59
04dfe2f

主要更新

  • 统一设置体验:课程提醒改为系统开关,并补齐桌面小组件展示数量、地点显示偏好。
  • 增加学期设置与自动检测:可自动识别当前学期,也可手动调整学期号和开学日期。
  • Tauri 设置页对齐原生 macOS 的双栏卡片布局,保留桌面端独立交互与视觉密度。
  • iOS、macOS 与 Android 小组件在当天无课程或尚未获取课表时统一显示“今日无课”。
  • CLI/TUI 复用共享 Rust 核心,凭据改为权限受限的独立本地文件,不依赖桌面密码库。
  • CLI/TUI 发布命令统一为 where-to-study-cliwhere-to-study-tui,移除 wts- 发布前缀。
  • 修复 HarmonyOS 教学日历弹层、分页动画和安全存储降级等问题,并恢复 macOS 侧栏交互。

下载说明

  • Windows:x64 NSIS 安装程序。
  • Linux:x86_64 与 aarch64 的 Debian 包、AppImage、CLI 和 TUI。
  • Android:维护者固定 release key 签名的 Universal APK 与 AAB。
  • iOS 与 macOS:正式签名的 0.1.8 (46) 已上传 TestFlight,不作为 GitHub Release 附件。

本 Release 不附带 .sha256 文件。构建与发布前已完成 Web、Rust、Android、Apple、HarmonyOS、Windows 和 Linux 测试;CLI/TUI 还在本机及 Linux 实机环境中通过真实教务链路验证,测试凭据已清理。

Where To Study v0.1.7

Choose a tag to compare

@Nemoyuzx Nemoyuzx released this 19 Aug 14:04

主要更新

  • 自动识别学期编号和开学日期,并保留第 17/18 个已存在教学周课程的‘试’考试标记。
  • 修复 macOS 左侧栏展开/收起按钮,侧栏状态现在可以正常切换;该改动与 iOS 导航状态隔离。
  • 重新对齐 HarmonyOS 的主题、空教室、教学日历和设置布局,并完成契约测试与 HAP 编译。
  • 完善桌面端悬停、动画、触控板翻页和无边框全宽布局,优化 Windows 与 HarmonyOS 稳定性。
  • Linux 凭据使用 Secret Service;arm64 与 x86_64 的 Debian 包、AppImage、CLI、TUI 均完成真实环境构建和启动测试。
  • 新增 macOS wts-cli 和 wts-tui,并统一共享 Rust 契约。
  • Apple 日期解析固定使用上海时区并执行严格校验;iOS 与 macOS 0.1.7 (44) 已上传 TestFlight。

下载说明

  • Android:签名 Universal APK 与 AAB(versionCode 25)。
  • Windows:x64 NSIS 安装程序。
  • Linux:arm64 与 x86_64 Debian 包、AppImage、wts-cli、wts-tui。
  • macOS:Tauri arm64 包、SwiftUI Universal 预览包、wts-cli、wts-tui。
  • iOS:无签名开发者 archive;正式签名版本请通过 TestFlight 获取。

公开 Release 只提供可下载二进制,不再附带 SHA-256 sidecar 文件;校验仍在本地和 CI 发布流程中执行。应用仅使用北邮移动教务 HTTPS 数据源,不会在请求失败时静默切换数据源。