Repository navigation
Photos: add AI-curated Memories and slideshows - #266
Merged
Merged
Conversation
guofoo
marked this pull request as ready for review
October 2, 2026 03:08
guofoo
force-pushed
the
feat/photos-ai-memories
branch
3 times, most recently
from
October 3, 2026 07:52
249b2cb to
2581bd7
Compare
main gave every system app its own agent for its notices (#274, 0212ff7). With this branch's `model` for Memories on top, two tests written on either side no longer held: - photos_bundle_is_admitted_by_the_shared_app_contract asserted that Photos has no agent; it now checks that the agent stays read-only. Memories are still one-shot model.complete calls. - photos_maps_youtube_and_camera_offer_notify_from_their_bundles expected Photos' grants to be storage and glance; they are now storage, model and glance.
guofoo
force-pushed
the
feat/photos-ai-memories
branch
from
October 3, 2026 08:27
2581bd7 to
a5f1a6e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Photos previously offered preset local moments. This adds a Memories browser where users can request AI-curated stories, optionally with a theme such as “summer with family,” then browse the narrative and play an ordered slideshow.
model.completeservice with bounded sample-catalog metadata and a strict response schema. Provider selection, credentials and budgets stay with the host.Validation on the refreshed main base (
be0700a):cargo test --locked --offline -p octosense-llm-service: 89 passed, one existing keychain test ignored; includes 14 Photos tests.cargo clippy --locked --offline -p octosense-llm-service --test photos_memories --no-deps -- -D warnings: passed.cargo build --locked --offline -p octosense --no-default-features --features app-hub: passed.python3 apps/photos/tests/ui.py: passed using isolated temporary data and a local mock provider; covers missing-provider guidance, prompted generation through the host service, navigation during generation, saving, slideshow controls and reopening.git diff --check: passed.This first version uses the bundled sample catalog's metadata; device-library import and image-pixel analysis are outside its scope. Live AI providers and physical phones remain unverified.
Storage follow-up validation (
433fdff): memory snapshots use the shareddata_pathhelper required by the system-app storage contract. All 31 shell storage tests and 14 Photos tests pass, along with the rebuilt shell and hidden UI save/reopen flow.Rebased on
maina7c746c0(2026-10-02)The branch conflicted with 67 newer commits on
main. Three files were resolved by hand:apps/photos/bundle/manifest.json:maingave Photosglanceand a read-only agent (System apps: every one has its own agent that can notify #274); this branch addsmodel. The manifest now has["storage", "glance", "model"]and the agent block.apps/README.mdandapps/README.zh-CN.md:main's rows for the other apps are kept. The Photos row combines both versions: Memories,glanceandmodel, plusmodel.completeandphotos.notify. The capability sentence listsnews,glanceandmodel.Two tests needed updating, both because #274 and this branch each changed Photos' manifest (separate commit
249b2cba):photos_bundle_is_admitted_by_the_shared_app_contractasserted that Photos has no agent, which stopped being true with System apps: every one has its own agent that can notify #274. It now asserts that Photos' agent stays read-only.photos_maps_youtube_and_camera_offer_notify_from_their_bundles(from System apps: every one has its own agent that can notify #274) expected Photos' grants to bestorageandglance. With this branch they arestorage,modelandglance.Re-run on the rebased head:
cargo test --locked -p octosense-llm-service: 89 passed.cargo clippy --locked -p octosense-llm-service --test photos_memories --no-deps -- -D warnings: passed.cargo build --locked -p octosense --no-default-features --features app-hub: passed.python3 apps/photos/tests/ui.py: PASS. It covers no provider, a prompt, the host completion, navigation during generation, a saved story, the slideshow, and reopening.tools/ci-local.sh --only desktop,phone,appson249b2cba(clean tree): PASSED, 33 of 33 steps, none skipped, 13m58s. The first run, before the second test fix, failed only that test.Rebased on
maind31edf46(2026-10-03), after #302Two rounds of conflicts, all in
apps/README.mdandapps/README.zh-CN.md:mainupdated the Maps row next to Photos' (Maps: the search and route map draws makepad's pre-baked world map #165, the pre-baked world map). The READMEs keep this branch's Photos row andmain's Maps row, each identical to its source.on_app_resizehook to the Photos bullet, which this branch splits into Photos Memories and Photos images. Both READMEs keep the Memories bullet and put fix(photos): adaptive full-height Home previews #302's text under Photos images.apps/photos/bundle/main.splashcombines #302's Home preview and this branch's Memories without conflict, and is identical to a plain merge of the two. The branch's diff againstmainis still 10 files.Re-run on
a5f1a6e1:tools/ci-local.sh --only desktop,phone,apps(clean tree): PASSED, 33 of 33 steps, none skipped. It includes fix(photos): adaptive full-height Home previews #302's resize tests. The first run failed oneai-hosttest that this branch does not touch: a race inmain's own tests, reported separately. The rerun passed.cargo test --locked -p octosense-llm-service: 91 passed.cargo clippy --locked -p octosense-llm-service --test photos_memories --no-deps -- -D warnings: passed.python3 apps/photos/tests/ui.py: PASS.