Files
crosspoint-reader-mod/chat-summaries/2026-03-02_06-48-summary.md
cottongin dfbc931c14 mod: Phase 1 - bring forward mod-exclusive files with ActivityManager migration
Brings ~55 mod-exclusive files to the upstream-based mod/master-resync branch:

Activities (migrated to new ActivityManager pattern):
- Clock/Time: SetTimeActivity, SetTimezoneOffsetActivity, NtpSyncActivity
- Dictionary: DictionaryDefinitionActivity, DictionarySuggestionsActivity,
  DictionaryWordSelectActivity, LookedUpWordsActivity
- Bookmark: EpubReaderBookmarkSelectionActivity
- Book management: BookManageMenuActivity, EndOfBookMenuActivity
- OPDS: OpdsServerListActivity, OpdsSettingsActivity
- Utility: DirectoryPickerActivity, NumericStepperActivity

Utilities (unchanged):
- BookManager, BookSettings, BookmarkStore, BootNtpSync
- Dictionary, LookupHistory, TimeSync, OpdsServerStore

Libraries: PlaceholderCover, TableData, ChapterXPathIndexer
Scripts: inject_mod_version, generate_book_icon, preview_placeholder_cover
Docs: KOReader sync XPath mapping

Migration changes:
- ActivityWithSubactivity -> Activity base class
- Callback constructors -> finish()/setResult() pattern
- enterNewActivity() -> startActivityForResult()
- Activity::RenderLock&& -> RenderLock&&

These files won't compile yet - they reference mod settings and I18n
strings that will be added in subsequent phases.

Made-with: Cursor
2026-03-07 15:10:00 -05:00

1.4 KiB

OPDS Per-Server Default Save Directory

Task

Add a configurable default download path per OPDS server. The directory picker now starts at the server's saved path instead of always at root. New servers default to "/".

Changes Made

Modified files

  • src/OpdsServerStore.h -- Added downloadPath field (default "/") to OpdsServer struct.
  • src/OpdsServerStore.cpp -- Serialize/deserialize download_path in JSON. Existing servers without the field default to "/".
  • src/activities/settings/OpdsSettingsActivity.cpp -- Added "Download Path" as field index 4 (shifted Delete to 5). Uses DirectoryPickerActivity as subactivity for folder selection. Displays current path in row value.
  • src/activities/util/DirectoryPickerActivity.h / .cpp -- Added initialPath constructor parameter (default "/"). onEnter() validates the path exists on disk and falls back to "/" if not.
  • src/activities/browser/OpdsBookBrowserActivity.cpp -- Passes server.downloadPath as initialPath when launching the directory picker.
  • lib/I18n/translations/*.yaml (all 9 languages) -- Added STR_DOWNLOAD_PATH with translations.
  • lib/I18n/I18nKeys.h, I18nStrings.h, I18nStrings.cpp -- Regenerated.

Follow-up Items

  • Test on device: verify settings UI shows/saves path, picker opens at saved path, fallback works when directory is removed