Commit Graph

57 Commits

Author SHA1 Message Date
Kiril Videlov
83b40eabb6
remove sentry from rust code
Since the actually valuable bug reports are submitted by developers as github issues or on our Discord, sentry error reporting is not necessary
2024-04-29 15:46:29 +02:00
Kiril Videlov
34d12fb1e6
add snapshotting tests 2024-04-28 20:05:46 +02:00
Kiril Videlov
5420fc3e3c
use new snapshot types 2024-04-26 23:20:31 +02:00
Josh Junon
adcba68220
move multi-file modules to mod.rs and single-file modules to <name>.rs 2024-04-26 11:56:35 +02:00
Sebastian Thiel
ff44a80e74
Merge pull request #3607 from Byron/win-fixes
Revert 74eb7bd3 as debounce-timing has no effect (#3601)
2024-04-25 22:07:37 +02:00
Kiril Videlov
b3c05b7948 fix signatures 2024-04-25 19:23:13 +02:00
Kiril Videlov
753953a7d5 remove tauri endpoint for creating snapshots 2024-04-25 19:23:13 +02:00
Kiril Videlov
a2682e2535 implement undo stack snapshotting 2024-04-25 19:23:13 +02:00
Sebastian Thiel
116f5d02bc
Revert 74eb7bd3 as debounce-timing has no effect (#3601)
This probably means the raciness is not due concurrency introduced by filesystem events,
which leads me to think that having great 'disk-IO-hygiene` should improve things.'
2024-04-25 16:33:55 +02:00
Sebastian Thiel
29525ffd03
address review comments
- rename feature to `windows`
- remove unused config key from `Cargo.toml`, unfortunately `cfg` isn't available for everything
- make sure feature is toggled on on CI when checking and when publishing
2024-04-25 11:29:24 +02:00
Sebastian Thiel
3058ffbc9b
avoid showing colors in Windows logs (#3601)
People can't copy it without the terminal-escape code, making it harder to read.
2024-04-25 08:19:59 +02:00
Sebastian Thiel
74eb7bd397
on Windows, update far less often on filesystem changes. (#3601)
By increasing the window size for collecting filesystem events,
knowing that each event is processed in parallel, we might be lucky
and that already reduces the likelyhood of clashes.

It's an experiment though.

On Unix, run with:

`LOG_LEVEL=debug pnpm tauri dev --features adapt-to-windows`
2024-04-25 08:17:11 +02:00
Sebastian Thiel
aa3d3cb7da fix rustfmt formatting issues due to line-length (#3039)
The trick is to temporarily set `max_width` in `rustfmt.toml` to 120,
then set it back to the default of 100 (or remove the file).
2024-04-23 12:53:56 +02:00
Sebastian Thiel
be4cd36986
clarify some TODOs to avoid keeping them for too long
Note that the comment above 'deltas' merely removed, as it wasn't actionable
without changing the frontend, which can probably already deal with
multiple of these.

Now that types are better understood though, it was straightforward to
change the type of `file_path` to not be a string, which now is even
clearer of a necessity thanks to the `tauri`-independent `watcher` crate.

Also, remove a comment related to the lack of worktree support.
It now fails gracefully, and that will come up again if support should be added.
2024-04-21 11:35:26 +02:00
Kiril Videlov
0fea544cd7
rm gb_repository from controller 2024-04-21 09:26:34 +02:00
Kiril Videlov
72398719bc
rm test command 2024-04-20 00:38:18 +02:00
Josh Junon
d5b34c46f5
mark package info as potentially unused 2024-04-19 16:01:54 +02:00
Josh Junon
7f35537798
only construct about metadata on macos 2024-04-19 15:49:23 +02:00
Josh Junon
ed088f4431
enable devtools on release builds, too 2024-04-19 15:17:44 +02:00
Josh Junon
340eaeaf8c
re-construct the full menu instead of using OS default 2024-04-19 15:15:56 +02:00
Sebastian Thiel
c30ac3ba62
optimize tokio features
Previously, the attempt was made to enable only those `tokio` features
that are actually used. However, due to default-features still being
enabled and `tauri` using the `full` feature, for most intents and purposes
that wasn't effective.

Now default features are disabled, and `full` isn't used anymore, forcing
all crates to mention the exact features they need.

Note that `tracing` is missing here, as it wasn't effective previously
without the `--cfg tokio_unstable` option also being specified as rustflag.
2024-04-18 09:48:23 +02:00
Sebastian Thiel
adfbc7c5cc
Remove now unused dependencies from tauri.
These have moved to `watcher` and `analytics` respectively.
2024-04-18 09:25:33 +02:00
Sebastian Thiel
5785085a77
reintegrate watcher crate into tauri crate 2024-04-17 22:20:32 +02:00
Kiril Videlov
6f0fe2afa9 rm uses_diff_context from list vbranches return 2024-04-17 07:14:43 +02:00
Vid Luther
4ff94d9f4a
happy 2024 2024-04-16 18:17:51 +02:00
Josh Junon
fa06586cdf
fix devtools on release builds 2024-04-16 16:43:22 +02:00
Mattias Granlund
203da38e8b Add devtools to view menu 2024-04-16 09:07:11 +01:00
Sebastian Thiel
a3fd06897e
address misc review comments
- turn `static` into `const`
2024-04-15 16:55:03 +02:00
Sebastian Thiel
fb9db89e1b
remove '_pure' functions in favor of creating a full handler in tests.
The `pure` functions were from a time where a `Handler` couldn't be instantiated
in full for tests, but that is not the case anymore, so there isn't any use
for the added complexity.
2024-04-15 16:50:20 +02:00
Sebastian Thiel
62b1c49372
avoid &str in place where ProjectId could be used 2024-04-15 16:23:18 +02:00
Sebastian Thiel
e2ef2dc721
Only watch a single project at a time.
Previously it would watch every registered project, which could incur more work
on all parts of the application than necessary.

Now UI sends an event that indicates which project is active, allowing the
watch to be setup in that very moment. It's worth noting that the previously
watched project is automatically deregistered.
2024-04-15 07:19:15 +02:00
Sebastian Thiel
c173d8074d
parallelize the delta computation 2024-04-15 07:11:16 +02:00
Sebastian Thiel
56642830f0
remove rate-limit as it never kicks in, and also, we'd want the computation for correctness 2024-04-15 07:11:16 +02:00
Sebastian Thiel
2e969d1507
collect filemonitor events into lists to avoid excessive recomputation.
Previously, each file change both in `.git` as well as in the worktree would
cause a complete recomputation. This computation included opening a git
repository at least once (probaby more often), to make an 'is-ignored' check.

The latter is very expensive in `git2` and gets more expensive the more
files there are.

Now the repository is opened when needed, and we re-use it for all applicable
file paths.
2024-04-15 07:11:16 +02:00
Sebastian Thiel
af225bd9e0
make events private and publicly export Event instead.
That way, we get `tauri::Event`, without the somewhat confusing
module  name `events`.
2024-04-15 07:11:16 +02:00
Sebastian Thiel
2eaba14819
dissolve the event queue in favor of method calls
The idea is that we don't parallelize over a channel anymore, but
instead just process filesystem events, one at a time.

This would allow each handler to become a function that gets its
state passed, and makes all the necessary calls verbatim, which
in turn makes it easy to follow what's happening.

If anything becomes to slow due to the serialization of event processing,
selective parallelization can be re-added.
2024-04-15 07:11:09 +02:00
Sebastian Thiel
3902bb9b2d
de-objectify all sub-handlers
Sub-Handlers are objects, and with that comes a lot of complexity.
However, there seems to be on need for it at all, and a first
steps is to turn these into methods to truly understand
what's going on.
2024-04-13 23:09:17 +02:00
Sebastian Thiel
27349a2fa2
Remove Clone in the vincinity of Watchers where possible.
This will help to get away from from the 'everything needs to be shared'
approach to state.
2024-04-13 23:09:17 +02:00
Sebastian Thiel
cdae683757
Turn WatcherInner into Watcher
As `Watcher` really adds nothing.
2024-04-13 23:09:16 +02:00
Sebastian Thiel
1476ff01ee
Avoid managing every piece of the watcher, only manage what's currently needed 2024-04-13 23:09:16 +02:00
Sebastian Thiel
efe03a9b3a
Use the new dispatcher and make sure everything still works 2024-04-13 23:09:16 +02:00
Sebastian Thiel
954d100d95
simplify dispatcher around the idea of a single channel
That way, all objects go away and it will be nothing more than a task
around a channel.
2024-04-13 23:09:16 +02:00
Sebastian Thiel
52c637504e
Don't consume instances that are Send+Sync+Clone
They don't actually need it.
2024-04-13 23:09:16 +02:00
Sebastian Thiel
de6fd55658
remove try_new() in favor of new() in watcher.rs
`try_new()` here is used as constructor, which is what `new` is for
with less boilerplate.
2024-04-13 23:09:16 +02:00
Josh Junon
b818ce485b
Merge pull request #3463 from gitbutlerapp/revert-3448-remove-clippy-alloweds
Revert "Remove unused (?) allow clippy statements"
2024-04-12 18:05:54 +02:00
Josh Junon
a4bc539f56
Merge pull request #3467 from Byron/tests-shared
share test code via separate crate
2024-04-10 04:59:08 -07:00
Sebastian Thiel
4542c73fdb
use workspace dependencies for workspace crates 2024-04-10 13:09:04 +02:00
Josh Junon
67dd25a6d7
removed bail on release windows ci builds 2024-04-09 21:14:56 +02:00
Sebastian Thiel
7d4aede13e
remove clippy lints, or fix them up 2024-04-09 20:45:17 +02:00
Sebastian Thiel
906bfa3cf4
use the new testsupport crate 2024-04-09 20:45:17 +02:00