Android overhaul: stale comments and the module README
* Milestone and ownership notes that no longer hold ("owned by M5/M6/M8", "M8 replaces it", "(M8b)", "M7x add",
"proposed decision in the M5 report", which is D-027 and D-028) in build scripts, :core:design, :core:fakes, :data,
:app, :core:model and the settings string files.
* SyncEngine: the clock_skew KDoc sat orphaned above restampAfterClockSkew's; it now documents renewMutationId.
* libs.versions.toml header: no milestone, the drift date.
* README: the module table as built (no owners, no DebugFakesModule, which M8 removed), the test fixtures in the
architecture check and the shared screenshot harness.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
This commit is contained in:
+1
-1
@@ -569,7 +569,7 @@ fun TopBarSheet() {
|
||||
KvittTopAppBar(w("Ny utgift", "New expense"), navigation = TopBarNavigation.Close, actions = {
|
||||
KvittButton(w("Spara", "Save"), {}, icon = KvittIcon.Check)
|
||||
})
|
||||
// Edge to edge (M8b): a 24 dp status-bar inset as on a phone; the fill runs behind it, the content sits below it.
|
||||
// Edge to edge: a 24 dp status-bar inset as on a phone; the fill runs behind it, the content sits below it.
|
||||
KvittTopAppBar(w("Statistik", "Analytics"), scrolled = true, windowInsets = WindowInsets(top = StatusBarSample))
|
||||
}
|
||||
|
||||
|
||||
@@ -360,7 +360,7 @@ private const val INVITE_MAX_LINES = 3
|
||||
/**
|
||||
* Groups the raw invite code for display (S-1): "7K3MQX9D2HPA" shows as "7K3M-QX9D-2HPA". The field's value stays the raw
|
||||
* normalised code, so the platform keeps the cursor where the user typed and never lands it before a hyphen that
|
||||
* appeared after the fourth or eighth character (M8b). A hyphen is shown only between groups, followed by a zero-width
|
||||
* appeared after the fourth or eighth character. A hyphen is shown only between groups, followed by a zero-width
|
||||
* space so a line may break after any group: the line breaker does not break between a hyphen and a digit
|
||||
* ("QX9D-2HPA"), which cut the value at 200 % font scale. A cursor at a group boundary sits after the separator.
|
||||
*/
|
||||
|
||||
@@ -228,7 +228,7 @@ object KvittDimens {
|
||||
const val DISABLED_CONTAINER_ALPHA = 0.12f
|
||||
const val DELETED_ALPHA = 0.62f
|
||||
|
||||
// Screen measures of design-spec §4 that the feature modules use (moved here from the features, M6b).
|
||||
// Screen measures of design-spec §4 that the feature modules use (no feature writes a size of its own).
|
||||
/** App mark (Sunny, `primary`, `receipt_long`): S-1 brand block 88 with icon 44; S-22 About 96 with icon 48. */
|
||||
val appMark = 88.dp
|
||||
val appMarkIcon = 44.dp
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
|
||||
/**
|
||||
* The invite code field's grouping (S-1, M8b): the value is the raw normalised code and the hyphens are display only, so
|
||||
* The invite code field's grouping (S-1): the value is the raw normalised code and the hyphens are display only, so
|
||||
* typing one character at a time keeps the cursor after the last character, and deleting across a hyphen removes the
|
||||
* character before it. Each step mirrors the field: the edit lands at the original cursor, the field normalises the
|
||||
* text, and the cursor is shown through the offset mapping.
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import se.hagstedt.kvitt.design.KvittTheme
|
||||
import java.util.Locale
|
||||
|
||||
/**
|
||||
* A snackbar shown with [showKvittSnackbar] follows a language change while it is on screen (M6b item 5), and
|
||||
* A snackbar shown with [showKvittSnackbar] follows a language change while it is on screen, and
|
||||
* [styledStringResource] keeps the `<b>` parts of a resource.
|
||||
*/
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import se.hagstedt.kvitt.model.Account
|
||||
import se.hagstedt.kvitt.model.AccountId
|
||||
|
||||
/**
|
||||
* Scenarios of the account screens (S-5, S-6; M7b) on the household of [HomeScenarios]. Open S-5 with the account ids
|
||||
* Scenarios of the account screens (S-5, S-6) on the household of [HomeScenarios]. Open S-5 with the account ids
|
||||
* named here; S-6 creates or edits against the same household.
|
||||
*/
|
||||
object AccountScenarios {
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ import se.hagstedt.kvitt.model.Share
|
||||
import se.hagstedt.kvitt.model.SplitMode
|
||||
|
||||
/**
|
||||
* Scenarios of S-11 (analytics) and S-12 (drill-down), M7e. All share FakeScenarios.empty's household and clock
|
||||
* Scenarios of S-11 (analytics) and S-12 (drill-down). All share FakeScenarios.empty's household and clock
|
||||
* (today 2026-10-17); the expense data is plain and deterministic so every screenshot is reproducible.
|
||||
*
|
||||
* - [loaded]: May to October 2026, eleven default categories, four accounts (one archived), settlements none.
|
||||
|
||||
@@ -23,7 +23,7 @@ import se.hagstedt.kvitt.model.UpdateState
|
||||
import se.hagstedt.kvitt.model.UserId
|
||||
|
||||
/**
|
||||
* The household of the design spec's frames (S-4, S-5, S-16, S-17; M7b): Jacob (the viewer) and Anna, the accounts
|
||||
* The household of the design spec's frames (S-4, S-5, S-16, S-17): Jacob (the viewer) and Anna, the accounts
|
||||
* Vardag, Huset, Japan 2027 and Gotland 2026 (archived). The phone's clock is 17 October 2026 14:02 in Stockholm, the
|
||||
* last sync three minutes earlier. Balances come from the expenses through `:domain`: Vardag +1 184,50 kr, Huset
|
||||
* −3 084,50 kr, Japan 2027 −1 350,00 kr, Gotland 2026 0, globally "Du är skyldig Anna 3 250,00 kr".
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ class OnlineScript {
|
||||
|
||||
/**
|
||||
* The fakes of [FakeRepositories] with the online calls of the settings screens routed through one [script]: the
|
||||
* error, loading and in-progress states of S-14, S-15, S-19, S-20, S-21 and S-22 (M7f). Reads pass straight through.
|
||||
* error, loading and in-progress states of S-14, S-15, S-19, S-20, S-21 and S-22. Reads pass straight through.
|
||||
*/
|
||||
class ScriptedSettingsRepositories(scenario: FakeScenario) {
|
||||
val fakes = FakeRepositories(scenario)
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import se.hagstedt.kvitt.model.User
|
||||
import se.hagstedt.kvitt.model.UserId
|
||||
|
||||
/**
|
||||
* Scenarios of `:feature:settings` (M7f; S-13 to S-15, S-19 to S-22), as in the design spec's frames: Jacob (admin) and
|
||||
* Scenarios of `:feature:settings` (S-13 to S-15, S-19 to S-22), as in the design spec's frames: Jacob (admin) and
|
||||
* Anna, the accounts Vardag, Huset and Japan 2027, the 14 defaults plus the archived custom "Pant", four recurring
|
||||
* templates, both phones and one pending device invite. The phone's clock is 17 October 2026 14:02 Stockholm.
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@ package se.hagstedt.kvitt.model.analytics
|
||||
|
||||
import kotlinx.datetime.LocalDate
|
||||
|
||||
// Analytics input and output types (SPEC §14.5.4), package per the orchestrator's M2b decision.
|
||||
// Analytics input and output types (SPEC §14.5.4), package se.hagstedt.kvitt.model.analytics (D-017).
|
||||
|
||||
data class AnalyticsExpense(val date: LocalDate, val accountId: String, val categoryId: String, val amountOre: Long, val shares: Map<String, Long>)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user