From dda3453d79f289148c22941c4f9a7f28158e4d6e Mon Sep 17 00:00:00 2001
From: robert <robert@myemail.cloud>
Date: Wed, 28 May 2025 12:23:10 -0400
Subject: [PATCH] version bump.

---
 src/App.js | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/src/App.js b/src/App.js
index 5827f67..d24ab0d 100644
--- a/src/App.js
+++ b/src/App.js
@@ -214,13 +214,16 @@ function App() {
         {!isAuthReady && !error && <p>Authenticating...</p>} 
       </main>
        <footer className="bg-slate-900 p-4 text-center text-sm text-slate-400 mt-8">
-        TTRPG Initiative Tracker v0.1.34
+        TTRPG Initiative Tracker v0.2.0
       </footer>
     </div>
   );
 }
 
 // --- Confirmation Modal Component ---
+// ... (ConfirmationModal, AdminView, CreateCampaignForm, CharacterManager, EncounterManager, CreateEncounterForm, ParticipantManager, EditParticipantModal, InitiativeControls, DisplayView, Modal, Icons remain the same as v0.1.29)
+// For brevity, only the changed App component's footer is shown. Assume all other components are the same as the last complete code block you received.
+
 function ConfirmationModal({ isOpen, onClose, onConfirm, title, message }) {
   if (!isOpen) return null;
   return (
@@ -240,11 +243,9 @@ function ConfirmationModal({ isOpen, onClose, onConfirm, title, message }) {
   );
 }
 
-// --- Admin View Component ---
 function AdminView({ userId }) {
   const { data: campaignsData, isLoading: isLoadingCampaigns, error: campaignsError } = useFirestoreCollection(getCampaignsCollectionPath());
   const { data: initialActiveInfoData } = useFirestoreDocument(getActiveDisplayDocPath());
-  
   const [campaignsWithDetails, setCampaignsWithDetails] = useState([]);
   const [selectedCampaignId, setSelectedCampaignId] = useState(null);
   const [showCreateCampaignModal, setShowCreateCampaignModal] = useState(false);
@@ -284,7 +285,6 @@ function AdminView({ userId }) {
     }
   }, [initialActiveInfoData, campaignsWithDetails, selectedCampaignId]);
 
-
   const handleCreateCampaign = async (name, backgroundUrl) => { 
     if (!db || !name.trim()) return;
     const newCampaignId = generateId();
@@ -317,7 +317,6 @@ function AdminView({ userId }) {
       await batch.commit();
       await deleteDoc(doc(db, getCampaignDocPath(campaignId)));
       if (selectedCampaignId === campaignId) setSelectedCampaignId(null);
-      
       const activeDisplayRef = doc(db, getActiveDisplayDocPath());
       const activeDisplaySnap = await getDoc(activeDisplayRef);
       if (activeDisplaySnap.exists() && activeDisplaySnap.data().activeCampaignId === campaignId) {
@@ -387,7 +386,6 @@ function AdminView({ userId }) {
   );
 }
 
-// --- CreateCampaignForm (No Change from v0.1.33) ---
 function CreateCampaignForm({ onCreate, onCancel }) {
   const [name, setName] = useState('');
   const [backgroundUrl, setBackgroundUrl] = useState(''); 
@@ -410,7 +408,7 @@ function CreateCampaignForm({ onCreate, onCancel }) {
   );
 }
 
-// --- CharacterManager (No Change from v0.1.33) ---
+
 function CharacterManager({ campaignId, campaignCharacters }) {
   const [characterName, setCharacterName] = useState('');
   const [defaultMaxHp, setDefaultMaxHp] = useState(10); 
@@ -836,9 +834,6 @@ function ParticipantManager({ encounter, encounterPath, campaignCharacters }) {
   );
 }
 
-// ... (EditParticipantModal, InitiativeControls, DisplayView, Modal, Icons)
-// The rest of the components are assumed to be the same as v0.1.28 for this update.
-
 function EditParticipantModal({ participant, onClose, onSave }) {
   const [name, setName] = useState(participant.name);
   const [initiative, setInitiative] = useState(participant.initiative);