66ab2e6feat: new OG image with moon-phish, spaghetti fire, and sloth
A quirky illustration featuring:
- Moon with Phish logo embedded
- Pile of spaghetti on fire
- Sleepy sloth watching the chaos
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
d5c8d27feat: add play/share buttons to jam items on card back
Each jam on the flipped card now has:
- Play button (shows "Playing" state when active)
- Share button (copies link to clipboard)
- "No audio" indicator when no audio available
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
59dd7d8fix: filter tooltip positioning with proper flex wrapper
d35b0e9feat: interactive joyride tour with card flip
Tour now:
1. Shows year picker
2. Shows song search
3. Highlights a card (click to flip)
4. Auto-flips the card, highlights jam items (click to play)
5. Shows card footer (View All Jams button)
6. Shows filter controls
Fixed filter tooltip positioning with bottom-start placement.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
c828116feat: add joyride tour for desktop
Tour steps:
1. Year picker - explains random year selection
2. Song search - shows how to find songs
3. Browse card - demonstrates flip interaction
4. Filters - covers sort, min played, tour, and day options
Tour only shows for first-time visitors without URL params.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
90fe500style: bigger text on browse cards
Increased font sizes for better readability:
- Song name: 16px → 22px
- Stats: 13px → 18px (jamchart count: 22px)
- Better color hierarchy and spacing
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
37b393ffeat: vintage baseball card theme with flip animation
- Cream background, gold borders, black headers
- Cards flip to show jam list on click
- "Copy Link" instead of arrow icon for share buttons
- Click flipped card again to go to full detail view
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
bc502d9feat: browse mode with batting averages, random year default
1. Landing page shows all songs in browse mode with batting averages
2. Click any song to see its jam cards
3. Search with autocomplete to find songs
4. Default to random year for variety (no year in URL)
5. New smoother light blue/gray color scheme
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
13f9e7bstyle: baseball card aesthetic for jam cards
Cream/beige card backgrounds with dark info panels featuring
bright gold/white text. Retro baseball card look with gold
borders on jamchart entries.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
c5ff9e5feat: show jam cards when song selected instead of all-songs grid
When you select a song from the dropdown, the card view now shows
individual jam cards for each performance of that song with notes,
venue, duration, and play/share buttons.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
717b2defix: share links respect current view mode
Chart view sidebar now shares with view=chart, card view shares with
view=card, and playbar uses whatever view you're currently on.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
f156cabfix: remove dark theme from chart view sidebar
Reverts the dark theme colors I accidentally added to the chart sidebar.
Now using light background with appropriate text colors.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
97baccefeat: redesign chart view with sidebar layout
- Replace modal with persistent sidebar panel
- Chart dynamically resizes based on sidebar state
- Dark theme matching mobile aesthetic
- Sidebar shows jam details, notes, share button, play button
- Cleaner stats display with better typography
- Chart area has dark background with rounded corners
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
496bcd8build: rebuild for GitHub Pages with chart sidebar
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
b682aabbuild: rebuild for GitHub Pages with share buttons
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
fbf5e24feat: add share buttons + smaller baseball cards
- Add share button to play bar (copies shareable URL to clipboard)
- Add share button to each jam row in card back view
- Reduce card height from 520px to 420px for more compact display
- Fix type-only import in track-queries.test.ts
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
4a5474erefactor: remove bookmarks functionality
- Remove bookmark state, imports, and UI from desktop SongDeepDive
- Remove bookmark state, imports, and UI from mobile SongDeepDiveMobile
- Remove BookmarksView component entirely
- Simplify view mode toggle (only chart/card now)
- Reduces bundle size by ~9KB
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
43d949dfix: auto-migrate missing tables on startup
- Add DB.ensure_schema/1 to create missing tables with IF NOT EXISTS
- Called automatically after Repo.start_link in CLI
- Ensures node_documents, decision_sessions, etc. exist
- Creates indexes if missing
Fixes "no such table: node_documents" error on older databases.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
4065a55ci: add Elixir release workflow and beta Homebrew formula
- Add release-elixir.yml workflow for Burrito builds on tag push
- Builds for darwin-arm64, darwin-amd64, linux-amd64
- Creates GitHub release with artifacts
- Auto-updates Homebrew formula on stable releases
- Add deciduous@0.14.rb for beta installs:
brew tap notactuallytreyanastasio/deciduous
brew install deciduous@0.14
- Bump version to 0.14.0-beta.2
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
862e52dfix(elixir): fix serve command crash in eval context
- Explicitly start required OTP applications (Ranch, Cowboy) before
starting Plug.Cowboy server, since eval context doesn't start the
full application tree
- Fix Range deprecation warning in writeup.ex by using explicit step
for potentially reversed ranges
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
dd6ffe4feat(elixir): implement advanced commands (audit, pulse, narratives, archaeology)
- audit: Graph health report and commit association
- pulse: Decision graph health and activity dashboard
- narratives: Evolution narrative management (init, show, pivots)
- archaeology: Retroactive graph building (pivot chains, timeline, supersede)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
04c2218feat(elixir): implement diff command for multi-user sync
- diff export: Export nodes as patch file with filtering options
- diff apply: Apply patches idempotently (skips duplicates)
- diff status: List available patches in directory
- diff validate: Validate patch file structure
- Full test coverage (11 tests, 2 skipped for System.halt cases)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
9e2aaecfeat(elixir): implement sync and writeup commands
- sync: Export graph to JSON for static hosting, includes git history
- writeup: Generate PR writeup from decision graph with filtering
- Both commands have full test coverage (12 tests)
- DOT export skipped per user request
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
f153a6efeat(elixir): implement `serve` command with Plug router
Add HTTP server for decision graph viewer:
- Plug.Cowboy HTTP server with configurable port
- API endpoints: /api/graph, /api/commands, /api/documents
- SPA fallback for all GET requests (serves viewer HTML)
- Default HTML viewer with API endpoint links
Also adds Jason.Encoder derivations to all schemas:
- DecisionNode, DecisionEdge, CommandLog for JSON serialization
Includes 7 new tests for router endpoints.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
a322d57feat(elixir): implement `doc` subcommands for document management
Add full document attachment functionality to deciduex CLI:
- doc attach: attach files to decision nodes with SHA-256 hashing
- doc list: list documents with optional JSON output and filtering
- doc show: display detailed document information
- doc describe: update document descriptions
- doc open: open documents in default application
- doc detach: soft-delete documents
- doc gc: garbage collect orphaned files
Includes:
- NodeDocument schema with Jason.Encoder derivation
- Document mutations (attach, update_description, detach)
- Document queries (list, get, get_active_content_hashes)
- 13 new tests covering all subcommands
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
05b4baefeat(elixir): implement `status`, `prompt`, `delete` commands
- Add status command to update node status (pending/active/superseded/abandoned)
- Add prompt command to update node prompt in metadata
- Add delete command with --dry-run flag to preview deletion
- Delete removes node and all connected edges
- 7 new tests (128 total)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
edfe403feat(elixir): implement `add` command with full flag support
- Add Deciduex.Mutations module for write operations
- Add Deciduex.Commands.Add with all flags:
-c/--confidence, -p/--prompt, --prompt-stdin, -f/--files,
-b/--branch, --no-branch, --commit, --date, -d/--description
- Auto-detect git branch and expand HEAD to commit hash
- Warn on short prompts (< 200 chars)
- Log commands to command_log table
- Add elixir_uuid dependency for UUID generation
- 10 new tests (115 total)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
f010153refactor(elixir): move Credo checks to dev/ for prod compatibility
Credo is dev/test-only, so custom checks can't compile in prod.
Move checks to dev/checks/ which is only in elixirc_paths for dev/test.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
7b5e0e1docs(elixir): add migration status inventory
Document which CLI commands are migrated to Elixir vs still in Rust.
- 5/32 commands migrated (nodes, edges, show, graph, commands)
- Testing instructions for verifying delegation
- Iteration plan for remaining commands
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
079101fstyle(elixir): apply Credo fixes to lib/
- Add module aliases per Credo style (avoid fully-qualified calls)
- Refactor show.ex: extract helper functions, avoid nested case
- Format schema field declarations with parens: field(:name, :type)
- Extract burrito_args/0 in application.ex for clarity
- All changes pass credo --strict
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
4da0afdstyle(elixir): apply Credo fixes to tests
- Add module aliases in test files (Nodes, Edges, Graph, Show, etc.)
- Use SQL alias for Ecto.Adapters.SQL in test_fixtures.ex
- Format multi-line SQL.query! calls with proper indentation
- Wrap long capture_io lines per formatter rules
- All 105 tests still pass
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
f94ae5efeat(elixir): implement `link` and `unlink` commands
- Add Deciduex.Commands.Link with -r/--rationale and -t/--type flags
- Add Deciduex.Commands.Unlink to remove edges
- Validate that source and target nodes exist before linking
- 6 new tests (121 total)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5fe8e4bbuild(elixir): add release scripts and overlays
- Add bin/deciduex: dev wrapper that invokes mix release
- Add rel/cli.exs: entry point for release eval
- Add rel/overlays/bin/cli: shell wrapper for Rust CLI delegation
- Update .gitignore to exclude compiled binary and junk files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
d936c5fbuild(elixir): add Credo + Dialyxir with custom checks
- Add credo ~> 1.7 and dialyxir ~> 1.4 to dev/test deps
- Add mix precommit alias: format, credo --strict, dialyzer, test
- Configure dialyzer PLT paths to _build/plts
- Add .credo.exs with strict mode + custom checks
- Add NoNestedCase check (avoid case inside case)
- Add NoIfInsideCase check (avoid if inside case clauses)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
85bdc35feat: add copy markdown button to Q&A chat responses (#180)
* feat: add copy markdown button to Q&A chat responses
Reuses the existing CopyButton component to let users copy the raw
markdown of assistant responses in the Q&A dialogue. The button sits
at the top-right corner of each assistant message bubble.
* feat: add "Copy as Markdown" label and larger icon to Q&A copy button
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
e20d1f8Replace landing page with decision graph viewer
The index.html was the Loomkin marketing page, not the decision graph.
Now uses the deciduous viewer SPA with static graph-data.json fallback.
47 nodes, 56 edges, 15 linked commits.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fb849fbrelease: v0.13.9 - fix OpenCode TUI corruption from plugin stderr output
console.error also corrupts OpenCode's TUI display, not just console.log.
Both plugins now write to .deciduous/plugin.log instead of any console output.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
dc39b07default auto_check to true, add --no-auto-update flag to init
Auto version checking is now on by default for new projects.
Users can opt out during init with --no-auto-update, or toggle
later with deciduous auto-update off.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
24f7a31Polish README: fix node flow, add new feature coverage (#177)
* docs: polish README and update license field to Apache-2.0
- Reorganize README for better flow (Why → Install → Quick Start → Features → Reference)
- Fix Quick Start to follow canonical goal → options → decision flow
- Add Homebrew install, decision-graph from history, document attachments sections
- Consolidate AI assistant integration into one section
- Tighter prose, net -290 lines while covering more features
- Update Cargo.toml license field to match Apache-2.0 LICENSE
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: polish README — preserve all content, fix flow, add new features
- Fix Quick Start and Example Session to follow canonical goal → options → decision flow
- Add Homebrew as recommended install method
- Add new "Building Decision Graphs from History" section (4-layer /decision-graph skill)
- Expand OpenCode update table with modern directory structure (commands, skills, agents, tools)
- Add GitHub Pages sync exports git-history.json alongside graph-data.json
- Note GitHub Action for PNG/DOT cleanup after PR merge
- Expand web viewer features list (resizable panels, deep linking, keyboard nav)
- Add edge query flags (--to, --from) to commands reference
- Add diff status and --dry-run to multi-user sync commands
- Update license badge to Apache-2.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: apply README feedback — restructure skills, fix homebrew, add doc attachments to example
- Fix Homebrew install: add explicit `brew tap` step before `brew install`
- Example session now includes `deciduous doc attach` for specs and diagrams
- Move Document Attachments section up next to Example Session
- Rename skills section: Archaeology, Decision-Graph, and Narratives (de-emphasize pulse)
- Refocus /archaeology as "revisit, correct, execute" workflow
- Refocus /decision-graph as "visiting and documenting the past"
- Move "Building Decision Graphs from History" into skills section as /decision-graph
- /pulse demoted to brief paragraph at end of skills
- Remove Multi-User Sync section
- Remove GitHub Pages Deployment section
- Rename "How the Hooks Work" → "How the Hooks/Plugins Work"
- Update hooks table column headers to "Hook/Plugin"
- Update "Who Uses Deciduous" to match new skill descriptions
- Remove multi-user sync commands from Commands Reference
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
f510088docs: apply README feedback — restructure skills, fix homebrew, add doc attachments to example
- Fix Homebrew install: add explicit `brew tap` step before `brew install`
- Example session now includes `deciduous doc attach` for specs and diagrams
- Move Document Attachments section up next to Example Session
- Rename skills section: Archaeology, Decision-Graph, and Narratives (de-emphasize pulse)
- Refocus /archaeology as "revisit, correct, execute" workflow
- Refocus /decision-graph as "visiting and documenting the past"
- Move "Building Decision Graphs from History" into skills section as /decision-graph
- /pulse demoted to brief paragraph at end of skills
- Remove Multi-User Sync section
- Remove GitHub Pages Deployment section
- Rename "How the Hooks Work" → "How the Hooks/Plugins Work"
- Update hooks table column headers to "Hook/Plugin"
- Update "Who Uses Deciduous" to match new skill descriptions
- Remove multi-user sync commands from Commands Reference
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
e339caftest: add 27 init system tests for FileWriter, Validator, Version, templates
Cover write_batch overwrite mode, gitignore creation, markdown section
creation, executable skip behavior, version string format, workflow
conditional generation, backend behaviour compliance, and CLI parse edge cases.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
d9d07f7fix: replace Formatter with Logger, resolve credo strict issues in init system
Replace non-existent Formatter.success/warn/error/info calls with Logger
equivalents across init system files. Delete duplicate init_cmd.ex stub.
Fix credo issues: Enum.map_join, cond→if, nested depth, alias ordering.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
318d24bfeat: Goal 5 - Init system with Backend behaviour, FileWriter, templates
Implements project initialization with explicit boundaries:
- Init.Backend behaviour: name/0, detect?/1, files/1, post_init/1
- Three backend implementations: Claude, OpenCode, Windsurf
- FileWriter: single-responsibility I/O (write_if_missing, write_overwrite,
write_executable_if_missing, add_to_gitignore, update_markdown_section)
- Validator: pre-flight checks (backends required, git repo detection)
- Version: tracking via .deciduous/.version for update detection
- Templates.Shared: config.toml, GitHub workflows, docs viewer
- Init orchestrator: thin pipeline validate -> setup -> write -> post_init
- Update module: auto-detect installed backends, overwrite files
- CheckUpdate: version comparison for upgrade prompts
- CLI commands: init, update, check-update registered in parser
- 36 new tests (293 total), 0 failures
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
d245f9dfix: use traverse_errors for all CLI changeset errors, remove empty migration
- link, prompt, status commands now display actual changeset errors
via Formatter.format_changeset_errors instead of generic messages
- Remove empty add_loom_edge_types migration — edge_type is a string
column, new Ecto.Enum values need no DB migration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
c429459test: add 26 web layer tests for API controller and LiveView
Cover API filter combinations, edge serialization, stats edge cases,
LiveView phx-change filtering, badge rendering, metadata display,
edge rationale/counts, and bidirectional edge display.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7e217fbfeat: Goal 4 - Web layer with LiveView, graph components, JSON API
LiveView pages for graph index (with filters, stats, streams) and
node detail (edges, metadata, documents). Reusable graph components
(node_card, badges, stats_panel). JSON API at /api/graph with
filtering support. PubSub subscription for real-time updates.
25 new tests (257 total, 0 failures).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
17a726afix: flatten nested mount/2, auto-format long HEEx lines
- Refactor Show.mount to use with instead of nested case (credo depth)
- Auto-format long <.link> and <option> tag attributes in templates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
f0d5261test: add comprehensive tests for check-update, update, hooks, serve, doc, archaeology
Adds 24 new test cases covering:
- check-update: up-to-date, update-available, JSON output
- update: version overwrite
- hooks: list, status, JSON output, unknown subcommand, parse defaults
- serve: custom port, parse defaults, short alias
- doc: full attach/list/show/detach workflow, error paths
- archaeology: JSON dry-run, node creation, parse defaults
- commands list: output verification
398 tests total, 0 failures.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
d17ebc1feat: implement 14 stub CLI commands with real functionality
Replace all stub command implementations with full working versions:
- tag: add/remove/list tags on node metadata
- pulse: graph health dashboard with metrics and scoring
- narratives: BFS traversal to produce decision narrative chains
- archaeology: mine git log to create decision nodes from commits
- writeup: generate markdown reports from graph data
- backup: export full graph to timestamped JSON files
- sync: export graph-data.json and git-history.json for deployment
- init_cmd: create .deciduous/ directory structure and config
- hooks: list and check status of .claude/hooks scripts
- check_update: compare installed vs current version
- update: write current version marker to .deciduous/.version
- doc: full document lifecycle (attach/list/show/detach)
- serve: check Phoenix endpoint status and report URL
- themes: list/set/current theme stored in .deciduous/theme
Also includes:
- 460+ lines of new unit tests in commands_test.exs
- 859-line integration_test.exs with real git repos, real commits,
real DB operations (only Claude AI would need mocking)
- .claude/ template files (commands, skills, hooks, agents config)
324 tests passing, 0 failures. Compile clean, credo strict clean.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
af6f946fix: relax archaeology test for CI shallow clones
CI uses actions/checkout@v4 which does depth=1 shallow clone. The
archaeology command runs git log against the project repo, so only
1 commit is available. Assert non-empty instead of >= 3.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fb9f4e0fix: allow nil in GraphDocument type for pre-insert state
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
846c159feat: Goal 5 - Init system with Backend behaviour, FileWriter, templates
Implements project initialization with explicit boundaries:
- Init.Backend behaviour: name/0, detect?/1, files/1, post_init/1
- Three backend implementations: Claude, OpenCode, Windsurf
- FileWriter: single-responsibility I/O (write_if_missing, write_overwrite,
write_executable_if_missing, add_to_gitignore, update_markdown_section)
- Validator: pre-flight checks (backends required, git repo detection)
- Version: tracking via .deciduous/.version for update detection
- Templates.Shared: config.toml, GitHub workflows, docs viewer
- Init orchestrator: thin pipeline validate -> setup -> write -> post_init
- Update module: auto-detect installed backends, overwrite files
- CheckUpdate: version comparison for upgrade prompts
- CLI commands: init, update, check-update registered in parser
- 36 new tests (293 total), 0 failures
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
81cf73cci: trigger CI after retarget to main
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
a22597efeat: Goal 4 - Web layer with LiveView, graph components, JSON API
LiveView pages for graph index (with filters, stats, streams) and
node detail (edges, metadata, documents). Reusable graph components
(node_card, badges, stats_panel). JSON API at /api/graph with
filtering support. PubSub subscription for real-time updates.
25 new tests (257 total, 0 failures).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
44e1fbffix: use traverse_errors for all CLI changeset errors, remove empty migration
- link, prompt, status commands now display actual changeset errors
via Formatter.format_changeset_errors instead of generic messages
- Remove empty add_loom_edge_types migration — edge_type is a string
column, new Ecto.Enum values need no DB migration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
da38f9afix: replace Formatter with Logger, resolve credo strict issues in init system
Replace non-existent Formatter.success/warn/error/info calls with Logger
equivalents across init system files. Delete duplicate init_cmd.ex stub.
Fix credo issues: Enum.map_join, cond→if, nested depth, alias ordering.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5b88789fix: flatten nested mount/2, auto-format long HEEx lines
- Refactor Show.mount to use with instead of nested case (credo depth)
- Auto-format long <.link> and <option> tag attributes in templates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ff9aa90feat: implement 14 stub CLI commands with real functionality
Replace all stub command implementations with full working versions:
- tag: add/remove/list tags on node metadata
- pulse: graph health dashboard with metrics and scoring
- narratives: BFS traversal to produce decision narrative chains
- archaeology: mine git log to create decision nodes from commits
- writeup: generate markdown reports from graph data
- backup: export full graph to timestamped JSON files
- sync: export graph-data.json and git-history.json for deployment
- init_cmd: create .deciduous/ directory structure and config
- hooks: list and check status of .claude/hooks scripts
- check_update: compare installed vs current version
- update: write current version marker to .deciduous/.version
- doc: full document lifecycle (attach/list/show/detach)
- serve: check Phoenix endpoint status and report URL
- themes: list/set/current theme stored in .deciduous/theme
Also includes:
- 460+ lines of new unit tests in commands_test.exs
- 859-line integration_test.exs with real git repos, real commits,
real DB operations (only Claude AI would need mocking)
- .claude/ template files (commands, skills, hooks, agents config)
324 tests passing, 0 failures. Compile clean, credo strict clean.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
f0454dffix: flatten nested mount/2, auto-format long HEEx lines
- Refactor Show.mount to use with instead of nested case (credo depth)
- Auto-format long <.link> and <option> tag attributes in templates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ea4e1f2feat: Goal 4 - Web layer with LiveView, graph components, JSON API
LiveView pages for graph index (with filters, stats, streams) and
node detail (edges, metadata, documents). Reusable graph components
(node_card, badges, stats_panel). JSON API at /api/graph with
filtering support. PubSub subscription for real-time updates.
25 new tests (257 total, 0 failures).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
decd17bfix: use traverse_errors for all CLI changeset errors, remove empty migration
- link, prompt, status commands now display actual changeset errors
via Formatter.format_changeset_errors instead of generic messages
- Remove empty add_loom_edge_types migration — edge_type is a string
column, new Ecto.Enum values need no DB migration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ef7c0e0feat: Goal 5 - Init system with Backend behaviour, FileWriter, templates
Implements project initialization with explicit boundaries:
- Init.Backend behaviour: name/0, detect?/1, files/1, post_init/1
- Three backend implementations: Claude, OpenCode, Windsurf
- FileWriter: single-responsibility I/O (write_if_missing, write_overwrite,
write_executable_if_missing, add_to_gitignore, update_markdown_section)
- Validator: pre-flight checks (backends required, git repo detection)
- Version: tracking via .deciduous/.version for update detection
- Templates.Shared: config.toml, GitHub workflows, docs viewer
- Init orchestrator: thin pipeline validate -> setup -> write -> post_init
- Update module: auto-detect installed backends, overwrite files
- CheckUpdate: version comparison for upgrade prompts
- CLI commands: init, update, check-update registered in parser
- 36 new tests (293 total), 0 failures
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8296f65fix: replace Formatter with Logger, resolve credo strict issues in init system
Replace non-existent Formatter.success/warn/error/info calls with Logger
equivalents across init system files. Delete duplicate init_cmd.ex stub.
Fix credo issues: Enum.map_join, cond→if, nested depth, alias ordering.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0300ac4fix: resolve credo strict issues in adapter layer
- Use Enum.map_join instead of Enum.map |> Enum.join (4 instances)
- Add number underscores: 86400 → 86_400
- Extract append_session_context/2 to reduce nesting depth
- Alias Native adapter in Loom instead of using fully-qualified names
- Replace length/1 comparisons with pattern matching/!= []
- Auto-format long lines in conformance tests and behaviour spec
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
bd1db50feat: Goal 10 - Loom Adapter with DecisionGraph behaviour
DecisionGraph behaviour defining the adapter contract, Native adapter
wrapping the Graph context, and Loom adapter translating UUID IDs,
confidence/agent_name to metadata, and session FK to join table.
Adds :supersedes and :supports edge types for Loom compatibility.
Shared conformance tests ensure both adapters pass the same contract.
50 new tests (237 total, 0 failures).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fda5639fix: replace Formatter with Logger, resolve credo strict issues in init system
Replace non-existent Formatter.success/warn/error/info calls with Logger
equivalents across init system files. Delete duplicate init_cmd.ex stub.
Fix credo issues: Enum.map_join, cond→if, nested depth, alias ordering.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9ba1118fix: use traverse_errors for all CLI changeset errors, remove empty migration
- link, prompt, status commands now display actual changeset errors
via Formatter.format_changeset_errors instead of generic messages
- Remove empty add_loom_edge_types migration — edge_type is a string
column, new Ecto.Enum values need no DB migration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fd0b36dfeat: Goal 4 - Web layer with LiveView, graph components, JSON API
LiveView pages for graph index (with filters, stats, streams) and
node detail (edges, metadata, documents). Reusable graph components
(node_card, badges, stats_panel). JSON API at /api/graph with
filtering support. PubSub subscription for real-time updates.
25 new tests (257 total, 0 failures).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
698fd1ffix: resolve credo strict issues in adapter layer
- Use Enum.map_join instead of Enum.map |> Enum.join (4 instances)
- Add number underscores: 86400 → 86_400
- Extract append_session_context/2 to reduce nesting depth
- Alias Native adapter in Loom instead of using fully-qualified names
- Replace length/1 comparisons with pattern matching/!= []
- Auto-format long lines in conformance tests and behaviour spec
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2462c11feat: Goal 10 - Loom Adapter with DecisionGraph behaviour
DecisionGraph behaviour defining the adapter contract, Native adapter
wrapping the Graph context, and Loom adapter translating UUID IDs,
confidence/agent_name to metadata, and session FK to join table.
Adds :supersedes and :supports edge types for Loom compatibility.
Shared conformance tests ensure both adapters pass the same contract.
50 new tests (237 total, 0 failures).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
02be8e7feat: Goal 5 - Init system with Backend behaviour, FileWriter, templates
Implements project initialization with explicit boundaries:
- Init.Backend behaviour: name/0, detect?/1, files/1, post_init/1
- Three backend implementations: Claude, OpenCode, Windsurf
- FileWriter: single-responsibility I/O (write_if_missing, write_overwrite,
write_executable_if_missing, add_to_gitignore, update_markdown_section)
- Validator: pre-flight checks (backends required, git repo detection)
- Version: tracking via .deciduous/.version for update detection
- Templates.Shared: config.toml, GitHub workflows, docs viewer
- Init orchestrator: thin pipeline validate -> setup -> write -> post_init
- Update module: auto-detect installed backends, overwrite files
- CheckUpdate: version comparison for upgrade prompts
- CLI commands: init, update, check-update registered in parser
- 36 new tests (293 total), 0 failures
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
"Debut. Features Billy Strings on guitar and added vocals (and a nice jam, too)."
TAP TO SEE AND PLAY JAMS
What's Going Through Your Mind
.500
TAP TO FLIP BACK
8 jams
★
2024-08-07
10:29
Van Andel Arena · Grand Rapids, MI
Debut. Features Billy Strings on guitar and added vocals (and a nice jam, too).
★
2024-08-15
23:05
The Woodlands · Dover, DE
Nothing green here. With Trey back on lead vocals, a great version of the song breaks from what already seems like a signature lick to spark a huge jam. About seven minutes in, sound swells to inform that patterned bounce, and then the effects kick in, with Page laying heavy on his synths. Play coasts before, as one, the four become more active, propelling the play. Trey shears blocks of sound, an impossibly cool pattern, one that, on Fish's back beat, builds to a thrilling conclusion.
★
2024-08-31
16:34
Dick's Sporting Goods Park · Commerce City, CO
Question isn't when, but if "WGTYM?" won't jam. Seems improbable, given Trey's line from the vocal section is, like a drug, seemingly designed to bring the band back for more. Impressive, extended, synth-heavy improv runs to break for a very notable -> into "Crosseyed."
★
2024-12-31
17:14
Madison Square Garden · New York, NY
The centerpiece of the NYE '24 extravaganza with additional backing vocals, the jam takes a drastic turn into EDM, a genre heretofore unexplored on the Phish stage, and is interspersed with vocal quotes from several other Phish tunes (see setlist notes) before finally crashing -> into "CDT".
★
2025-02-01
?
Moon Palace · Quintana Roo, Cancun, Mexico
The first post-EDM version of "WGTYM" is a distinctly slower version of the song. However, the jamming out of the song remains top-notch. Fish takes the reins initially leading a driving, percussive jam. This later gives way to a feel-good explosion of jubilant play that evokes Phish on a beach. The band eventually winds its way back to the "Mind, mind, mind," refrain.
★
2025-06-24
42:40
Petersen Events Center · Pittsburgh, PA
-> from a fun "YEM". Given how strong its jamming was from the first few versions played, it may have seemed inevitable a HUGE version would appear. This 40 minute masterpiece is just that. Moving from section to section with deftness and poise. Clearly, the band feels comfortable jamming this song, and this may be the cream of the "WGTYM" crop. Must-hear.
★
2025-07-18
28:07
United Center · Chicago, IL
Though Trey hints early on that the answer to the question may be that there is "nobody home", there's actually plenty to discover in this wide ranging version that finds the band locking on to a handful of memorable progressions, moving seamlessly between sections, and soaring over peaks before accelerating through groove laden depths to deliver a sustained and fiercely rocking finale that eventually finds itself becoming suddenly "Crosseyed".
★
2025-09-14
17:34
Coca-Cola Amphitheater · Birmingham, AL
> from a AWOH. Patient, rhythmic, and hypnotic; the band takes an approach here that, while it feels familiar, is interpreted through the fresh lens of the past handful of years' inventive play and that occupies a space halfway between aggression and ambience. Fans of peak free exploration will want to seek out this version.
Disappointed that War does not lead to actual combined-arms conflict.
jeff
04:01 AM
that would be hard to conjure
jeff
04:02 AM
I am so excited that this works and is a successful combination of windows and old apple lol
Uechi Nerd
04:02 AM
Probably for the best, actually. That shit is very very messy.
Uechi Nerd
04:02 AM
I am intrigued and happy it works!
Uechi Nerd
04:03 AM
I respect the wizardry.
Visitor7804
04:05 AM
this is delightful.
jeff
04:06 AM
hell yeah visitor 7804, this is livin' brother
guy4get
04:07 AM
i've never felt so alive
EarlofVincent
04:09 AM
Commencing experiment in 3....2....
jeff
04:14 AM
1
leah
04:16 AM
hi!
leah
04:16 AM
this is lovely
jeff
04:21 AM
hi! lol I was just like what if I combined Mac and windows and added a flower tree of life and called it my homepage and then smoked some weed and made it happen in an empty mall in Connecticut
B. Droptables
10:51 AM
Always cool to play with your toys.
Visitor1128
08:47 AM
yo!
Visitor1128
08:48 AM
i can barely work my phone. what am i doing here?
jeff
09:04 AM
the phone is not optimized yet but it "kind of works" I am sorry lol
jeff
09:04 AM
you have to pick a username, then it goes to the chat, then if you hit the bottom tabs it'll let you go to the app sections.
Bobdawg
04:43 AM
Hi everybody this is my blog I hope you enjoy it I did some more changes and anyone can write a post here now for me.
dinkleberg
01:45 AM
ALL HAIL TREE OF LIFE
jeff
08:55 PM
hi Hacker News
jeff
04:28 PM
hey there I am not really Jeff
Mal Function
05:34 PM
Hey! Please reveal... how exactly do I actually use losselot on my Mac? I've run the git clone commend in Terminal.app and seem successfully to have installed into a new <losselot> sub-folder in my home folder but now???