Compare commits

...

9 Commits

Author SHA1 Message Date
Glenn Thompson e31789704d Merge main into experiment/parenscript-conversion
- Resolved conflicts in asteroid.asd (kept parenscript dependency)
- Resolved conflicts in build-asteroid.lisp (took new bootstrap structure)
- Includes all upstream changes: uri-path fix, profile redirect fix, curated playlist, build improvements
2025-11-12 08:19:06 +03:00
Brian O'Reilly 0d68c9cc82 build info updates, curated playlist 2025-11-11 17:12:32 -05:00
Brian O'Reilly 7c569ca4f6 startup toggles 2025-11-11 12:04:06 -05:00
Brian O'Reilly f0b03255b8 but not postgres yet. 2025-11-11 11:26:05 -05:00
Brian O'Reilly c4a030e6e6 building building.. 2025-11-11 11:19:03 -05:00
Brian O'Reilly 5f91a81545 move main closer to my config branch in preperation for moving in totality. 2025-11-11 11:16:32 -05:00
Brian O'Reilly 7ed4515139 a nice asteroid, from Summer Emacs. remember to ask for forgiveness. 2025-11-11 11:11:50 -05:00
Brian O'Reilly 87e3f98e17 fixup routes. turn down compression on executable. 2025-11-11 11:06:29 -05:00
Brian O'Reilly 11c3e1df77 slight error computing the external/internal url from the uri object. 2025-11-10 08:10:53 -05:00
7 changed files with 233 additions and 32 deletions

View File

@ -3,6 +3,7 @@ PACKAGE=asteroid
PACKAGEUTILS=asteroid.app-utils
OUT=asteroid
ENTRY=-main
BROWN_MM="Nil"
.PHONY: $(OUT)
$(OUT): clean

View File

@ -11,25 +11,28 @@
:class "radiance:virtual-module"
:depends-on (:slynk
:lparallel
:alexandria
:cl-json
:radiance
:i-log4cl
:r-clip
:r-simple-rate
:r-simple-profile
:lass
:parenscript
:cl-json
:alexandria
:local-time
:taglib
:r-data-model
:ironclad
:babel
:cl-fad
:bordeaux-threads
:drakma
;; radiance interfaces
:i-log4cl
;; :i-postmodern
:r-clip
:r-data-model
:r-simple-profile
:r-simple-rate
(:interface :auth)
(:interface :database)
(:interface :relational-database)
(:interface :user))
:pathname "./"
:components ((:file "app-utils")

View File

@ -924,11 +924,10 @@
(compile-styles) ; Generate CSS file using LASS
;; Ensure RADIANCE environment is properly set before startup
(unless (radiance:environment)
(setf (radiance:environment) "default"))
;; (unless (radiance:environment)
;; (setf (radiance:environment) "asteroid"))
(radiance:startup)
(format t "Server started! Visit http://localhost:~a/asteroid/~%" port))
(radiance:startup))
(defun stop-server ()
"Stop the Asteroid Radio RADIANCE server"
@ -950,13 +949,19 @@
(defun ensure-radiance-environment ()
"Ensure RADIANCE environment is properly configured for persistence"
(unless (radiance:environment)
(setf (radiance:environment) "default"))
;; Ensure the database directory exists
(let ((db-dir (merge-pathnames ".config/radiance/default/i-lambdalite/radiance.db/"
(user-homedir-pathname))))
(ensure-directories-exist db-dir)
(format t "Database directory: ~a~%" db-dir)))
(setf (radiance:environment) "asteroid"))
(log:info "~2&~15A - ~A~%~15A - ~A~%~15A - ~A~%~15A - ~A~%~15A - ~A~2%"
":configuration"
(radiance:environment-directory (radiance-core:environment) :configuration)
":cache"
(radiance:environment-directory (radiance-core:environment) :cache)
":data"
(radiance:environment-directory (radiance-core:environment) :data)
":template"
(radiance:environment-directory (radiance-core:environment) :template)
":static"
(radiance:environment-directory (radiance-core:environment) :static)))
(defun -main (&optional args (debug t))
(declare (ignorable args))

View File

@ -22,9 +22,9 @@
(user-role (if (listp user-role-raw) (first user-role-raw) user-role-raw))
(redirect-path (cond
;; Admin users go to admin dashboard
((string-equal user-role "admin") "/asteroid/admin")
((string-equal user-role "admin") "/admin")
;; All other users go to their profile
(t "/asteroid/profile"))))
(t "/profile"))))
(format t "User ID from DB: ~a~%" user-id)
(format t "User role: ~a, redirecting to: ~a~%" user-role redirect-path)
(setf (session:field "user-id") (if (listp user-id) (first user-id) user-id))

View File

@ -1,36 +1,65 @@
;; -*-lisp-*-
(unless *load-pathname*
(error "Please LOAD this file."))
;; Commented out to allow building with Quicklisp already loaded
;; (when (find-package :quicklisp)
;; (error "Please run this file as a script or from the Makefile."))
(defpackage #:asteroid-bootstrap
(:nicknames #:ab)
(:use #:cl)
(:export #:*root* #:path))
(in-package #:asteroid-bootstrap)
(defvar *root* (make-pathname :name NIL :type NIL :defaults *load-pathname*))
(defun path (pathname)
(merge-pathnames pathname *root*))
;; we require quicklisp to load our transitive dependencies.
(load "~/quicklisp/setup.lisp")
;; Build script for creating asteroid executable using save-lisp-and-die
;; ASDF will automatically find the project via source-registry.conf
;; Load RADIANCE first, then handle environment
(ql:quickload :radiance)
;; (defmethod radiance:environment-directory (environment (kind (eql :configuration)))
;; (ab:path (make-pathname :directory `(:relative "config" ,environment))))
;; (defmethod radiance:environment-directory (environment (kind (eql :cache)))
;; (ab:path (make-pathname :directory `(:relative "cache" ,environment))))
;; (defmethod radiance:environment-directory (environment (kind (eql :data)))
;; (ab:path (make-pathname :directory `(:relative "data" ,environment))))
;; (defmethod radiance:environment-directory (environment (kind (eql :template)))
;; (ab:path (make-pathname :directory `(:relative "override" ,environment "template"))))
;; (defmethod radiance:environment-directory (environment (kind (eql :static)))
;; (ab:path (make-pathname :directory `(:relative "override" ,environment "static"))))
;; Ensure RADIANCE environment is set before loading
(unless (radiance:environment)
(setf (radiance:environment) "default"))
(setf (radiance:environment) "asteroid"))
;; Load the system with RADIANCE environment handling
(handler-bind ((radiance-core:environment-not-set
(lambda (c)
(declare (ignore c))
(invoke-restart 'continue))))
(lambda (c)
(declare (ignore c))
(invoke-restart 'continue))))
(ql:quickload :asteroid))
(log:info "~2&~15A - ~A~%~15A - ~A~%~15A - ~A~%~15A - ~A~%~15A - ~A~2%"
":configuration"
(radiance:environment-directory (radiance-core:environment) :configuration)
":cache"
(radiance:environment-directory (radiance-core:environment) :cache)
":data"
(radiance:environment-directory (radiance-core:environment) :data)
":template"
(radiance:environment-directory (radiance-core:environment) :template)
":static"
(radiance:environment-directory (radiance-core:environment) :static))
;; Define the main function for the executable
(defun main ()
(asteroid:-main))
@ -39,4 +68,5 @@
(sb-ext:save-lisp-and-die "asteroid"
:toplevel #'main
:executable t
:compression 22)
:compression 12)

BIN
static/asteroid.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

View File

@ -1 +1,163 @@
#EXTM3U
#EXTINF:370,Vector Lovers - City Lights From a Train
/app/music/Vector Lovers/City Lights From a Train.flac
#EXTINF:400,The Black Dog - Psil-Cosyin
/app/music/The Black Dog/Psil-Cosyin.flac
#EXTINF:320,Plaid - Eyen
/app/music/Plaid/Eyen.flac
#EXTINF:330,ISAN - Birds Over Barges
/app/music/ISAN/Birds Over Barges.flac
#EXTINF:360,Ochre - Bluebottle Farm
/app/music/Ochre/Bluebottle Farm.flac
#EXTINF:390,Arovane - Theme
/app/music/Arovane/Theme.flac
#EXTINF:380,Proem - Deep Like Airline Failure
/app/music/Proem/Deep Like Airline Failure.flac
#EXTINF:310,Solvent - My Radio (Remix)
/app/music/Solvent/My Radio (Remix).flac
#EXTINF:350,Bochum Welt - Marylebone (7th)
/app/music/Bochum Welt/Marylebone (7th).flac
#EXTINF:290,Mrs Jynx - Shibuya Lullaby
/app/music/Mrs Jynx/Shibuya Lullaby.flac
#EXTINF:340,Kettel - Whisper Me Wishes
/app/music/Kettel/Whisper Me Wishes.flac
#EXTINF:360,Christ. - Perlandine Friday
/app/music/Christ./Perlandine Friday.flac
#EXTINF:330,Cepia - Ithaca
/app/music/Cepia/Ithaca.flac
#EXTINF:340,Datassette - Vacuform
/app/music/Datassette/Vacuform.flac
#EXTINF:390,Plant43 - Dreams of the Sentient City
/app/music/Plant43/Dreams of the Sentient City.flac
#EXTINF:410,Claro Intelecto - Peace of Mind (Electrosoul)
/app/music/Claro Intelecto/Peace of Mind (Electrosoul).flac
#EXTINF:430,E.R.P. - Evoked
/app/music/E.R.P./Evoked.flac
#EXTINF:310,Der Zyklus - Formenverwandler
/app/music/Der Zyklus/Formenverwandler.flac
#EXTINF:330,Dopplereffekt - Infophysix
/app/music/Dopplereffekt/Infophysix.flac
#EXTINF:350,Drexciya - Wavejumper
/app/music/Drexciya/Wavejumper.flac
#EXTINF:375,The Other People Place - Sorrow & A Cup of Joe
/app/music/The Other People Place/Sorrow & A Cup of Joe.flac
#EXTINF:340,Arpanet - Wireless Internet
/app/music/Arpanet/Wireless Internet.flac
#EXTINF:380,Legowelt - Sturmvogel
/app/music/Legowelt/Sturmvogel.flac
#EXTINF:310,DMX Krew - Space Paranoia
/app/music/DMX Krew/Space Paranoia.flac
#EXTINF:360,Skywave Theory - Nova Drift
/app/music/Skywave Theory/Nova Drift.flac
#EXTINF:460,Pye Corner Audio - Transmission Four
/app/music/Pye Corner Audio/Transmission Four.flac
#EXTINF:390,B12 - Heaven Sent
/app/music/B12/Heaven Sent.flac
#EXTINF:450,Higher Intelligence Agency - Tortoise
/app/music/Higher Intelligence Agency/Tortoise.flac
#EXTINF:420,Biosphere - Kobresia
/app/music/Biosphere/Kobresia.flac
#EXTINF:870,Global Communication - 14:31
/app/music/Global Communication/14:31.flac
#EXTINF:500,Monolake - Cyan
/app/music/Monolake/Cyan.flac
#EXTINF:660,Deepchord - Electromagnetic
/app/music/Deepchord/Electromagnetic.flac
#EXTINF:1020,GAS - Pop 4
/app/music/GAS/Pop 4.flac
#EXTINF:600,Yagya - Rigning Nýju
/app/music/Yagya/Rigning Nýju.flac
#EXTINF:990,Voices From The Lake - Velo di Maya
/app/music/Voices From The Lake/Velo di Maya.flac
#EXTINF:3720,ASC - Time Heals All
/app/music/ASC/Time Heals All.flac
#EXTINF:540,36 - Room 237
/app/music/36/Room 237.flac
#EXTINF:900,Loscil - Endless Falls
/app/music/Loscil/Endless Falls.flac
#EXTINF:450,Kiasmos - Looped
/app/music/Kiasmos/Looped.flac
#EXTINF:590,Underworld - Rez
/app/music/Underworld/Rez.flac
#EXTINF:570,Orbital - Halcyon + On + On
/app/music/Orbital/Halcyon + On + On.flac
#EXTINF:1080,The Orb - A Huge Ever Growing Pulsating Brain
/app/music/The Orb/A Huge Ever Growing Pulsating Brain.flac
#EXTINF:360,Autechre - Slip
/app/music/Autechre/Slip.flac
#EXTINF:400,Labradford - S (Mi Media Naranja)
/app/music/Labradford/S (Mi Media Naranja).flac
#EXTINF:350,Vector Lovers - Rusting Cars and Wildflowers
/app/music/Vector Lovers/Rusting Cars and Wildflowers.flac
#EXTINF:390,The Black Dog - Raxmus
/app/music/The Black Dog/Raxmus.flac
#EXTINF:315,Plaid - Hawkmoth
/app/music/Plaid/Hawkmoth.flac
#EXTINF:320,ISAN - What This Button Did
/app/music/ISAN/What This Button Did.flac
#EXTINF:370,Ochre - Circadies
/app/music/Ochre/Circadies.flac
#EXTINF:420,Arovane - Tides
/app/music/Arovane/Tides.flac
#EXTINF:370,Proem - Nothing is as It Seems
/app/music/Proem/Nothing is as It Seems.flac
#EXTINF:300,Solvent - Loss For Words
/app/music/Solvent/Loss For Words.flac
#EXTINF:340,Bochum Welt - Saint (77sunset)
/app/music/Bochum Welt/Saint (77sunset).flac
#EXTINF:280,Mrs Jynx - Stay Home
/app/music/Mrs Jynx/Stay Home.flac
#EXTINF:330,Kettel - Church
/app/music/Kettel/Church.flac
#EXTINF:370,Christ. - Cordate
/app/music/Christ./Cordate.flac
#EXTINF:350,Datassette - Computers Elevate
/app/music/Datassette/Computers Elevate.flac
#EXTINF:420,Plant43 - The Cold Surveyor
/app/music/Plant43/The Cold Surveyor.flac
#EXTINF:380,Claro Intelecto - Section
/app/music/Claro Intelecto/Section.flac
#EXTINF:440,E.R.P. - Vox Automaton
/app/music/E.R.P./Vox Automaton.flac
#EXTINF:300,Dopplereffekt - Z-Boson
/app/music/Dopplereffekt/Z-Boson.flac
#EXTINF:380,Drexciya - Digital Tsunami
/app/music/Drexciya/Digital Tsunami.flac
#EXTINF:350,The Other People Place - You Said You Want Me
/app/music/The Other People Place/You Said You Want Me.flac
#EXTINF:370,Legowelt - Star Gazing
/app/music/Legowelt/Star Gazing.flac
#EXTINF:440,Pye Corner Audio - Electronic Rhythm Number 3
/app/music/Pye Corner Audio/Electronic Rhythm Number 3.flac
#EXTINF:460,B12 - Infinite Lites (Classic Mix)
/app/music/B12/Infinite Lites (Classic Mix).flac
#EXTINF:390,Biosphere - The Things I Tell You
/app/music/Biosphere/The Things I Tell You.flac
#EXTINF:580,Global Communication - 9:39
/app/music/Global Communication/9:39.flac
#EXTINF:460,Monolake - T-Channel
/app/music/Monolake/T-Channel.flac
#EXTINF:690,Deepchord - Vantage Isle (Variant)
/app/music/Deepchord/Vantage Isle (Variant).flac
#EXTINF:840,GAS - Königsforst 5
/app/music/GAS/Königsforst 5.flac
#EXTINF:520,Yagya - The Salt on Her Cheeks
/app/music/Yagya/The Salt on Her Cheeks.flac
#EXTINF:720,Voices From The Lake - Dream State
/app/music/Voices From The Lake/Dream State.flac
#EXTINF:510,36 - Night Rain
/app/music/36/Night Rain.flac
#EXTINF:470,Loscil - First Narrows
/app/music/Loscil/First Narrows.flac
#EXTINF:400,Kiasmos - Burnt
/app/music/Kiasmos/Burnt.flac
#EXTINF:570,Underworld - Jumbo (Extended)
/app/music/Underworld/Jumbo (Extended).flac
#EXTINF:480,Orbital - Belfast
/app/music/Orbital/Belfast.flac
#EXTINF:540,The Orb - Little Fluffy Clouds (Ambient Mix)
/app/music/The Orb/Little Fluffy Clouds (Ambient Mix).flac
#EXTINF:390,Autechre - Nine
/app/music/Autechre/Nine.flac
#EXTINF:380,Labradford - G (Mi Media Naranja)
/app/music/Labradford/G (Mi Media Naranja).flac