)]}'
{
  "log": [
    {
      "commit": "eb66e9e4952c55bb7ffad8c561a834f66273fc90",
      "tree": "b39c187354cb47e251e0005f2e8d05f372c54018",
      "parents": [
        "5474759279782adeb3b494e1b2fa8ff073660606"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Fri Jul 31 17:04:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 17:04:43 2026 +0800"
      },
      "message": "fix: data preview pagination, fixed columns and sidebar sizing (#33)\n\n* feat(frontend): rewrite the UI with Element Plus + Tailwind\n\nThe previous stack (antdv-next + UnoCSS) sourced corner radii, control\nheights, table density and interaction feedback from component-library\ndefaults. Overriding CSS variables alone could not bring them in line\nwith the design spec.\n\n- Component library: antdv-next -\u003e Element Plus 2.14; 24 components and\n  views migrated\n- Style engine: UnoCSS -\u003e Tailwind 3, adding tokens.css / index.css and\n  an Element Plus SCSS variable override entry point\n- Layout: left sidebar (220px) + content area, top bar dropped; the new\n  AppSidebar and PageHeader host the file tree and the tool area\n- Theme: light / dark / follow-system now driven by html.dark, with a\n  deep navy base for dark mode\n- Table density factored out into utils/tableStyle.ts for reuse\n- Metadata table height is allocated on demand; the scan page gained an\n  empty state\n\nBehaviour is unchanged; api/stores/utils/router were not touched.\n\n* fix(frontend): use the shared palette for scan chart bars\n\nThe error-type bar chart still carried the previous component library\u0027s\nbrand blue (#1677ff), which clashed with the palette every other chart\ndraws from. Take the palette\u0027s first colour instead.\n\n* feat(frontend): make the sidebar width draggable\n\nFile paths in the tree vary a lot in length, so a fixed 220px sidebar\neither wastes horizontal space or truncates names. Add a drag handle on\nthe right edge, clamped to 180-480px and persisted to localStorage.\n\nDouble-click resets to the default width, and the handle is focusable so\narrow keys (16px steps) and Home work too. It is hidden below the lg\nbreakpoint, where the sidebar is a drawer whose width comes from the\nbreakpoint. The aside switches from lg:static to lg:relative so the\nabsolutely positioned handle anchors to it rather than to an outer\nelement.\n\n* fix: data preview was stuck on the first page\n\npreviewData() reads only offset+limit rows to bound memory, then reported\nthe number of rows it had read as `total`. Reading exactly offset+limit\nrows is indistinguishable from \"the dataset ends here\", so hasMore was\nalways false and the page count the UI derived from `total` was always 1.\nNo row past the first page was reachable. A 102-row file reported\ntotal\u003d100, hasMore\u003dfalse at offset\u003d0.\n\nRead one extra row instead. It is probed to decide hasMore and never\nreturned. The local is renamed to `rowsRead` and the DTO field documents\nwhat it actually is: the number of rows materialized, which equals the\nfiltered total only once the reader ran dry, and is a lower bound while\nhasMore is true. Clients must not derive a page count from it.\n\nOn the client, DataTable drops the `total` prop and derives paging from\noffset/limit/hasMore, replacing the page-number control with prev/next.\nThe row range reads \"Rows 1-100\" while more pages exist and\n\"Rows 101-102 of 102\" on the last page, which is the first point where\nthe true total is known.\n\n* fix(frontend): keep fixed table columns opaque while scrolling\n\nElement Plus pins fixed columns with position: sticky and gives them\n`background: inherit`, so they inherited the transparency index.css\napplies to `.el-table tr/th/td` to avoid a double-layer colour cast\nagainst .tc-table-card. Cells from the scrolling area showed through\nthem, which read as overlapping text.\n\nPaint fixed columns back to the card colour and add the matching hover\nstate, otherwise they stay card-coloured while the rest of the row\nhighlights. The background cannot be set from tableStyle.ts:\nheaderCellStyle / rowStyle render as inline styles that outrank any\nselector. They only duplicated transparency that CSS already handles, so\nthey are dropped. The scroll shadow is left to the library\u0027s\nis-scrolling-* rules.\n\n* style(frontend): tighten the data preview filter and column controls\n\nTwo leftovers from the layout pass:\n\n- The column pager bar sat on the left of a full-width row, detached from\n  the table\u0027s scrolling area it drives. Right-align it.\n- Element Plus sizes datetimerange at 400px by default, leaving the time\n  range picker stretched across the filter row. Both ends render 19\n  characters, so 372px is the narrowest width that still shows them in\n  full."
    },
    {
      "commit": "5474759279782adeb3b494e1b2fa8ff073660606",
      "tree": "be20a6e6918635b7d4f75e7ad83308ebb4d88430",
      "parents": [
        "7c8fe2f668ed612257cb432334d164a710608993"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Thu Jul 02 18:49:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 18:49:09 2026 +0800"
      },
      "message": "fix: data preview table body overlapping pagination on load (#29)\n\nThe data preview table hardcoded the virtual-scroll viewport height\n(scroll.y \u003d 480). After #27 added the timestamp-precision info banner\nabove the table, the fixed height no longer matched the actual space\nleft in the flex layout, so the table body overflowed onto the bottom\npagination bar.\n\nReplace the hardcoded height with a measured one: wrap the table in a\nflex-1 container and use a ResizeObserver to compute scroll.y from the\ncontainer\u0027s real client height, subtracting the measured header height\nplus a scrollbar/border reserve. Re-measure after loading/data changes\n(nextTick) since the column toolbar, info banner and pagination toggle\nvisibility. This adapts automatically to any future elements added\nabove or below the table instead of relying on a magic constant.\n\nAlso make .ant-card-body a flex column so the wrapper\u0027s flex-1 receives\nthe real remaining height, and drop an unused Spin import."
    },
    {
      "commit": "7c8fe2f668ed612257cb432334d164a710608993",
      "tree": "be20a6e6918635b7d4f75e7ad83308ebb4d88430",
      "parents": [
        "1a14814af9c7ffd02c3b2de8d7bd36ca2b77104b"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Thu Jul 02 17:17:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 17:17:36 2026 +0800"
      },
      "message": "fix: data preview table body overlapping pagination on load (#28)\n\nThe data preview table hardcoded the virtual-scroll viewport height\n(scroll.y \u003d 480). After #27 added the timestamp-precision info banner\nabove the table, the fixed height no longer matched the actual space\nleft in the flex layout, so the table body overflowed onto the bottom\npagination bar.\n\nReplace the hardcoded height with a measured one: wrap the table in a\nflex-1 container and use a ResizeObserver to compute scroll.y from the\ncontainer\u0027s real client height, subtracting the measured header height\nplus a scrollbar/border reserve. Re-measure after loading/data changes\n(nextTick) since the column toolbar, info banner and pagination toggle\nvisibility. This adapts automatically to any future elements added\nabove or below the table instead of relying on a magic constant.\n\nAlso make .ant-card-body a flex column so the wrapper\u0027s flex-1 receives\nthe real remaining height, and drop an unused Spin import."
    },
    {
      "commit": "1a14814af9c7ffd02c3b2de8d7bd36ca2b77104b",
      "tree": "d8bef2e6940c5cf4238bdca9bc1f3ae7f35bfa1e",
      "parents": [
        "a9796f10f2184d877547b3c4aad50292693ab4f5"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Thu Jul 02 16:22:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 16:22:08 2026 +0800"
      },
      "message": "fix: correct table column alignment and non-millisecond timestamp formatting (#27)\n\nData preview had two defects on table-model TsFiles:\n\n1. Header/body column misalignment: the fixed \"device\" column shared the\n   same key/dataIndex (\"device\") with a tag column also named \"device\",\n   which collided in antdv Table and desynced header from body. The fixed\n   identity column now uses a reserved key \"__device__\" isolated from tag\n   columns.\n\n2. Timestamps rendered as \"NaN-NaN-NaN\": nanosecond (19-digit) timestamps\n   overflow JS Date. Added normalizeToMs() to auto-scale sec/ms/us/ns to\n   milliseconds. Display stays at millisecond precision; the exact original\n   value is preserved via a transformResponse hook that captures the raw\n   digit string before JSON.parse (avoiding lossy double conversion) and is\n   shown on hover, with an info banner explaining the precision behavior.\n\nAlso fixes an atob() regression: after fileIds became URL-safe base64,\natob() failed on \"_\"/\"-\" chars. Extracted encode/decodeFileId into\nutils/fileId.ts and replaced all six call sites (file tree, data-preview,\nchart, metadata). CSV export timestamps now use normalizeToMs too."
    },
    {
      "commit": "a9796f10f2184d877547b3c4aad50292693ab4f5",
      "tree": "7a5de4748f740543feee1d932a26cd95cfe90991",
      "parents": [
        "3dc7b79723012948b2733052cd0bb9d73fc6d99c"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Wed Jun 17 14:14:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 14:14:28 2026 +0800"
      },
      "message": "Fix/wide tsfile table and chart rendering (#24)\n\n* fix: paginate wide TsFile columns and cap chart series to prevent UI crash\n\nWide table-model TsFiles (thousands of measurements) crashed the browser in\nboth the Data Preview and Chart views by rendering every column/series at once.\n\nData Preview (DataTable.vue):\n- Paginate field columns (default 50/page) with a column search box; render\n  only the current column window and flatten only visible columns per row.\n- Enable virtual row scrolling.\n\nChart (ChartPanel.vue, TableFilterPanel.vue, TreeFilterPanel.vue):\n- Default-select only the first 8 numeric fields instead of all fields on load.\n- Refuse to render and show a warning when a query returns more than 50 series.\n\nBackend (DataService.java):\n- Hard-cap chart series at 200 per request as a performance safety net.\n\ni18n: add column-pagination and chart-series-limit strings (zh-CN, en-US).\n\n* fix: cache hashed SPA assets immutably but serve index.html no-cache\n\nThe /view/** resource handler applied max-age\u003d3600 uniformly, so index.html\n(the entry point referencing content-hashed asset filenames) was cached for\nup to an hour. After a deploy, browsers kept loading the old index.html and\nthus the old asset references, masking the new build.\n\nSplit the caching:\n- /view/assets/** (content-hashed build output): max-age\u003d1y, public, immutable.\n- index.html and SPA routes: no-cache (revalidate every load) so a new\n  deployment is picked up immediately."
    },
    {
      "commit": "3dc7b79723012948b2733052cd0bb9d73fc6d99c",
      "tree": "2134421756e08d0bc880fb28832696863ade69fb",
      "parents": [
        "da33a2670dd80b40016e987a238bec2a4e8ecc2f"
      ],
      "author": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Tue Jun 02 04:20:08 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 17:20:08 2026 +0800"
      },
      "message": "Set up default protection ruleset for default and release branches (#21)"
    },
    {
      "commit": "da33a2670dd80b40016e987a238bec2a4e8ecc2f",
      "tree": "83ed693cb3a4f6da62b23987bf15be9ae2756b8b",
      "parents": [
        "1960fa4529b8a113dccca2d1fd8e7e438798fee1"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Fri May 15 12:27:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 12:27:33 2026 +0800"
      },
      "message": "Fix/upgrade tsfile to 2.3.0 (#20)\n\n* fix: upgrade tsfile library from 2.2.0 to 2.3.0\n\nFixes ArrayIndexOutOfBoundsException in TableSchema.deserialize when\nreading TsFile files created by newer SDK versions.\n\n* docs: update TsFile version references to 2.3.0 in READMEs\n\n* docs: update READMEs to reflect actual project structure\n\n- Fix package path: com/timecho → org/apache/tsfile\n- Replace non-existent build scripts with actual build-dist.sh\n- Update frontend stack: Nuxt UI → antdv-next + UnoCSS\n- Update versions: Pinia 3.x, TypeScript 5.9.x\n- Add missing directories: exception, router, theme\n- Remove non-existent tsfile-source directory"
    },
    {
      "commit": "1960fa4529b8a113dccca2d1fd8e7e438798fee1",
      "tree": "89ea9b23ffd8f2c1f5ae7dd88feb89ab2782bef5",
      "parents": [
        "56ce27ca2904f900f43263c75473664489732c93"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Fri May 15 12:12:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 12:12:30 2026 +0800"
      },
      "message": "fix: upgrade tsfile library from 2.2.0 to 2.3.0 (#19)\n\nFixes ArrayIndexOutOfBoundsException in TableSchema.deserialize when\nreading TsFile files created by newer SDK versions."
    },
    {
      "commit": "56ce27ca2904f900f43263c75473664489732c93",
      "tree": "49714800b5268450d9a3c094788314b87e0ea0d9",
      "parents": [
        "ff71e0d4fc358257ad6f5254ef3ba5ac05da78d9"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Thu May 07 11:49:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 11:49:16 2026 +0800"
      },
      "message": "fix: correct \u0027TSFile\u0027 capitalization to \u0027TsFile\u0027 across entire project (#17)\n\nThe Apache project name uses lowercase \u0027s\u0027 (TsFile), not uppercase\n(TSFile). This commit updates all references in code, comments,\ndocumentation, and i18n files. The TSFileMetadataDTO class is also\nrenamed to TsFileMetadataDTO. Apache library class names (TSFileConfig,\nTSFileDescriptor) are preserved as-is since they belong to the\nupstream library."
    },
    {
      "commit": "ff71e0d4fc358257ad6f5254ef3ba5ac05da78d9",
      "tree": "dfac429f327f9153eca3ee04f22f60c8498c3dbf",
      "parents": [
        "5cb12ead65c06dcdfe40aa2120135eaa4aac3a73"
      ],
      "author": {
        "name": "Haonan",
        "email": "hhaonan@outlook.com",
        "time": "Wed Apr 29 10:58:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 10:58:37 2026 +0800"
      },
      "message": "Update Apache TsFile wording (#16)"
    },
    {
      "commit": "5cb12ead65c06dcdfe40aa2120135eaa4aac3a73",
      "tree": "98ce4871f06a480085d69bc18094b1730c607c71",
      "parents": [
        "7f741029c88d032924898660547e0ebbaabede61"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Wed Apr 29 10:44:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 10:44:58 2026 +0800"
      },
      "message": "fix: graceful error handling for incompatible TsFile data decoding (#15)\n\nWhen reading TsFile data created by incompatible SDK versions (e.g.,\nPython SDK), the DeltaBinaryDecoder throws BufferUnderflowException.\nPreviously this caused a 500 error with no user-facing explanation.\n\nChanges:\n- Catch BufferUnderflowException and other runtime exceptions in all\n  TsFileDataReader query methods, allowing partial data to be returned\n- Add warnings field to DataReadResult and DataPreviewResponse to\n  propagate decode error details to the frontend\n- Display warnings as an Alert in the data preview view when data\n  cannot be fully decoded\n- Add i18n translations for warning message (en-US and zh-CN)"
    },
    {
      "commit": "7f741029c88d032924898660547e0ebbaabede61",
      "tree": "f1c57f949e33f70f97e3884276be9aeb49a1e411",
      "parents": [
        "fa53ffbb4ae924d6a00865f010944002610ab599"
      ],
      "author": {
        "name": "Haonan",
        "email": "hhaonan@outlook.com",
        "time": "Fri Apr 24 22:03:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 22:03:41 2026 +0800"
      },
      "message": "Correct terminology for Apache TsFile in README\n\nUpdated references from \u0027Apache IoTDB TSFile\u0027 to \u0027Apache TsFile\u0027."
    },
    {
      "commit": "fa53ffbb4ae924d6a00865f010944002610ab599",
      "tree": "dd0bd890333d5b84a28c94192fdd1c188494b334",
      "parents": [
        "fda728e9d2b1e2287e6004f22581e8bc8255c552"
      ],
      "author": {
        "name": "Haonan",
        "email": "hhaonan@outlook.com",
        "time": "Fri Apr 24 22:02:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 22:02:52 2026 +0800"
      },
      "message": "Correct \u0027IoTDB TSFile\u0027 to \u0027TsFile\u0027 in README"
    },
    {
      "commit": "fda728e9d2b1e2287e6004f22581e8bc8255c552",
      "tree": "fa5fc9ecaab21f3c6bff16771dfe95973d8a16c3",
      "parents": [
        "fd57cd603c6794a9457d31b29d4023d48660b7d1"
      ],
      "author": {
        "name": "Haonan",
        "email": "hhaonan@outlook.com",
        "time": "Fri Apr 24 22:01:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 22:01:16 2026 +0800"
      },
      "message": "Update description and homepage in .asf.yaml"
    },
    {
      "commit": "fd57cd603c6794a9457d31b29d4023d48660b7d1",
      "tree": "d14594d01173fb4d1f9645be3c3fce349c8f7aa1",
      "parents": [
        "6f411532a8abe0f6bbd471f161765e4a0ad26250"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Wed Apr 22 10:56:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 10:56:41 2026 +0800"
      },
      "message": "feat(theme): apply Stripe-inspired design system via antdv-next theme tokens (#14)\n\nIntegrate Stripe design language into the existing antdv-next component system\nusing ConfigProvider theme tokens, component tokens, and global CSS overrides.\n\n- Add stripeTheme.ts with light/dark seed tokens and component tokens\n  matching DESIGN.md color specs (#533afd purple, #061b31 navy, #e5edf5 border)\n- Add stripe.css for blue-tinted card shadows and dark mode utility overrides\n- Configure Layout component tokens for header/sider/body backgrounds\n- Fix dark mode: Tailwind utility classes (bg-white, text-gray-*, border-gray-*)\n  now auto-adapt via CSS variable fallbacks\n- Fix i18n: FileTree error message uses reactive t() in template instead of\n  stored string, so language switching works correctly"
    },
    {
      "commit": "6f411532a8abe0f6bbd471f161765e4a0ad26250",
      "tree": "10f9d7d58d677bc5f84a2a84e6cf02d1a2fb20d9",
      "parents": [
        "9fe0725d2dbfba1948d948fa9be5c87f5c5e5b01"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Mon Apr 20 12:13:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 12:13:22 2026 +0800"
      },
      "message": "feat: rewrite TSFile Viewer with modern tech stack (#13)\n\nComplete rewrite of TSFile Viewer with:\n- Backend: Spring Boot 4.0.1 + JDK 21 + Apache TSFile 2.2.0\n- Frontend: Vue 3.5 + Vite + Ant Design Vue + ECharts 6\n- Support for both V3 and V4 TSFile formats\n- Tree Model and Table Model data views\n- TSFile health scan with async directory scanning\n- Data visualization with auto-downsampling (LTTB)\n- Internationalization (zh-CN / en-US)\n- Embedded (single JAR) and separate deployment modes\n- Apache 2.0 license headers on all source files"
    },
    {
      "commit": "9fe0725d2dbfba1948d948fa9be5c87f5c5e5b01",
      "tree": "b8be317ad282cfea043a770f23d543b4c3305798",
      "parents": [
        "88bfcd68c96a4c3274102bde815e856804ab1590"
      ],
      "author": {
        "name": "HTHou",
        "email": "hhaonan@outlook.com",
        "time": "Wed May 29 10:16:39 2024 +0800"
      },
      "committer": {
        "name": "HTHou",
        "email": "hhaonan@outlook.com",
        "time": "Wed May 29 10:16:39 2024 +0800"
      },
      "message": "update yml\n"
    },
    {
      "commit": "88bfcd68c96a4c3274102bde815e856804ab1590",
      "tree": "82bc051f37b11153d1d67f22bf63c42780eb7d7f",
      "parents": [
        "45fd00cdcb25c9b44f5bc3473bbcca0df7537e0d"
      ],
      "author": {
        "name": "long.li",
        "email": "34224404+jeck1son2@users.noreply.github.com",
        "time": "Tue Jan 03 11:51:44 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 03 11:51:44 2023 +0800"
      },
      "message": "[IOTDB-5254][IOTDB-5251] BUG FIX (#10)\n\n"
    },
    {
      "commit": "45fd00cdcb25c9b44f5bc3473bbcca0df7537e0d",
      "tree": "6a7b1ad72f8987cf0d428af1e28c72f07e51f64c",
      "parents": [
        "9a012320f13ddc8e01c8ffa841b55607a89f37d0"
      ],
      "author": {
        "name": "long.li",
        "email": "34224404+jeck1son2@users.noreply.github.com",
        "time": "Tue Dec 20 12:30:56 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 20 12:30:56 2022 +0800"
      },
      "message": "bug fix and add dockerfile (#9)\n\n"
    },
    {
      "commit": "9a012320f13ddc8e01c8ffa841b55607a89f37d0",
      "tree": "58a01ce4f79843540d2f689aab38aadb560fa81e",
      "parents": [
        "6a34cac3871fad62d97f12cf9bf9ea7a1278a1b9"
      ],
      "author": {
        "name": "long.li",
        "email": "34224404+jeck1son2@users.noreply.github.com",
        "time": "Sat Dec 03 13:55:59 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 03 13:55:59 2022 +0800"
      },
      "message": "update readme.md (#8)\n\n"
    },
    {
      "commit": "6a34cac3871fad62d97f12cf9bf9ea7a1278a1b9",
      "tree": "f8796b3b7edc18fce86164a205e9c7052bc4e20c",
      "parents": [
        "18b4aa402b37718d6fc75c63feb2b120662e01bb"
      ],
      "author": {
        "name": "long.li",
        "email": "34224404+jeck1son2@users.noreply.github.com",
        "time": "Fri Dec 02 11:17:30 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 02 11:17:30 2022 +0800"
      },
      "message": "add user guide (#7)\n\n"
    },
    {
      "commit": "18b4aa402b37718d6fc75c63feb2b120662e01bb",
      "tree": "7e8317af9453e3a4a24f44621abf9b452fc9c9d8",
      "parents": [
        "3a50701563e46515707ba4bb20383e7476a8b503"
      ],
      "author": {
        "name": "qiaojialin",
        "email": "646274302@qq.com",
        "time": "Sat Nov 26 15:12:55 2022 +0800"
      },
      "committer": {
        "name": "qiaojialin",
        "email": "646274302@qq.com",
        "time": "Sat Nov 26 15:12:55 2022 +0800"
      },
      "message": "update .gitignore and rat-plugin exclude\n"
    },
    {
      "commit": "3a50701563e46515707ba4bb20383e7476a8b503",
      "tree": "6bfecbcb6b200e7967353421e7b540b5bd8328ce",
      "parents": [
        "1f0b62810137736632f31fbff6a8a263181889cc"
      ],
      "author": {
        "name": "Jialin Qiao",
        "email": "qjl16@mails.tsinghua.edu.cn",
        "time": "Sat Nov 26 12:35:22 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 26 12:35:22 2022 +0800"
      },
      "message": "open issue and wiki in repo (#6)\n\n"
    },
    {
      "commit": "1f0b62810137736632f31fbff6a8a263181889cc",
      "tree": "01dd9c3ce6718a040fee0717d4e9d419b69f7c4e",
      "parents": [
        "88eccbb6d8e6a25464722a1274cb958236fb0cff"
      ],
      "author": {
        "name": "Haonan",
        "email": "hhaonan@outlook.com",
        "time": "Thu Nov 24 19:28:47 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 24 19:28:47 2022 +0800"
      },
      "message": "Create .asf.yaml"
    },
    {
      "commit": "88eccbb6d8e6a25464722a1274cb958236fb0cff",
      "tree": "8322bce9aaa154bfd1593f4e7b2a5d5fea8cb020",
      "parents": [
        "98ab340d93dc7acbdcef55974f4c5b9eb474a559"
      ],
      "author": {
        "name": "long.li",
        "email": "34224404+jeck1son2@users.noreply.github.com",
        "time": "Thu Nov 24 18:35:45 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 24 18:35:45 2022 +0800"
      },
      "message": "add license and notice (#5)\n\n"
    },
    {
      "commit": "98ab340d93dc7acbdcef55974f4c5b9eb474a559",
      "tree": "c0cb17a84cf2b7d0c35fc036914324d04b9e6b30",
      "parents": [
        "3114413989ee72a8f387db8bfb764ea5512220ad"
      ],
      "author": {
        "name": "long.li",
        "email": "34224404+jeck1son2@users.noreply.github.com",
        "time": "Wed Nov 23 23:01:48 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 23 23:01:48 2022 +0800"
      },
      "message": "tsfile-viewer init,a tsfile visual management tool (#1)\n\n"
    },
    {
      "commit": "3114413989ee72a8f387db8bfb764ea5512220ad",
      "tree": "f822fcb1d34f596397b48e37a05a1d947a884695",
      "parents": [],
      "author": {
        "name": "qiaojialin",
        "email": "646274302@qq.com",
        "time": "Tue Nov 15 15:30:23 2022 +0800"
      },
      "committer": {
        "name": "qiaojialin",
        "email": "646274302@qq.com",
        "time": "Tue Nov 15 15:30:23 2022 +0800"
      },
      "message": "first commit\n"
    }
  ]
}
