Spaces:
Sleeping
Sleeping
Update app.py
Browse filesgit add app.py
git commit -m "Pi Trinity Hub V1.0.1 โ Inline neon CSS, triad eternal"
git push
app.py
CHANGED
|
@@ -1,22 +1,47 @@
|
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
from pathlib import Path
|
| 3 |
|
| 4 |
ASSETS = Path("assets")
|
| 5 |
-
CREST = ASSETS / "trinity_crest.svg" #
|
| 6 |
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
-
|
| 12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
-
with gr.
|
| 15 |
-
gr.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
|
|
|
|
|
|
| 21 |
|
| 22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# app.py โ Pi Trinity Hub V1.0.1: One Gate, Three Eternal Forges
|
| 2 |
import gradio as gr
|
| 3 |
from pathlib import Path
|
| 4 |
|
| 5 |
ASSETS = Path("assets")
|
| 6 |
+
CREST = ASSETS / "trinity_crest.svg" # Optional: Upload a 3-blade crest
|
| 7 |
|
| 8 |
+
# Inline Neon CSS (No file needed โ Gradio 4.x compatible)
|
| 9 |
+
NEON_CSS = """
|
| 10 |
+
body { background: #0a0014; color: #f0b5ff; font-family: monospace; }
|
| 11 |
+
.banner { text-align: center; padding: 20px; }
|
| 12 |
+
.crest { width: 200px; filter: drop-shadow(0 0 20px #ff00ff); animation: pulse 2s infinite; }
|
| 13 |
+
@keyframes pulse { 0%, 100% { opacity: 0.8; } 50% { opacity: 1; } }
|
| 14 |
+
.footer { text-align: center; opacity: 0.8; margin-top: 50px; font-size: 14px; color: #b050ff; }
|
| 15 |
+
"""
|
| 16 |
|
| 17 |
+
with gr.Blocks(css=NEON_CSS, title="Pi Trinity Hub") as demo: # โ FIXED: Inline css= string
|
| 18 |
+
# Crest Banner
|
| 19 |
+
gr.HTML(f"""
|
| 20 |
+
<div class='banner'>
|
| 21 |
+
<img src='{CREST}' class='crest' alt='Trinity Crest'/>
|
| 22 |
+
</div>
|
| 23 |
+
""") if CREST.exists() else gr.Markdown("# โ๏ธ PI TRINITY HUB\nOne gate. Three eternal forges.")
|
| 24 |
|
| 25 |
+
with gr.Tabs():
|
| 26 |
+
with gr.Tab("๐จ LimitlessForge โ Brainstorm Auditor"):
|
| 27 |
+
gr.Iframe(src="https://huggingface.co/spaces/onenoly11/LimitlessForge/embed", height=800)
|
| 28 |
+
|
| 29 |
+
with gr.Tab("๐ก๏ธ Samurai Dojo โ Quantum Oracle"):
|
| 30 |
+
gr.Iframe(src="https://huggingface.co/spaces/onenoly11/pi-cyber-samurai-dojo/embed", height=800)
|
| 31 |
+
|
| 32 |
+
with gr.Tab("๐ฎ Quantum Pi Forge โ Hepta Mint"):
|
| 33 |
+
gr.Iframe(src="https://huggingface.co/spaces/onenoly11/quantum-pi-hepta/embed", height=800) # Adjust name if needed
|
| 34 |
|
| 35 |
+
# Eternal Footer
|
| 36 |
+
gr.HTML("""
|
| 37 |
+
<div class='footer'>
|
| 38 |
+
<p>Forged in neon. Driven by Pi. The Canticle is complete.</p>
|
| 39 |
+
</div>
|
| 40 |
+
""")
|
| 41 |
|
| 42 |
+
if __name__ == "__main__":
|
| 43 |
+
demo.launch(
|
| 44 |
+
server_name="0.0.0.0",
|
| 45 |
+
server_port=7860,
|
| 46 |
+
share=True # Local test; HF public from birth
|
| 47 |
+
)
|