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>
"Phish debut version downshifts after 6:00, becoming more moody and atmospheric b..."
TAP TO SEE AND PLAY JAMS
Pillow Jets
.500
TAP TO FLIP BACK
7 jams
★
2023-07-21
11:00
The Pavilion at Star Lake · Burgettstown, PA
Phish debut version downshifts after 6:00, becoming more moody and atmospheric before mounting another round of heavier rock which washes into > "David Bowie".
★
2023-10-10
10:25
Ervin J. Nutter Center, Wright State University · Dayton, OH
Dark, brooding and sometimes searching, this is the epitome of latter-day Evil Phish Improv.
★
2024-04-20
15:47
Sphere · Las Vegas, NV
NYE's "Bag" casts a long shadow; fans of that momentous moment can turn from that script to find, here, more by way of impassioned (improvisational) play. Heavy as a multi-beast's footprints stomped into the Mojave's sand, the band toys with an array of effects to produce something like melody before Trey alights upon a line, a path leading the listener through a grassy path where one sees the forest for its cosmic trove of trees.
★
2024-08-09
13:33
Bethel Woods Center for the Arts · Bethel, NY
> from "Tweezer". If you didn't know any better, you might think the beginning of this jam was out of "Melt" and not "Pillow Jets". Out of the muck, Trey leads the band into an upbeat, driving jam that oozes energy. Trey weaves his way back to a smooth segue -> "Tweezer".
★
2024-08-16
9:59
The Woodlands · Dover, DE
> from "Ruby Waves," the jam (once through the song) is more an interlude, a punishing kaleidoscope of sound sure to please shoegazers and those with their heads in the clouds. Terrific outro-cum-drawn-out segue for a rabid "YPC."
★
2024-08-29
23:06
Dick's Sporting Goods Park · Commerce City, CO
Jam takes a sudden and incredibly frenetic turn coming out of the grimy "Multibeast" section. The band conjures not just thunder, but a multifaceted visionary journey through shifting sounds and moods as diverse as the Vedic pantheon before settling into a rhythmic and loop laden space that gives way abruptly to "2001".
★
2025-06-22
6:56
SNHU Arena · Manchester, NH
> from "Tweezer" in a wild and wacky Tweezer-fest. The band sludges through some dark jamming before returning to the "Conjurers of thunder" refrain and ever so slowly, Trey finds his way back to > into more "Tweezer".
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???