-
-
+
+
+
-
+
-
Already have an account? Login
+
Already have an account? Login
'''
return HTMLResponse(base_html("Register", content))
@@ -564,23 +458,23 @@ async def ui_register_submit(request: Request):
password2 = form.get("password2", "")
if not username or not password:
- return HTMLResponse('
Username and password are required
')
+ return HTMLResponse('
Username and password are required
')
if password != password2:
- return HTMLResponse('
Passwords do not match
')
+ return HTMLResponse('
Passwords do not match
')
if len(password) < 6:
- return HTMLResponse('
Password must be at least 6 characters
')
+ return HTMLResponse('
Password must be at least 6 characters
')
try:
user = create_user(DATA_DIR, username, password, email)
except ValueError as e:
- return HTMLResponse(f'
{str(e)}
')
+ return HTMLResponse(f'
{str(e)}
')
token = create_access_token(user.username)
response = HTMLResponse(f'''
-
Registration successful! Redirecting...
+
Registration successful! Redirecting...
''')
response.set_cookie(
@@ -611,34 +505,39 @@ async def ui_registry_page(request: Request):
assets = registry.get("assets", {})
if not assets:
- content = '
Registry
No assets registered yet.
'
+ content = '''
+
Registry
+
No assets registered yet.
+ '''
else:
rows = ""
for name, asset in sorted(assets.items(), key=lambda x: x[1].get("created_at", ""), reverse=True):
hash_short = asset.get("content_hash", "")[:16] + "..."
rows += f'''
-
- | {name} |
- {asset.get("asset_type", "")} |
- {hash_short} |
- {", ".join(asset.get("tags", []))} |
+
+ | {name} |
+ {asset.get("asset_type", "")} |
+ {hash_short} |
+ {", ".join(asset.get("tags", []))} |
'''
content = f'''
-
Registry ({len(assets)} assets)
-
-
-
- | Name |
- Type |
- Content Hash |
- Tags |
-
-
-
- {rows}
-
-
+
Registry ({len(assets)} assets)
+
+
+
+
+ | Name |
+ Type |
+ Content Hash |
+ Tags |
+
+
+
+ {rows}
+
+
+
'''
return HTMLResponse(base_html("Registry", content, username))
@@ -650,34 +549,41 @@ async def ui_activities_page(request: Request):
activities = load_activities()
if not activities:
- content = '
Activities
No activities yet.
'
+ content = '''
+
Activities
+
No activities yet.
+ '''
else:
rows = ""
for activity in reversed(activities):
obj = activity.get("object_data", {})
+ activity_type = activity.get("activity_type", "")
+ type_color = "bg-green-600" if activity_type == "Create" else "bg-yellow-600" if activity_type == "Update" else "bg-gray-600"
rows += f'''
-
- | {activity.get("activity_type", "")} |
- {obj.get("name", "")} |
- {obj.get("contentHash", {}).get("value", "")[:16]}... |
- {activity.get("published", "")[:10]} |
+
+ | {activity_type} |
+ {obj.get("name", "")} |
+ {obj.get("contentHash", {}).get("value", "")[:16]}... |
+ {activity.get("published", "")[:10]} |
'''
content = f'''
-
Activities ({len(activities)} total)
-
-
-
- | Type |
- Object |
- Content Hash |
- Published |
-
-
-
- {rows}
-
-
+
Activities ({len(activities)} total)
+
+
+
+
+ | Type |
+ Object |
+ Content Hash |
+ Published |
+
+
+
+ {rows}
+
+
+
'''
return HTMLResponse(base_html("Activities", content, username))
@@ -689,34 +595,39 @@ async def ui_users_page(request: Request):
users = load_users(DATA_DIR)
if not users:
- content = '
Users
No users registered yet.
'
+ content = '''
+
Users
+
No users registered yet.
+ '''
else:
rows = ""
for username, user_data in sorted(users.items()):
actor_url = f"https://{DOMAIN}/users/{username}"
webfinger = f"@{username}@{DOMAIN}"
rows += f'''
-
- | {username} |
- {webfinger} |
- {user_data.get("created_at", "")[:10]} |
+
+ | {username} |
+ {webfinger} |
+ {user_data.get("created_at", "")[:10]} |
'''
content = f'''
-
Users ({len(users)} registered)
-
Each user has their own ActivityPub actor that can be followed from Mastodon and other federated platforms.
-
-
-
- | Username |
- ActivityPub Handle |
- Registered |
-
-
-
- {rows}
-
-
+
Users ({len(users)} registered)
+
Each user has their own ActivityPub actor that can be followed from Mastodon and other federated platforms.
+
+
+
+
+ | Username |
+ ActivityPub Handle |
+ Registered |
+
+
+
+ {rows}
+
+
+
'''
return HTMLResponse(base_html("Users", content, current_user))