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>
2024-07-31 · Chaifetz Arena, Saint Louis University
♥ Most Loved: 38 likes
2017-07-26 · Madison Square Garden
📊 93% Set 2 · 8/8 JCs from Set 2
Last: 2024-07-31 (576d ago) · avg every 184d
Best year: 2017 — 2/2 JC
🔥 JC Streak: 4 in a row
"Busted out after a 380 show absence, Phish goes 2 for 2 on delivering the goods ..."
TAP TO SEE AND PLAY JAMS
Mr. Completely
.533
TAP TO FLIP BACK
8 jams
★
2017-07-19
21:18
Petersen Events Center · Pittsburgh, PA
Busted out after a 380 show absence, Phish goes 2 for 2 on delivering the goods with this TAB standby. The jam quickly goes "Type II" and features bliss jamming aplenty as well as some new synth sounds from Page.
★
2017-07-26
13:52
Madison Square Garden · New York, NY
Surprising -> out of a great "Carini". A fiery minor key jam develops out of the verses, and Page takes control on the keys as Trey fires off echo-laden notes. They pivot nicely into a new key, where Mike really impresses and Fish pushes the tempo up a gear as Trey plays around with the "Mr. Completely" theme and leads the band into an anthemic finale. A high-spirited, energetic good time, with a > into an even more surprising "1999".
★
2021-08-04
18:55
Ascend Amphitheater · Nashville, TN
The opening to one of the year's strongest second frames, this "Mr. Completely" indulges in its usual jam before Fish switches up his flow and Trey moves into a new key. Page's electric piano cuts through the mire, and a warm groove emerges as a result. Fish starts throwing in the "Mr. Completely" drum fill almost as a challenge to himself, and Trey moves to stabbing echo-laden chords as the jam picks up speed "Bathtub Gin" style. Something funkier and stranger emerges, and Mike flips on his envelope filter as the jam builds to a ferocious climax, then dies away with some more "Mr. Completely" drum fills by Fish for fun. > into "BOAF".
★
2021-08-29
18:47
Gorge Amphitheatre · George, WA
Quickly maneuvers into major-key bliss, distinguished by some frenetic playing from Fishman, then moves into a brisker and snappier zone thanks to Trey switching to chords. The band briefly dips into contemplative minor key playing, before moving to something more upbeat, with Page's electric piano at the forefront. Trey's effects-smothered guitar playing and Page's synths combine wonderfully, with Mike going to the envelope filter and Fish as steady as ever. Very good -> into "Meat" to close. A fine companion piece to the 8/4/21 version.
★
2022-08-13
14:26
Alpine Valley Music Theatre · East Troy, WI
First locks into a super-cool and menacing, textural jam with a perfectly integrated "Crazy Train" tease from Trey, then slides into major for a heavenly spell before more familiar bliss brings it all home.
★
2023-04-23
18:03
Hollywood Bowl · Hollywood, CA
Another huge version of the once rare song in the catalog. Plucky playing from Trey around 9:30 changes the jam's trajectory. The searching, grimy jam sounds like the background to a noir detective show at times. The tempo gets kicked up towards the end, before eventually > "A Song I Heard the Ocean Sing".
★
2023-04-23
0:56
Hollywood Bowl · Hollywood, CA
-> from "A Song I Heard the Ocean Sing" to close out the "Mr C" > "ASIHTOS" -> "Mr C" sandwich.
★
2024-07-31
22:29
Chaifetz Arena, Saint Louis University · St. Louis, MO
After transitioning away from the song, Pageâs grand piano gives the improvisation shape and direction as Trey responds leading the band through uplifting and thematic play that modulates across both delicate and thornier spaces. Listen for Mike's "Meowdulator" pedal and Trey's "Hanon exercises" to make appearances before returning to the song proper to close.
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???