feat(explorer): v0.8.6 Explorer maturity — workspace continuity, preferences, mascot - #57
Merged
Merged
Conversation
Implements rac/roadmaps/v0.8.x-explorer/v0.8.6-explorer-maturity.md. Pins file-based preferences, workspace persistence with /resume, the mascot with text-equivalent states, the Explorer-level performance check, and the presentation-only scope.
Implements rac/roadmaps/v0.8.x-explorer/v0.8.6-explorer-maturity.md. rac.explorer.preferences persists theme, mascot, animations, and artifact grouping as JSON under XDG config, tolerating a missing or corrupt file with defaults so onboarding never blocks. The app applies the theme, the browser honours the grouping, and /preferences shows the values and the file to edit (Explorer authors nothing, ADR-024).
Implements rac/roadmaps/v0.8.x-explorer/v0.8.6-explorer-maturity.md. rac.explorer.workspace records recently opened repositories and the last artifact per repository under XDG state. Launch records the repository, opening a context view records the artifact, and resume (. or /resume) reopens it — returning users resume without an abrupt auto-jump. Local state only; no login, cloud, or sync.
Implements rac/roadmaps/v0.8.x-explorer/v0.8.6-explorer-maturity.md. rac.explorer.mascot adds the lantern-carrying guide with state frames (idle, searching, discovery, success, empty, error), shown in the welcome and empty states. Every state carries equivalent text, so animations = false (steady frame) and mascot = false (text only) lose no information. The mascot gates nothing and modifies nothing.
…map:v0.8.6] Implements rac/roadmaps/v0.8.x-explorer/v0.8.6-explorer-maturity.md. Adds the workspace battery (preferences round-trip and fallbacks, recent dedupe/cap, resume, mascot text-equivalence) and app coverage for resume across sessions, /preferences, the mascot toggle, and responsiveness over a 1200-artifact corpus (Initiative 5).
…:v0.8.6] Implements rac/roadmaps/v0.8.x-explorer/v0.8.6-explorer-maturity.md.
Implements rac/roadmaps/v0.8.x-explorer/v0.8.6-explorer-maturity.md.
tcballard
force-pushed
the
claude/v0.8.6-explorer-maturity
branch
from
June 10, 2026 20:02
d7fbce5 to
0e6dc2a
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.
Summary
Implements
rac/roadmaps/v0.8.x-explorer/v0.8.6-explorer-maturity.md— the final v0.8.x milestone.Adds:
.or/resumereopens ittheme/mascot/animations/artifact_grouping, file-based under XDG config, shown via/preferencesRoadmap / ADR Trace
Roadmap:
rac/roadmaps/v0.8.x-explorer/v0.8.6-explorer-maturity.md(contract pinned in the first commit)Relevant ADRs and designs:
Scope
Included
rac.explorer.preferences—Preferences(theme, mascot, animations, artifact_grouping), JSON under$XDG_CONFIG_HOME/rac/explorer.json, tolerant load; the app applies the theme (guarded) and the browser honoursartifact_grouping;/preferencesdisplays values + pathrac.explorer.workspace— recent repositories + last artifact per repository under$XDG_STATE_HOME/rac/;record_openon launch,record_artifacton context open,resume_path,/resumeand the.bindingrac.explorer.mascot— the lantern guide with state frames (idle/searching/discovery/success/empty/error), shown in welcome/empty; every state carries a text labelresumeandpreferencesjoin the command registryExcluded (deliberately)
/preferencesis read-onlyProduct / Architecture Decisions
.//resume), not an automatic jump on launch — returning users resume on request without a surprising redirect.resume_pathreturns the last artifact only if it still exists in the current load.animations = false(steady lantern frame) andmascot = false(text only) both lose no information.themename must never break startup — applying it is wrapped and falls back to the default.OSError(continuity is a convenience, not a requirement).User-Facing Contract
CLI / Keys
Human Output (interactive)
/preferenceslists current values andEdit <path> to change these.JSON Output
No changes; no new contracts.
Exit Codes
Unchanged:
0session quit ·2not a directory or missingexplorerextra.Verification
Ran
Covered
/preferencesshows values andexplorer.json; the mascot appears by default and disappears (with no information lost) whenmascot = false; the shell renders 1,200 artifacts and browses within a generous time ceilingpreferences.py,workspace.py,mascot.py(no Textual/Core imports)Review Path
rac/roadmaps/v0.8.x-explorer/v0.8.6-explorer-maturity.md— the pinned contractsrc/rac/explorer/preferences.py,workspace.py,mascot.py— the three pure modulessrc/rac/explorer/adapter.py— load/record/resume, grouping,preferences_linessrc/rac/explorer/app.py,screens/repository.py,screens/context.py,widgets/__init__.py— theme, welcome header, recording,./resumesrc/rac/explorer/commands.py,screens/command.py—/resume,/preferencestests/test_explorer_workspace.pyand the app/adapter additionsdocs/cli.md,CHANGELOG.mdNotes For Reviewer
Implementation Process
Implemented with AI assistance under the roadmap contract.
Final scope, review, and acceptance decisions were made by the maintainer.