vrek: break the simplification goal into one issue per screen
Five: the shared disclosure and its rules, then the dashboard, the camera page, the recordings page, and what a new install sees first. Target is those five, measured at 0 today. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c9caf12922
commit
8be9b1c154
@ -1143,3 +1143,37 @@
|
||||
{"id":"evt-tkkx4p4cdy49","type":"node.created","subject":"gol-6x4ctm2","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"goal","title":"Simplify the interface: show less by default, everywhere","body":"The app has grown feature by feature and every page now shows everything it knows at once. Make each screen show what someone actually needs day to day, with detail and rarely-touched settings a click away rather than removed. User's answers 2026-09-20: a pass over the whole app, and the rule is show less by default rather than delete or merely re-space. Nothing loses a capability.\n\nWhere it stands today, as the starting point: the dashboard carries scan controls with timeout and sweep options permanently above the cards, and each card shows status, device lines, a profile table and several links; a camera page shows Live plus five panels (Streams, Image, Advanced image, Time & NTP, Network) with editing inside each; the recordings page lists every clip with camera, time and size. Obvious candidates: fold the scan options away until wanted, let a card show a picture, a name and status with the rest on demand, merge Image with Advanced image, put the long read-only detail behind a disclosure, and keep editing in one place per camera.\n\nPriority 1. Not decided yet, and worth settling before building: whether disclosures remember their state per person, how this interacts with the small screens the app already supports, and what the first-run experience should look like when there is nothing to show yet. Accessibility and the icon rules (pri-8ev5m89) still apply: hiding by default must not hide meaning, and a disclosure needs a name that says what is inside.","status":"active","owner":null,"attrs":{},"weight":1,"target":null,"direction":"up","unit":null},"at":"2026-09-20T11:32:50.607Z","parents":["evt-cm006jpy02wy"],"hash":"8f416d497bd5e72e907250d5fb4a9c438649fd7e03c1cb72b51e34b5d6f07caa"}
|
||||
{"id":"evt-hqqkjvqrn92s","type":"edge.added","subject":"gol-6x4ctm2","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"upholds","from":"gol-6x4ctm2","to":"pri-8ev5m89"},"at":"2026-09-20T11:32:50.609Z","parents":["evt-tkkx4p4cdy49"],"hash":"fa3800a15249a6478600a0a89f06d2b333f0860cfca5ab186d8813f2ec7ed284"}
|
||||
{"id":"evt-2jec6sva0fj4","type":"edge.added","subject":"gol-6x4ctm2","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"upholds","from":"gol-6x4ctm2","to":"pri-01np850"},"at":"2026-09-20T11:32:50.613Z","parents":["evt-hqqkjvqrn92s"],"hash":"59a98732b62ed65fed8070e170a7aef0c5d231ead6bea66be4a08037ce968bc9"}
|
||||
{"id":"evt-z9qh33dgb3ej","type":"node.created","subject":"iss-jz3431t","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"issue","title":"Decide how disclosures behave, and build the one component","body":"The shared piece the other screens depend on, for gol-6x4ctm2. Settle: whether an opened section stays open for that person (localStorage per section, or not at all), what happens on small screens where everything is already stacked, whether anything should open automatically when it needs attention (a camera that can't log in, a clock far out of sync), and how a summary line reads when the section is closed, so the closed state still carries meaning. Then build one component the whole app uses: a native details/summary unless there is a reason not to, with a name that says what is inside, keyboard and screen-reader behaviour intact, and no meaning conveyed by the arrow alone (pri-8ev5m89). Tests cover open, closed, remembered state and the summary line.","status":"open","owner":null,"attrs":{}},"at":"2026-09-20T11:34:09.170Z","parents":["evt-2jec6sva0fj4"],"hash":"a55c1d48def2f06b9f3ffd36de832d96cca8c101a126c31905b62305e0505346"}
|
||||
{"id":"evt-0hn5e2c181ec","type":"edge.added","subject":"iss-jz3431t","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"serves","from":"iss-jz3431t","to":"gol-6x4ctm2"},"at":"2026-09-20T11:34:09.172Z","parents":["evt-z9qh33dgb3ej"],"hash":"70b40523c33b612355c129a523ccaf227cf6ab8c45869d43acee1b06d65444fd"}
|
||||
{"id":"evt-dx81d7mq6h9n","type":"edge.added","subject":"iss-jz3431t","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-jz3431t","to":"src/app/disclosure.tsx"},"at":"2026-09-20T11:34:09.173Z","parents":["evt-0hn5e2c181ec"],"hash":"375c9adac131a401562f175c9342a040481823fdd63b162a85c39c0326c0f6e2"}
|
||||
{"id":"evt-5yvhdvw0gd68","type":"edge.added","subject":"iss-jz3431t","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"tagged","from":"iss-jz3431t","to":"area:ui"},"at":"2026-09-20T11:34:09.174Z","parents":["evt-dx81d7mq6h9n"],"hash":"8f00f5b939dd3770d3c4e70d6e55f41e138ea4430ed6c0f8ffed5613dbb0c36b"}
|
||||
{"id":"evt-077bzzb8dxhg","type":"node.created","subject":"iss-t9twsxg","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"issue","title":"Simplify the dashboard: a picture, a name, a status","body":"Per gol-6x4ctm2. Today the scan controls, with timeout and unicast sweep, sit permanently above the grid, and each card carries the frame, name, status, address, device line, stream summary, location, a profile table and several links. Aim: a card is a picture, a name and a status, with the address and the rest on demand; the profile table, which is detail nobody reads at a glance, moves behind a disclosure or onto the camera page. Scanning becomes one button, with timeout and sweep folded away until wanted, keeping today's defaults. Anything that needs attention (setup required, camera login, session ended) stays visible and keeps its wording. Tests cover what shows by default, what opens on demand, and that a camera needing attention still says so without being opened.","status":"open","owner":null,"attrs":{}},"at":"2026-09-20T11:34:18.170Z","parents":["evt-5yvhdvw0gd68"],"hash":"f4c2400586fe6821ccfafd598086be65635a51a1345dcf59ffba8bf7d2659e57"}
|
||||
{"id":"evt-mdppcrv36sfk","type":"edge.added","subject":"iss-t9twsxg","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"serves","from":"iss-t9twsxg","to":"gol-6x4ctm2"},"at":"2026-09-20T11:34:18.174Z","parents":["evt-077bzzb8dxhg"],"hash":"f683048183fca0ac39ba37ac3e79bf2c156938a3004df6ad58145cf820694f74"}
|
||||
{"id":"evt-jays4vctcsbn","type":"edge.added","subject":"iss-t9twsxg","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-t9twsxg","to":"src/app/camera-card.tsx"},"at":"2026-09-20T11:34:18.176Z","parents":["evt-mdppcrv36sfk"],"hash":"613d8a02c0d3f034a59fc74103c59a863ca36750d2cbb08adf09945224bb6315"}
|
||||
{"id":"evt-4g8eq7twzxhk","type":"edge.added","subject":"iss-t9twsxg","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-t9twsxg","to":"src/app/camera-scanner.tsx"},"at":"2026-09-20T11:34:18.177Z","parents":["evt-jays4vctcsbn"],"hash":"7ce0275c571269cfcf221383756b5df9302eb1238e83addbfda620258fa709be"}
|
||||
{"id":"evt-d0wv9gnfge1x","type":"edge.added","subject":"iss-jz3431t","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"blocks","from":"iss-jz3431t","to":"iss-t9twsxg"},"at":"2026-09-20T11:34:18.178Z","parents":["evt-4g8eq7twzxhk"],"hash":"158049d6dda268af26d80832292e42f3d9c8903db26f5d97feb78122781dfdc3"}
|
||||
{"id":"evt-3bn53dhgv2br","type":"edge.added","subject":"iss-t9twsxg","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"tagged","from":"iss-t9twsxg","to":"area:ui"},"at":"2026-09-20T11:34:18.180Z","parents":["evt-d0wv9gnfge1x"],"hash":"d63db7f650fba9d514d3adb1a757af14b191e6be26c89c7f2e2cec896347c735"}
|
||||
{"id":"evt-j8ze1prj48q2","type":"node.created","subject":"iss-g9bgm9g","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"issue","title":"Simplify the camera page: one Image section, detail on demand, editing in one place","body":"Per gol-6x4ctm2. Today: Live, then five panels (Streams, Image, Advanced image, Time & NTP, Network), each with its own Edit and Save. Aim: merge Image and Advanced image into one section, since the split is about which protocol answered rather than anything the user cares about, marking the few settings that can only be read; put the long read-only detail (stream table, network interfaces, NTP servers) behind disclosures with a summary line that still says the useful part, such as the resolution and frame rate of the main stream or the clock drift; and settle editing in one place per camera rather than a button inside each panel. Nothing loses a capability, and the stream URLs with their copy buttons stay easy to reach.","status":"open","owner":null,"attrs":{}},"at":"2026-09-20T11:34:23.467Z","parents":["evt-3bn53dhgv2br"],"hash":"2c94b9d26b55f0dfe39b73078acd1eeaf5f1245c49da3a2d53ca15ce48990ad7"}
|
||||
{"id":"evt-j2s96pceeaa1","type":"edge.added","subject":"iss-g9bgm9g","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"serves","from":"iss-g9bgm9g","to":"gol-6x4ctm2"},"at":"2026-09-20T11:34:23.471Z","parents":["evt-j8ze1prj48q2"],"hash":"57b46bc66090c9a4fbf7fea3021e10023b689137bfc2960257c9fc2a4faf6783"}
|
||||
{"id":"evt-sv53bjbr2yd4","type":"edge.added","subject":"iss-g9bgm9g","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-g9bgm9g","to":"src/app/cameras/[id]/settings-sections.tsx"},"at":"2026-09-20T11:34:23.473Z","parents":["evt-j2s96pceeaa1"],"hash":"0912f04c516d6cbd266e959bea3b2fd619382a9b439bb12b764dcab5a470d1b0"}
|
||||
{"id":"evt-ae6rw4sb1fwz","type":"edge.added","subject":"iss-g9bgm9g","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-g9bgm9g","to":"src/app/cameras/[id]/edit-forms.tsx"},"at":"2026-09-20T11:34:23.474Z","parents":["evt-sv53bjbr2yd4"],"hash":"4499342efb66b502183a692395fff1804ddc136f47677645c4eab6fb5d1174ee"}
|
||||
{"id":"evt-2ky0qrq7wvyd","type":"edge.added","subject":"iss-g9bgm9g","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-g9bgm9g","to":"src/app/cameras/[id]/page.tsx"},"at":"2026-09-20T11:34:23.475Z","parents":["evt-ae6rw4sb1fwz"],"hash":"9fe3e0b6e8cf627809dc477711d62bb4eb0e2d06c7197a883095a87ce67c11b0"}
|
||||
{"id":"evt-7sj962c6w919","type":"edge.added","subject":"iss-jz3431t","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"blocks","from":"iss-jz3431t","to":"iss-g9bgm9g"},"at":"2026-09-20T11:34:23.476Z","parents":["evt-2ky0qrq7wvyd"],"hash":"47104202912c9cb73e7a7396891b4341ee204f8e9b7180eb3bee89ae8133a21f"}
|
||||
{"id":"evt-gt2aaxep7dy9","type":"edge.added","subject":"iss-g9bgm9g","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"tagged","from":"iss-g9bgm9g","to":"area:ui"},"at":"2026-09-20T11:34:23.477Z","parents":["evt-7sj962c6w919"],"hash":"9eecacaeceb25099972b8960b94e51959cf0185c873333fa9ee13858156f1f98"}
|
||||
{"id":"evt-w7t0efhhwf2h","type":"node.created","subject":"iss-aygmw21","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"issue","title":"Simplify the recordings page: group by day and camera","body":"Per gol-6x4ctm2. Today every clip is one row with camera, full date and time, size, Play and Delete, newest first, which becomes a wall of near-identical lines once a camera has had a busy day. Aim: group by day, then by camera, so a row says the time and length and the repeated parts move to the heading; show the most recent day open and older days closed with a count; keep Play and Delete on each row, and keep the per-camera view the camera page links to. Tests cover grouping, what is open by default, and that deleting still refreshes the list.","status":"open","owner":null,"attrs":{}},"at":"2026-09-20T11:34:31.901Z","parents":["evt-gt2aaxep7dy9"],"hash":"59c99aa305a25c1ffe7ba22192e9c0d2eca35565e6024cc0bfe170c92b8f56fa"}
|
||||
{"id":"evt-mzndqj4q0a5q","type":"edge.added","subject":"iss-aygmw21","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"serves","from":"iss-aygmw21","to":"gol-6x4ctm2"},"at":"2026-09-20T11:34:31.903Z","parents":["evt-w7t0efhhwf2h"],"hash":"74737e8d3d452c204f662b5fade94dfc1ff0fbb8bf389b4b17baf0f84fff9b3e"}
|
||||
{"id":"evt-3ebbp3g3netp","type":"edge.added","subject":"iss-aygmw21","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-aygmw21","to":"src/app/recordings/clip-list.tsx"},"at":"2026-09-20T11:34:31.904Z","parents":["evt-mzndqj4q0a5q"],"hash":"36fe10eeb7564a9f71c771bac3ad8c461c54efd8dde2102f131da9fd992d6a35"}
|
||||
{"id":"evt-e9bbvct894gq","type":"edge.added","subject":"iss-aygmw21","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-aygmw21","to":"src/app/recordings/page.tsx"},"at":"2026-09-20T11:34:31.905Z","parents":["evt-3ebbp3g3netp"],"hash":"23c9fce317a8bbee145de56ec0d8b1a9648123f4ccdc88abc3ba50100bb5dce7"}
|
||||
{"id":"evt-mc54s96skvnc","type":"edge.added","subject":"iss-jz3431t","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"blocks","from":"iss-jz3431t","to":"iss-aygmw21"},"at":"2026-09-20T11:34:31.906Z","parents":["evt-e9bbvct894gq"],"hash":"bc4073d2f090d2eb173ecbc087436d70d96b6a4c6f7b74768e40e6ec9463e397"}
|
||||
{"id":"evt-gqb36ef3sprx","type":"edge.added","subject":"iss-aygmw21","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"tagged","from":"iss-aygmw21","to":"area:ui"},"at":"2026-09-20T11:34:31.907Z","parents":["evt-mc54s96skvnc"],"hash":"31f09022daa032fd7c9a7808cc54ddbf8f0500694f12dc8231c67749f49d9b65"}
|
||||
{"id":"evt-19cx7tsrqsrx","type":"node.created","subject":"iss-3jhw2p5","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"issue","title":"Simplify what a new install sees before there is anything to show","body":"Per gol-6x4ctm2, and worth its own pass now that strangers install this from npm (gol-k56hc69). The screens a new user meets first are the ones carrying the most words: setup, login, the unsecured banner, and a dashboard with no cameras, which today shows scan controls and a bare sentence. Aim: an empty dashboard says what to do next in one line with one button; the setup and login pages say only what is needed to act, with the longer explanation on demand; the severe warning keeps its force without a wall of text. Nothing about the security behaviour changes (gol-wqf95dq): the warning still appears, the setup code still works the same way.","status":"open","owner":null,"attrs":{}},"at":"2026-09-20T11:34:37.648Z","parents":["evt-gqb36ef3sprx"],"hash":"4e5a829947648c30a92059b7473018677f20832f8ba72ed679cf5079c28029a7"}
|
||||
{"id":"evt-kcgyf7xnd71z","type":"edge.added","subject":"iss-3jhw2p5","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"serves","from":"iss-3jhw2p5","to":"gol-6x4ctm2"},"at":"2026-09-20T11:34:37.649Z","parents":["evt-19cx7tsrqsrx"],"hash":"791fa4a0c905b26941aa7090d1a8dfb5d5d7270b3410c3e7fb6c9ea8a3fb7a8e"}
|
||||
{"id":"evt-p1k946atbfdq","type":"edge.added","subject":"iss-3jhw2p5","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-3jhw2p5","to":"src/app/page.tsx"},"at":"2026-09-20T11:34:37.650Z","parents":["evt-kcgyf7xnd71z"],"hash":"1d193982de4b93bb772d9ec964ed07250b1fef63ce9924964f725d7ebf2de12d"}
|
||||
{"id":"evt-cwnq37mv8d5c","type":"edge.added","subject":"iss-3jhw2p5","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-3jhw2p5","to":"src/app/setup/"},"at":"2026-09-20T11:34:37.651Z","parents":["evt-p1k946atbfdq"],"hash":"f093ad03eab6c6c7fa8ce0174097227e86b987d4b7a9cdb4c8ea3de78962b47d"}
|
||||
{"id":"evt-aj02fdq93t0g","type":"edge.added","subject":"iss-3jhw2p5","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-3jhw2p5","to":"src/app/login/"},"at":"2026-09-20T11:34:37.652Z","parents":["evt-cwnq37mv8d5c"],"hash":"d847d8f18c58fcb743d57354d15969209a4227c0f5df2de5425831a99efee1b6"}
|
||||
{"id":"evt-cnwmv1f95nzq","type":"edge.added","subject":"iss-3jhw2p5","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"touches","from":"iss-3jhw2p5","to":"src/app/security-bar.tsx"},"at":"2026-09-20T11:34:37.653Z","parents":["evt-aj02fdq93t0g"],"hash":"b83346d4e4df9552cfdf30c70bcfc3a1e684ca02d6f1e902b091fe87521efbd0"}
|
||||
{"id":"evt-dj2bfqh8t9er","type":"edge.added","subject":"iss-jz3431t","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"blocks","from":"iss-jz3431t","to":"iss-3jhw2p5"},"at":"2026-09-20T11:34:37.654Z","parents":["evt-cnwmv1f95nzq"],"hash":"d35815cdb9200b0ede0b8fa49581a6bb048b36574dd3c609968cb08aa1dcff3e"}
|
||||
{"id":"evt-3cxchwjnx1ta","type":"edge.added","subject":"iss-3jhw2p5","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"tagged","from":"iss-3jhw2p5","to":"area:ui"},"at":"2026-09-20T11:34:37.655Z","parents":["evt-dj2bfqh8t9er"],"hash":"7f552446122014b48ea01e81900cd7c5252f43b2e2875864b943da2af1140170"}
|
||||
{"id":"evt-e7ypp3ac15hx","type":"node.updated","subject":"gol-6x4ctm2","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"patch":{"target":5,"direction":"up","unit":"issues done"}},"at":"2026-09-20T11:34:42.718Z","parents":["evt-3cxchwjnx1ta"],"hash":"4a3d176349fb8afa1ecf40ec1bb4f1b887ab72a255bd472f5bcc88945d2b4652"}
|
||||
{"id":"evt-7s7945vv080q","type":"node.created","subject":"mea-xq3gw0y","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"measurement","title":"Interface simplification: 0 of 5 issues done","body":"Starting point on 2026-09-20, when the work was broken down per screen: iss-jz3431t the shared disclosure and its rules (the other four wait on it), iss-t9twsxg the dashboard, iss-g9bgm9g the camera page, iss-aygmw21 the recordings page, iss-3jhw2p5 what a new install sees first. Counted from vrek, not estimated. The user's own judgement that each screen is simpler is what closes each one.","status":"recorded","owner":null,"attrs":{"value":0,"applies_at":"2026-09-20"}},"at":"2026-09-20T11:34:45.390Z","parents":["evt-e7ypp3ac15hx"],"hash":"77beb04fe884e70a54e3821fbb94f0381f916f89f54ed2bf5632b797dd43bf99"}
|
||||
{"id":"evt-7d0awcm95tv0","type":"edge.added","subject":"mea-xq3gw0y","actor":"prn-q80g8mz","actor_kind":"agent","session":null,"payload":{"kind":"measures","from":"mea-xq3gw0y","to":"gol-6x4ctm2"},"at":"2026-09-20T11:34:45.393Z","parents":["evt-7s7945vv080q"],"hash":"ed3a84305999b6e1467005f1362d91c241daf02447f59b87617ad519c99dd092"}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user