diff options
| author | bndw <ben@bdw.to> | 2026-03-04 21:36:32 -0800 |
|---|---|---|
| committer | bndw <ben@bdw.to> | 2026-03-04 21:36:32 -0800 |
| commit | 73d2680b83ccbdbd8dfec2d319533e98b379b830 (patch) | |
| tree | 193eaf5157edcf12d06dde85fb44efaf3aae2004 /renderer/src/styles | |
| parent | b6405dd6a4ba65fc5dc6746db7be7be7d0bb29f3 (diff) | |
feat: Thread optional `phase` param into `db/sessions.ts::cre… (+7 more)
- ✅ Thread optional `phase` param into `db/sessions.ts::createSession()`
- ✅ Thread optional `phase` param into `ipc/handlers.ts` sessions:create handler
- ✅ Thread optional `phase` param into `preload.ts` createSession API
- ✅ Update Plan phase system prompt to gracefully handle missing research.md
- ✅ Update Implement phase system prompt to gracefully handle missing plan.md
- ✅ Create `renderer/src/components/NewSessionModal.tsx`
- ✅ Update `App.tsx`: add modal state, split handler, add modal JSX
- ✅ Add modal CSS to `globals.css`
Diffstat (limited to 'renderer/src/styles')
| -rw-r--r-- | renderer/src/styles/globals.css | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/renderer/src/styles/globals.css b/renderer/src/styles/globals.css index c463432..dc7d4a5 100644 --- a/renderer/src/styles/globals.css +++ b/renderer/src/styles/globals.css | |||
| @@ -1711,6 +1711,166 @@ html[data-theme="light"] .settings-textarea:focus { | |||
| 1711 | margin-left: 4px; | 1711 | margin-left: 4px; |
| 1712 | } | 1712 | } |
| 1713 | 1713 | ||
| 1714 | /* ── New Session Modal ───────────────────────────────────────── */ | ||
| 1715 | .modal-backdrop { | ||
| 1716 | position: fixed; | ||
| 1717 | inset: 0; | ||
| 1718 | background: rgba(0, 0, 0, 0.55); | ||
| 1719 | display: flex; | ||
| 1720 | align-items: center; | ||
| 1721 | justify-content: center; | ||
| 1722 | z-index: 200; | ||
| 1723 | } | ||
| 1724 | |||
| 1725 | .modal { | ||
| 1726 | background: var(--bg-secondary); | ||
| 1727 | border: 1px solid var(--border); | ||
| 1728 | border-radius: 4px; | ||
| 1729 | width: 400px; | ||
| 1730 | display: flex; | ||
| 1731 | flex-direction: column; | ||
| 1732 | box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); | ||
| 1733 | } | ||
| 1734 | |||
| 1735 | .modal-header { | ||
| 1736 | display: flex; | ||
| 1737 | justify-content: space-between; | ||
| 1738 | align-items: center; | ||
| 1739 | padding: 12px 16px; | ||
| 1740 | border-bottom: 1px solid var(--border); | ||
| 1741 | } | ||
| 1742 | |||
| 1743 | .modal-title { | ||
| 1744 | font-size: 13px; | ||
| 1745 | font-weight: 600; | ||
| 1746 | color: var(--text-primary); | ||
| 1747 | text-transform: uppercase; | ||
| 1748 | letter-spacing: 0.08em; | ||
| 1749 | } | ||
| 1750 | |||
| 1751 | .modal-close { | ||
| 1752 | background: transparent; | ||
| 1753 | border: 1px solid var(--border); | ||
| 1754 | border-radius: 2px; | ||
| 1755 | color: var(--text-secondary); | ||
| 1756 | font-size: 14px; | ||
| 1757 | width: 22px; | ||
| 1758 | height: 22px; | ||
| 1759 | cursor: pointer; | ||
| 1760 | display: flex; | ||
| 1761 | align-items: center; | ||
| 1762 | justify-content: center; | ||
| 1763 | transition: background 0.15s; | ||
| 1764 | } | ||
| 1765 | |||
| 1766 | .modal-close:hover { | ||
| 1767 | background: var(--bg-tertiary); | ||
| 1768 | color: var(--text-primary); | ||
| 1769 | } | ||
| 1770 | |||
| 1771 | .modal-body { | ||
| 1772 | padding: 20px 16px 16px; | ||
| 1773 | display: flex; | ||
| 1774 | flex-direction: column; | ||
| 1775 | gap: 12px; | ||
| 1776 | } | ||
| 1777 | |||
| 1778 | .modal-prompt { | ||
| 1779 | font-size: 12px; | ||
| 1780 | color: var(--text-secondary); | ||
| 1781 | text-transform: uppercase; | ||
| 1782 | letter-spacing: 0.08em; | ||
| 1783 | } | ||
| 1784 | |||
| 1785 | .phase-cards { | ||
| 1786 | display: flex; | ||
| 1787 | flex-direction: column; | ||
| 1788 | gap: 6px; | ||
| 1789 | } | ||
| 1790 | |||
| 1791 | .phase-card { | ||
| 1792 | display: flex; | ||
| 1793 | flex-direction: column; | ||
| 1794 | align-items: flex-start; | ||
| 1795 | gap: 2px; | ||
| 1796 | padding: 10px 12px; | ||
| 1797 | background: var(--bg-primary); | ||
| 1798 | border: 1px solid var(--border); | ||
| 1799 | border-radius: 3px; | ||
| 1800 | cursor: pointer; | ||
| 1801 | text-align: left; | ||
| 1802 | transition: border-color 0.15s, background 0.15s; | ||
| 1803 | width: 100%; | ||
| 1804 | } | ||
| 1805 | |||
| 1806 | .phase-card:hover { | ||
| 1807 | border-color: var(--accent); | ||
| 1808 | background: var(--bg-tertiary); | ||
| 1809 | } | ||
| 1810 | |||
| 1811 | .phase-card.selected { | ||
| 1812 | border-color: var(--accent); | ||
| 1813 | background: var(--bg-tertiary); | ||
| 1814 | } | ||
| 1815 | |||
| 1816 | .phase-card-label { | ||
| 1817 | font-size: 12px; | ||
| 1818 | font-weight: 600; | ||
| 1819 | color: var(--text-primary); | ||
| 1820 | } | ||
| 1821 | |||
| 1822 | .phase-card.selected .phase-card-label { | ||
| 1823 | color: var(--accent); | ||
| 1824 | } | ||
| 1825 | |||
| 1826 | .phase-card-desc { | ||
| 1827 | font-size: 11px; | ||
| 1828 | color: var(--text-secondary); | ||
| 1829 | } | ||
| 1830 | |||
| 1831 | .modal-footer { | ||
| 1832 | display: flex; | ||
| 1833 | justify-content: flex-end; | ||
| 1834 | gap: 8px; | ||
| 1835 | padding: 12px 16px; | ||
| 1836 | border-top: 1px solid var(--border); | ||
| 1837 | } | ||
| 1838 | |||
| 1839 | .modal-btn-secondary { | ||
| 1840 | background: transparent; | ||
| 1841 | border: 1px solid var(--border); | ||
| 1842 | border-radius: 2px; | ||
| 1843 | color: var(--text-secondary); | ||
| 1844 | font-size: 12px; | ||
| 1845 | padding: 5px 12px; | ||
| 1846 | cursor: pointer; | ||
| 1847 | font-family: inherit; | ||
| 1848 | transition: background 0.15s; | ||
| 1849 | } | ||
| 1850 | |||
| 1851 | .modal-btn-secondary:hover { | ||
| 1852 | background: var(--bg-tertiary); | ||
| 1853 | color: var(--text-primary); | ||
| 1854 | } | ||
| 1855 | |||
| 1856 | .modal-btn-primary { | ||
| 1857 | background: var(--accent); | ||
| 1858 | border: 1px solid var(--accent); | ||
| 1859 | border-radius: 2px; | ||
| 1860 | color: #fff; | ||
| 1861 | font-size: 12px; | ||
| 1862 | padding: 5px 12px; | ||
| 1863 | cursor: pointer; | ||
| 1864 | font-family: inherit; | ||
| 1865 | font-weight: 600; | ||
| 1866 | transition: background 0.15s; | ||
| 1867 | } | ||
| 1868 | |||
| 1869 | .modal-btn-primary:hover { | ||
| 1870 | background: var(--accent-hover); | ||
| 1871 | border-color: var(--accent-hover); | ||
| 1872 | } | ||
| 1873 | |||
| 1714 | .mcp-tools-empty { | 1874 | .mcp-tools-empty { |
| 1715 | font-size: 11px; | 1875 | font-size: 11px; |
| 1716 | color: var(--text-secondary); | 1876 | color: var(--text-secondary); |
