Commit graph

  • 4cbb155cb7 perf(cad): stroke per group, not per item -- Phase 4 of the render plan main andodeki 2026-08-21 05:08:06 +00:00
  • 087965f17d docs(pdf): does the PDF viewport have a minimal-drawcall strategy? No -- and the renderer is unwired andodeki 2026-08-21 05:04:41 +00:00
  • 06a3de6126 feat(spreadsheet): dropdown cells and button cells (#9 remainder, complete) andodeki 2026-08-21 04:51:54 +00:00
  • 328690dfbf feat(spreadsheet): 3-state header sort (asc/desc/off) with a timed report andodeki 2026-08-21 04:43:18 +00:00
  • dc1defd7e8 perf(cad): one draw call per shape, not per part -- Phase 3 of the render plan andodeki 2026-08-21 04:41:48 +00:00
  • 1e5d014198 perf(cad): one GPU buffer per shape, not per part -- Phase 2 of the render plan andodeki 2026-08-21 04:18:33 +00:00
  • 4aaebafe4e perf(cad): cull parts against the viewport -- Phase 1 of the render plan andodeki 2026-08-20 21:45:26 +00:00
  • 4d681dfdbe feat(spreadsheet): slider cells and inline-Markdown cells (#9 remainder) andodeki 2026-08-20 21:36:13 +00:00
  • 42b1e7152a docs(cad): merge a second render review into the plan, and correct the hash both reviews got wrong andodeki 2026-08-20 21:17:07 +00:00
  • 14aa0d5017 perf(cad): measure what a frame submits — Phase 0 of the render plan andodeki 2026-08-20 21:01:51 +00:00
  • 8c1a4ad446 feat(spreadsheet-ui): Big Data virtual tab — 1B cells, procedural, timed sort andodeki 2026-08-20 20:48:29 +00:00
  • f14823a6da feat(spreadsheet): grid data-provider abstraction and a virtual 1B-cell source andodeki 2026-08-20 20:38:34 +00:00
  • f27ace8b7f docs(cad): render optimisation plan — and a correction to the analysis it rests on andodeki 2026-08-20 20:44:18 +00:00
  • e6fbcc12da docs(cad): analysis — the renderer has no culling and no draw batching andodeki 2026-08-20 20:36:17 +00:00
  • 7946aa889f feat(spreadsheet-ui): OS-clipboard TSV copy and toolbar zoom (#13, #7) andodeki 2026-08-20 20:14:51 +00:00
  • 2adec957e9 feat(spreadsheet-ui): TrendChart line + candlesticks wired to the selected row andodeki 2026-08-20 19:02:02 +00:00
  • 1a36ca5538 feat(spreadsheet-ui): interactive checkbox cells (widget-in-cell) andodeki 2026-08-20 18:28:46 +00:00
  • 1a4b479013 feat(spreadsheet): SPARKLINE(range) formula rendered as in-cell sparkline bars andodeki 2026-08-20 18:17:27 +00:00
  • e13aa03dca feat(spreadsheet-ui): header sort, column reorder and row/col/all selection andodeki 2026-08-20 17:54:54 +00:00
  • 61d666699b feat(spreadsheet): sort rows — the engine half of the datagrid sort andodeki 2026-08-20 17:18:33 +00:00
  • 481a0e133c feat(spreadsheet-ui): red error cells and a visible-cell status bar andodeki 2026-08-20 17:10:57 +00:00
  • 0326da8dfe feat(spreadsheet): ^ power operator and General thousands separators andodeki 2026-08-20 17:01:46 +00:00
  • a82c8f7ff7 feat(pdf): Unicode-aware search and layout-aware reading order andodeki 2026-08-19 16:12:12 +00:00
  • 555c7daaa1 feat(spreadsheet): postfix LAMBDA application and LET andodeki 2026-08-19 12:05:26 +00:00
  • 47f645ab58 feat(spreadsheet): resolve the four dynamic-array limits andodeki 2026-08-19 07:58:38 +00:00
  • 1740da3f34 feat(pdf): render a form XObject to pixels — the golden caught what the assertions missed andodeki 2026-08-18 20:06:50 +00:00
  • d3089bc62a feat(pdf): nested content, the wire codec and tiled rendering — Phase 7 closed andodeki 2026-08-18 20:00:18 +00:00
  • f37197781e feat(pdf): glyph outlines from TrueType and CFF, and glyph-aware text runs andodeki 2026-08-18 19:44:18 +00:00
  • 0bef30a6d5 feat(pdf): compositing and overprint — the blend maths had no backdrop andodeki 2026-08-18 19:25:15 +00:00
  • 728fbc3ad0 fix(pdf): mesh shadings — three bugs in code that had no fixture andodeki 2026-08-18 19:10:49 +00:00
  • c9474e2c9f feat(spreadsheet): dynamic-array spill model — FILTER, GROUPBY, PIVOTBY, A1# andodeki 2026-08-18 18:34:08 +00:00
  • a2b05c56c9 feat(makepad-table): opt-in capabilities feature, and raise the matrix_client defect andodeki 2026-08-18 18:03:18 +00:00
  • 45efc74106 feat(spreadsheet): pivot and chart aggregates — IFS family, statistics, SUMPRODUCT, LARGE/SMALL/RANK andodeki 2026-08-18 18:03:00 +00:00
  • c1d1e67f3a feat(pdf): shadings — the sh operator was parsed and thrown away andodeki 2026-08-18 17:30:39 +00:00
  • cb8912f762 test(pdf): close the two real coverage gaps in the signing module andodeki 2026-08-18 17:08:11 +00:00
  • 7737096858 refactor(makepad-table): adopt Robrix's image decode path andodeki 2026-08-18 16:51:47 +00:00
  • 01ebeeb7fe feat(makepad-table): real image rendering with a resize anchor, and per-row heights andodeki 2026-08-18 15:19:36 +00:00
  • 3c751f18bd feat(makepad-table): cell attachments and per-row heights (item 6) andodeki 2026-08-18 13:52:41 +00:00
  • bbdfe823f8 feat(makepad-table): row gutter, header select/resize, long-press menus, one input model andodeki 2026-08-18 13:18:31 +00:00
  • 1887b54efa fix(makepad-table): repaint when the cell editor takes focus (item 8) andodeki 2026-08-18 13:04:21 +00:00
  • 374af5ccad feat(pdf): the five Phase 6 bullets the status line omitted andodeki 2026-08-18 12:06:59 +00:00
  • 780e323674 refactor(spreadsheet-ui): headless formula-bar state machine, wired to the workspace andodeki 2026-08-18 11:40:49 +00:00
  • d0e7ede0c1 feat(spreadsheet): cross-sheet named ranges (Data!Total) andodeki 2026-08-18 11:07:57 +00:00
  • 593cd8fee8 feat(spreadsheet): cross-sheet references (Sheet2!A1) andodeki 2026-08-18 10:52:56 +00:00
  • 99aebc202a fix(pdf): security review of the signing code — a forgery verified as valid andodeki 2026-08-18 10:39:14 +00:00
  • 9989043a37 ci: gate the coverage that was already measured and unenforced (Phase 0) andodeki 2026-08-18 10:20:22 +00:00
  • 2d7b48b72c feat(spreadsheet): lookup functions — MATCH, INDEX, VLOOKUP, HLOOKUP, XLOOKUP andodeki 2026-08-18 10:13:39 +00:00
  • 3928063392 ci(email): raise the domain floor; record the finance-email path andodeki 2026-08-18 10:07:39 +00:00
  • 383533da36 feat(email): email the trip report to the finance department andodeki 2026-08-18 10:07:32 +00:00
  • 26f6d431fb feat(spreadsheet): date and time functions, with a date display format andodeki 2026-08-18 10:00:53 +00:00
  • 9a5ce9c0e6 feat(pdf): signing and verification — Valid becomes reachable, with a policy andodeki 2026-08-18 09:44:55 +00:00
  • 6e784fffee fix(ci): the sample_thread gate was inverted under pipefail nigig-ci 2026-08-18 09:35:32 +00:00
  • b5ff5dcf40 feat(spreadsheet): text manipulation and IS* info functions andodeki 2026-08-18 09:35:19 +00:00
  • b93dc485b9 test(spreadsheet): cover public workbook serialization round trip andodeki 2026-08-18 08:31:17 +00:00
  • b7eacb2a94 test(spreadsheet): cover public multi-sheet evaluation andodeki 2026-08-18 08:27:13 +00:00
  • 4deefabd0a test(spreadsheet): cover public style commands andodeki 2026-08-18 08:24:09 +00:00
  • a099ab9980 test(spreadsheet): cover public workbook lifecycle API andodeki 2026-08-18 08:02:17 +00:00
  • 2824b49f0e test(spreadsheet): cover public workbook deserialization API andodeki 2026-08-18 07:44:23 +00:00
  • 1629994de7 test(spreadsheet): add public persistence integration test andodeki 2026-08-18 07:30:43 +00:00
  • d4e3e9a443 feat(pdf): encryption on save — AES-128 and AES-256 (Phase 6, part one) andodeki 2026-08-18 07:27:34 +00:00
  • 118fbefe9a test(spreadsheet): move format detection test to integration suite andodeki 2026-08-18 07:07:12 +00:00
  • ee8d10d978 fix(pay): the M-Pesa PIN field has been visible by default since 69f6fb2 nigig-ci 2026-08-18 07:05:04 +00:00
  • ad3fe19b90 docs(pdf): the four missing ADRs — codecs, Phase 4 completion, editing, redaction andodeki 2026-08-18 05:53:30 +00:00
  • 676b47087a refactor(spreadsheet-ui): centralize dirty region state andodeki 2026-08-18 05:49:55 +00:00
  • f75c1cc966 feat(spreadsheet-ui): model dirty render regions andodeki 2026-08-18 05:41:12 +00:00
  • 2ba1837055 fix(pdf): main was red — three clippy errors broke the engine build andodeki 2026-08-18 05:41:18 +00:00
  • 632479c964 fix(ci): email.yml has been invalid YAML for six commits nigig-ci 2026-08-18 05:33:05 +00:00
  • 77255965fa test(spreadsheet-ui): measure headless controller coverage andodeki 2026-08-18 05:30:48 +00:00
  • df3c650c3e fix(coverage): invoke native preflight portably andodeki 2026-08-18 05:25:29 +00:00
  • ee81d292ed test(spreadsheet): cover literal and comparison formula edges andodeki 2026-08-18 05:22:48 +00:00
  • 0fcb2d3fae test(spreadsheet): cover sum boolean text error branches andodeki 2026-08-17 19:44:27 +00:00
  • 4a955c5c89 docs: repo-wide coverage plan — census first, then phases andodeki 2026-08-17 12:44:56 +00:00
  • 211ce31e9f docs(cad): a phased plan to 100% coverage, written after measuring andodeki 2026-08-17 12:40:35 +00:00
  • dffa140123 fix(makepad-table): measure text with the layouter instead of estimating it andodeki 2026-08-17 12:31:23 +00:00
  • b870dc4c69 feat(pdf): outline, page label and struct-tree editing — Phase 5 complete andodeki 2026-08-17 12:26:29 +00:00
  • 41c43df0e5 feat(pdf): redaction and object compaction — and three reader defects andodeki 2026-08-17 12:20:15 +00:00
  • 01d889c90b docs(cad): what the first widget extraction actually bought andodeki 2026-08-17 12:20:20 +00:00
  • b7eb271a0d feat(spreadsheet): logical and conditional formula functions andodeki 2026-08-17 12:19:48 +00:00
  • e1d1346b27 fix(mpesa): parse SMS from in-memory messages, not serde-skipped cache andodeki 2026-08-17 15:12:16 +03:00
  • 70bbff7ecb fix(cad): the nav pad's zoom buttons were a pixel from their own hit zone andodeki 2026-08-17 12:12:33 +00:00
  • 6bf138d027 ci(email): cover the trip-report modules andodeki 2026-08-17 12:08:09 +00:00
  • 074066a382 feat(email): export the trip report from the inbox andodeki 2026-08-17 12:08:03 +00:00
  • ee61546c2c feat(email): trip-expense report PDF for the finance department andodeki 2026-08-17 12:07:57 +00:00
  • a935133bb4 feat(email): trip-receipt extraction (Bolt ride receipts) andodeki 2026-08-17 12:07:51 +00:00
  • e0d86274d8 feat(pdf): flatten annotations and form fields into page content andodeki 2026-08-17 12:03:37 +00:00
  • 0596fc66ed test(cad): measure the widget layer — 13.15%, and six files at zero andodeki 2026-08-17 11:59:06 +00:00
  • f1c3c18374 docs(cad): the widget layer was never unbuildable — I never tried andodeki 2026-08-17 11:55:24 +00:00
  • 8ca5070b26 test(spreadsheet): cover the remaining serialization and border branches andodeki 2026-08-17 11:49:00 +00:00
  • e1dcbefda3 fix(spreadsheet): large-range cycle detection must report, not zero andodeki 2026-08-17 11:49:00 +00:00
  • 2ba06f34c5 fix(makepad-table): stop overlong cell text spilling into the next column andodeki 2026-08-17 11:38:55 +00:00
  • 306504bc0b fix(makepad-table): pin the pressed-state fill, and put the caret after the text andodeki 2026-08-17 11:33:20 +00:00
  • 691b868264 fix(spreadsheet): make an editing cell readable — no doubled border, cell's own ink and fill andodeki 2026-08-17 11:07:39 +00:00
  • 60117099ae fix(makepad-table): make an editing cell readable — white fill, dark ink, one border andodeki 2026-08-17 10:49:44 +00:00
  • e0aab74452 feat(pdf): page operations — insert, reorder, duplicate, delete, import andodeki 2026-08-17 10:38:55 +00:00
  • b8bd71852f feat(pdf): content-stream serialiser and editor — the Phase 5 foundation andodeki 2026-08-17 10:29:33 +00:00
  • b478945c34 ci(doc): gate the doc-workspace coverage floor on every push arena-agent 2026-08-17 10:25:27 +00:00
  • 949cf24189 test(doc): doc-workspace coverage harness with enforced floors arena-agent 2026-08-17 10:25:15 +00:00
  • 71c31cd19f test(doc): host-only suite split + pure-layer coverage tranche arena-agent 2026-08-17 10:24:53 +00:00
  • 179fe0533d docs(cad): replace the guess about the widget layer with the compiler's answer andodeki 2026-08-17 10:17:46 +00:00
  • ac145bfaab test(cad): measure tools.rs, which a false comment had ruled out — 0% to 97.07% andodeki 2026-08-17 10:16:52 +00:00