- Add dedicated REST endpoints for feature CRUD (GET/POST/PUT/DELETE /api/projects/:id/features) - Add normalizeFeatureEntry() with updatedAt, updatedBy, shippedAt lifecycle - Auto-set shippedAt when status transitions to 'shipped' - Frontend api.js: getFeatures, createFeature, updateFeature, deleteFeature methods - App.jsx: optimistic CRUD handlers using dedicated feature endpoints - Project list: feature-status filter dropdown + 5-way sort (feature activity, feature status, project status, due date, name) - Project cards: feature log preview (latest entry + in-flight count) - FeaturesTab: filter by status, sort by updatedAt desc - FeatureRow: show updatedAt, updatedBy, shippedAt metadata; updatedBy edit field
Build instructions (macOS)
- Install deps:
cd "$(pwd)/frontend"
npm install
- Build the app (Vite):
npm run build
- Copy the build into the Electron app root (overwrite
dist/):
# from project root
cp -R frontend/dist/* ./dist/
- Start Electron:
npm start
Notes
- Ensure
viteand@vitejs/plugin-reactare infrontend/package.jsondevDependencies. - If your frontend source is in a different folder, place
vite.config.jsnext to that source or update the path above.