Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## Manual new project button (2026-06-16)

### Added
- Sidebar **New project** button (`addProject`) - creates a blank project and opens the detail sheet for naming and adding tasks, with no assistant or chat required.

### Reasoning
- Tasks and subtasks could already be added manually under existing projects via the detail sheet; top-level projects were only reachable through the assistant or transcript flows.

## Remove sample-data flash on load (2026-06-16)

### Changed
Expand Down
3 changes: 3 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,9 @@
<button class="sbicon" title="Team photos" onclick="openTeam()">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.7"><circle cx="7.5" cy="7" r="2.7"/><path d="M2.6 16.4c0-2.7 2.2-4.4 4.9-4.4s4.9 1.7 4.9 4.4"/><path d="M13.4 5.1a2.4 2.4 0 0 1 0 4.6M14.4 12.2c2 .4 3.3 1.9 3.3 4.2"/></svg>
</button>
<button class="sbicon" title="New project" onclick="addProject()">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 6.2h5.2l1.4 1.6h6.4v8.6a1.6 1.6 0 0 1-1.6 1.6H5.1a1.6 1.6 0 0 1-1.6-1.6V6.2z"/><path d="M10 10.2v4.2M8 12.3h4"/></svg>
</button>
<button class="sbicon" title="New (talk to assistant)" onclick="micFabTap()">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round"><path d="M10 4.5v11M4.5 10h11"/></svg>
</button>
Expand Down
11 changes: 10 additions & 1 deletion src/app/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,15 @@ function addChild(id){ const el=document.getElementById("dSubNew"), v=el.value.t
if(findPath(id).length>=3) return; // subtasks can't have children
snap(); const n=findPath(id).pop(); n.children.push(T(cap1(v),n.owner,{d:n.due||null}));
renderAll(); openDetail(id); }
function addProject(){
snap();
const proj=T("New project","fd",{open:true});
DATA.push(proj);
renderAll();
openDetail(proj.id);
const ti=document.getElementById("dTitle");
if(ti){ ti.focus(); ti.select(); }
}
function openDetail(id){
const path=findPath(id); if(!path) return;
const n=path[path.length-1], leaf=!n.children.length;
Expand Down Expand Up @@ -1518,7 +1527,7 @@ const _globals = {
toggleFlyout, toggleFocus, toggleShowDone, toggleSubs, closeCapture, toggleCapLang, minimizeCapture,
sendTurn, restoreCapture, skipKey, saveKey, clearKey, closeTranscript, runTranscript, closeReview,
closeTeam, closeSheet, setFilter, setScaleView, ding, toggleDone, openDetail, setZoom, setGView,
toggleExp, updTask, refreshBarMenu, addChild, deleteTask, addCapTask, barDown, barContext, pickSearch,
toggleExp, updTask, refreshBarMenu, addChild, addProject, deleteTask, addCapTask, barDown, barContext, pickSearch,
uploadPhoto, removePhoto, rvToggle, rvText, rvOwner, rvDue, rvSize, pushApproved, attachTranscript,
doSearch, refreshCard, delCapTask, setTask, setTaskOwner, setTaskSize, setSub, setSubOwner, addSub,
delSub, commitCapture, toggleListen, stopListen, renderAll, moveTask, setKeyVal,
Expand Down
1 change: 1 addition & 0 deletions tests/smoke.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ describe("project layout", () => {
const html = readFileSync("index.html", "utf8");
expect(html).toContain('<script type="module" src="src/app/main.js">');
expect(html).not.toContain("<script>\n/* ================= sample data");
expect(html).toContain('onclick="addProject()"');
});

it("exports core lib modules", async () => {
Expand Down
Loading