Changelog
New Features
- 75447e2: feat: add add snippet (@gernest)
- 64f6441: feat: admin only mode (@gernest)
- 53c2f79: feat: create admin account on startup (@gernest)
- 901df17: feat: logout users (@gernest)
- d374411: feat: persistent sessions (@gernest)
- 482c521: feat: support acme automatic tls (@gernest)
Bug fixes
Other work
- 963955b: Initial commit (@gernest)
- a4856d5: accept timestamp on /api/event (@gernest)
- 16f24be: add 404 error page (@gernest)
- 96ff126: add Breakdown (@gernest)
- fecb3cd: add BreakdownCity (@gernest)
- 03033ce: add BreakdownExitPages (@gernest)
- 0397805: add Final (@gernest)
- 77eaa2e: add LICENSE (@gernest)
- 7550ad5: add NOTICE (@gernest)
- 4983c6d: add RANGE benchmark (@gernest)
- 5abf38c: add RANGE profiling script (@gernest)
- cd33f9c: add ReadTimeRange (@gernest)
- 32eafee: add aggregate (@gernest)
- a4fcc44: add assets (@gernest)
- 7dfdadb: add batch (@gernest)
- edcfe4f: add bsi or (@gernest)
- 3dbfee1: add compact (@gernest)
- b12bf2a: add crack command (@gernest)
- 0ee1ee5: add csrf and captcha to login and register form (@gernest)
- 508d5ee: add css rule (@gernest)
- 7351987: add current visitors (@gernest)
- 8f3e80a: add db schema (@gernest)
- 358452d: add db shards (@gernest)
- 6454a09: add decimal roundtrip for float64 (@gernest)
- 356c0f3: add delete shared links (@gernest)
- 787fc6e: add eq filter (@gernest)
- 3bd1945: add event endpoint (@gernest)
- 0270e92: add fields (@gernest)
- 9c0ba61: add filter decoder (@gernest)
- 854dbe3: add flash message (@gernest)
- ba83c23: add gc collection loop (@gernest)
- 42f63ae: add geo package (@gernest)
- 33de0cf: add geo.Rand for random IP found in geolite db (@gernest)
- 4483072: add license endpoint (@gernest)
- 65cbd88: add locked state for sites (@gernest)
- 341eb3c: add login template (@gernest)
- 8e22e80: add map function (@gernest)
- 6c832bb: add migration library (@gernest)
- 0fb9ac5: add new sites template (@gernest)
- e1573c3: add op.EQUAL benchmark (@gernest)
- 8c3d83d: add pebble (@gernest)
- ee7d0c2: add profile script for ingestion (@gernest)
- 0acdf1e: add quantum fields (@gernest)
- a40deba: add rate limiting for domains (@gernest)
- b9025ca: add read routines (@gernest)
- 36924b3: add ref.Rand for random referrer (@gernest)
- 2c310da: add referral package (@gernest)
- fa2acd9: add regex filter (@gernest)
- 4f4318b: add register on home page (@gernest)
- 6fd3994: add register template (@gernest)
- b7fdd17: add save label (@gernest)
- ea1f7c0: add schema (@gernest)
- a18c321: add sessions (@gernest)
- 59e429c: add settings link on sites index (@gernest)
- d43ee42: add shards to db (@gernest)
- 0f227d6: add stat_breakdown (@gernest)
- 1f11aaa: add stats_aggregate (@gernest)
- 50bc98c: add stats_breakdown (@gernest)
- abf28b0: add stats_timeseries (@gernest)
- a70bb4f: add store (@gernest)
- d5bfe5c: add support contains and match filter (@gernest)
- fe69ad6: add system keys (@gernest)
- 630e7ae: add templates (@gernest)
- d40d0a0: add timeseries (@gernest)
- 5f1799b: add tracker (@gernest)
- d99df3a: add translation search (@gernest)
- dc4789f: add trial license key (@gernest)
- be0176f: add trial version notice (@gernest)
- 9b54967: add tx.Cmp (@gernest)
- 9c6a3df: add ua (@gernest)
- 5e4d50d: add version package (@gernest)
- 9c929c5: add views tools (@gernest)
- dc4a3f2: apply filters for valid shards (@gernest)
- ccb7452: apply license after validation (@gernest)
- 10c3a4d: apply rose branding (@gernest)
- 61e597e: assign super user to admin account (@gernest)
- ee7267d: authenticate shared links (@gernest)
- 1a44aa0: authorize sites (@gernest)
- 9956f49: auto migrate (@gernest)
- 0dfe485: avoid allocating to stats fields (@gernest)
- 2106fa5: badger based bsi store (@gernest)
- 8b9613a: basic system status page (@gernest)
- 5dc6ae6: basic top stats rendering (@gernest)
- 3220638: break v1.Data api (@gernest)
- bcab74c: bring back extract mutex (@gernest)
- ed815ed: bring back mutex (@gernest)
- 72aa259: bsi: initial xor (@gernest)
- a6b34c0: bsi: serialize to and from bsi (@gernest)
- 85bdac5: bsi: working sum (@gernest)
- 8033608: buffer keys (@gernest)
- eb4cc17: build dashboard css (@gernest)
- 12fe462: cache translations (@gernest)
- c2d180c: change acme flags (@gernest)
- 8e21adf: clamp bounce rate to 100% (@gernest)
- c1849fb: clone rbf (@gernest)
- 0469dce: collect aggregates per shard (@gernest)
- 9d330f6: collect sys stats (@gernest)
- 1609c4e: comment on key space (@gernest)
- 10ac424: compact db on close (@gernest)
- e14666b: compress responses with gzip (@gernest)
- 193c667: compute current visitors based on MINUTE time quantum (@gernest)
- 09ebe88: compute site visitors for sites index page (@gernest)
- 55ff627: compute visitors with new rbf store (@gernest)
- 87f822f: configure domains at startup (@gernest)
- 269b334: configure site visibility (@gernest)
- 1dc5a54: correct shard handling (@gernest)
- 9d21b72: corrections for current_visitors (@gernest)
- d23038b: correctly handle id sequence (@gernest)
- 8c9bb8b: create shared link (@gernest)
- 0b476ef: create shared links (@gernest)
- 15aba05: dashboard: support details (@gernest)
- 94b6d5f: db per shard for index (@gernest)
- 7a1d48e: debug bsi (@gernest)
- f2e34ad: debug key (@gernest)
- ac9ef94: default to private (@gernest)
- ade05c0: default to run in memory (@gernest)
- 562e13b: define agent in protobuf (@gernest)
- 2aef7c0: define aggregate (@gernest)
- a135728: define aggregates (@gernest)
- b31612e: define date range (@gernest)
- ad0cf20: define histogram (@gernest)
- 79bd859: define models (@gernest)
- 247d714: define new format using v2 data (@gernest)
- 48e652e: define oracle (@gernest)
- a3c2d7c: define plugins (@gernest)
- 98fc6f7: define shards package (@gernest)
- ce0ed2b: define stats endpoints (@gernest)
- 067f7fb: define write routines (@gernest)
- 2dfd4d8: delete site (@gernest)
- 4651d72: drop unregistered domains (@gernest)
- 29fb9f4: edit shared links (@gernest)
- 2927cda: efficient store bounce rates (@gernest)
- ed4a7b1: embed city data (@gernest)
- 00f1ad6: embed geo (@gernest)
- 4c51f19: embed public directory (@gernest)
- ae21c10: embed rbf (@gernest)
- 9be69cb: embed source favicon (@gernest)
- 6d20c50: embed source favicon (@gernest)
- fea93c0: embrace bsi (@gernest)
- ba2f482: eoute all api calls (@gernest)
- 17abe26: ewduce allocations for serializing (@gernest)
- 84c38f3: export field names and numbers (@gernest)
- d57542e: extract bsi set value to a separate function (@gernest)
- f8b68c4: find or create (@gernest)
- 5eb6c21: fix BSI.Extract (@gernest)
- 8ce7410: fix and test roaring64.RANGE op (@gernest)
- 3e8869d: fix bitmap run container (@gernest)
- 502a7df: fix bounce calculations (@gernest)
- 744f439: fix breakdown with string properties (@gernest)
- 4d2ba6b: fix bsi refs (@gernest)
- efec3d0: fix columns array resizing (@gernest)
- 0c4dd34: fix container saving (@gernest)
- 818491e: fix counting visitors across shards (@gernest)
- e0a68b0: fix country flags (@gernest)
- 4d1d8d4: fix current user (@gernest)
- 9f2e44c: fix current visitors computation (@gernest)
- 889c028: fix db (@gernest)
- d430789: fix domain existence (@gernest)
- b5a59ef: fix empty filters (@gernest)
- fd083cd: fix filter reduction (@gernest)
- ad082cf: fix flash (@gernest)
- c40065c: fix id field reference (@gernest)
- 72786e6: fix interval string (@gernest)
- 7c20cfd: fix large tx batches (@gernest)
- 05c58b9: fix main graph (@gernest)
- 9866eb5: fix main graph rendering (@gernest)
- a442813: fix my sites page (@gernest)
- bbf3912: fix nan duration (@gernest)
- 69bf7b7: fix new api changes (@gernest)
- a897900: fix new session event (@gernest)
- c264ad4: fix new site template rendering (@gernest)
- edf6f44: fix parsing devices (@gernest)
- 8d2acac: fix period in query (@gernest)
- 341cd89: fix range (@gernest)
- 883b0ed: fix rbf (@gernest)
- 66085fb: fix reading emptry row bits (@gernest)
- f4bcf1e: fix referrals endpoint (@gernest)
- c3104d6: fix register and login page content-type (@gernest)
- f55d1b9: fix rendering tracker js (@gernest)
- 73849be: fix roaring_containers (@gernest)
- 508a4d8: fix search_timeseries view layout parsing (@gernest)
- 074b36e: fix session update (@gernest)
- d9722a8: fix shard handling (@gernest)
- d8ddc40: fix shard translation (@gernest)
- 59fd952: fix shards db path (@gernest)
- 287fd27: fix site switcher (@gernest)
- 67b3a7d: fix sites index (@gernest)
- f98e606: fix system stats endpoints (@gernest)
- ac975e8: fix timezone offset for stats dashboard (@gernest)
- 7472b63: fix top stats computation (@gernest)
- 4e82194: fix transactions for users (@gernest)
- d7bf8d0: fix view per visit computation (@gernest)
- aff60e0: fix visits reduction (@gernest)
- 2f32402: fix writing bitmap containers (@gernest)
- 5af02b5: fork lru cache (@gernest)
- a6ec0f6: format templates (@gernest)
- 655f27f: generate eferrer domains for views tool (@gernest)
- 161ea02: generate field (@gernest)
- b67d168: generate model (@gernest)
- 4fbe656: generate ua data (@gernest)
- 0ff5335: generate vince static (@gernest)
- 5a44515: graph all top metrics (@gernest)
- ea9cd4a: handle empty shards (@gernest)
- 9260c02: handle null match on extracting bsi (@gernest)
- 7b7479c: handle props (@gernest)
- f015983: handle upper bound in key/value iteration (@gernest)
- 10636c2: ignore bin (@gernest)
- 11c3fa8: implement current_visitors (@gernest)
- f83c2c6: implement create site (@gernest)
- 01d5880: implement registration (@gernest)
- 6eed95d: implement search_realtime (@gernest)
- 7bd49de: implement stats (@gernest)
- 29ea6ff: implement stats aggregate (@gernest)
- 89f500c: implement stats_current_visitors (@gernest)
- db87a53: implement timeseries (@gernest)
- 54a59fb: improve breakdown (@gernest)
- 73e2a35: include roaring fork (@gernest)
- e95bd7d: initial breakdown (@gernest)
- 53bad96: initial breakdown implementation (@gernest)
- 1c567d6: initial bsi package (@gernest)
- 645e4da: initial db api (@gernest)
- 4cf6623: initial field time views (@gernest)
- 3bc8828: initial license (@gernest)
- 8b32e27: initial loading dashboard (@gernest)
- f329893: initial location package (@gernest)
- 9a91899: initial port (@gernest)
- 54ccb1e: initial rbf based store (@gernest)
- 3ad816a: initial rbf based store (@gernest)
- f29dbe4: initial rendering of stats dashboard (@gernest)
- 4422879: initial samples generation (@gernest)
- 13369a3: initial search api (@gernest)
- 5861720: initial select (@gernest)
- 2e11239: initial select implementation (@gernest)
- b9b7cfa: initial settings page (@gernest)
- c0af2ad: initial shared links (@gernest)
- 57e63cf: initial site (@gernest)
- 37f8b4d: initial sites index (@gernest)
- 9f4fa83: initial sites index page (@gernest)
- a2b17e0: initial stats implementation (@gernest)
- 0401c9b: initial system metrics storage implementation (@gernest)
- 8396f77: initial time range views (@gernest)
- bc79f89: initial top stats (@gernest)
- 597e922: introduce ro2 package (@gernest)
- 5597cd7: load location and ua data (@gernest)
- e378ad6: make schema private (@gernest)
- f6929ba: make string translation global (@gernest)
- 6e13931: manage sessions in key/value store (@gernest)
- fedd43c: match negation (@gernest)
- 2427996: merge keys (@gernest)
- 603348a: migrate to vince (@gernest)
- 8270147: minify assets (@gernest)
- f7abcc0: minute quantum (@gernest)
- f9ec29a: move bsi to sroar (@gernest)
- 39908a8: move cache to lru (@gernest)
- a636698: move events (@gernest)
- 1186ac0: move license generation code out of trunk (@gernest)
- 152ec5c: move main (@gernest)
- bd96e75: move things around (@gernest)
- e428c1e: move timeseries database to internal (@gernest)
- f58c18a: never read from bsi data (@gernest)
- 829328b: new api (@gernest)
- 4ee477d: noop for empty events buffer (@gernest)
- 3cdac7d: only leave used implementation (@gernest)
- 1240f6f: optimize tx.Depth (@gernest)
- b926ed9: parse comparison query params (@gernest)
- 6c174af: parse event (@gernest)
- 54f39af: parse filters (@gernest)
- e89c125: parse interval (@gernest)
- d032c30: parse interval for main graph (@gernest)
- 579a03b: parse period (@gernest)
- 9d0e222: pass features in context (@gernest)
- 4c74477: persist events sequence ID (@gernest)
- 5750b26: polish access control (@gernest)
- 0c3272d: pool data object (@gernest)
- 28754e7: pool transaction (@gernest)
- fc21001: prepare for v1.0.0 tree (@gernest)
- c310cf6: prepare model for new storage (@gernest)
- 87804aa: process all events in a single goroutine (@gernest)
- f073c22: process parsed events (@gernest)
- 6263ecd: process shards in reverse (@gernest)
- 40926d3: redo license model (@gernest)
- e8ed590: reduce key size to 12 bytes (@gernest)
- b89a4e5: reduce to uint64 and bool only (@gernest)
- df06b05: register sites index (@gernest)
- a8d8831: remove arrow store (@gernest)
- 6c4f0db: remove cluster (@gernest)
- de396e5: remove cr32 based search (@gernest)
- 39ddf44: remove date prefix (@gernest)
- 1dd1c2b: remove everything (@gernest)
- a542bbb: remove identicon package (@gernest)
- 9c4ee06: remove membership (@gernest)
- 4c45816: remove mutex fields (@gernest)
- 759a1e4: remove pebble (@gernest)
- 2da8637: remove rbf (@gernest)
- 463cdf5: remove rbf (@gernest)
- a16273e: remove social features (@gernest)
- 4b07a6c: remove tenant (@gernest)
- 50ce673: removesys (@gernest)
- 294cb0d: render locked stats dashboard (@gernest)
- ffec036: render shared links on settings page (@gernest)
- 510c18a: replace current visitors with today (@gernest)
- c56ebe0: reset system stats (@gernest)
- 2773b33: reuse bitmap in tx.Row (@gernest)
- 3ae7b4d: reuse iterator in Tx (@gernest)
- 9c67bab: reuse system bitmaps (@gernest)
- 5643e8b: rework license checks (@gernest)
- 4da903d: rework sequence (@gernest)
- 20f1e44: ro2: update matchers to use bsi (@gernest)
- b068ed5: roaring: fix bsi or (@gernest)
- ccb0b1f: rose for visibility icons (@gernest)
- c1adce8: save events directly from cache (@gernest)
- d2657e8: save one event at a time (@gernest)
- 7f3c428: save space by ignoring zero values (@gernest)
- 1ea8b2e: save string attribute (@gernest)
- 570e9ce: save translation (@gernest)
- 6142fd7: search all shards for data. (@gernest)
- d5f7b9b: serve os and browser icons (@gernest)
- 308b0d9: serve same script as plausible (@gernest)
- fbfd24b: set default data path (@gernest)
- 6fb671f: set logged-in state on dashboard (@gernest)
- 3e53823: set title for stats page (@gernest)
- 58b5a90: setup database (@gernest)
- f44ad0e: show comparizons on top stats (@gernest)
- 4a1ee55: show gc interval (@gernest)
- 727fe9d: show quota exceeded notice (@gernest)
- 63867cb: show system stats (@gernest)
- caa88fa: sign and verify license file (@gernest)
- d8f3074: simplify bsi (@gernest)
- 75397e1: simplify events ingestion (@gernest)
- 59669d3: simplify shards (@gernest)
- 6c4a790: simplify system stats (@gernest)
- a573cad: simplify top stats (@gernest)
- 10adddd: single user multiple sites (@gernest)
- 91bbc1d: skip comparisons for realtime top stats (@gernest)
- ac971a3: skip updating containers without new values (@gernest)
- d12a3ab: sort site and site share (@gernest)
- 54d18b4: sort sites (@gernest)
- 2c7ac94: speedup regex matches with row union filter (@gernest)
- fdbf49e: sroar: add bsi extraction (@gernest)
- 4e32cae: sroar: don't keep reference to buffer (@gernest)
- 84841cb: start search (@gernest)
- 33891e0: starting new rbf based storage (@gernest)
- c85debc: store acme certs in the key value store (@gernest)
- 28ffa4f: store native duration (@gernest)
- f6b06fc: store ops in key value store (@gernest)
- dc409fa: store uid as mutex (@gernest)
- e695bcf: sublime like license (@gernest)
- c575a9b: support memory store (@gernest)
- f363e0a: support property filters (@gernest)
- 19568ba: support reusing roaring.BSI (@gernest)
- c3f8bd5: support starting vince with expired license (@gernest)
- 32ec2b2: support waiting for first stats (@gernest)
- 05a45d7: switch sites on stats dashboard (@gernest)
- 5f0f366: sys: allocate up to 16MB for system stats (@gernest)
- 97f6224: sys: better x axis value format (@gernest)
- 43ac22c: sys: configure sys stats collection internal (@gernest)
- 9f93ffa: sys: remove path (@gernest)
- 75aa15b: system: fix timestamp axis (@gernest)
- b173f55: test all time ranges (@gernest)
- f5db5d8: test distinct (@gernest)
- 5cbae5d: test top fields (@gernest)
- c42f5fd: test ua2 (@gernest)
- 60ecb4d: tools: bump duration to 24hrs (@gernest)
- b626477: tools: fix referrer generation (@gernest)
- d87c324: track weeks (@gernest)
- c02f1c8: translate all string fields values to uint64 (@gernest)
- 4e3e07b: trnasition to boltdb (@gernest)
- 76dc496: ua2: generate bots (@gernest)
- 2976217: ua2: regex based user agent parser (@gernest)
- 93275ea: update bypassing license key restrictions (@gernest)
- dfd6787: update css (@gernest)
- 0de0abb: update css (@gernest)
- 2e14981: update features context (@gernest)
- 3650889: update header with avatar (@gernest)
- d52d9c2: update license accordingly (@gernest)
- ae4ccbc: update projections (@gernest)
- 591859d: update schema (@gernest)
- beeedd5: update toolchain (@gernest)
- 0e78906: update ua (@gernest)
- 84125eb: update with empty endpoints (@gernest)
- 342a1c5: upgrade rbf (@gernest)
- 713c455: upgrade rbf (@gernest)
- 8cbb99a: upgrade roaring (@gernest)
- 099a758: use 30 days trial (@gernest)
- 5346e73: use Bool for session and view field (@gernest)
- a99e61e: use atomics to load domains bitmap (@gernest)
- 4cc261d: use bitmap for domains check (@gernest)
- 0bb6ed7: use bitmask for metrics fields (@gernest)
- 7b1c2b2: use buffer/flush pattern for events storage (@gernest)
- 23328db: use correct bit depth when reading bsi values (@gernest)
- 99ea6a4: use crc32 (@gernest)
- 3c474a2: use crc32 for user ID hash (@gernest)
- dfb1036: use inclusive time range (@gernest)
- 4f25a6d: use mutex for string fields (@gernest)
- 36f80b0: use new api (@gernest)
- 0c60376: use new backend (@gernest)
- 66cebf4: use new bsi (@gernest)
- 28d3390: use new store (@gernest)
- cdce158: use path for shard database (@gernest)
- 377aded: use quota instead of rate limit (@gernest)
- ab87194: use range for row benchmark (@gernest)
- 9782244: use rbf.Tx (@gernest)
- 0cfa2f6: use rbf/dsl (@gernest)
- 756c765: use regex based ua parser (@gernest)
- 98e31a2: use ristretto cache (@gernest)
- 784c63c: use ro2 (@gernest)
- fd2552b: use sequence id for sys stats (@gernest)
- 3b8a61d: use serialized roaring (@gernest)
- 9df8890: use simple key value store (@gernest)
- ecf63d6: use slice for db shards (@gernest)
- b2073e8: use sroar for batch (@gernest)
- b644173: use trial license in dev (@gernest)
- 170611d: use unit for search_timeseries (@gernest)
- a735301: use v2.Data model (@gernest)
- c46780e: use vice for ua package (@gernest)
- 6578333: use zstd for block compression (@gernest)
- c811291: working current visitors endpoint (@gernest)
- 15dfb63: working home page (@gernest)
- f1b7bef: working login and register forms (@gernest)
- c65a4d1: working login screen (@gernest)
- d49048e: working registration (@gernest)
- 1208230: working search_breakdown (@gernest)
- 1ebf59d: write time range (@gernest)