Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ concurrency:
cancel-in-progress: true

env:
FLUTTER_VERSION: '3.41.2'
FLUTTER_VERSION: '3.47.9'

jobs:
icons:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linux-packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
run: bash ../tools/install_linux_build_dependencies.sh
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.41.2'
flutter-version: '3.47.9'
cache: true
- name: Install locked dependencies
run: flutter pub get --enforce-lockfile
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
cache: gradle
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.41.2'
flutter-version: '3.47.9'
cache: true
- run: flutter pub get --enforce-lockfile
working-directory: app
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ concurrency:
cancel-in-progress: false

env:
FLUTTER_VERSION: '3.41.2'
FLUTTER_VERSION: '3.47.9'

jobs:
version:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/windows-packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.41.2'
flutter-version: '3.47.9'
cache: true
- run: flutter pub get --enforce-lockfile
- name: Validate watched folders on Windows
Expand Down
7 changes: 6 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,12 @@ Address review findings and required checks before merge. A PR's existence does
not make a requirement implemented or verified. After merge, record acceptance
evidence and close the completed implementation issue. Review the parent
requirement's remaining criteria before updating its specification status.
Create separate issues for deferred follow-up work.
Create separate issues for deferred follow-up work. Keep implementation diaries,
rollout results and review screenshots with the issue or PR; generated local
evidence belongs under ignored `app/build/`. Product behavior belongs in the
central documentation repository. Keep component documentation limited to setup,
public integration contracts and operating procedures. Do not add a feature
summary or a prose copy of code, tests or design tokens for each implementation.

## Releases and hotfixes

Expand Down
192 changes: 0 additions & 192 deletions DESIGN.md

This file was deleted.

28 changes: 0 additions & 28 deletions PRODUCT.md

This file was deleted.

13 changes: 7 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<p>
<a href="https://join.slack.com/t/papyrus-crew/shared_invite/zt-4btcyuevl-RVRivB9rreOiri4SQhVxdQ"><img src="https://img.shields.io/badge/Slack-Join%20the%20community-4A154B?logo=slack&logoColor=white" alt="Join the Papyrus community on Slack"/></a>
<a href="https://github.com/orgs/PapyrusReader/projects/1"><img src="https://img.shields.io/badge/GitHub-Project-blue?logo=github&logoColor=white" alt="GitHub Project"/></a>
<a href="https://papyrusreader.github.io/docs/"><img src="https://img.shields.io/badge/Documentation-darkslateblue?logo=gitbook&logoColor=white" alt="Documentation"/></a>
<a href="https://docs.papyrus-reader.com/"><img src="https://img.shields.io/badge/Documentation-darkslateblue?logo=gitbook&logoColor=white" alt="Documentation"/></a>
<a href="https://app.codecov.io/gh/PapyrusReader/client/branch/development"><img src="https://codecov.io/gh/PapyrusReader/client/branch/development/graph/badge.svg" alt="Coverage"/></a>
<a href="https://github.com/PapyrusReader/client/tree/master?tab=AGPL-3.0-1-ov-file"><img src="https://img.shields.io/badge/License-AGPL--3.0-blue" alt="License"/></a>
</p>
Expand Down Expand Up @@ -64,7 +64,7 @@ selection-based reader annotations remain future work.

### Prerequisites

- Flutter 3.41.2, matching the CI SDK: [installation guide](https://docs.flutter.dev/get-started/install)
- Flutter 3.47.9, matching the CI SDK: [installation guide](https://docs.flutter.dev/get-started/install)

### Patched dependencies

Expand Down Expand Up @@ -127,7 +127,10 @@ For local web auth links, add these entries to `/etc/hosts`:

## Documentation

See [PapyrusReader/docs](https://github.com/PapyrusReader/docs).
See [PapyrusReader/docs](https://github.com/PapyrusReader/docs) for the user manual
and specification. This repository keeps [installation instructions](docs/INSTALL.md),
[release setup](docs/RELEASING.md) and [Windows acceptance checks](docs/WINDOWS_TESTING.md)
with the packaging tools that consume them.

## Technology stack

Expand All @@ -148,7 +151,7 @@ Keep actionable bug reports and technical decisions in GitHub issues and pull re
### Setup

1. Fork and clone the repository
2. Install dependencies from `app/` using the Flutter version in CI (currently 3.41.2):
2. Install dependencies from `app/` using the Flutter version in CI (currently 3.47.9):

```bash
cd app
Expand Down Expand Up @@ -196,8 +199,6 @@ Keep actionable bug reports and technical decisions in GitHub issues and pull re
| [docs](https://github.com/PapyrusReader/docs) | Documentation |
| [papyrus](https://github.com/PapyrusReader/papyrus) | Development workspace |

See [About and support](docs/about-and-support.md) for release notes, licenses, and feedback.

## Google Play testing builds

See [the release guide](docs/RELEASING.md) for signed Android App Bundles,
Expand Down
4 changes: 4 additions & 0 deletions app/android/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false
2 changes: 1 addition & 1 deletion app/android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip
4 changes: 2 additions & 2 deletions app/android/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ pluginManagement {

plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
id("com.android.application") version "8.9.1" apply false
id("org.jetbrains.kotlin.android") version "2.1.0" apply false
id("com.android.application") version "8.11.1" apply false
id("org.jetbrains.kotlin.android") version "2.2.20" apply false
}

include(":app")
11 changes: 6 additions & 5 deletions app/lib/goals/goal_calendar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,22 +38,23 @@ class GoalCalendar {

static DateTime local(DateTime date, String zone) => tz.TZDateTime.from(date, location(zone));

// TZDateTime.toUtc() retains timezone-specific equality. Calendar keys need native UTC dates.
static DateTime midnight(DateTime date, String zone) {
final day = local(date, zone);
return tz.TZDateTime(location(zone), day.year, day.month, day.day).toUtc();
return tz.TZDateTime(location(zone), day.year, day.month, day.day).native;
}

static DateTime nextDay(DateTime date, String zone) {
final day = local(date, zone);
return tz.TZDateTime(location(zone), day.year, day.month, day.day + 1).toUtc();
return tz.TZDateTime(location(zone), day.year, day.month, day.day + 1).native;
}

static DateTime deadline(DateTime civilDate, String zone) =>
tz.TZDateTime(location(zone), civilDate.year, civilDate.month, civilDate.day + 1).toUtc();
tz.TZDateTime(location(zone), civilDate.year, civilDate.month, civilDate.day + 1).native;

static DateTime dayOffset(DateTime date, int offset, String zone) {
final day = local(date, zone);
return tz.TZDateTime(location(zone), day.year, day.month, day.day + offset).toUtc();
return tz.TZDateTime(location(zone), day.year, day.month, day.day + offset).native;
}

static GoalRange calendarPeriod(GoalPeriod period, DateTime date, String zone) {
Expand All @@ -76,7 +77,7 @@ class GoalCalendar {
GoalPeriod.custom => throw ArgumentError('A deadline needs explicit dates'),
};

return GoalRange(start.toUtc(), end.toUtc());
return GoalRange(start.native, end.native);
}

static DateTime effectiveNow(ReadingGoal goal, DateTime now) =>
Expand Down
Loading
Loading