Deploy Aether Garden application
Browse files- .pytest_cache/v/cache/lastfailed +1 -3
- ui/book_display.py +12 -2
- ui/styles.css +118 -20
.pytest_cache/v/cache/lastfailed
CHANGED
|
@@ -1,3 +1 @@
|
|
| 1 |
-
{
|
| 2 |
-
"tests/test_diorama_scene.py": true
|
| 3 |
-
}
|
|
|
|
| 1 |
+
{}
|
|
|
|
|
|
ui/book_display.py
CHANGED
|
@@ -184,19 +184,29 @@ def render_book_for_day(
|
|
| 184 |
return "\n".join(parts)
|
| 185 |
|
| 186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 187 |
def render_activity_feed(limit: int = 5) -> str:
|
| 188 |
entries = get_entries(limit=limit)
|
| 189 |
|
| 190 |
if not entries:
|
| 191 |
return '<p class="feed-empty">The Realm is quiet. Be the first to summon something.</p>'
|
| 192 |
|
| 193 |
-
parts = ['<div class="activity-feed">']
|
| 194 |
for entry in entries[:limit]:
|
| 195 |
type_class = ENTRY_TYPE_CLASSES.get(entry["entry_type"], "")
|
|
|
|
| 196 |
parts.append(f"""
|
| 197 |
<div class="feed-item {type_class}">
|
| 198 |
<span class="feed-day">Day {entry['world_day']}</span>
|
| 199 |
-
<p class="feed-content">{
|
| 200 |
</div>
|
| 201 |
""")
|
| 202 |
parts.append("</div>")
|
|
|
|
| 184 |
return "\n".join(parts)
|
| 185 |
|
| 186 |
|
| 187 |
+
def _trim_feed_content(content: str, world_day: int) -> str:
|
| 188 |
+
"""Drop redundant 'On Day N,' prefix when the day badge already shows it."""
|
| 189 |
+
import re
|
| 190 |
+
|
| 191 |
+
text = (content or "").strip()
|
| 192 |
+
text = re.sub(rf"^On Day {world_day},?\s*", "", text, flags=re.IGNORECASE)
|
| 193 |
+
return text
|
| 194 |
+
|
| 195 |
+
|
| 196 |
def render_activity_feed(limit: int = 5) -> str:
|
| 197 |
entries = get_entries(limit=limit)
|
| 198 |
|
| 199 |
if not entries:
|
| 200 |
return '<p class="feed-empty">The Realm is quiet. Be the first to summon something.</p>'
|
| 201 |
|
| 202 |
+
parts = ['<div class="activity-feed activity-feed-scroll">']
|
| 203 |
for entry in entries[:limit]:
|
| 204 |
type_class = ENTRY_TYPE_CLASSES.get(entry["entry_type"], "")
|
| 205 |
+
body = _trim_feed_content(entry["content"], entry["world_day"])
|
| 206 |
parts.append(f"""
|
| 207 |
<div class="feed-item {type_class}">
|
| 208 |
<span class="feed-day">Day {entry['world_day']}</span>
|
| 209 |
+
<p class="feed-content">{body}</p>
|
| 210 |
</div>
|
| 211 |
""")
|
| 212 |
parts.append("</div>")
|
ui/styles.css
CHANGED
|
@@ -3911,7 +3911,8 @@ body,
|
|
| 3911 |
.tome-printed-page .activity-feed {
|
| 3912 |
padding: 0 !important;
|
| 3913 |
margin: 0 !important;
|
| 3914 |
-
overflow: hidden !important;
|
|
|
|
| 3915 |
}
|
| 3916 |
|
| 3917 |
.tome-printed-page .feed-item {
|
|
@@ -3925,10 +3926,9 @@ body,
|
|
| 3925 |
font-family: 'IM Fell English', serif !important;
|
| 3926 |
font-size: 0.88rem !important;
|
| 3927 |
line-height: 1.45 !important;
|
| 3928 |
-
display:
|
| 3929 |
-
|
| 3930 |
-
-webkit-
|
| 3931 |
-
overflow: hidden;
|
| 3932 |
}
|
| 3933 |
|
| 3934 |
.tome-printed-page .feed-day {
|
|
@@ -4270,8 +4270,30 @@ body,
|
|
| 4270 |
}
|
| 4271 |
|
| 4272 |
.souls-filter-row {
|
| 4273 |
-
|
| 4274 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4275 |
}
|
| 4276 |
|
| 4277 |
/* Entity hologram — Souls right page */
|
|
@@ -5125,6 +5147,20 @@ body.aether-realm-entered #realm-opening-host {
|
|
| 5125 |
border: 1px solid rgba(138, 106, 58, 0.2) !important;
|
| 5126 |
border-radius: 4px !important;
|
| 5127 |
background: rgba(255, 249, 232, 0.4) !important;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5128 |
}
|
| 5129 |
|
| 5130 |
.tome-page-right .activity-feed::before {
|
|
@@ -5692,8 +5728,8 @@ body.aether-realm-entered #realm-opening-host {
|
|
| 5692 |
top: auto !important;
|
| 5693 |
left: auto !important;
|
| 5694 |
transform: none !important;
|
| 5695 |
-
float:
|
| 5696 |
-
margin:
|
| 5697 |
width: 72px;
|
| 5698 |
height: 72px;
|
| 5699 |
}
|
|
@@ -5870,20 +5906,41 @@ body.aether-realm-entered #realm-opening-host {
|
|
| 5870 |
}
|
| 5871 |
|
| 5872 |
.tome-summon-index .seal-summon-btn,
|
| 5873 |
-
.tome-summon-index button.seal-summon-btn
|
|
|
|
| 5874 |
flex: 0 0 auto !important;
|
| 5875 |
display: block !important;
|
| 5876 |
visibility: visible !important;
|
|
|
|
| 5877 |
width: 100% !important;
|
| 5878 |
max-width: 100% !important;
|
| 5879 |
-
min-height:
|
| 5880 |
-
margin: 0.
|
| 5881 |
-
padding: 0.
|
| 5882 |
-
font-size: 0.
|
| 5883 |
-
|
| 5884 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5885 |
position: relative !important;
|
| 5886 |
-
z-index:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5887 |
}
|
| 5888 |
|
| 5889 |
.tome-summon-index .summon-submit-hint {
|
|
@@ -5893,7 +5950,7 @@ body.aether-realm-entered #realm-opening-host {
|
|
| 5893 |
text-transform: uppercase;
|
| 5894 |
color: #8a6424;
|
| 5895 |
text-align: center;
|
| 5896 |
-
margin: 0 0 0.
|
| 5897 |
}
|
| 5898 |
|
| 5899 |
.tome-summon-stage {
|
|
@@ -5901,6 +5958,17 @@ body.aether-realm-entered #realm-opening-host {
|
|
| 5901 |
align-items: stretch !important;
|
| 5902 |
}
|
| 5903 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5904 |
.tome-summon-stage .entity-result-slot,
|
| 5905 |
.tome-summon-stage .entity-result-slot .block {
|
| 5906 |
width: 100% !important;
|
|
@@ -5937,19 +6005,49 @@ body.aether-realm-entered #realm-opening-host {
|
|
| 5937 |
background: rgba(255, 249, 232, 0.72) !important;
|
| 5938 |
border: 1px solid rgba(138, 106, 58, 0.32) !important;
|
| 5939 |
border-radius: 10px !important;
|
| 5940 |
-
padding: 0
|
| 5941 |
color: #3d2814 !important;
|
| 5942 |
box-shadow: inset 0 0 18px rgba(88, 56, 24, 0.06) !important;
|
| 5943 |
overflow: visible !important;
|
| 5944 |
max-height: none !important;
|
| 5945 |
}
|
| 5946 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5947 |
.tome-summon-stage .entity-card-top {
|
| 5948 |
display: grid !important;
|
| 5949 |
grid-template-columns: 72px minmax(0, 1fr) !important;
|
| 5950 |
gap: 0.65rem !important;
|
| 5951 |
align-items: start !important;
|
| 5952 |
-
margin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5953 |
}
|
| 5954 |
|
| 5955 |
.tome-summon-stage .entity-portrait {
|
|
|
|
| 3911 |
.tome-printed-page .activity-feed {
|
| 3912 |
padding: 0 !important;
|
| 3913 |
margin: 0 !important;
|
| 3914 |
+
overflow-x: hidden !important;
|
| 3915 |
+
overflow-y: auto !important;
|
| 3916 |
}
|
| 3917 |
|
| 3918 |
.tome-printed-page .feed-item {
|
|
|
|
| 3926 |
font-family: 'IM Fell English', serif !important;
|
| 3927 |
font-size: 0.88rem !important;
|
| 3928 |
line-height: 1.45 !important;
|
| 3929 |
+
display: block !important;
|
| 3930 |
+
overflow: visible !important;
|
| 3931 |
+
-webkit-line-clamp: unset !important;
|
|
|
|
| 3932 |
}
|
| 3933 |
|
| 3934 |
.tome-printed-page .feed-day {
|
|
|
|
| 4270 |
}
|
| 4271 |
|
| 4272 |
.souls-filter-row {
|
| 4273 |
+
display: flex !important;
|
| 4274 |
+
flex-wrap: wrap !important;
|
| 4275 |
+
gap: 0.45rem !important;
|
| 4276 |
+
margin-bottom: 0.45rem !important;
|
| 4277 |
+
align-items: flex-end !important;
|
| 4278 |
+
position: relative !important;
|
| 4279 |
+
z-index: 4 !important;
|
| 4280 |
+
}
|
| 4281 |
+
|
| 4282 |
+
.tome-souls-index .souls-filter-row > .block,
|
| 4283 |
+
.tome-souls-index .souls-filter-row > .form {
|
| 4284 |
+
flex: 1 1 calc(50% - 0.35rem) !important;
|
| 4285 |
+
min-width: 0 !important;
|
| 4286 |
+
max-width: 100% !important;
|
| 4287 |
+
margin: 0 !important;
|
| 4288 |
+
position: relative !important;
|
| 4289 |
+
z-index: 4 !important;
|
| 4290 |
+
}
|
| 4291 |
+
|
| 4292 |
+
.tome-souls-index .souls-filter-row input,
|
| 4293 |
+
.tome-souls-index .souls-filter-row textarea {
|
| 4294 |
+
width: 100% !important;
|
| 4295 |
+
max-width: 100% !important;
|
| 4296 |
+
box-sizing: border-box !important;
|
| 4297 |
}
|
| 4298 |
|
| 4299 |
/* Entity hologram — Souls right page */
|
|
|
|
| 5147 |
border: 1px solid rgba(138, 106, 58, 0.2) !important;
|
| 5148 |
border-radius: 4px !important;
|
| 5149 |
background: rgba(255, 249, 232, 0.4) !important;
|
| 5150 |
+
max-height: 11.5rem !important;
|
| 5151 |
+
overflow-y: auto !important;
|
| 5152 |
+
overflow-x: hidden !important;
|
| 5153 |
+
-webkit-overflow-scrolling: touch;
|
| 5154 |
+
scrollbar-width: thin;
|
| 5155 |
+
}
|
| 5156 |
+
|
| 5157 |
+
.tome-page-right .activity-feed::-webkit-scrollbar {
|
| 5158 |
+
width: 5px;
|
| 5159 |
+
}
|
| 5160 |
+
|
| 5161 |
+
.tome-page-right .activity-feed::-webkit-scrollbar-thumb {
|
| 5162 |
+
background: rgba(138, 106, 58, 0.45);
|
| 5163 |
+
border-radius: 4px;
|
| 5164 |
}
|
| 5165 |
|
| 5166 |
.tome-page-right .activity-feed::before {
|
|
|
|
| 5728 |
top: auto !important;
|
| 5729 |
left: auto !important;
|
| 5730 |
transform: none !important;
|
| 5731 |
+
float: none !important;
|
| 5732 |
+
margin: -2rem auto 0.45rem !important;
|
| 5733 |
width: 72px;
|
| 5734 |
height: 72px;
|
| 5735 |
}
|
|
|
|
| 5906 |
}
|
| 5907 |
|
| 5908 |
.tome-summon-index .seal-summon-btn,
|
| 5909 |
+
.tome-summon-index button.seal-summon-btn,
|
| 5910 |
+
.tome-summon-index #summon-seal-btn {
|
| 5911 |
flex: 0 0 auto !important;
|
| 5912 |
display: block !important;
|
| 5913 |
visibility: visible !important;
|
| 5914 |
+
opacity: 1 !important;
|
| 5915 |
width: 100% !important;
|
| 5916 |
max-width: 100% !important;
|
| 5917 |
+
min-height: 3rem !important;
|
| 5918 |
+
margin: 0.25rem auto 0.85rem !important;
|
| 5919 |
+
padding: 0.72rem 1.35rem !important;
|
| 5920 |
+
font-size: 0.84rem !important;
|
| 5921 |
+
font-weight: 600 !important;
|
| 5922 |
+
letter-spacing: 0.1em !important;
|
| 5923 |
+
text-transform: uppercase !important;
|
| 5924 |
+
color: #fff8e8 !important;
|
| 5925 |
+
background: linear-gradient(180deg, #d43845 0%, #8f1a28 55%, #6e1018 100%) !important;
|
| 5926 |
+
border: 2px solid #f2d8a0 !important;
|
| 5927 |
+
box-shadow:
|
| 5928 |
+
0 0 0 3px rgba(201, 42, 56, 0.18),
|
| 5929 |
+
0 8px 22px rgba(100, 18, 28, 0.38) !important;
|
| 5930 |
position: relative !important;
|
| 5931 |
+
z-index: 5 !important;
|
| 5932 |
+
cursor: pointer !important;
|
| 5933 |
+
pointer-events: auto !important;
|
| 5934 |
+
filter: none !important;
|
| 5935 |
+
transition: transform 0.15s ease, box-shadow 0.15s ease !important;
|
| 5936 |
+
}
|
| 5937 |
+
|
| 5938 |
+
.tome-summon-index #summon-seal-btn:hover,
|
| 5939 |
+
.tome-summon-index button.seal-summon-btn:hover {
|
| 5940 |
+
transform: translateY(-1px) !important;
|
| 5941 |
+
box-shadow:
|
| 5942 |
+
0 0 0 3px rgba(201, 42, 56, 0.28),
|
| 5943 |
+
0 12px 26px rgba(100, 18, 28, 0.45) !important;
|
| 5944 |
}
|
| 5945 |
|
| 5946 |
.tome-summon-index .summon-submit-hint {
|
|
|
|
| 5950 |
text-transform: uppercase;
|
| 5951 |
color: #8a6424;
|
| 5952 |
text-align: center;
|
| 5953 |
+
margin: 0.45rem 0 0.15rem;
|
| 5954 |
}
|
| 5955 |
|
| 5956 |
.tome-summon-stage {
|
|
|
|
| 5958 |
align-items: stretch !important;
|
| 5959 |
}
|
| 5960 |
|
| 5961 |
+
.tome-summon-stage > .block:has(.entity-result-slot),
|
| 5962 |
+
.tome-summon-stage .entity-result-slot {
|
| 5963 |
+
flex: 1 1 auto !important;
|
| 5964 |
+
min-height: 0 !important;
|
| 5965 |
+
overflow: visible !important;
|
| 5966 |
+
}
|
| 5967 |
+
|
| 5968 |
+
.tome-summon-stage .entity-card .entity-card-top {
|
| 5969 |
+
margin-top: 0 !important;
|
| 5970 |
+
}
|
| 5971 |
+
|
| 5972 |
.tome-summon-stage .entity-result-slot,
|
| 5973 |
.tome-summon-stage .entity-result-slot .block {
|
| 5974 |
width: 100% !important;
|
|
|
|
| 6005 |
background: rgba(255, 249, 232, 0.72) !important;
|
| 6006 |
border: 1px solid rgba(138, 106, 58, 0.32) !important;
|
| 6007 |
border-radius: 10px !important;
|
| 6008 |
+
padding: 0 !important;
|
| 6009 |
color: #3d2814 !important;
|
| 6010 |
box-shadow: inset 0 0 18px rgba(88, 56, 24, 0.06) !important;
|
| 6011 |
overflow: visible !important;
|
| 6012 |
max-height: none !important;
|
| 6013 |
}
|
| 6014 |
|
| 6015 |
+
.tome-summon-stage .entity-card-banner {
|
| 6016 |
+
height: 9.5rem !important;
|
| 6017 |
+
min-height: 9.5rem !important;
|
| 6018 |
+
width: 100% !important;
|
| 6019 |
+
margin: 0 !important;
|
| 6020 |
+
border-radius: 10px 10px 0 0 !important;
|
| 6021 |
+
background-size: cover !important;
|
| 6022 |
+
background-position: center center !important;
|
| 6023 |
+
}
|
| 6024 |
+
|
| 6025 |
+
.tome-summon-stage .entity-card-banner-scrim {
|
| 6026 |
+
display: block !important;
|
| 6027 |
+
background: linear-gradient(180deg, rgba(12, 10, 8, 0.05) 0%, rgba(255, 249, 232, 0.92) 100%) !important;
|
| 6028 |
+
}
|
| 6029 |
+
|
| 6030 |
.tome-summon-stage .entity-card-top {
|
| 6031 |
display: grid !important;
|
| 6032 |
grid-template-columns: 72px minmax(0, 1fr) !important;
|
| 6033 |
gap: 0.65rem !important;
|
| 6034 |
align-items: start !important;
|
| 6035 |
+
margin: 0 !important;
|
| 6036 |
+
margin-top: 0 !important;
|
| 6037 |
+
padding: 0.75rem 0.9rem 0.5rem !important;
|
| 6038 |
+
}
|
| 6039 |
+
|
| 6040 |
+
.tome-summon-stage .entity-appearance,
|
| 6041 |
+
.tome-summon-stage .entity-traits,
|
| 6042 |
+
.tome-summon-stage .entity-section,
|
| 6043 |
+
.tome-summon-stage .entity-greeting,
|
| 6044 |
+
.tome-summon-stage .entity-footer {
|
| 6045 |
+
padding-left: 0.9rem !important;
|
| 6046 |
+
padding-right: 0.9rem !important;
|
| 6047 |
+
}
|
| 6048 |
+
|
| 6049 |
+
.tome-summon-stage .entity-footer {
|
| 6050 |
+
padding-bottom: 0.9rem !important;
|
| 6051 |
}
|
| 6052 |
|
| 6053 |
.tome-summon-stage .entity-portrait {
|