summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Sonnet 5 <noreply@anthropic.com>2026-09-23 22:52:38 -1000
committerClaude Sonnet 5 <noreply@anthropic.com>2026-09-23 22:52:38 -1000
commita58e975d08a29500dd394a91208f471855135662 (patch)
tree915ce215665e84b8612c6bdc642f9540f68f0432
Fedora laptop's -workspace memory: listen/feedreader/podkit context
Adds workspace-layout.md, listen-handover-2026-09-21.md, and fedora-android-build-setup.md -- built on the fedora laptop, no filename overlap with tungsten's existing -workspace memory (doot/claudomator/ feedreader-on-tungsten/marine-cert scope). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sj3CoWEedM56bebByKgNxA
-rw-r--r--MEMORY.md3
-rw-r--r--fedora-android-build-setup.md20
-rw-r--r--listen-handover-2026-09-21.md35
-rw-r--r--workspace-layout.md20
4 files changed, 78 insertions, 0 deletions
diff --git a/MEMORY.md b/MEMORY.md
new file mode 100644
index 0000000..32b4979
--- /dev/null
+++ b/MEMORY.md
@@ -0,0 +1,3 @@
+- [Workspace layout](workspace-layout.md) — what each repo under /workspace is (listen, feedreader, podkit, devtools, ...)
+- [Listen handover 2026-09-21](listen-handover-2026-09-21.md) — queue-advance & notif skip-forward unverified by Peter; Phase 2 decisions pending
+- [Fedora Android build setup](fedora-android-build-setup.md) — JDK21 at ~/.jdks, SDK at ~/Android/Sdk, fixes for stale app/build/
diff --git a/fedora-android-build-setup.md b/fedora-android-build-setup.md
new file mode 100644
index 0000000..6489ac5
--- /dev/null
+++ b/fedora-android-build-setup.md
@@ -0,0 +1,20 @@
+---
+name: fedora-android-build-setup
+description: "How Android builds (Listen, FeeDreader) were made to work on Peter's Fedora 44 laptop — JDK and SDK location, and two stale-state traps"
+metadata:
+ node_type: memory
+ type: project
+ originSessionId: 0e4bffd6-5847-4b40-9037-6bfb9055e654
+ modified: 2026-09-21T21:30:50.235Z
+---
+
+As of 2026-09-21, on Peter's Fedora 44 laptop, building either `listen` or `feedreader` needed setup beyond the CLI's own Node/npm install:
+
+- **Fedora 44's repos have no `java-21-openjdk-devel`** (only `java-25-openjdk*` and a `java-latest` 27 EA build) — `sudo dnf install java-21-openjdk-devel` fails with "No match for argument". Worse, Java 25 itself can't run Gradle 8.14.3 (the version this repo is pinned to for Chaquopy compatibility, per `listen/CLAUDE.md`): the bundled Kotlin compiler's `JavaVersion.parse` throws `IllegalArgumentException: 25.0.4.1` — a parser bug, not a real incompatibility Gradle could work around.
+- **Fix applied**: downloaded Temurin JDK 21 as a portable tarball from Adoptium (`https://api.adoptium.net/v3/binary/latest/21/ga/linux/x64/jdk/hotspot/normal/eclipse`) into `~/.jdks/jdk-21.0.12.1+1` (no sudo needed), and set `org.gradle.java.home=/home/terst/.jdks/jdk-21.0.12.1+1` in `~/.gradle/gradle.properties` (user-global, untracked — applies to every Gradle project for this user, not just Listen).
+- **No system Android SDK either**: `/opt` isn't writable without sudo, and `/opt/android-sdk` (what both repos' `local.properties` pointed at, a stale value from a previous machine) doesn't exist here. Fix: installed SDK cmdline-tools into `~/Android/Sdk` (Google's `commandlinetools-linux-13114758_latest.zip`), ran `sdkmanager --licenses`, and installed `platform-tools`, `platforms;android-36`, `build-tools;36.0.0`, `ndk;27.2.12479018`. `local.properties` (gitignored, per-machine by design) was updated to `sdk.dir=/home/terst/Android/Sdk`.
+- **Stale `app/build/` from the old machine**: Chaquopy's `extractDebugPythonBuildPackages` failed following a symlink to `/usr/bin/python3.12`, which doesn't exist on this machine (it has 3.14). `app/build/` is gitignored, pure build output — `rm -rf app/build build` and rebuilding resolved it. If this recurs after a repo copy/sync from another machine, the fix is the same: delete the build directory, don't debug the symlink.
+
+**Why this matters**: none of this is written into either repo's CLAUDE.md (correctly — it's machine-specific, not project-specific), so it's easy to silently re-hit and waste a session rediscovering it. If `feedreader` build/test is attempted on this machine and hits the same JDK/SDK/stale-build issues, the fixes above apply identically — check `~/.jdks`, `~/Android/Sdk`, and `~/.gradle/gradle.properties` before reinstalling anything.
+
+**How to apply:** before debugging a Gradle failure on this laptop that looks like a JDK, SDK-location, or Python-symlink problem, check whether this setup is still in place first (`~/.jdks`, `~/Android/Sdk`, `~/.gradle/gradle.properties`) rather than re-deriving the fix from scratch.
diff --git a/listen-handover-2026-09-21.md b/listen-handover-2026-09-21.md
new file mode 100644
index 0000000..bb26798
--- /dev/null
+++ b/listen-handover-2026-09-21.md
@@ -0,0 +1,35 @@
+---
+name: listen-handover-2026-09-21
+description: State of the Listen app as of 2026-09-21 end of session — artwork/player/queue-reorder committed but unverified on-device; publish blocked on host name
+metadata:
+ node_type: memory
+ type: project
+ originSessionId: 0e4bffd6-5847-4b40-9037-6bfb9055e654
+ modified: 2026-09-21T22:00:48.962Z
+---
+
+Commit `7f634ca` ("Add artwork, a real player screen, and queue drag-reorder") landed on `main`,
+gate-green (COVERAGE_EXCEPTION used for the expected Media3-glue drop, matching the four prior
+uses in `listen/CLAUDE.md`). Implements the plan at Phase 2 pre-work Peter chose: artwork
+(Coil3, pinned to 3.3.0 — later versions need a newer Kotlin/Compose than this project runs),
+a real player screen (scrubbing, per-show persisted speed), and queue drag-and-drop reorder
+(`sh.calvin.reorderable`). Android Auto real-car verification is still deliberately deferred.
+
+**Not yet done, pick up here:**
+- **Never verified on a device.** No phone was connected this session (`adb devices` empty).
+ Build succeeded (`assembleDebug`), but nobody has actually looked at artwork rendering,
+ scrubbing, per-show speed persistence, or drag-reorder in the app. Do this first.
+- **Not published.** `/workspace/devtools/bin/publish-apk` refused: it's hard-gated to a host
+ named `tungsten` (the deploy box), and this session ran on `fedora`. That gate is deliberate
+ (its own comment: bypassing it once caused a "deploy to a sandbox" mistake). This needs a
+ decision from Peter — publish from wherever `tungsten` actually is, or explicitly add `fedora`
+ to the allowlist in `/workspace/devtools/bin/publish-apk` — not something to route around
+ silently.
+
+**Why:** the session hit its weekly limit mid-flow; Peter needed to reboot to get device access
+working and asked to just get the code built and committed rather than wait.
+**How to apply:** next session, check `adb devices` first — if a phone is present, sideload via
+`android-launch-check` and actually exercise the four features before considering this done.
+
+See also [[fedora-android-build-setup]] (still the environment this all ran under) and
+[[workspace-layout]].
diff --git a/workspace-layout.md b/workspace-layout.md
new file mode 100644
index 0000000..6091d2a
--- /dev/null
+++ b/workspace-layout.md
@@ -0,0 +1,20 @@
+---
+name: workspace-layout
+description: What each repo/directory under /workspace is and how they relate
+metadata:
+ node_type: memory
+ type: reference
+ originSessionId: 0e4bffd6-5847-4b40-9037-6bfb9055e654
+ modified: 2026-09-21T21:12:41.985Z
+---
+
+`/workspace` holds several of Peter's personal software projects, each its own git repo:
+
+- **listen** — Android podcast app (`org.terst.listen`), Peter's primary active project. Replacing Pocket Casts. See its own `CLAUDE.md` for full detail (TDD workflow, quality gate, phase status, domain notes).
+- **feedreader** (FeeDreader) — sibling Android RSS reader app. Separate repo, no shared module by design (see [[listen-feedreader-relationship]] if written). Only `Opml.kt` was ever transferable between the two.
+- **podkit** — standalone Go CLI, turns a playlist/video URL (via yt-dlp) or an existing RSS feed into a self-hosted private podcast feed. Unrelated to Listen's own in-app YouTube support (Listen uses embedded Chaquopy/yt-dlp directly, not podkit).
+- **devtools** — shared build/test/launch verification wrappers (`gradle-test`, `gradle-report`, `android-launch-check`, `android-ui`, `publish-apk`) used by both `listen` and `feedreader`. Mandatory per both repos' CLAUDE.md — never infer build/test/launch results from raw console or adb output.
+- **doot** — has a `NewServiceProxy` reverse-proxy helper that podkit's README references for path-prefix stripping when podkit is served behind it.
+- **can-can, lighting, scout, stash** — other personal projects, not yet explored in depth.
+
+`local.properties` (per-repo, gitignored) points at the local Android SDK — currently `/opt/android-sdk` on the Fedora laptop.