e57869aFlatten module structure for Temper nightly compatibility
- Add config.temper.md to define "orm" library (required by Temper)
- Move sql/ files into src/ (sql_builder, sql_model, sql_imports, sql_tests)
to avoid cross-module @I stage parallelism failures
- Move test files from test/ into src/ for same-module visibility
- Remove intra-module import statements (same-module files share scope)
- Convert when expressions to if-else chains (nightly parser compat)
- Fix nullable Int32? narrowing with local variable pattern
- Rename test helper sid->csid in changeset_test to avoid name collision
All 51 tests pass locally with temper test -b js.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
345137eRemove ### headers inside class bodies for nightly parser compat
The Temper nightly (0.6.1-dev) parser treats ### markdown headers as
code block boundaries, breaking class method continuity and causing
parse errors like ClassName.if(). Replace all ### headers inside class
bodies with // inline comments so each class is one continuous block.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
68a4a5aExtract BoolField logic to helper to fix nightly parser
The temper nightly parser cannot handle multi-line if/else blocks
inside when arms. Extract the bool-to-SqlBoolean conversion to a
separate parseBoolSqlPart() method so the when arm is a single
expression call.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
551b566Inline secure-composition SQL into ORM source tree
Instead of vendoring all of secure-composition as a separate nested
project (which confuses temper's project boundary detection), include
only the SQL files (builder, model, imports, tests) directly under
src/sql/. This makes everything one temper project with clean imports.
Import paths updated:
- src/*.temper.md: ../secure-composition/src/sql/* → ./sql/*
- test/query_test.temper.md: ../secure-composition/src/sql/* → ../src/sql/*
Removed the standalone secure-composition/ directory and its
file: dependency from package.json.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2b6c38eUse system JDK instead of bundled minimal JRE
The temper nightly bundles a minimal JRE missing java.desktop module.
Override the launcher script to use system JDK 21 (temurin) which has
all required modules including java.beans.Introspector.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
52b6488Add JDK 21 setup and inspect temper binary layout
The nightly temper bundles a minimal JRE missing java.desktop module.
Add setup-java with temurin JDK 21 so JAVA_HOME is available. Also
add debug output to understand the temper binary structure.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3033637Vendor secure-composition and add CI with Temper v0.6.0
- Vendor secure-composition source directly (private repo, not a submodule)
- Fix import paths from ../../secure-composition/ to ../secure-composition/
- Fix package.json file: dependency path for nested layout
- Add GitHub Actions workflow: downloads Temper v0.6.0 linux binary,
builds secure-composition first, then builds and tests the ORM
- Track temper.keep/ build config for both packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
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>
b682aabbuild: rebuild for GitHub Pages with share buttons
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
fb9f4e0fix: allow nil in GraphDocument type for pre-insert state
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>
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>
81cf73cci: trigger CI after retarget to main
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
"Breaks out with some brief funk and quickly evolves into a warmer groove with Pa..."
TAP TO SEE AND PLAY JAMS
Soul Planet
.458
TAP TO FLIP BACK
11 jams
★
2018-07-28
16:08
The Forum · Inglewood, CA
Breaks out with some brief funk and quickly evolves into a warmer groove with Page and Trey trading lead duties before guitar takes over as the jam gallops to a peak and dissolves into "Wingsuit".
★
2018-08-04
23:40
Verizon Wireless Amphitheatre at Encore Park · Alpharetta, GA
Pivots out of the verses into a grimy jam that briefly picks up speed before devolving into envelope-filtered-Mike-led funk, then blossoms into a warm and relaxed jam full of delicate synths from Page and sympathetic Trey soloing. Things take an anthemic turn at Mike's urging, then appear to be coming to a close, but then gathers up energy once more and builds to a driving peak. But rather than close out, Fish and Page lead the way to another filthy and funky groove, with tinges of 2.0 jamming style, before dying out and > into "ASIHTOS".
★
2018-11-02
16:56
MGM Grand Garden Arena · Las Vegas, NV
Soaring, anthemic play from Trey combined with gooey bass from Mike highlight this second set opening version. After a mini-peak, the jam eventually fizzles to > "Down With Disease".
★
2021-08-10
13:27
Hersheypark Stadium · Hershey, PA
The other Summer 2021 "Soul Planet", this bad boy doesn't take long to move into a quicksilver minor-key boil with Trey's gnarly effects taking center stage. Fish picks up the pace and a solid groove emerges, then Trey switches to major-key and the band follows with a powerful bit of hose. Fish then switches up his beat and Page takes center stage, before Trey elbows his way in with some wicked riffing and Fish steers things to more rock-oriented waters. Trey then fires up some stabbing chords before neatly -> into NICU. Inspired, melodious jamming.
★
2021-08-31
46:49
Shoreline Amphitheatre · Mountain View, CA
Smoothly runs the gamut from dark grooves to a lovely uplifting space to double-time rocking out to a muscular jamming zone where Mike's drill (!) takes center stage to anthemic bliss to something akin to an alien distress signal that could've only come from Summer 2021 to sludgy industrial noise to even faster rocking out to snappy funkiness to a perfect -> into "The Final Hurrah". A cornerstone jam of Summer 2021, and the third longest of their entire career. Yes, you read that right, their entire career.
★
2021-10-22
18:19
Ak-Chin Pavilion · Phoenix, AZ
"Hmm... this jam is okay, I can imagine many of my friends lapping this up but I'm mostly disintere-SWEET HEAVENLY LORD THIS FINAL PEAK IS AMAZING."
★
2021-10-31
14:34
MGM Grand Garden Arena · Las Vegas, NV
Deep in the third set of the Halloween show, the band still has enough creative juice for one more killer jam, as Fish kicks up the tempo and Page does some fine electric piano work, before a slower and more contemplative jam emerges. Fish picks the pace back up and the band enters anthemic mode, Trey's funky new filter adding extra spice, then things get darker and nastier almost out of nowhere with a stomping and powerful jam. -> into "Death Don't Hurt Very Long" out of the muck.
★
2022-08-05
14:51
Atlantic City Beach · Atlantic City, NJ
> from "Axilla (Part II)". Mike's bass is thumping as the jam begins. Trey solos over a cool texture provided by Mike and Fish. A slow tempo gradually picks up steam, possibly because of Fish dropping a "Yeah" sample seemingly out of nowhere. The jam comes to a head around 13:00 with Trey and Mike both heavy in their effects arsenals. It melts into almost nothing before > into a big "Down With Disease".
★
2023-07-22
14:11
The Pavilion at Star Lake · Burgettstown, PA
Hard-charging out of the gates through 7:15 when it settles into an ethereal transition, then winds up again for a heartening resolution and floats into -> "Twist".
★
2024-08-04
26:13
Ruoff Music Center · Noblesville, IN
Along with preceding "Ghost", this "Soul Planet" makes up one of the great 1-2 punches of the year as it sets off at a good pace and introduces dial-tone and other wonky effects in the opening minutes before a shift around 8:00. From there it drifts upwards into major bliss and is driven into gorgeously inspirational territory by Trey's coalescing riff for a terrific mid-jam hosing, after which the band briefly gestures towards a return home, only to quickly launch into more locked-in improvisation. With the vibe now turning towards hard-rock, the jam once again gels around Trey's riffage and surges to a head-banging peak, then > "Billy Breathes".
★
2025-07-12
12:34
North Charleston Coliseum · North Charleston, SC
There's no time wasted in this all killer, no filler jam, which gets especially gnarly after 8:00 when it develops a mean streak and goes screaming through space to a supernova conclusion.
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???