04edde5Embed secure-composition library in src/ for Temper compatibility
Temper doesn't support cross-library imports yet, so secure-composition
must be embedded as a subdirectory within src/ (same-library submodule).
Changes:
- Move secure-composition/ to src/secure-composition/
- Update imports to ./secure-composition/sql and ./secure-composition/html
- Remove dependencies config (not needed for embedded modules)
Build output now includes both ormery/ and secure-composition/ directories,
ensuring all target language repos (JS, Python, C#, Rust, Java, Lua) get
the full secure-composition library when the CI pipeline publishes.
All 87 tests passing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7550780Fix secure-composition imports to target specific files
Temper requires imports to target specific .temper.md files within
subdirectories rather than directory-level imports. Updated:
- ormery.temper.md: Import sql/SqlBuilder from sql/builder.temper.md
and SqlFragment from sql/model.temper.md
- syntax-highlighter.temper.md: Import html/SafeHtml from
html/safe-html.temper.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5087716Replace duplicate implementations with secure-composition library
- Remove local src/sql/, src/html/, src/core/, src/url/ directories
- Update imports in src/ormery.temper.md and src/syntax-highlighter.temper.md
- Point to ../secure-composition/src/sql and ../secure-composition/src/html
- Fixes CI build failures ("No member appendSafe in SqlBuilder")
- All 87 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
931d04dRemove appendSafe from public API to eliminate SQL injection vector
SECURITY FIX: Removed public appendSafe() method from all builder classes
(SqlBuilder, Collector, ContextualAutoescapingAccumulator) to prevent
SQL injection and XSS attacks.
Changes:
- SqlBuilder.appendSafe() removed - forces use of typed methods
- Refactored safeSql() to create SqlFragments directly
- Updated internal appendList to use buffer.add() directly
- Made collector appendSafe private (appendFixed/appendKnownSafe)
- Updated README and added SECURITY-IMPROVEMENTS.md documentation
Before: External code could bypass escaping via appendSafe(userInput)
After: All external code must use typed, escaped methods (appendString, appendInt32, etc.)
This eliminates the primary SQL injection attack vector identified in
semgrep rules CWE-89. All generated target languages (JS, Python, Java,
C#, Rust, Lua) will be updated when published to child repos.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
d695f7dcontinuous error log: no paper cut, no header for text prints
Text endpoint now prints as one long continuous log — no header/dividers,
no paper cut. Just the content followed by 3 blank lines of spacing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
c4b28efadd text printing endpoint with Elixir error filtering
New POST /print/text?source= endpoint accepts plain text for receipt
printing. Elixir/Phoenix sources are filtered to only print [error]
blocks. Text is wrapped in receipt-style formatting with headers and
dividers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0d5f530improve: refactor MarkdownEditorLive with tests, extract pure functions, remove inline CSS
- Extract BlogWeb.MarkdownEditor.Formatter with pure functions for all
markdown formatting operations (split_text, apply_format, to_html)
- Remove ~420 lines of duplicated handle_format/7 from both LiveView
and Component, replaced with shared Formatter module
- Fix bug: LiveView used EarmarkParser (not a dependency) instead of MDEx
- Replace rescue blocks with proper {:ok, _}/{:error, _} pattern matching
- Remove inline CSS styles, add .markdown-editor-window/.markdown-editor-content classes
- Add @moduledoc to both LiveView and Component (Credo strict compliance)
- Extract toolbar/cheatsheet into function components in the Component
- Initialize all assigns in mount/3 to avoid potential KeyError
- Add 35 unit tests for Formatter (split, format with/without selection, composition)
- Add 8 integration tests for MarkdownEditorLive (mount, events, handle_info)
- Zero Credo issues in strict mode across all 3 files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
71dc1a3Separate commit messages clearly with dividers
Each commit now shows SHA and message on separate indented lines with
blank line spacing between commits. Dashed divider line between push
event entries for clear visual separation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
62be7c1Condensed layout: one line per push, full commit messages below
Push header on single line: SHA +N/-N repo/branch date.
Commit messages rendered with pre-wrap for full multi-line display.
Added debug logging to diagnose missing commit messages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0cbdbe1Fix missing commit messages, filter empty diffs
The GitHub Events API returns commits: null, so commit messages were
always empty. Now fetches commits from the Compare API instead, which
has full commit data including messages. Also filters out push events
with +0/-0 diffs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
a869954Make poller and mount crash-resistant
Poller rescues errors during poll to avoid GenServer crash.
LiveView mount catches :exit if poller isn't running yet.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ae794fbStore work log commits in Postgres, add window to terminal desktop
- Migration creates work_log_commits table with unique SHA index
- WorkLogCommit schema + WorkLog context for DB reads/writes
- Poller writes to DB via compare API, reads from DB
- Work Log window on terminal_live desktop (centered, draggable)
- Desktop icon for Work Log, Leica icon moved to bottom
- Standalone /work-log page reads from same DB
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
"> in from ""MFMF."" In the Phish debut version, the bulk of the jamming is conta..."
TAP TO SEE AND PLAY JAMS
Golden Age
.410
TAP TO FLIP BACK
34 jams
★
2009-11-27
9:33
Times Union Center · Albany, NY
> in from ""MFMF."" In the Phish debut version, the bulk of the jamming is contained within structure of the song, except for a brief cacophonous outro.
★
2011-07-02
13:03
Watkins Glen International · Watkins Glen, NY
Staccato funk jam before delays/effects creep in, foreshadowing the "Storage Jam" to come later in the night. > to "Prince Caspian."
★
2012-06-24
11:13
Blossom Music Center · Cuyahoga Falls, OH
A very good, psychedelic jam including an introspective ambient section in which Trey uses his delays/pedals to great effect. > to "Ghost."
★
2012-06-30
10:25
Alpine Valley Music Theatre · East Troy, WI
> in from "Wilson." Rhythmic funk held together by a really fun, loose beat from Fish, with a nice -> to "2001" to finish it.
★
2012-07-03
13:47
Nikon at Jones Beach Theater · Wantagh, NY
-> in from "Sand." There is fantastic interplay between Page and Trey throughout this jam, and Mike also does his part to punctuate the groove. Concludes with a beautiful ambient passage led by Page on the Wurlitzer. A top "GA."
★
2012-08-25
11:03
Aaron's Amphitheatre at Lakewood · Atlanta, GA
> in from "KDF." Dark, space funk with Mike at the forefront for much of the jam. Mike also plays around with an exotic motif towards the end of the jam. > to "Free."
★
2012-09-01
13:37
Dick's Sporting Goods Park · Commerce City, CO
The band wastes no time in hooking up on a mid-tempo groove with a slightly mysterious feel at the start of this jam. From there, it gradually gains intensity, and becomes a bit more rocking as Trey quickens his playing. Ends with a > to an exceptional "Prince Caspian." One of the many strong jams from the monumental 2012 Dick's run.
★
2013-07-03
13:55
Darling's Waterfront Pavilion · Bangor, ME
Laid-back and funky jamming abounds in this one (including a "Manteca" tease). > to "Twist."
★
2013-07-30
12:57
Lake Tahoe Outdoor Arena at Harveys · Stateline, NV
A pretty locked-in version including funk, rock, and upbeat melodic jamming. > to "46 Days."
★
2013-10-20
17:10
Hampton Coliseum · Hampton, VA
> in from "Tweezer" as the second half in a pair of phenomenal jams. The usual funk-rock elements are present, but the jam gets taken to another level when it bleeds into an intense, psychedelic ambience. Fishman on Marimba Lumina. > to "Piper."
★
2013-10-27
16:39
XL Center · Hartford, CT
Ferocious start-to-finish, with magnificent accompaniment by Page, Mike and Fish as Trey solos.
★
2014-07-18
16:37
FirstMerit Bank Pavilion at Northerly Island · Chicago, IL
Fish keeps this jam in high gear as it alternates between segments of funky and upbeat jamming until a wave of ambient effects are introduced around the 15 minute mark and concludes with a > to "The Mango Song."
★
2015-08-14
13:13
Walnut Creek Amphitheater · Raleigh, NC
Begins with some bouncy funk work and then builds into a rocking groove. Brief ambient interlude before a > to "Reba".
★
2015-09-04
15:58
Dick's Sporting Goods Park · Commerce City, CO
An intriguing version which drops into some contemplative space and eventually gains upbeat energy without ever totally taking off.
★
2016-07-18
12:41
Bill Graham Civic Auditorium · San Francisco, CA
After leaving the song's structure, a darkish groove quickly develops with great direction and intensity until a > to "Twist".
★
2016-10-28
25:38
MGM Grand Garden Arena · Las Vegas, NV
A multi-section, "Type II" behemoth which covers a lot of ground and peaks twice in the process. > to "Simple". Longest version to date.
★
2016-12-28
20:48
Madison Square Garden · New York, NY
Coming effortlessly out of the song proper and oozing with wah-funk, the band comes running out of the gates. A thoughtful, almost ambient jam emerges before descending into a Page-led section; Fish consistently building up the percussive attack and Trey doing much the same on guitar. The transitions are seamless throughout, and the end result is a cohesive revelry of celebration. Like 10/28/16, > to "Simple."
★
2017-07-14
5:43
Huntington Bank Pavilion at Northerly Island · Chicago, IL
Acts as the "meat" of a "Your Pet Cat"/"Golden Age" sandwich, with nifty segues into and out of the aforementioned "YPC".
★
2017-08-01
20:07
Madison Square Garden · New York, NY
A bit slow to get going, but really takes off when an uptempo groove kicks in around 11:30 with Trey and Page providing leads over the swiftly moving rhythm section. Continues to pick up steam as Trey takes charge with some exciting playing and peaks the jam before it ends with some brief space.
★
2018-08-05
18:39
Verizon Wireless Amphitheatre at Encore Park · Alpharetta, GA
Begins with a familiar swinging rhythm and Trey playing echoing, organ-like leads before switching to a heavy auto-wah tone. The next segment brings a shift to major and coalesces at 14 minutes when the jam begins its trajectory to a buoyant peak before briefly heading back to the song's riff with added "Reba" whistling/teasing.
★
2018-09-02
15:25
Dick's Sporting Goods Park · Commerce City, CO
Nice -> from "Tweezer". This jam is funky throughout and brightens into a bouncy, feel-good groove as it comes down the home stretch.
★
2018-10-19
23:51
Hampton Coliseum · Hampton, VA
Aggressively experimental "anti-bliss" jamming begins with angular grooves and then takes a rare deep dive into the abyss with plentiful space effects and "Shipwreck" quotes. Resurfaces > "Twist".
★
2018-10-26
17:31
Allstate Arena · Rosemont, IL
> from "Tweezer." The jam embarks on a dynamic ride, traveling from
cascading ear candy loops via Trey, to an effect-drenched minor key groove
that patiently builds to a rousing peak. The music then cools into chilly ambience
before appropriately moving into "Frost."
★
2020-02-23
17:47
Moon Palace · Quintana Roo, Cancun, Mexico
The second half of a deadly 1-2 punch with "Simple". Immediately moves into a bouncing calypso-y shuffle as Fish takes point and Page goes to work on the clavinet. The jam settles down and gets more funky as Fish taps away on his woodblock, Trey in particular laying down some thick nastiness. They then move into soaring anthemic territory, then as the jam dies away a darker and more unsettling mood takes over thanks to Page's synths and Trey's effects. Trey utilizes a guitar line very similar to Chest Fever to fine effect, much as he did in the 8/3/18 "Carini". Tremendous version.
★
2021-07-30
11:55
Oak Mountain Amphitheatre · Pelham, AL
Doesn't stray very far from the usual boundaries of "Golden Age", but does make feints towards "Mind Left Body" and features some very fancy rhythmic games from Fishman and lovely piano work from Page before very briefly blooming into major key and settling into "Mountains in the Mist".
★
2021-10-20
16:21
Matthew Knight Arena · Eugene, OR
> from "Lonely Trip". All four members of the band are locked in from the start; some really nifty and cool playing. At 12:00, the jam takes a serene, light turn which features some beautifully patient playing. Page and Trey enjoy some fun interplay.
★
2022-02-27
19:35
Moon Palace · Quintana Roo, Cancun, Mexico
A non-stop rollicking groove delivered with an assured confidence, as Mike and Fish set a good pace and Page and Trey fill in all the gaps with tasty detail, then takes a darker turn for the last few minutes before > "Lonely Trip".
★
2022-05-28
18:36
The Wharf Amphitheater · Orange Beach, AL, US
Takes a little bit of time to get going, but then resolves into a funky and bouncy jam not far away from "YPC", grows in power slowly and steadily, and nicely peaks before heading home. As with the 8/11/21 "BOAF" or 11/23/97 "Gin", finds its pocket and stays in it to very nice effect.
★
2022-08-12
14:55
Alpine Valley Music Theatre · East Troy, WI
A light and breezy, highly danceable groove is followed by some soul-piercing guitar when Trey gets out in front on the backend.
★
2023-04-14
17:32
Climate Pledge Arena · Seattle, WA
Tight, airy play hews closely to the song proper for quite some time before Trey calls for improvisational departure. Fish breaks the beat - listen, a bit after the 8:00 mark, for this wonderful moment - before the groove bleeds to become hushed, restrained play, evoking early (as in 60s) psychedelic experimentation. And then... memorable almost for what doesn't happen as opposed to what does, this is Phish at their seemingly effortless best, bathing the base with another dose of the finest in the nation.
★
2023-08-26
13:15
Broadview Stage at SPAC · Saratoga Springs, NY
A guest appearance and surprising cover selection lead to shimmering play that transcends expectations. Even in the composed section, what the estimable Derek Trucks brings to this special flood recovery benefit performance makes this version, and what follows, must-hear.
★
2023-10-08
16:25
Bridgestone Arena · Nashville, TN
Standard but quality play breaks for new directions after the 7 minute mark. Ambient synths, Trey's bevy of effects, and big drawn out waves of bass are all anchored by Fish's expert dynamics. The stew grows ever weirder,
as a beat switch leads to a bizarre, carnival-esque dissonant passage before collapsing > "The Well". Excellent.
★
2025-06-27
26:30
Moody Center · Austin, TX
Narrowly surpasses 10/28/16 for the longest version to date, and it's a doozy. Opening with minimalist funk which becomes increasingly reliant on synths and distortions of all shapes and manner, the jam seems to be crawling to a stop around 15:00, but is then resuscitated with a half-time, super-duty march of doom, and carries that same power as it transitions triumphantly to an ecstatic hose-peak finale.
★
2025-07-13
16:11
North Charleston Coliseum · North Charleston, SC
A spirited, high-energy take that is particularly dominated by Trey and Page's nimble play early on. The syncopated jazz-funk-isms that are familiar to "Golden Age" are particularly tight here and inspired as this feel eventually rides to an anthemic major-key rock out. This then builds to a lovely peak before the "Golden Age" beat barges in to wrap it up.
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???